@pear-protocol/symmio-client 0.2.8 → 0.2.10

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.
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Address, PublicClient, WalletClient } from 'viem';
2
+ import { Address } from 'viem';
3
3
 
4
4
  type ChainId = number;
5
5
  type SymmioSDKConfig = {
@@ -13,15 +13,9 @@ type SymmioSDKConfig = {
13
13
  muonAppName?: string;
14
14
  };
15
15
 
16
- type RefreshAuth = (accountAddress?: Address) => Promise<string | null>;
17
16
  type SymmProviderProps = {
18
17
  chainId?: number;
19
18
  address?: Address;
20
- publicClient?: PublicClient;
21
- walletClient?: WalletClient;
22
- accessToken?: string | null;
23
- authToken?: string | null;
24
- refreshAuth?: RefreshAuth;
25
19
  symmCoreConfig: {
26
20
  apiUrl: string;
27
21
  wsUrl?: string;
@@ -29,6 +23,6 @@ type SymmProviderProps = {
29
23
  symmioConfig?: Partial<SymmioSDKConfig>;
30
24
  children: React.ReactNode;
31
25
  };
32
- declare function SymmProvider({ chainId, address, accessToken, authToken, refreshAuth, symmCoreConfig, symmioConfig, children, }: SymmProviderProps): react_jsx_runtime.JSX.Element;
26
+ declare function SymmProvider({ chainId, address, symmCoreConfig, symmioConfig, children, }: SymmProviderProps): react_jsx_runtime.JSX.Element;
33
27
 
34
28
  export { type SymmioSDKConfig as S, SymmProvider as a, type SymmProviderProps as b };
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Address, PublicClient, WalletClient } from 'viem';
2
+ import { Address } from 'viem';
3
3
 
4
4
  type ChainId = number;
5
5
  type SymmioSDKConfig = {
@@ -13,15 +13,9 @@ type SymmioSDKConfig = {
13
13
  muonAppName?: string;
14
14
  };
15
15
 
16
- type RefreshAuth = (accountAddress?: Address) => Promise<string | null>;
17
16
  type SymmProviderProps = {
18
17
  chainId?: number;
19
18
  address?: Address;
20
- publicClient?: PublicClient;
21
- walletClient?: WalletClient;
22
- accessToken?: string | null;
23
- authToken?: string | null;
24
- refreshAuth?: RefreshAuth;
25
19
  symmCoreConfig: {
26
20
  apiUrl: string;
27
21
  wsUrl?: string;
@@ -29,6 +23,6 @@ type SymmProviderProps = {
29
23
  symmioConfig?: Partial<SymmioSDKConfig>;
30
24
  children: React.ReactNode;
31
25
  };
32
- declare function SymmProvider({ chainId, address, accessToken, authToken, refreshAuth, symmCoreConfig, symmioConfig, children, }: SymmProviderProps): react_jsx_runtime.JSX.Element;
26
+ declare function SymmProvider({ chainId, address, symmCoreConfig, symmioConfig, children, }: SymmProviderProps): react_jsx_runtime.JSX.Element;
33
27
 
34
28
  export { type SymmioSDKConfig as S, SymmProvider as a, type SymmProviderProps as b };
@@ -1,3 +1,3 @@
1
1
  import 'react/jsx-runtime';
2
2
  import 'viem';
3
- export { a as SymmProvider, b as SymmProviderProps } from './provider-xhUge8b7.mjs';
3
+ export { a as SymmProvider, b as SymmProviderProps } from './provider-BoNiSPy9.mjs';
@@ -1,3 +1,3 @@
1
1
  import 'react/jsx-runtime';
2
2
  import 'viem';
3
- export { a as SymmProvider, b as SymmProviderProps } from './provider-xhUge8b7.js';
3
+ export { a as SymmProvider, b as SymmProviderProps } from './provider-BoNiSPy9.js';
@@ -8,6 +8,13 @@ var jsxRuntime = require('react/jsx-runtime');
8
8
 
9
9
  // src/react/provider.tsx
10
10
  var SymmContext = react.createContext(null);
11
+ function useSymmContext() {
12
+ const ctx = react.useContext(SymmContext);
13
+ if (!ctx) {
14
+ throw new Error("useSymmContext must be used within <SymmProvider>");
15
+ }
16
+ return ctx;
17
+ }
11
18
 
12
19
  // src/react/query-keys.ts
13
20
  var symmKeys = {
@@ -56,11 +63,14 @@ var useSymmWsStore = zustand.create((set) => ({
56
63
  function asUnsubscribeFn(value) {
57
64
  return typeof value === "function" ? value : null;
58
65
  }
59
- function useSymmWs(params) {
66
+ function useSymmWs(params = {}) {
67
+ const { symmCoreClient: ctxClient, address: ctxAddress, chainId: ctxChainId } = useSymmContext();
60
68
  const queryClient = reactQuery.useQueryClient();
61
69
  const isConnected = useSymmWsStore((state) => state.isConnected);
62
70
  const setConnected = useSymmWsStore((state) => state.setConnected);
63
- const { symmCoreClient, accountAddress, chainId } = params;
71
+ const symmCoreClient = params.symmCoreClient ?? ctxClient;
72
+ const accountAddress = params.accountAddress ?? ctxAddress;
73
+ const chainId = params.chainId ?? ctxChainId;
64
74
  react.useEffect(() => {
65
75
  if (!symmCoreClient || !accountAddress) {
66
76
  setConnected(false);
@@ -144,13 +154,9 @@ function useSymmWs(params) {
144
154
  }, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);
145
155
  return { isConnected };
146
156
  }
147
- var noopRefreshAuth = async () => null;
148
157
  function SymmProvider({
149
158
  chainId = 42161,
150
159
  address,
151
- accessToken = null,
152
- authToken,
153
- refreshAuth = noopRefreshAuth,
154
160
  symmCoreConfig,
155
161
  symmioConfig,
156
162
  children
@@ -162,27 +168,15 @@ function SymmProvider({
162
168
  defaultChainId: chainId
163
169
  });
164
170
  }, [chainId, symmCoreConfig.apiUrl, symmCoreConfig.wsUrl]);
165
- const resolvedAuthToken = authToken ?? accessToken;
166
171
  useSymmWs({ symmCoreClient, accountAddress: address, chainId });
167
172
  const value = react.useMemo(
168
173
  () => ({
169
174
  symmCoreClient,
170
175
  chainId,
171
176
  address,
172
- symmioConfig,
173
- accessToken,
174
- authToken: resolvedAuthToken,
175
- refreshAuth
177
+ symmioConfig
176
178
  }),
177
- [
178
- symmCoreClient,
179
- chainId,
180
- address,
181
- symmioConfig,
182
- accessToken,
183
- resolvedAuthToken,
184
- refreshAuth
185
- ]
179
+ [symmCoreClient, chainId, address, symmioConfig]
186
180
  );
187
181
  return /* @__PURE__ */ jsxRuntime.jsx(SymmContext.Provider, { value, children });
188
182
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/context.ts","../../src/react/query-keys.ts","../../src/react/stores/use-symm-ws-store.ts","../../src/react/hooks/use-symm-ws.ts","../../src/react/provider.tsx"],"names":["createContext","create","useQueryClient","useEffect","useMemo","createSymmSDK","jsx"],"mappings":"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","file":"provider.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport type { SymmSDK } from \"@pear-protocol/symm-core\";\nimport type { SymmioSDKConfig } from \"../types/common\";\n\nexport type SymmContextValue = {\n symmCoreClient: SymmSDK | null;\n chainId: number;\n address?: `0x${string}`;\n symmioConfig?: Partial<SymmioSDKConfig>;\n accessToken: string | null;\n authToken: string | null;\n refreshAuth: (accountAddress?: Address) => Promise<string | null>;\n};\n\nexport const SymmContext = createContext<SymmContextValue | null>(null);\n\nexport function useSymmContext(): SymmContextValue {\n const ctx = useContext(SymmContext);\n if (!ctx) {\n throw new Error(\"useSymmContext must be used within <SymmProvider>\");\n }\n return ctx;\n}\n","import type { GetSymmHedgerMarketsRequest } from '@pear-protocol/symm-core';\nimport type { Address, Hex } from 'viem';\n\nexport const symmKeys = {\n all: ['symm'] as const,\n accounts: (address?: Address, chainId?: number) =>\n ['symm', 'accounts', address, chainId] as const,\n accountsApi: (address?: Address, chainId?: number) =>\n ['symm', 'accountsApi', address, chainId] as const,\n accountsLength: (address?: Address, chainId?: number) =>\n ['symm', 'accountsLength', address, chainId] as const,\n accountsWithPositions: (address?: Address, chainId?: number) =>\n ['symm', 'accountsWithPositions', address, chainId] as const,\n accountSummary: (address?: Address, chainId?: number) =>\n ['symm', 'accountSummary', address, chainId] as const,\n accountData: (address?: Address, chainId?: number, upnl?: string) =>\n ['symm', 'accountData', address, chainId, upnl] as const,\n signature: (address?: Address, chainId?: number) =>\n ['symm', 'signature', address, chainId] as const,\n approval: (\n owner?: Address,\n spender?: Address,\n chainId?: number,\n token?: Address\n ) => ['symm', 'approval', owner, spender, chainId, token] as const,\n balances: (address?: Address, chainId?: number) =>\n ['symm', 'balances', address, chainId] as const,\n positions: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'positions', params] as const,\n openOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'openOrders', params] as const,\n tradeHistory: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'tradeHistory', params] as const,\n tpslOrders: (address?: Address, chainId?: number) =>\n ['symm', 'tpslOrders', address, chainId] as const,\n tpslOrdersList: (params?: {\n accountAddress?: Address;\n address?: Address;\n positionId?: string;\n type?: string;\n status?: string;\n chainId?: number;\n }) => ['symm', 'tpslOrders', params] as const,\n twapOrders: (address?: Address, chainId?: number) =>\n ['symm', 'twapOrders', address, chainId] as const,\n triggerOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n status?: string;\n limit?: number;\n offset?: number;\n chainId?: number;\n }) => ['symm', 'triggerOrders', params] as const,\n triggerConfig: (orderId?: string) =>\n ['symm', 'triggerConfig', orderId] as const,\n markets: (chainId?: number, search?: string) =>\n ['symm', 'markets', chainId, search] as const,\n hedgerMarketById: (id?: number, chainId?: number) =>\n ['symm', 'hedgerMarketById', id, chainId] as const,\n hedgerMarketBySymbol: (symbol?: string, chainId?: number) =>\n ['symm', 'hedgerMarketBySymbol', symbol, chainId] as const,\n lockedParams: (marketName?: string, leverage?: number, chainId?: number) =>\n ['symm', 'lockedParams', marketName, leverage, chainId] as const,\n hedgerMarkets: (request?: GetSymmHedgerMarketsRequest) =>\n ['symm', 'hedgerMarkets', request] as const,\n fundingRates: (chainId?: number) => ['symm', 'fundingRates', chainId] as const,\n fundingPayments: (params?: {\n address?: Address;\n positionId?: string;\n chainId?: number;\n limit?: number;\n offset?: number;\n }) => ['symm', 'fundingPayments', params] as const,\n fundingHistory: (params?: {\n chainId?: number;\n period?: string;\n longSymbols?: string;\n shortSymbols?: string;\n interval?: string;\n weightMode?: string;\n includeContributions?: boolean;\n }) => ['symm', 'fundingHistory', params] as const,\n portfolio: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'portfolio', params] as const,\n notifications: (address?: Address, chainId?: number) =>\n ['symm', 'notifications', address, chainId] as const,\n unreadCount: (address?: Address, chainId?: number) =>\n ['symm', 'unreadCount', address, chainId] as const,\n availableMargin: (address?: Address, chainId?: number) =>\n ['symm', 'availableMargin', address, chainId] as const,\n pendingIds: (address?: Address, chainId?: number) =>\n ['symm', 'pendingIds', address, chainId] as const,\n pendingInstantOpens: (accountAddress?: Address, chainId?: number) =>\n ['symm', 'pendingInstantOpens', accountAddress, chainId] as const,\n twapOrder: (orderId?: string) =>\n ['symm', 'twapOrder', orderId] as const,\n delegation: (\n account?: Address,\n target?: Address,\n selectors?: readonly Hex[],\n chainId?: number\n ) => ['symm', 'delegation', account, target, selectors, chainId] as const,\n chartMetadata: (symbolsKey: string, positionKey: string) =>\n ['symm', 'chartMetadata', symbolsKey, positionKey] as const,\n};\n","import { create } from 'zustand';\n\ntype SymmWsState = {\n isConnected: boolean;\n setConnected: (isConnected: boolean) => void;\n};\n\nexport const useSymmWsStore = create<SymmWsState>((set) => ({\n isConnected: false,\n setConnected: (isConnected) => set({ isConnected }),\n}));\n","import { useEffect } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SymmSDK } from '@pear-protocol/symm-core';\nimport { symmKeys } from '../query-keys';\nimport { useSymmWsStore } from '../stores/use-symm-ws-store';\n\ntype UnsubscribeFn = () => void;\n\nfunction asUnsubscribeFn(value: unknown): UnsubscribeFn | null {\n return typeof value === 'function' ? (value as UnsubscribeFn) : null;\n}\n\nexport function useSymmWs(params: {\n symmCoreClient: SymmSDK | null;\n accountAddress?: Address;\n chainId: number;\n}) {\n const queryClient = useQueryClient();\n const isConnected = useSymmWsStore((state) => state.isConnected);\n const setConnected = useSymmWsStore((state) => state.setConnected);\n const { symmCoreClient, accountAddress, chainId } = params;\n\n useEffect(() => {\n if (!symmCoreClient || !accountAddress) {\n setConnected(false);\n return;\n }\n\n const ws = symmCoreClient.ws;\n const addr = accountAddress as string;\n const unsubscribers: UnsubscribeFn[] = [];\n\n const removeOnConnect = ws.onConnect(() => setConnected(true));\n const removeOnDisconnect = ws.onDisconnect(() => setConnected(false));\n\n // Subscribe to all relevant channels\n unsubscribers.push(removeOnConnect, removeOnDisconnect);\n const positionsUnsub = asUnsubscribeFn(ws.subscribeToPositions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n }));\n if (positionsUnsub) unsubscribers.push(positionsUnsub);\n\n const openOrdersUnsub = asUnsubscribeFn(ws.subscribeToOpenOrders(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'openOrders'],\n });\n }));\n if (openOrdersUnsub) unsubscribers.push(openOrdersUnsub);\n\n const tradesUnsub = asUnsubscribeFn(ws.subscribeToTrades(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'tradeHistory'],\n });\n }));\n if (tradesUnsub) unsubscribers.push(tradesUnsub);\n\n const accountSummaryUnsub = asUnsubscribeFn(ws.subscribeToAccountSummary(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.balances(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.accountSummary(accountAddress, chainId),\n });\n }));\n if (accountSummaryUnsub) unsubscribers.push(accountSummaryUnsub);\n\n const notificationsUnsub = asUnsubscribeFn(ws.subscribeToNotifications(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.notifications(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.unreadCount(accountAddress, chainId),\n });\n }));\n if (notificationsUnsub) unsubscribers.push(notificationsUnsub);\n\n const tpslUnsub = asUnsubscribeFn(ws.subscribeToTpsl(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'tpslOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (tpslUnsub) unsubscribers.push(tpslUnsub);\n\n const twapUnsub = asUnsubscribeFn(ws.subscribeToTwapOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'twapOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (twapUnsub) unsubscribers.push(twapUnsub);\n\n const triggerOrdersUnsub = asUnsubscribeFn(ws.subscribeToTriggerOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'triggerOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (triggerOrdersUnsub) unsubscribers.push(triggerOrdersUnsub);\n\n const executionsUnsub = asUnsubscribeFn(ws.subscribeToExecutions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n queryClient.invalidateQueries({\n queryKey: ['symm', 'portfolio'],\n });\n }));\n if (executionsUnsub) unsubscribers.push(executionsUnsub);\n\n return () => {\n if (unsubscribers.length > 2) {\n unsubscribers.forEach((unsubscribe) => unsubscribe());\n } else {\n removeOnConnect();\n removeOnDisconnect();\n ws.unsubscribeAll();\n }\n };\n }, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);\n\n return { isConnected };\n}\n","import { useMemo } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport { createSymmSDK, type SymmSDK } from \"@pear-protocol/symm-core\";\n\nimport type { SymmioSDKConfig } from \"../types/common\";\nimport { SymmContext, type SymmContextValue } from \"./context\";\nimport { useSymmWs } from \"./hooks/use-symm-ws\";\n\ntype RefreshAuth = (accountAddress?: Address) => Promise<string | null>;\n\nexport type SymmProviderProps = {\n chainId?: number;\n address?: Address;\n publicClient?: PublicClient;\n walletClient?: WalletClient;\n accessToken?: string | null;\n authToken?: string | null;\n refreshAuth?: RefreshAuth;\n symmCoreConfig: {\n apiUrl: string;\n wsUrl?: string;\n };\n symmioConfig?: Partial<SymmioSDKConfig>;\n children: React.ReactNode;\n};\n\nconst noopRefreshAuth: RefreshAuth = async () => null;\n\nexport function SymmProvider({\n chainId = 42161,\n address,\n accessToken = null,\n authToken,\n refreshAuth = noopRefreshAuth,\n symmCoreConfig,\n symmioConfig,\n children,\n}: SymmProviderProps) {\n const symmCoreClient = useMemo((): SymmSDK => {\n return createSymmSDK({\n apiUrl: symmCoreConfig.apiUrl,\n wsUrl: symmCoreConfig.wsUrl,\n defaultChainId: chainId,\n });\n }, [chainId, symmCoreConfig.apiUrl, symmCoreConfig.wsUrl]);\n\n const resolvedAuthToken = authToken ?? accessToken;\n useSymmWs({ symmCoreClient, accountAddress: address, chainId });\n\n const value = useMemo<SymmContextValue>(\n () => ({\n symmCoreClient,\n chainId,\n address,\n symmioConfig,\n accessToken,\n authToken: resolvedAuthToken,\n refreshAuth,\n }),\n [\n symmCoreClient,\n chainId,\n address,\n symmioConfig,\n accessToken,\n resolvedAuthToken,\n refreshAuth,\n ]\n );\n\n return <SymmContext.Provider value={value}>{children}</SymmContext.Provider>;\n}\n"]}
1
+ {"version":3,"sources":["../../src/react/context.ts","../../src/react/query-keys.ts","../../src/react/stores/use-symm-ws-store.ts","../../src/react/hooks/use-symm-ws.ts","../../src/react/provider.tsx"],"names":["createContext","useContext","create","useQueryClient","useEffect","useMemo","createSymmSDK","jsx"],"mappings":";;;;;;;;;AAYO,IAAM,WAAA,GAAcA,oBAAuC,IAAI,CAAA;AAE/D,SAAS,cAAA,GAAmC;AACjD,EAAA,MAAM,GAAA,GAAMC,iBAAW,WAAW,CAAA;AAClC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,GAAA;AACT;;;ACjBO,IAAM,QAAA,GAAW;AAAA,EACtB,GAAA,EAAK,CAAC,MAAM,CAAA;AAAA,EACZ,QAAA,EAAU,CAAC,OAAA,EAAmB,OAAA,KAC5B,CAAC,MAAA,EAAQ,UAAA,EAAY,SAAS,OAAO,CAAA;AAAA,EACvC,WAAA,EAAa,CAAC,OAAA,EAAmB,OAAA,KAC/B,CAAC,MAAA,EAAQ,aAAA,EAAe,SAAS,OAAO,CAAA;AAAA,EAC1C,cAAA,EAAgB,CAAC,OAAA,EAAmB,OAAA,KAClC,CAAC,MAAA,EAAQ,gBAAA,EAAkB,SAAS,OAAO,CAAA;AAAA,EAC7C,qBAAA,EAAuB,CAAC,OAAA,EAAmB,OAAA,KACzC,CAAC,MAAA,EAAQ,uBAAA,EAAyB,SAAS,OAAO,CAAA;AAAA,EACpD,cAAA,EAAgB,CAAC,OAAA,EAAmB,OAAA,KAClC,CAAC,MAAA,EAAQ,gBAAA,EAAkB,SAAS,OAAO,CAAA;AAAA,EAC7C,WAAA,EAAa,CAAC,OAAA,EAAmB,OAAA,EAAkB,IAAA,KACjD,CAAC,MAAA,EAAQ,aAAA,EAAe,OAAA,EAAS,OAAA,EAAS,IAAI,CAAA;AAAA,EAChD,SAAA,EAAW,CAAC,OAAA,EAAmB,OAAA,KAC7B,CAAC,MAAA,EAAQ,WAAA,EAAa,SAAS,OAAO,CAAA;AAAA,EACxC,QAAA,EAAU,CACR,KAAA,EACA,OAAA,EACA,OAAA,EACA,KAAA,KACG,CAAC,MAAA,EAAQ,UAAA,EAAY,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,KAAK,CAAA;AAAA,EACxD,QAAA,EAAU,CAAC,OAAA,EAAmB,OAAA,KAC5B,CAAC,MAAA,EAAQ,UAAA,EAAY,SAAS,OAAO,CAAA;AAAA,EACvC,WAAW,CAAC,MAAA,KAIN,CAAC,MAAA,EAAQ,aAAa,MAAM,CAAA;AAAA,EAClC,YAAY,CAAC,MAAA,KAIP,CAAC,MAAA,EAAQ,cAAc,MAAM,CAAA;AAAA,EACnC,cAAc,CAAC,MAAA,KAIT,CAAC,MAAA,EAAQ,gBAAgB,MAAM,CAAA;AAAA,EACrC,UAAA,EAAY,CAAC,OAAA,EAAmB,OAAA,KAC9B,CAAC,MAAA,EAAQ,YAAA,EAAc,SAAS,OAAO,CAAA;AAAA,EACzC,gBAAgB,CAAC,MAAA,KAOX,CAAC,MAAA,EAAQ,cAAc,MAAM,CAAA;AAAA,EACnC,UAAA,EAAY,CAAC,OAAA,EAAmB,OAAA,KAC9B,CAAC,MAAA,EAAQ,YAAA,EAAc,SAAS,OAAO,CAAA;AAAA,EACzC,eAAe,CAAC,MAAA,KAOV,CAAC,MAAA,EAAQ,iBAAiB,MAAM,CAAA;AAAA,EACtC,eAAe,CAAC,OAAA,KACd,CAAC,MAAA,EAAQ,iBAAiB,OAAO,CAAA;AAAA,EACnC,OAAA,EAAS,CAAC,OAAA,EAAkB,MAAA,KAC1B,CAAC,MAAA,EAAQ,SAAA,EAAW,SAAS,MAAM,CAAA;AAAA,EACrC,gBAAA,EAAkB,CAAC,EAAA,EAAa,OAAA,KAC9B,CAAC,MAAA,EAAQ,kBAAA,EAAoB,IAAI,OAAO,CAAA;AAAA,EAC1C,oBAAA,EAAsB,CAAC,MAAA,EAAiB,OAAA,KACtC,CAAC,MAAA,EAAQ,sBAAA,EAAwB,QAAQ,OAAO,CAAA;AAAA,EAClD,YAAA,EAAc,CAAC,UAAA,EAAqB,QAAA,EAAmB,OAAA,KACrD,CAAC,MAAA,EAAQ,cAAA,EAAgB,UAAA,EAAY,QAAA,EAAU,OAAO,CAAA;AAAA,EACxD,eAAe,CAAC,OAAA,KACd,CAAC,MAAA,EAAQ,iBAAiB,OAAO,CAAA;AAAA,EACnC,cAAc,CAAC,OAAA,KAAqB,CAAC,MAAA,EAAQ,gBAAgB,OAAO,CAAA;AAAA,EACpE,iBAAiB,CAAC,MAAA,KAMZ,CAAC,MAAA,EAAQ,mBAAmB,MAAM,CAAA;AAAA,EACxC,gBAAgB,CAAC,MAAA,KAQX,CAAC,MAAA,EAAQ,kBAAkB,MAAM,CAAA;AAAA,EACvC,WAAW,CAAC,MAAA,KAIN,CAAC,MAAA,EAAQ,aAAa,MAAM,CAAA;AAAA,EAClC,aAAA,EAAe,CAAC,OAAA,EAAmB,OAAA,KACjC,CAAC,MAAA,EAAQ,eAAA,EAAiB,SAAS,OAAO,CAAA;AAAA,EAC5C,WAAA,EAAa,CAAC,OAAA,EAAmB,OAAA,KAC/B,CAAC,MAAA,EAAQ,aAAA,EAAe,SAAS,OAAO,CAAA;AAAA,EAC1C,eAAA,EAAiB,CAAC,OAAA,EAAmB,OAAA,KACnC,CAAC,MAAA,EAAQ,iBAAA,EAAmB,SAAS,OAAO,CAAA;AAAA,EAC9C,UAAA,EAAY,CAAC,OAAA,EAAmB,OAAA,KAC9B,CAAC,MAAA,EAAQ,YAAA,EAAc,SAAS,OAAO,CAAA;AAAA,EACzC,mBAAA,EAAqB,CAAC,cAAA,EAA0B,OAAA,KAC9C,CAAC,MAAA,EAAQ,qBAAA,EAAuB,gBAAgB,OAAO,CAAA;AAAA,EACzD,WAAW,CAAC,OAAA,KACV,CAAC,MAAA,EAAQ,aAAa,OAAO,CAAA;AAAA,EAC/B,UAAA,EAAY,CACV,OAAA,EACA,MAAA,EACA,SAAA,EACA,OAAA,KACG,CAAC,MAAA,EAAQ,YAAA,EAAc,OAAA,EAAS,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAA;AAAA,EAC/D,aAAA,EAAe,CAAC,UAAA,EAAoB,WAAA,KAClC,CAAC,MAAA,EAAQ,eAAA,EAAiB,YAAY,WAAW;AACrD,CAAA;AC7GO,IAAM,cAAA,GAAiBC,cAAA,CAAoB,CAAC,GAAA,MAAS;AAAA,EAC1D,WAAA,EAAa,KAAA;AAAA,EACb,cAAc,CAAC,WAAA,KAAgB,GAAA,CAAI,EAAE,aAAa;AACpD,CAAA,CAAE,CAAA;;;ACAF,SAAS,gBAAgB,KAAA,EAAsC;AAC7D,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA,GAAc,KAAA,GAA0B,IAAA;AAClE;AAEO,SAAS,SAAA,CAAU,MAAA,GAItB,EAAC,EAAG;AACN,EAAA,MAAM,EAAE,gBAAgB,SAAA,EAAW,OAAA,EAAS,YAAY,OAAA,EAAS,UAAA,KAAe,cAAA,EAAe;AAC/F,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,CAAC,KAAA,KAAU,MAAM,WAAW,CAAA;AAC/D,EAAA,MAAM,YAAA,GAAe,cAAA,CAAe,CAAC,KAAA,KAAU,MAAM,YAAY,CAAA;AACjE,EAAA,MAAM,cAAA,GAAiB,OAAO,cAAA,IAAkB,SAAA;AAChD,EAAA,MAAM,cAAA,GAAiB,OAAO,cAAA,IAAkB,UAAA;AAChD,EAAA,MAAM,OAAA,GAAU,OAAO,OAAA,IAAW,UAAA;AAElC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,EAAgB;AACtC,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAK,cAAA,CAAe,EAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,cAAA;AACb,IAAA,MAAM,gBAAiC,EAAC;AAExC,IAAA,MAAM,kBAAkB,EAAA,CAAG,SAAA,CAAU,MAAM,YAAA,CAAa,IAAI,CAAC,CAAA;AAC7D,IAAA,MAAM,qBAAqB,EAAA,CAAG,YAAA,CAAa,MAAM,YAAA,CAAa,KAAK,CAAC,CAAA;AAGpE,IAAA,aAAA,CAAc,IAAA,CAAK,iBAAiB,kBAAkB,CAAA;AACtD,IAAA,MAAM,iBAAiB,eAAA,CAAgB,EAAA,CAAG,oBAAA,CAAqB,IAAA,EAAM,SAAS,MAAM;AAClF,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,CAAC,MAAA,EAAQ,WAAW;AAAA,OAC/B,CAAA;AAAA,IACH,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,cAAA,EAAgB,aAAA,CAAc,IAAA,CAAK,cAAc,CAAA;AAErD,IAAA,MAAM,kBAAkB,eAAA,CAAgB,EAAA,CAAG,qBAAA,CAAsB,IAAA,EAAM,SAAS,MAAM;AACpF,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY;AAAA,OAChC,CAAA;AAAA,IACH,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,eAAA,EAAiB,aAAA,CAAc,IAAA,CAAK,eAAe,CAAA;AAEvD,IAAA,MAAM,cAAc,eAAA,CAAgB,EAAA,CAAG,iBAAA,CAAkB,IAAA,EAAM,SAAS,MAAM;AAC5E,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,CAAC,MAAA,EAAQ,cAAc;AAAA,OAClC,CAAA;AAAA,IACH,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,WAAA,EAAa,aAAA,CAAc,IAAA,CAAK,WAAW,CAAA;AAE/C,IAAA,MAAM,sBAAsB,eAAA,CAAgB,EAAA,CAAG,yBAAA,CAA0B,IAAA,EAAM,SAAS,MAAM;AAC5F,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,QAAA,CAAS,QAAA,CAAS,cAAA,EAAgB,OAAO;AAAA,OACpD,CAAA;AACD,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,QAAA,CAAS,cAAA,CAAe,cAAA,EAAgB,OAAO;AAAA,OAC1D,CAAA;AAAA,IACH,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,mBAAA,EAAqB,aAAA,CAAc,IAAA,CAAK,mBAAmB,CAAA;AAE/D,IAAA,MAAM,qBAAqB,eAAA,CAAgB,EAAA,CAAG,wBAAA,CAAyB,IAAA,EAAM,SAAS,MAAM;AAC1F,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,QAAA,CAAS,aAAA,CAAc,cAAA,EAAgB,OAAO;AAAA,OACzD,CAAA;AACD,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,QAAA,CAAS,WAAA,CAAY,cAAA,EAAgB,OAAO;AAAA,OACvD,CAAA;AAAA,IACH,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,kBAAA,EAAoB,aAAA,CAAc,IAAA,CAAK,kBAAkB,CAAA;AAE7D,IAAA,MAAM,YAAY,eAAA,CAAgB,EAAA,CAAG,eAAA,CAAgB,IAAA,EAAM,SAAS,MAAM;AACxE,MAAA,WAAA,CAAY,kBAAkB,EAAE,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,GAAG,CAAA;AAClE,MAAA,WAAA,CAAY,kBAAkB,EAAE,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,GAAG,CAAA;AAAA,IACpE,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,SAAA,EAAW,aAAA,CAAc,IAAA,CAAK,SAAS,CAAA;AAE3C,IAAA,MAAM,YAAY,eAAA,CAAgB,EAAA,CAAG,qBAAA,CAAsB,IAAA,EAAM,SAAS,MAAM;AAC9E,MAAA,WAAA,CAAY,kBAAkB,EAAE,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,GAAG,CAAA;AAClE,MAAA,WAAA,CAAY,kBAAkB,EAAE,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,GAAG,CAAA;AAAA,IACpE,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,SAAA,EAAW,aAAA,CAAc,IAAA,CAAK,SAAS,CAAA;AAE3C,IAAA,MAAM,qBAAqB,eAAA,CAAgB,EAAA,CAAG,wBAAA,CAAyB,IAAA,EAAM,SAAS,MAAM;AAC1F,MAAA,WAAA,CAAY,kBAAkB,EAAE,QAAA,EAAU,CAAC,MAAA,EAAQ,eAAe,GAAG,CAAA;AACrE,MAAA,WAAA,CAAY,kBAAkB,EAAE,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,GAAG,CAAA;AAAA,IACpE,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,kBAAA,EAAoB,aAAA,CAAc,IAAA,CAAK,kBAAkB,CAAA;AAE7D,IAAA,MAAM,kBAAkB,eAAA,CAAgB,EAAA,CAAG,qBAAA,CAAsB,IAAA,EAAM,SAAS,MAAM;AACpF,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,CAAC,MAAA,EAAQ,WAAW;AAAA,OAC/B,CAAA;AACD,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,CAAC,MAAA,EAAQ,WAAW;AAAA,OAC/B,CAAA;AAAA,IACH,CAAC,CAAC,CAAA;AACF,IAAA,IAAI,eAAA,EAAiB,aAAA,CAAc,IAAA,CAAK,eAAe,CAAA;AAEvD,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,QAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,WAAA,KAAgB,WAAA,EAAa,CAAA;AAAA,MACtD,CAAA,MAAO;AACL,QAAA,eAAA,EAAgB;AAChB,QAAA,kBAAA,EAAmB;AACnB,QAAA,EAAA,CAAG,cAAA,EAAe;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,EACF,GAAG,CAAC,cAAA,EAAgB,gBAAgB,OAAA,EAAS,WAAA,EAAa,YAAY,CAAC,CAAA;AAEvE,EAAA,OAAO,EAAE,WAAA,EAAY;AACvB;ACtGO,SAAS,YAAA,CAAa;AAAA,EAC3B,OAAA,GAAU,KAAA;AAAA,EACV,OAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,cAAA,GAAiBC,cAAQ,MAAe;AAC5C,IAAA,OAAOC,sBAAA,CAAc;AAAA,MACnB,QAAQ,cAAA,CAAe,MAAA;AAAA,MACvB,OAAO,cAAA,CAAe,KAAA;AAAA,MACtB,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,EACH,GAAG,CAAC,OAAA,EAAS,eAAe,MAAA,EAAQ,cAAA,CAAe,KAAK,CAAC,CAAA;AAEzD,EAAA,SAAA,CAAU,EAAE,cAAA,EAAgB,cAAA,EAAgB,OAAA,EAAS,SAAS,CAAA;AAE9D,EAAA,MAAM,KAAA,GAAQD,aAAA;AAAA,IACZ,OAAO;AAAA,MACL,cAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,OAAA,EAAS,OAAA,EAAS,YAAY;AAAA,GACjD;AAEA,EAAA,uBAAOE,cAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,OAAe,QAAA,EAAS,CAAA;AACvD","file":"provider.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport type { SymmSDK } from \"@pear-protocol/symm-core\";\nimport type { SymmioSDKConfig } from \"../types/common\";\n\nexport type SymmContextValue = {\n symmCoreClient: SymmSDK | null;\n chainId: number;\n address?: `0x${string}`;\n symmioConfig?: Partial<SymmioSDKConfig>;\n};\n\nexport const SymmContext = createContext<SymmContextValue | null>(null);\n\nexport function useSymmContext(): SymmContextValue {\n const ctx = useContext(SymmContext);\n if (!ctx) {\n throw new Error(\"useSymmContext must be used within <SymmProvider>\");\n }\n return ctx;\n}\n","import type { GetSymmHedgerMarketsRequest } from '@pear-protocol/symm-core';\nimport type { Address, Hex } from 'viem';\n\nexport const symmKeys = {\n all: ['symm'] as const,\n accounts: (address?: Address, chainId?: number) =>\n ['symm', 'accounts', address, chainId] as const,\n accountsApi: (address?: Address, chainId?: number) =>\n ['symm', 'accountsApi', address, chainId] as const,\n accountsLength: (address?: Address, chainId?: number) =>\n ['symm', 'accountsLength', address, chainId] as const,\n accountsWithPositions: (address?: Address, chainId?: number) =>\n ['symm', 'accountsWithPositions', address, chainId] as const,\n accountSummary: (address?: Address, chainId?: number) =>\n ['symm', 'accountSummary', address, chainId] as const,\n accountData: (address?: Address, chainId?: number, upnl?: string) =>\n ['symm', 'accountData', address, chainId, upnl] as const,\n signature: (address?: Address, chainId?: number) =>\n ['symm', 'signature', address, chainId] as const,\n approval: (\n owner?: Address,\n spender?: Address,\n chainId?: number,\n token?: Address\n ) => ['symm', 'approval', owner, spender, chainId, token] as const,\n balances: (address?: Address, chainId?: number) =>\n ['symm', 'balances', address, chainId] as const,\n positions: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'positions', params] as const,\n openOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'openOrders', params] as const,\n tradeHistory: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'tradeHistory', params] as const,\n tpslOrders: (address?: Address, chainId?: number) =>\n ['symm', 'tpslOrders', address, chainId] as const,\n tpslOrdersList: (params?: {\n accountAddress?: Address;\n address?: Address;\n positionId?: string;\n type?: string;\n status?: string;\n chainId?: number;\n }) => ['symm', 'tpslOrders', params] as const,\n twapOrders: (address?: Address, chainId?: number) =>\n ['symm', 'twapOrders', address, chainId] as const,\n triggerOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n status?: string;\n limit?: number;\n offset?: number;\n chainId?: number;\n }) => ['symm', 'triggerOrders', params] as const,\n triggerConfig: (orderId?: string) =>\n ['symm', 'triggerConfig', orderId] as const,\n markets: (chainId?: number, search?: string) =>\n ['symm', 'markets', chainId, search] as const,\n hedgerMarketById: (id?: number, chainId?: number) =>\n ['symm', 'hedgerMarketById', id, chainId] as const,\n hedgerMarketBySymbol: (symbol?: string, chainId?: number) =>\n ['symm', 'hedgerMarketBySymbol', symbol, chainId] as const,\n lockedParams: (marketName?: string, leverage?: number, chainId?: number) =>\n ['symm', 'lockedParams', marketName, leverage, chainId] as const,\n hedgerMarkets: (request?: GetSymmHedgerMarketsRequest) =>\n ['symm', 'hedgerMarkets', request] as const,\n fundingRates: (chainId?: number) => ['symm', 'fundingRates', chainId] as const,\n fundingPayments: (params?: {\n address?: Address;\n positionId?: string;\n chainId?: number;\n limit?: number;\n offset?: number;\n }) => ['symm', 'fundingPayments', params] as const,\n fundingHistory: (params?: {\n chainId?: number;\n period?: string;\n longSymbols?: string;\n shortSymbols?: string;\n interval?: string;\n weightMode?: string;\n includeContributions?: boolean;\n }) => ['symm', 'fundingHistory', params] as const,\n portfolio: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'portfolio', params] as const,\n notifications: (address?: Address, chainId?: number) =>\n ['symm', 'notifications', address, chainId] as const,\n unreadCount: (address?: Address, chainId?: number) =>\n ['symm', 'unreadCount', address, chainId] as const,\n availableMargin: (address?: Address, chainId?: number) =>\n ['symm', 'availableMargin', address, chainId] as const,\n pendingIds: (address?: Address, chainId?: number) =>\n ['symm', 'pendingIds', address, chainId] as const,\n pendingInstantOpens: (accountAddress?: Address, chainId?: number) =>\n ['symm', 'pendingInstantOpens', accountAddress, chainId] as const,\n twapOrder: (orderId?: string) =>\n ['symm', 'twapOrder', orderId] as const,\n delegation: (\n account?: Address,\n target?: Address,\n selectors?: readonly Hex[],\n chainId?: number\n ) => ['symm', 'delegation', account, target, selectors, chainId] as const,\n chartMetadata: (symbolsKey: string, positionKey: string) =>\n ['symm', 'chartMetadata', symbolsKey, positionKey] as const,\n};\n","import { create } from 'zustand';\n\ntype SymmWsState = {\n isConnected: boolean;\n setConnected: (isConnected: boolean) => void;\n};\n\nexport const useSymmWsStore = create<SymmWsState>((set) => ({\n isConnected: false,\n setConnected: (isConnected) => set({ isConnected }),\n}));\n","import { useEffect } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SymmSDK } from '@pear-protocol/symm-core';\nimport { useSymmContext } from '../context';\nimport { symmKeys } from '../query-keys';\nimport { useSymmWsStore } from '../stores/use-symm-ws-store';\n\ntype UnsubscribeFn = () => void;\n\nfunction asUnsubscribeFn(value: unknown): UnsubscribeFn | null {\n return typeof value === 'function' ? (value as UnsubscribeFn) : null;\n}\n\nexport function useSymmWs(params: {\n symmCoreClient?: SymmSDK | null;\n accountAddress?: Address;\n chainId?: number;\n} = {}) {\n const { symmCoreClient: ctxClient, address: ctxAddress, chainId: ctxChainId } = useSymmContext();\n const queryClient = useQueryClient();\n const isConnected = useSymmWsStore((state) => state.isConnected);\n const setConnected = useSymmWsStore((state) => state.setConnected);\n const symmCoreClient = params.symmCoreClient ?? ctxClient;\n const accountAddress = params.accountAddress ?? ctxAddress;\n const chainId = params.chainId ?? ctxChainId;\n\n useEffect(() => {\n if (!symmCoreClient || !accountAddress) {\n setConnected(false);\n return;\n }\n\n const ws = symmCoreClient.ws;\n const addr = accountAddress as string;\n const unsubscribers: UnsubscribeFn[] = [];\n\n const removeOnConnect = ws.onConnect(() => setConnected(true));\n const removeOnDisconnect = ws.onDisconnect(() => setConnected(false));\n\n // Subscribe to all relevant channels\n unsubscribers.push(removeOnConnect, removeOnDisconnect);\n const positionsUnsub = asUnsubscribeFn(ws.subscribeToPositions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n }));\n if (positionsUnsub) unsubscribers.push(positionsUnsub);\n\n const openOrdersUnsub = asUnsubscribeFn(ws.subscribeToOpenOrders(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'openOrders'],\n });\n }));\n if (openOrdersUnsub) unsubscribers.push(openOrdersUnsub);\n\n const tradesUnsub = asUnsubscribeFn(ws.subscribeToTrades(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'tradeHistory'],\n });\n }));\n if (tradesUnsub) unsubscribers.push(tradesUnsub);\n\n const accountSummaryUnsub = asUnsubscribeFn(ws.subscribeToAccountSummary(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.balances(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.accountSummary(accountAddress, chainId),\n });\n }));\n if (accountSummaryUnsub) unsubscribers.push(accountSummaryUnsub);\n\n const notificationsUnsub = asUnsubscribeFn(ws.subscribeToNotifications(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.notifications(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.unreadCount(accountAddress, chainId),\n });\n }));\n if (notificationsUnsub) unsubscribers.push(notificationsUnsub);\n\n const tpslUnsub = asUnsubscribeFn(ws.subscribeToTpsl(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'tpslOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (tpslUnsub) unsubscribers.push(tpslUnsub);\n\n const twapUnsub = asUnsubscribeFn(ws.subscribeToTwapOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'twapOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (twapUnsub) unsubscribers.push(twapUnsub);\n\n const triggerOrdersUnsub = asUnsubscribeFn(ws.subscribeToTriggerOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'triggerOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (triggerOrdersUnsub) unsubscribers.push(triggerOrdersUnsub);\n\n const executionsUnsub = asUnsubscribeFn(ws.subscribeToExecutions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n queryClient.invalidateQueries({\n queryKey: ['symm', 'portfolio'],\n });\n }));\n if (executionsUnsub) unsubscribers.push(executionsUnsub);\n\n return () => {\n if (unsubscribers.length > 2) {\n unsubscribers.forEach((unsubscribe) => unsubscribe());\n } else {\n removeOnConnect();\n removeOnDisconnect();\n ws.unsubscribeAll();\n }\n };\n }, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);\n\n return { isConnected };\n}\n","import { useMemo } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport { createSymmSDK, type SymmSDK } from \"@pear-protocol/symm-core\";\n\nimport type { SymmioSDKConfig } from \"../types/common\";\nimport { SymmContext, type SymmContextValue } from \"./context\";\nimport { useSymmWs } from \"./hooks/use-symm-ws\";\n\ntype RefreshAuth = (accountAddress?: Address) => Promise<string | null>;\n\nexport type SymmProviderProps = {\n chainId?: number;\n address?: Address;\n symmCoreConfig: {\n apiUrl: string;\n wsUrl?: string;\n };\n symmioConfig?: Partial<SymmioSDKConfig>;\n children: React.ReactNode;\n};\n\nexport function SymmProvider({\n chainId = 42161,\n address,\n symmCoreConfig,\n symmioConfig,\n children,\n}: SymmProviderProps) {\n const symmCoreClient = useMemo((): SymmSDK => {\n return createSymmSDK({\n apiUrl: symmCoreConfig.apiUrl,\n wsUrl: symmCoreConfig.wsUrl,\n defaultChainId: chainId,\n });\n }, [chainId, symmCoreConfig.apiUrl, symmCoreConfig.wsUrl]);\n\n useSymmWs({ symmCoreClient, accountAddress: address, chainId });\n\n const value = useMemo<SymmContextValue>(\n () => ({\n symmCoreClient,\n chainId,\n address,\n symmioConfig,\n }),\n [symmCoreClient, chainId, address, symmioConfig]\n );\n\n return <SymmContext.Provider value={value}>{children}</SymmContext.Provider>;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { createContext, useMemo, useEffect } from 'react';
1
+ import { createContext, useMemo, useEffect, useContext } from 'react';
2
2
  import { createSymmSDK } from '@pear-protocol/symm-core';
3
3
  import { useQueryClient } from '@tanstack/react-query';
4
4
  import { create } from 'zustand';
@@ -6,6 +6,13 @@ import { jsx } from 'react/jsx-runtime';
6
6
 
7
7
  // src/react/provider.tsx
8
8
  var SymmContext = createContext(null);
9
+ function useSymmContext() {
10
+ const ctx = useContext(SymmContext);
11
+ if (!ctx) {
12
+ throw new Error("useSymmContext must be used within <SymmProvider>");
13
+ }
14
+ return ctx;
15
+ }
9
16
 
10
17
  // src/react/query-keys.ts
11
18
  var symmKeys = {
@@ -54,11 +61,14 @@ var useSymmWsStore = create((set) => ({
54
61
  function asUnsubscribeFn(value) {
55
62
  return typeof value === "function" ? value : null;
56
63
  }
57
- function useSymmWs(params) {
64
+ function useSymmWs(params = {}) {
65
+ const { symmCoreClient: ctxClient, address: ctxAddress, chainId: ctxChainId } = useSymmContext();
58
66
  const queryClient = useQueryClient();
59
67
  const isConnected = useSymmWsStore((state) => state.isConnected);
60
68
  const setConnected = useSymmWsStore((state) => state.setConnected);
61
- const { symmCoreClient, accountAddress, chainId } = params;
69
+ const symmCoreClient = params.symmCoreClient ?? ctxClient;
70
+ const accountAddress = params.accountAddress ?? ctxAddress;
71
+ const chainId = params.chainId ?? ctxChainId;
62
72
  useEffect(() => {
63
73
  if (!symmCoreClient || !accountAddress) {
64
74
  setConnected(false);
@@ -142,13 +152,9 @@ function useSymmWs(params) {
142
152
  }, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);
143
153
  return { isConnected };
144
154
  }
145
- var noopRefreshAuth = async () => null;
146
155
  function SymmProvider({
147
156
  chainId = 42161,
148
157
  address,
149
- accessToken = null,
150
- authToken,
151
- refreshAuth = noopRefreshAuth,
152
158
  symmCoreConfig,
153
159
  symmioConfig,
154
160
  children
@@ -160,27 +166,15 @@ function SymmProvider({
160
166
  defaultChainId: chainId
161
167
  });
162
168
  }, [chainId, symmCoreConfig.apiUrl, symmCoreConfig.wsUrl]);
163
- const resolvedAuthToken = authToken ?? accessToken;
164
169
  useSymmWs({ symmCoreClient, accountAddress: address, chainId });
165
170
  const value = useMemo(
166
171
  () => ({
167
172
  symmCoreClient,
168
173
  chainId,
169
174
  address,
170
- symmioConfig,
171
- accessToken,
172
- authToken: resolvedAuthToken,
173
- refreshAuth
175
+ symmioConfig
174
176
  }),
175
- [
176
- symmCoreClient,
177
- chainId,
178
- address,
179
- symmioConfig,
180
- accessToken,
181
- resolvedAuthToken,
182
- refreshAuth
183
- ]
177
+ [symmCoreClient, chainId, address, symmioConfig]
184
178
  );
185
179
  return /* @__PURE__ */ jsx(SymmContext.Provider, { value, children });
186
180
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/context.ts","../../src/react/query-keys.ts","../../src/react/stores/use-symm-ws-store.ts","../../src/react/hooks/use-symm-ws.ts","../../src/react/provider.tsx"],"names":[],"mappings":"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","file":"provider.mjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport type { SymmSDK } from \"@pear-protocol/symm-core\";\nimport type { SymmioSDKConfig } from \"../types/common\";\n\nexport type SymmContextValue = {\n symmCoreClient: SymmSDK | null;\n chainId: number;\n address?: `0x${string}`;\n symmioConfig?: Partial<SymmioSDKConfig>;\n accessToken: string | null;\n authToken: string | null;\n refreshAuth: (accountAddress?: Address) => Promise<string | null>;\n};\n\nexport const SymmContext = createContext<SymmContextValue | null>(null);\n\nexport function useSymmContext(): SymmContextValue {\n const ctx = useContext(SymmContext);\n if (!ctx) {\n throw new Error(\"useSymmContext must be used within <SymmProvider>\");\n }\n return ctx;\n}\n","import type { GetSymmHedgerMarketsRequest } from '@pear-protocol/symm-core';\nimport type { Address, Hex } from 'viem';\n\nexport const symmKeys = {\n all: ['symm'] as const,\n accounts: (address?: Address, chainId?: number) =>\n ['symm', 'accounts', address, chainId] as const,\n accountsApi: (address?: Address, chainId?: number) =>\n ['symm', 'accountsApi', address, chainId] as const,\n accountsLength: (address?: Address, chainId?: number) =>\n ['symm', 'accountsLength', address, chainId] as const,\n accountsWithPositions: (address?: Address, chainId?: number) =>\n ['symm', 'accountsWithPositions', address, chainId] as const,\n accountSummary: (address?: Address, chainId?: number) =>\n ['symm', 'accountSummary', address, chainId] as const,\n accountData: (address?: Address, chainId?: number, upnl?: string) =>\n ['symm', 'accountData', address, chainId, upnl] as const,\n signature: (address?: Address, chainId?: number) =>\n ['symm', 'signature', address, chainId] as const,\n approval: (\n owner?: Address,\n spender?: Address,\n chainId?: number,\n token?: Address\n ) => ['symm', 'approval', owner, spender, chainId, token] as const,\n balances: (address?: Address, chainId?: number) =>\n ['symm', 'balances', address, chainId] as const,\n positions: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'positions', params] as const,\n openOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'openOrders', params] as const,\n tradeHistory: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'tradeHistory', params] as const,\n tpslOrders: (address?: Address, chainId?: number) =>\n ['symm', 'tpslOrders', address, chainId] as const,\n tpslOrdersList: (params?: {\n accountAddress?: Address;\n address?: Address;\n positionId?: string;\n type?: string;\n status?: string;\n chainId?: number;\n }) => ['symm', 'tpslOrders', params] as const,\n twapOrders: (address?: Address, chainId?: number) =>\n ['symm', 'twapOrders', address, chainId] as const,\n triggerOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n status?: string;\n limit?: number;\n offset?: number;\n chainId?: number;\n }) => ['symm', 'triggerOrders', params] as const,\n triggerConfig: (orderId?: string) =>\n ['symm', 'triggerConfig', orderId] as const,\n markets: (chainId?: number, search?: string) =>\n ['symm', 'markets', chainId, search] as const,\n hedgerMarketById: (id?: number, chainId?: number) =>\n ['symm', 'hedgerMarketById', id, chainId] as const,\n hedgerMarketBySymbol: (symbol?: string, chainId?: number) =>\n ['symm', 'hedgerMarketBySymbol', symbol, chainId] as const,\n lockedParams: (marketName?: string, leverage?: number, chainId?: number) =>\n ['symm', 'lockedParams', marketName, leverage, chainId] as const,\n hedgerMarkets: (request?: GetSymmHedgerMarketsRequest) =>\n ['symm', 'hedgerMarkets', request] as const,\n fundingRates: (chainId?: number) => ['symm', 'fundingRates', chainId] as const,\n fundingPayments: (params?: {\n address?: Address;\n positionId?: string;\n chainId?: number;\n limit?: number;\n offset?: number;\n }) => ['symm', 'fundingPayments', params] as const,\n fundingHistory: (params?: {\n chainId?: number;\n period?: string;\n longSymbols?: string;\n shortSymbols?: string;\n interval?: string;\n weightMode?: string;\n includeContributions?: boolean;\n }) => ['symm', 'fundingHistory', params] as const,\n portfolio: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'portfolio', params] as const,\n notifications: (address?: Address, chainId?: number) =>\n ['symm', 'notifications', address, chainId] as const,\n unreadCount: (address?: Address, chainId?: number) =>\n ['symm', 'unreadCount', address, chainId] as const,\n availableMargin: (address?: Address, chainId?: number) =>\n ['symm', 'availableMargin', address, chainId] as const,\n pendingIds: (address?: Address, chainId?: number) =>\n ['symm', 'pendingIds', address, chainId] as const,\n pendingInstantOpens: (accountAddress?: Address, chainId?: number) =>\n ['symm', 'pendingInstantOpens', accountAddress, chainId] as const,\n twapOrder: (orderId?: string) =>\n ['symm', 'twapOrder', orderId] as const,\n delegation: (\n account?: Address,\n target?: Address,\n selectors?: readonly Hex[],\n chainId?: number\n ) => ['symm', 'delegation', account, target, selectors, chainId] as const,\n chartMetadata: (symbolsKey: string, positionKey: string) =>\n ['symm', 'chartMetadata', symbolsKey, positionKey] as const,\n};\n","import { create } from 'zustand';\n\ntype SymmWsState = {\n isConnected: boolean;\n setConnected: (isConnected: boolean) => void;\n};\n\nexport const useSymmWsStore = create<SymmWsState>((set) => ({\n isConnected: false,\n setConnected: (isConnected) => set({ isConnected }),\n}));\n","import { useEffect } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SymmSDK } from '@pear-protocol/symm-core';\nimport { symmKeys } from '../query-keys';\nimport { useSymmWsStore } from '../stores/use-symm-ws-store';\n\ntype UnsubscribeFn = () => void;\n\nfunction asUnsubscribeFn(value: unknown): UnsubscribeFn | null {\n return typeof value === 'function' ? (value as UnsubscribeFn) : null;\n}\n\nexport function useSymmWs(params: {\n symmCoreClient: SymmSDK | null;\n accountAddress?: Address;\n chainId: number;\n}) {\n const queryClient = useQueryClient();\n const isConnected = useSymmWsStore((state) => state.isConnected);\n const setConnected = useSymmWsStore((state) => state.setConnected);\n const { symmCoreClient, accountAddress, chainId } = params;\n\n useEffect(() => {\n if (!symmCoreClient || !accountAddress) {\n setConnected(false);\n return;\n }\n\n const ws = symmCoreClient.ws;\n const addr = accountAddress as string;\n const unsubscribers: UnsubscribeFn[] = [];\n\n const removeOnConnect = ws.onConnect(() => setConnected(true));\n const removeOnDisconnect = ws.onDisconnect(() => setConnected(false));\n\n // Subscribe to all relevant channels\n unsubscribers.push(removeOnConnect, removeOnDisconnect);\n const positionsUnsub = asUnsubscribeFn(ws.subscribeToPositions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n }));\n if (positionsUnsub) unsubscribers.push(positionsUnsub);\n\n const openOrdersUnsub = asUnsubscribeFn(ws.subscribeToOpenOrders(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'openOrders'],\n });\n }));\n if (openOrdersUnsub) unsubscribers.push(openOrdersUnsub);\n\n const tradesUnsub = asUnsubscribeFn(ws.subscribeToTrades(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'tradeHistory'],\n });\n }));\n if (tradesUnsub) unsubscribers.push(tradesUnsub);\n\n const accountSummaryUnsub = asUnsubscribeFn(ws.subscribeToAccountSummary(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.balances(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.accountSummary(accountAddress, chainId),\n });\n }));\n if (accountSummaryUnsub) unsubscribers.push(accountSummaryUnsub);\n\n const notificationsUnsub = asUnsubscribeFn(ws.subscribeToNotifications(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.notifications(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.unreadCount(accountAddress, chainId),\n });\n }));\n if (notificationsUnsub) unsubscribers.push(notificationsUnsub);\n\n const tpslUnsub = asUnsubscribeFn(ws.subscribeToTpsl(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'tpslOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (tpslUnsub) unsubscribers.push(tpslUnsub);\n\n const twapUnsub = asUnsubscribeFn(ws.subscribeToTwapOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'twapOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (twapUnsub) unsubscribers.push(twapUnsub);\n\n const triggerOrdersUnsub = asUnsubscribeFn(ws.subscribeToTriggerOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'triggerOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (triggerOrdersUnsub) unsubscribers.push(triggerOrdersUnsub);\n\n const executionsUnsub = asUnsubscribeFn(ws.subscribeToExecutions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n queryClient.invalidateQueries({\n queryKey: ['symm', 'portfolio'],\n });\n }));\n if (executionsUnsub) unsubscribers.push(executionsUnsub);\n\n return () => {\n if (unsubscribers.length > 2) {\n unsubscribers.forEach((unsubscribe) => unsubscribe());\n } else {\n removeOnConnect();\n removeOnDisconnect();\n ws.unsubscribeAll();\n }\n };\n }, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);\n\n return { isConnected };\n}\n","import { useMemo } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport { createSymmSDK, type SymmSDK } from \"@pear-protocol/symm-core\";\n\nimport type { SymmioSDKConfig } from \"../types/common\";\nimport { SymmContext, type SymmContextValue } from \"./context\";\nimport { useSymmWs } from \"./hooks/use-symm-ws\";\n\ntype RefreshAuth = (accountAddress?: Address) => Promise<string | null>;\n\nexport type SymmProviderProps = {\n chainId?: number;\n address?: Address;\n publicClient?: PublicClient;\n walletClient?: WalletClient;\n accessToken?: string | null;\n authToken?: string | null;\n refreshAuth?: RefreshAuth;\n symmCoreConfig: {\n apiUrl: string;\n wsUrl?: string;\n };\n symmioConfig?: Partial<SymmioSDKConfig>;\n children: React.ReactNode;\n};\n\nconst noopRefreshAuth: RefreshAuth = async () => null;\n\nexport function SymmProvider({\n chainId = 42161,\n address,\n accessToken = null,\n authToken,\n refreshAuth = noopRefreshAuth,\n symmCoreConfig,\n symmioConfig,\n children,\n}: SymmProviderProps) {\n const symmCoreClient = useMemo((): SymmSDK => {\n return createSymmSDK({\n apiUrl: symmCoreConfig.apiUrl,\n wsUrl: symmCoreConfig.wsUrl,\n defaultChainId: chainId,\n });\n }, [chainId, symmCoreConfig.apiUrl, symmCoreConfig.wsUrl]);\n\n const resolvedAuthToken = authToken ?? accessToken;\n useSymmWs({ symmCoreClient, accountAddress: address, chainId });\n\n const value = useMemo<SymmContextValue>(\n () => ({\n symmCoreClient,\n chainId,\n address,\n symmioConfig,\n accessToken,\n authToken: resolvedAuthToken,\n refreshAuth,\n }),\n [\n symmCoreClient,\n chainId,\n address,\n symmioConfig,\n accessToken,\n resolvedAuthToken,\n refreshAuth,\n ]\n );\n\n return <SymmContext.Provider value={value}>{children}</SymmContext.Provider>;\n}\n"]}
1
+ {"version":3,"sources":["../../src/react/context.ts","../../src/react/query-keys.ts","../../src/react/stores/use-symm-ws-store.ts","../../src/react/hooks/use-symm-ws.ts","../../src/react/provider.tsx"],"names":[],"mappings":"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","file":"provider.mjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport type { SymmSDK } from \"@pear-protocol/symm-core\";\nimport type { SymmioSDKConfig } from \"../types/common\";\n\nexport type SymmContextValue = {\n symmCoreClient: SymmSDK | null;\n chainId: number;\n address?: `0x${string}`;\n symmioConfig?: Partial<SymmioSDKConfig>;\n};\n\nexport const SymmContext = createContext<SymmContextValue | null>(null);\n\nexport function useSymmContext(): SymmContextValue {\n const ctx = useContext(SymmContext);\n if (!ctx) {\n throw new Error(\"useSymmContext must be used within <SymmProvider>\");\n }\n return ctx;\n}\n","import type { GetSymmHedgerMarketsRequest } from '@pear-protocol/symm-core';\nimport type { Address, Hex } from 'viem';\n\nexport const symmKeys = {\n all: ['symm'] as const,\n accounts: (address?: Address, chainId?: number) =>\n ['symm', 'accounts', address, chainId] as const,\n accountsApi: (address?: Address, chainId?: number) =>\n ['symm', 'accountsApi', address, chainId] as const,\n accountsLength: (address?: Address, chainId?: number) =>\n ['symm', 'accountsLength', address, chainId] as const,\n accountsWithPositions: (address?: Address, chainId?: number) =>\n ['symm', 'accountsWithPositions', address, chainId] as const,\n accountSummary: (address?: Address, chainId?: number) =>\n ['symm', 'accountSummary', address, chainId] as const,\n accountData: (address?: Address, chainId?: number, upnl?: string) =>\n ['symm', 'accountData', address, chainId, upnl] as const,\n signature: (address?: Address, chainId?: number) =>\n ['symm', 'signature', address, chainId] as const,\n approval: (\n owner?: Address,\n spender?: Address,\n chainId?: number,\n token?: Address\n ) => ['symm', 'approval', owner, spender, chainId, token] as const,\n balances: (address?: Address, chainId?: number) =>\n ['symm', 'balances', address, chainId] as const,\n positions: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'positions', params] as const,\n openOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'openOrders', params] as const,\n tradeHistory: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'tradeHistory', params] as const,\n tpslOrders: (address?: Address, chainId?: number) =>\n ['symm', 'tpslOrders', address, chainId] as const,\n tpslOrdersList: (params?: {\n accountAddress?: Address;\n address?: Address;\n positionId?: string;\n type?: string;\n status?: string;\n chainId?: number;\n }) => ['symm', 'tpslOrders', params] as const,\n twapOrders: (address?: Address, chainId?: number) =>\n ['symm', 'twapOrders', address, chainId] as const,\n triggerOrders: (params?: {\n accountAddress?: Address;\n address?: Address;\n status?: string;\n limit?: number;\n offset?: number;\n chainId?: number;\n }) => ['symm', 'triggerOrders', params] as const,\n triggerConfig: (orderId?: string) =>\n ['symm', 'triggerConfig', orderId] as const,\n markets: (chainId?: number, search?: string) =>\n ['symm', 'markets', chainId, search] as const,\n hedgerMarketById: (id?: number, chainId?: number) =>\n ['symm', 'hedgerMarketById', id, chainId] as const,\n hedgerMarketBySymbol: (symbol?: string, chainId?: number) =>\n ['symm', 'hedgerMarketBySymbol', symbol, chainId] as const,\n lockedParams: (marketName?: string, leverage?: number, chainId?: number) =>\n ['symm', 'lockedParams', marketName, leverage, chainId] as const,\n hedgerMarkets: (request?: GetSymmHedgerMarketsRequest) =>\n ['symm', 'hedgerMarkets', request] as const,\n fundingRates: (chainId?: number) => ['symm', 'fundingRates', chainId] as const,\n fundingPayments: (params?: {\n address?: Address;\n positionId?: string;\n chainId?: number;\n limit?: number;\n offset?: number;\n }) => ['symm', 'fundingPayments', params] as const,\n fundingHistory: (params?: {\n chainId?: number;\n period?: string;\n longSymbols?: string;\n shortSymbols?: string;\n interval?: string;\n weightMode?: string;\n includeContributions?: boolean;\n }) => ['symm', 'fundingHistory', params] as const,\n portfolio: (params?: {\n accountAddress?: Address;\n address?: Address;\n chainId?: number;\n }) => ['symm', 'portfolio', params] as const,\n notifications: (address?: Address, chainId?: number) =>\n ['symm', 'notifications', address, chainId] as const,\n unreadCount: (address?: Address, chainId?: number) =>\n ['symm', 'unreadCount', address, chainId] as const,\n availableMargin: (address?: Address, chainId?: number) =>\n ['symm', 'availableMargin', address, chainId] as const,\n pendingIds: (address?: Address, chainId?: number) =>\n ['symm', 'pendingIds', address, chainId] as const,\n pendingInstantOpens: (accountAddress?: Address, chainId?: number) =>\n ['symm', 'pendingInstantOpens', accountAddress, chainId] as const,\n twapOrder: (orderId?: string) =>\n ['symm', 'twapOrder', orderId] as const,\n delegation: (\n account?: Address,\n target?: Address,\n selectors?: readonly Hex[],\n chainId?: number\n ) => ['symm', 'delegation', account, target, selectors, chainId] as const,\n chartMetadata: (symbolsKey: string, positionKey: string) =>\n ['symm', 'chartMetadata', symbolsKey, positionKey] as const,\n};\n","import { create } from 'zustand';\n\ntype SymmWsState = {\n isConnected: boolean;\n setConnected: (isConnected: boolean) => void;\n};\n\nexport const useSymmWsStore = create<SymmWsState>((set) => ({\n isConnected: false,\n setConnected: (isConnected) => set({ isConnected }),\n}));\n","import { useEffect } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SymmSDK } from '@pear-protocol/symm-core';\nimport { useSymmContext } from '../context';\nimport { symmKeys } from '../query-keys';\nimport { useSymmWsStore } from '../stores/use-symm-ws-store';\n\ntype UnsubscribeFn = () => void;\n\nfunction asUnsubscribeFn(value: unknown): UnsubscribeFn | null {\n return typeof value === 'function' ? (value as UnsubscribeFn) : null;\n}\n\nexport function useSymmWs(params: {\n symmCoreClient?: SymmSDK | null;\n accountAddress?: Address;\n chainId?: number;\n} = {}) {\n const { symmCoreClient: ctxClient, address: ctxAddress, chainId: ctxChainId } = useSymmContext();\n const queryClient = useQueryClient();\n const isConnected = useSymmWsStore((state) => state.isConnected);\n const setConnected = useSymmWsStore((state) => state.setConnected);\n const symmCoreClient = params.symmCoreClient ?? ctxClient;\n const accountAddress = params.accountAddress ?? ctxAddress;\n const chainId = params.chainId ?? ctxChainId;\n\n useEffect(() => {\n if (!symmCoreClient || !accountAddress) {\n setConnected(false);\n return;\n }\n\n const ws = symmCoreClient.ws;\n const addr = accountAddress as string;\n const unsubscribers: UnsubscribeFn[] = [];\n\n const removeOnConnect = ws.onConnect(() => setConnected(true));\n const removeOnDisconnect = ws.onDisconnect(() => setConnected(false));\n\n // Subscribe to all relevant channels\n unsubscribers.push(removeOnConnect, removeOnDisconnect);\n const positionsUnsub = asUnsubscribeFn(ws.subscribeToPositions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n }));\n if (positionsUnsub) unsubscribers.push(positionsUnsub);\n\n const openOrdersUnsub = asUnsubscribeFn(ws.subscribeToOpenOrders(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'openOrders'],\n });\n }));\n if (openOrdersUnsub) unsubscribers.push(openOrdersUnsub);\n\n const tradesUnsub = asUnsubscribeFn(ws.subscribeToTrades(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'tradeHistory'],\n });\n }));\n if (tradesUnsub) unsubscribers.push(tradesUnsub);\n\n const accountSummaryUnsub = asUnsubscribeFn(ws.subscribeToAccountSummary(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.balances(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.accountSummary(accountAddress, chainId),\n });\n }));\n if (accountSummaryUnsub) unsubscribers.push(accountSummaryUnsub);\n\n const notificationsUnsub = asUnsubscribeFn(ws.subscribeToNotifications(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: symmKeys.notifications(accountAddress, chainId),\n });\n queryClient.invalidateQueries({\n queryKey: symmKeys.unreadCount(accountAddress, chainId),\n });\n }));\n if (notificationsUnsub) unsubscribers.push(notificationsUnsub);\n\n const tpslUnsub = asUnsubscribeFn(ws.subscribeToTpsl(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'tpslOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (tpslUnsub) unsubscribers.push(tpslUnsub);\n\n const twapUnsub = asUnsubscribeFn(ws.subscribeToTwapOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'twapOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (twapUnsub) unsubscribers.push(twapUnsub);\n\n const triggerOrdersUnsub = asUnsubscribeFn(ws.subscribeToTriggerOrders(addr, chainId, () => {\n queryClient.invalidateQueries({ queryKey: ['symm', 'triggerOrders'] });\n queryClient.invalidateQueries({ queryKey: ['symm', 'openOrders'] });\n }));\n if (triggerOrdersUnsub) unsubscribers.push(triggerOrdersUnsub);\n\n const executionsUnsub = asUnsubscribeFn(ws.subscribeToExecutions(addr, chainId, () => {\n queryClient.invalidateQueries({\n queryKey: ['symm', 'positions'],\n });\n queryClient.invalidateQueries({\n queryKey: ['symm', 'portfolio'],\n });\n }));\n if (executionsUnsub) unsubscribers.push(executionsUnsub);\n\n return () => {\n if (unsubscribers.length > 2) {\n unsubscribers.forEach((unsubscribe) => unsubscribe());\n } else {\n removeOnConnect();\n removeOnDisconnect();\n ws.unsubscribeAll();\n }\n };\n }, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);\n\n return { isConnected };\n}\n","import { useMemo } from \"react\";\nimport type { Address, PublicClient, WalletClient } from \"viem\";\nimport { createSymmSDK, type SymmSDK } from \"@pear-protocol/symm-core\";\n\nimport type { SymmioSDKConfig } from \"../types/common\";\nimport { SymmContext, type SymmContextValue } from \"./context\";\nimport { useSymmWs } from \"./hooks/use-symm-ws\";\n\ntype RefreshAuth = (accountAddress?: Address) => Promise<string | null>;\n\nexport type SymmProviderProps = {\n chainId?: number;\n address?: Address;\n symmCoreConfig: {\n apiUrl: string;\n wsUrl?: string;\n };\n symmioConfig?: Partial<SymmioSDKConfig>;\n children: React.ReactNode;\n};\n\nexport function SymmProvider({\n chainId = 42161,\n address,\n symmCoreConfig,\n symmioConfig,\n children,\n}: SymmProviderProps) {\n const symmCoreClient = useMemo((): SymmSDK => {\n return createSymmSDK({\n apiUrl: symmCoreConfig.apiUrl,\n wsUrl: symmCoreConfig.wsUrl,\n defaultChainId: chainId,\n });\n }, [chainId, symmCoreConfig.apiUrl, symmCoreConfig.wsUrl]);\n\n useSymmWs({ symmCoreClient, accountAddress: address, chainId });\n\n const value = useMemo<SymmContextValue>(\n () => ({\n symmCoreClient,\n chainId,\n address,\n symmioConfig,\n }),\n [symmCoreClient, chainId, address, symmioConfig]\n );\n\n return <SymmContext.Provider value={value}>{children}</SymmContext.Provider>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pear-protocol/symmio-client",
3
- "version": "0.2.8",
3
+ "version": "0.2.10",
4
4
  "description": "Standalone SDK for Symmio — account management, trading, deposits, withdrawals, and protocol interactions via MultiAccount",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -90,8 +90,8 @@
90
90
  "node": ">=18"
91
91
  },
92
92
  "dependencies": {
93
- "@pear-protocol/symm-core": "^0.1.6",
94
- "@pear-protocol/symm-shared": "^0.1.2",
93
+ "@pear-protocol/symm-core": "^0.1.8",
94
+ "@pear-protocol/symm-shared": "^0.1.3",
95
95
  "zustand": "^5.0.12"
96
96
  }
97
97
  }