@pear-protocol/symmio-client 0.2.46 → 0.2.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/index.d.mts +48 -27
- package/dist/react/index.d.ts +48 -27
- package/dist/react/index.js +102 -178
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +104 -179
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { createContext, useContext, useMemo, useCallback,
|
|
2
|
+
import { createContext, useContext, useMemo, useCallback, useRef, useEffect } from 'react';
|
|
3
3
|
import { createSymmSDK, isAuthExpiredError, isNetworkError, isInsufficientMarginError, isRateLimitedError, isTimeoutError } from '@pear-protocol/symm-core';
|
|
4
4
|
import { create } from 'zustand';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -705,6 +705,17 @@ async function fetchAccessTokenEntry(walletClient, signerAddress, accountAddress
|
|
|
705
705
|
// src/react/query-keys.ts
|
|
706
706
|
var symmKeys = {
|
|
707
707
|
all: ["symm"],
|
|
708
|
+
balancesRoot: ["symm", "balances"],
|
|
709
|
+
accountSummaryRoot: ["symm", "accountSummary"],
|
|
710
|
+
accountDataRoot: ["symm", "accountData"],
|
|
711
|
+
approvalRoot: ["symm", "approval"],
|
|
712
|
+
positionsRoot: ["symm", "positions"],
|
|
713
|
+
openOrdersRoot: ["symm", "openOrders"],
|
|
714
|
+
tradeHistoryRoot: ["symm", "tradeHistory"],
|
|
715
|
+
portfolioRoot: ["symm", "portfolio"],
|
|
716
|
+
tpslOrdersRoot: ["symm", "tpslOrders"],
|
|
717
|
+
twapOrdersRoot: ["symm", "twapOrders"],
|
|
718
|
+
triggerOrdersRoot: ["symm", "triggerOrders"],
|
|
708
719
|
accounts: (address, chainId) => ["symm", "accounts", address, chainId],
|
|
709
720
|
accountsApi: (address, chainId) => ["symm", "accountsApi", address, chainId],
|
|
710
721
|
accountsLength: (address, chainId) => ["symm", "accountsLength", address, chainId],
|
|
@@ -712,7 +723,7 @@ var symmKeys = {
|
|
|
712
723
|
accountSummary: (address, chainId) => ["symm", "accountSummary", address, chainId],
|
|
713
724
|
accountData: (address, chainId, upnl) => ["symm", "accountData", address, chainId, upnl],
|
|
714
725
|
signature: (address, chainId) => ["symm", "signature", address, chainId],
|
|
715
|
-
auth: (accountAddress, chainId) => ["symm", "auth", accountAddress, chainId],
|
|
726
|
+
auth: (accountAddress, chainId, signerAddress) => ["symm", "auth", accountAddress, chainId, signerAddress],
|
|
716
727
|
approval: (owner, spender, chainId, token) => ["symm", "approval", owner, spender, chainId, token],
|
|
717
728
|
balances: (address, chainId) => ["symm", "balances", address, chainId],
|
|
718
729
|
positions: (params) => ["symm", "positions", params],
|
|
@@ -743,23 +754,25 @@ var symmKeys = {
|
|
|
743
754
|
};
|
|
744
755
|
|
|
745
756
|
// src/react/auth-cache.ts
|
|
746
|
-
function getAuthQueryData(queryClient, accountAddress, chainId) {
|
|
747
|
-
return queryClient.getQueryData(
|
|
757
|
+
function getAuthQueryData(queryClient, accountAddress, chainId, signerAddress) {
|
|
758
|
+
return queryClient.getQueryData(
|
|
759
|
+
symmKeys.auth(accountAddress, chainId, signerAddress)
|
|
760
|
+
) ?? null;
|
|
748
761
|
}
|
|
749
|
-
function setAuthQueryData(queryClient, accountAddress, chainId, entry) {
|
|
750
|
-
queryClient.setQueryData(symmKeys.auth(accountAddress, chainId), entry);
|
|
762
|
+
function setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, entry) {
|
|
763
|
+
queryClient.setQueryData(symmKeys.auth(accountAddress, chainId, signerAddress), entry);
|
|
751
764
|
}
|
|
752
|
-
function clearAuthQueryData(queryClient, accountAddress, chainId) {
|
|
765
|
+
function clearAuthQueryData(queryClient, accountAddress, chainId, signerAddress) {
|
|
753
766
|
queryClient.removeQueries({
|
|
754
|
-
queryKey: symmKeys.auth(accountAddress, chainId),
|
|
767
|
+
queryKey: symmKeys.auth(accountAddress, chainId, signerAddress),
|
|
755
768
|
exact: true
|
|
756
769
|
});
|
|
757
770
|
}
|
|
758
771
|
function clearPersistedAuthState(accountAddress, chainId) {
|
|
759
772
|
clearCachedToken(accountAddress, chainId);
|
|
760
773
|
}
|
|
761
|
-
function getAuthTokenFromRuntimeCache(queryClient, accountAddress, chainId) {
|
|
762
|
-
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId);
|
|
774
|
+
function getAuthTokenFromRuntimeCache(queryClient, accountAddress, chainId, signerAddress) {
|
|
775
|
+
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId, signerAddress) ?? getAuthQueryData(queryClient, accountAddress, chainId);
|
|
763
776
|
if (inQuery && inQuery.expiresAt > Date.now()) {
|
|
764
777
|
return inQuery.token;
|
|
765
778
|
}
|
|
@@ -767,7 +780,7 @@ function getAuthTokenFromRuntimeCache(queryClient, accountAddress, chainId) {
|
|
|
767
780
|
if (!persisted) {
|
|
768
781
|
return null;
|
|
769
782
|
}
|
|
770
|
-
setAuthQueryData(queryClient, accountAddress, chainId, persisted);
|
|
783
|
+
setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, persisted);
|
|
771
784
|
return persisted.token;
|
|
772
785
|
}
|
|
773
786
|
async function resolveAuthTokenEntry({
|
|
@@ -783,13 +796,13 @@ async function resolveAuthTokenEntry({
|
|
|
783
796
|
return null;
|
|
784
797
|
}
|
|
785
798
|
if (!force) {
|
|
786
|
-
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId);
|
|
799
|
+
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId, signerAddress);
|
|
787
800
|
if (inQuery && inQuery.expiresAt > Date.now()) {
|
|
788
801
|
return inQuery;
|
|
789
802
|
}
|
|
790
803
|
const persisted = getCachedTokenEntry(accountAddress, chainId);
|
|
791
804
|
if (persisted) {
|
|
792
|
-
setAuthQueryData(queryClient, accountAddress, chainId, persisted);
|
|
805
|
+
setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, persisted);
|
|
793
806
|
return persisted;
|
|
794
807
|
}
|
|
795
808
|
}
|
|
@@ -800,12 +813,12 @@ async function resolveAuthTokenEntry({
|
|
|
800
813
|
chainId,
|
|
801
814
|
siweDomain
|
|
802
815
|
);
|
|
803
|
-
setAuthQueryData(queryClient, accountAddress, chainId, fresh);
|
|
816
|
+
setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, fresh);
|
|
804
817
|
return fresh;
|
|
805
818
|
}
|
|
806
|
-
function clearAuthState(queryClient, accountAddress, chainId) {
|
|
819
|
+
function clearAuthState(queryClient, accountAddress, chainId, signerAddress) {
|
|
807
820
|
clearPersistedAuthState(accountAddress, chainId);
|
|
808
|
-
clearAuthQueryData(queryClient, accountAddress, chainId);
|
|
821
|
+
clearAuthQueryData(queryClient, accountAddress, chainId, signerAddress);
|
|
809
822
|
}
|
|
810
823
|
|
|
811
824
|
// src/react/hooks/use-symm-auth.ts
|
|
@@ -879,7 +892,7 @@ function useSymmAuth(params) {
|
|
|
879
892
|
]
|
|
880
893
|
);
|
|
881
894
|
const authQuery = useQuery({
|
|
882
|
-
queryKey: symmKeys.auth(activeAccountAddress, chainId),
|
|
895
|
+
queryKey: symmKeys.auth(activeAccountAddress, chainId, address),
|
|
883
896
|
queryFn: async () => {
|
|
884
897
|
const tokenEntry = await resolveAuthTokenEntry({
|
|
885
898
|
queryClient,
|
|
@@ -901,9 +914,9 @@ function useSymmAuth(params) {
|
|
|
901
914
|
});
|
|
902
915
|
const clearAuth = useCallback(() => {
|
|
903
916
|
if (activeAccountAddress) {
|
|
904
|
-
clearAuthState(queryClient, activeAccountAddress, chainId);
|
|
917
|
+
clearAuthState(queryClient, activeAccountAddress, chainId, address);
|
|
905
918
|
}
|
|
906
|
-
}, [activeAccountAddress, chainId, queryClient]);
|
|
919
|
+
}, [activeAccountAddress, address, chainId, queryClient]);
|
|
907
920
|
const token = authQuery.data?.token ?? null;
|
|
908
921
|
return {
|
|
909
922
|
accessToken: token,
|
|
@@ -1668,22 +1681,22 @@ function useSymmRevokeDelegationMutation(params = {}, options) {
|
|
|
1668
1681
|
|
|
1669
1682
|
// src/react/cache.ts
|
|
1670
1683
|
function invalidateBalances(qc) {
|
|
1671
|
-
qc.invalidateQueries({ queryKey:
|
|
1672
|
-
qc.invalidateQueries({ queryKey:
|
|
1673
|
-
qc.invalidateQueries({ queryKey:
|
|
1674
|
-
qc.invalidateQueries({ queryKey:
|
|
1684
|
+
qc.invalidateQueries({ queryKey: symmKeys.balancesRoot });
|
|
1685
|
+
qc.invalidateQueries({ queryKey: symmKeys.accountSummaryRoot });
|
|
1686
|
+
qc.invalidateQueries({ queryKey: symmKeys.accountDataRoot });
|
|
1687
|
+
qc.invalidateQueries({ queryKey: symmKeys.portfolioRoot });
|
|
1675
1688
|
}
|
|
1676
1689
|
function invalidatePositions(qc) {
|
|
1677
|
-
qc.invalidateQueries({ queryKey:
|
|
1678
|
-
qc.invalidateQueries({ queryKey:
|
|
1679
|
-
qc.invalidateQueries({ queryKey:
|
|
1680
|
-
qc.invalidateQueries({ queryKey:
|
|
1690
|
+
qc.invalidateQueries({ queryKey: symmKeys.positionsRoot });
|
|
1691
|
+
qc.invalidateQueries({ queryKey: symmKeys.openOrdersRoot });
|
|
1692
|
+
qc.invalidateQueries({ queryKey: symmKeys.tradeHistoryRoot });
|
|
1693
|
+
qc.invalidateQueries({ queryKey: symmKeys.portfolioRoot });
|
|
1681
1694
|
}
|
|
1682
1695
|
function invalidateOrders(qc) {
|
|
1683
|
-
qc.invalidateQueries({ queryKey:
|
|
1684
|
-
qc.invalidateQueries({ queryKey:
|
|
1685
|
-
qc.invalidateQueries({ queryKey:
|
|
1686
|
-
qc.invalidateQueries({ queryKey:
|
|
1696
|
+
qc.invalidateQueries({ queryKey: symmKeys.openOrdersRoot });
|
|
1697
|
+
qc.invalidateQueries({ queryKey: symmKeys.tpslOrdersRoot });
|
|
1698
|
+
qc.invalidateQueries({ queryKey: symmKeys.twapOrdersRoot });
|
|
1699
|
+
qc.invalidateQueries({ queryKey: symmKeys.triggerOrdersRoot });
|
|
1687
1700
|
}
|
|
1688
1701
|
|
|
1689
1702
|
// src/react/hooks/use-symm-instant-trade.ts
|
|
@@ -1700,12 +1713,13 @@ function useInstantTradeDeps(params) {
|
|
|
1700
1713
|
defaultTarget,
|
|
1701
1714
|
multiAccount,
|
|
1702
1715
|
publicClient: params.publicClient,
|
|
1716
|
+
signerAddress: address,
|
|
1703
1717
|
symmCoreClient,
|
|
1704
1718
|
walletClient: params.walletClient
|
|
1705
1719
|
};
|
|
1706
1720
|
}
|
|
1707
1721
|
async function ensureInstantTradeReady(deps, queryClient, request) {
|
|
1708
|
-
const { chainId, defaultAccountAddress, defaultSelectors, defaultTarget, multiAccount, publicClient, walletClient } = deps;
|
|
1722
|
+
const { chainId, defaultAccountAddress, defaultSelectors, defaultTarget, multiAccount, publicClient, signerAddress, walletClient } = deps;
|
|
1709
1723
|
if (!publicClient || !walletClient) throw new Error("Clients not available");
|
|
1710
1724
|
const accountAddress = request?.accountAddress ?? defaultAccountAddress;
|
|
1711
1725
|
const target = request?.target ?? defaultTarget;
|
|
@@ -1715,7 +1729,12 @@ async function ensureInstantTradeReady(deps, queryClient, request) {
|
|
|
1715
1729
|
if (selectors.length === 0) {
|
|
1716
1730
|
throw new Error("at least one delegation selector is required");
|
|
1717
1731
|
}
|
|
1718
|
-
const accessToken = getAuthTokenFromRuntimeCache(
|
|
1732
|
+
const accessToken = getAuthTokenFromRuntimeCache(
|
|
1733
|
+
queryClient,
|
|
1734
|
+
accountAddress,
|
|
1735
|
+
chainId,
|
|
1736
|
+
signerAddress
|
|
1737
|
+
);
|
|
1719
1738
|
if (!accessToken) {
|
|
1720
1739
|
throw new Error("auth token is required for instant trading");
|
|
1721
1740
|
}
|
|
@@ -2128,7 +2147,12 @@ function useSymmCancelClose(options) {
|
|
|
2128
2147
|
}
|
|
2129
2148
|
const resolvedAccountAddress = accountAddress ?? address;
|
|
2130
2149
|
const resolvedChainId = overrideChainId ?? chainId;
|
|
2131
|
-
const resolvedAuthToken = authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2150
|
+
const resolvedAuthToken = authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2151
|
+
queryClient,
|
|
2152
|
+
resolvedAccountAddress,
|
|
2153
|
+
resolvedChainId,
|
|
2154
|
+
address
|
|
2155
|
+
) : null);
|
|
2132
2156
|
if (!resolvedAuthToken) {
|
|
2133
2157
|
throw new Error("auth token is required to cancel a pending close");
|
|
2134
2158
|
}
|
|
@@ -2159,7 +2183,12 @@ function useSymmCloseOrder(options) {
|
|
|
2159
2183
|
return symmCoreClient.orders.close(request.id, {
|
|
2160
2184
|
kind: request.kind,
|
|
2161
2185
|
type: request.type,
|
|
2162
|
-
authToken: request.authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2186
|
+
authToken: request.authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2187
|
+
queryClient,
|
|
2188
|
+
resolvedAccountAddress,
|
|
2189
|
+
chainId,
|
|
2190
|
+
address
|
|
2191
|
+
) ?? void 0 : void 0)
|
|
2163
2192
|
});
|
|
2164
2193
|
}
|
|
2165
2194
|
});
|
|
@@ -2232,7 +2261,7 @@ function useSymmDepositMutation(params = {}, options) {
|
|
|
2232
2261
|
...withSymmMutationConfig(options?.mutation, {
|
|
2233
2262
|
onSuccess: () => {
|
|
2234
2263
|
invalidateBalances(queryClient);
|
|
2235
|
-
queryClient.invalidateQueries({ queryKey:
|
|
2264
|
+
queryClient.invalidateQueries({ queryKey: symmKeys.approvalRoot });
|
|
2236
2265
|
}
|
|
2237
2266
|
}),
|
|
2238
2267
|
mutationFn: async ({
|
|
@@ -2251,7 +2280,7 @@ function useSymmDepositAndAllocateMutation(params = {}, options) {
|
|
|
2251
2280
|
...withSymmMutationConfig(options?.mutation, {
|
|
2252
2281
|
onSuccess: () => {
|
|
2253
2282
|
invalidateBalances(queryClient);
|
|
2254
|
-
queryClient.invalidateQueries({ queryKey:
|
|
2283
|
+
queryClient.invalidateQueries({ queryKey: symmKeys.approvalRoot });
|
|
2255
2284
|
}
|
|
2256
2285
|
}),
|
|
2257
2286
|
mutationFn: async ({
|
|
@@ -25292,13 +25321,6 @@ function useResolveTradeAuthToken(params = {}) {
|
|
|
25292
25321
|
const queryClient = useQueryClient();
|
|
25293
25322
|
const address = params.address ?? context.address;
|
|
25294
25323
|
const chainId = params.chainId ?? context.chainId;
|
|
25295
|
-
const { refreshAuth } = useSymmAuth({
|
|
25296
|
-
address,
|
|
25297
|
-
chainId,
|
|
25298
|
-
walletClient: params.walletClient,
|
|
25299
|
-
siweDomain: params.siweDomain
|
|
25300
|
-
});
|
|
25301
|
-
const refreshAuthFromContext = context.refreshAuth;
|
|
25302
25324
|
return useCallback(
|
|
25303
25325
|
async (providedAuthToken, accountAddress) => {
|
|
25304
25326
|
if (providedAuthToken) {
|
|
@@ -25315,7 +25337,8 @@ function useResolveTradeAuthToken(params = {}) {
|
|
|
25315
25337
|
const inMemoryToken = getAuthTokenFromRuntimeCache(
|
|
25316
25338
|
queryClient,
|
|
25317
25339
|
resolvedAccountAddress,
|
|
25318
|
-
chainId
|
|
25340
|
+
chainId,
|
|
25341
|
+
address
|
|
25319
25342
|
);
|
|
25320
25343
|
if (inMemoryToken) {
|
|
25321
25344
|
logTradeAuth("resolve-auth:store-hit", {
|
|
@@ -25324,20 +25347,13 @@ function useResolveTradeAuthToken(params = {}) {
|
|
|
25324
25347
|
});
|
|
25325
25348
|
return inMemoryToken;
|
|
25326
25349
|
}
|
|
25327
|
-
|
|
25328
|
-
logTradeAuth("resolve-auth:context-refresh", {
|
|
25329
|
-
accountAddress: resolvedAccountAddress,
|
|
25330
|
-
chainId
|
|
25331
|
-
});
|
|
25332
|
-
return refreshAuthFromContext(resolvedAccountAddress);
|
|
25333
|
-
}
|
|
25334
|
-
logTradeAuth("resolve-auth:hook-refresh", {
|
|
25350
|
+
logTradeAuth("resolve-auth:miss", {
|
|
25335
25351
|
accountAddress: resolvedAccountAddress,
|
|
25336
25352
|
chainId
|
|
25337
25353
|
});
|
|
25338
|
-
return
|
|
25354
|
+
return null;
|
|
25339
25355
|
},
|
|
25340
|
-
[address, chainId, queryClient
|
|
25356
|
+
[address, chainId, queryClient]
|
|
25341
25357
|
);
|
|
25342
25358
|
}
|
|
25343
25359
|
function useSymmOpenBasketMutation(options) {
|
|
@@ -25396,8 +25412,9 @@ function useSymmClosePositionMutation(paramsOrOptions, maybeOptions) {
|
|
|
25396
25412
|
});
|
|
25397
25413
|
}
|
|
25398
25414
|
function useSymmCloseAllPositionsMutation(options) {
|
|
25399
|
-
const { symmCoreClient } = useSymmContext();
|
|
25415
|
+
const { symmCoreClient, address, chainId } = useSymmContext();
|
|
25400
25416
|
const queryClient = useQueryClient();
|
|
25417
|
+
const resolveAuthToken = useResolveTradeAuthToken({ address, chainId });
|
|
25401
25418
|
return useMutation({
|
|
25402
25419
|
...withSymmMutationConfig(options?.mutation, {
|
|
25403
25420
|
onSuccess: () => {
|
|
@@ -25406,7 +25423,18 @@ function useSymmCloseAllPositionsMutation(options) {
|
|
|
25406
25423
|
}),
|
|
25407
25424
|
mutationFn: async (request) => {
|
|
25408
25425
|
if (!symmCoreClient) throw new Error("symm-core client not available");
|
|
25409
|
-
|
|
25426
|
+
const typedRequest = request;
|
|
25427
|
+
const authToken = await resolveAuthToken(
|
|
25428
|
+
typedRequest.authToken,
|
|
25429
|
+
typedRequest.accountAddress
|
|
25430
|
+
);
|
|
25431
|
+
if (!authToken) {
|
|
25432
|
+
throw new Error("auth token is required to close all positions");
|
|
25433
|
+
}
|
|
25434
|
+
return symmCoreClient.positions.closeAll({
|
|
25435
|
+
...request,
|
|
25436
|
+
authToken
|
|
25437
|
+
});
|
|
25410
25438
|
}
|
|
25411
25439
|
});
|
|
25412
25440
|
}
|
|
@@ -25828,9 +25856,10 @@ async function fetch24hrTickers() {
|
|
|
25828
25856
|
}
|
|
25829
25857
|
|
|
25830
25858
|
// src/react/hooks/use-symm-token-selection-markets.ts
|
|
25859
|
+
var EMPTY_MARKETS = [];
|
|
25831
25860
|
function useSymmTokenSelectionMarkets(params) {
|
|
25832
25861
|
const query = useSymmHedgerMarkets(params);
|
|
25833
|
-
const baseMarkets = query.data?.filteredMarkets ?? query.data?.markets ??
|
|
25862
|
+
const baseMarkets = query.data?.filteredMarkets ?? query.data?.markets ?? EMPTY_MARKETS;
|
|
25834
25863
|
const marketSymbols = useMemo(
|
|
25835
25864
|
() => Array.from(
|
|
25836
25865
|
new Set(
|
|
@@ -26087,7 +26116,8 @@ function useSymmPendingIds(params) {
|
|
|
26087
26116
|
function useSymmPendingInstantOpens(params) {
|
|
26088
26117
|
const {
|
|
26089
26118
|
symmCoreClient,
|
|
26090
|
-
chainId: ctxChainId
|
|
26119
|
+
chainId: ctxChainId,
|
|
26120
|
+
address
|
|
26091
26121
|
} = useSymmContext();
|
|
26092
26122
|
const queryClient = useQueryClient();
|
|
26093
26123
|
const { accountAddress, authToken: providedAuthToken } = params;
|
|
@@ -26097,7 +26127,12 @@ function useSymmPendingInstantOpens(params) {
|
|
|
26097
26127
|
...params.query,
|
|
26098
26128
|
queryKey: symmKeys.pendingInstantOpens(accountAddress, chainId),
|
|
26099
26129
|
queryFn: async () => {
|
|
26100
|
-
const authToken = providedAuthToken ?? getAuthTokenFromRuntimeCache(
|
|
26130
|
+
const authToken = providedAuthToken ?? getAuthTokenFromRuntimeCache(
|
|
26131
|
+
queryClient,
|
|
26132
|
+
accountAddress,
|
|
26133
|
+
chainId,
|
|
26134
|
+
address
|
|
26135
|
+
);
|
|
26101
26136
|
if (!authToken) {
|
|
26102
26137
|
throw new Error("failed to acquire auth token for pending instant opens");
|
|
26103
26138
|
}
|
|
@@ -26121,122 +26156,6 @@ function useSymmTwapOrder(params) {
|
|
|
26121
26156
|
enabled: internalEnabled && (params.query?.enabled ?? true)
|
|
26122
26157
|
});
|
|
26123
26158
|
}
|
|
26124
|
-
var useSymmWsStore = create((set) => ({
|
|
26125
|
-
isConnected: false,
|
|
26126
|
-
setConnected: (isConnected) => set({ isConnected })
|
|
26127
|
-
}));
|
|
26128
|
-
|
|
26129
|
-
// src/react/hooks/use-symm-ws.ts
|
|
26130
|
-
function asUnsubscribeFn(value) {
|
|
26131
|
-
return typeof value === "function" ? value : null;
|
|
26132
|
-
}
|
|
26133
|
-
function useSymmWs(params = {}) {
|
|
26134
|
-
const {
|
|
26135
|
-
symmCoreClient: ctxClient,
|
|
26136
|
-
address: ctxAddress,
|
|
26137
|
-
chainId: ctxChainId
|
|
26138
|
-
} = useSymmContext();
|
|
26139
|
-
const queryClient = useQueryClient();
|
|
26140
|
-
const isConnected = useSymmWsStore((state) => state.isConnected);
|
|
26141
|
-
const setConnected = useSymmWsStore((state) => state.setConnected);
|
|
26142
|
-
const symmCoreClient = params.symmCoreClient ?? ctxClient;
|
|
26143
|
-
const accountAddress = params.accountAddress ?? ctxAddress;
|
|
26144
|
-
const chainId = params.chainId ?? ctxChainId;
|
|
26145
|
-
useEffect(() => {
|
|
26146
|
-
if (!symmCoreClient || !accountAddress) {
|
|
26147
|
-
setConnected(false);
|
|
26148
|
-
return;
|
|
26149
|
-
}
|
|
26150
|
-
const ws = symmCoreClient.ws;
|
|
26151
|
-
const addr = accountAddress;
|
|
26152
|
-
const unsubscribers = [];
|
|
26153
|
-
const removeOnConnect = ws.onConnect(() => setConnected(true));
|
|
26154
|
-
const removeOnDisconnect = ws.onDisconnect(() => setConnected(false));
|
|
26155
|
-
unsubscribers.push(removeOnConnect, removeOnDisconnect);
|
|
26156
|
-
const positionsUnsub = asUnsubscribeFn(
|
|
26157
|
-
ws.subscribeToPositions(addr, chainId, () => {
|
|
26158
|
-
queryClient.invalidateQueries({
|
|
26159
|
-
queryKey: ["symm", "positions"]
|
|
26160
|
-
});
|
|
26161
|
-
})
|
|
26162
|
-
);
|
|
26163
|
-
if (positionsUnsub) unsubscribers.push(positionsUnsub);
|
|
26164
|
-
const openOrdersUnsub = asUnsubscribeFn(
|
|
26165
|
-
ws.subscribeToOpenOrders(addr, chainId, () => {
|
|
26166
|
-
queryClient.invalidateQueries({
|
|
26167
|
-
queryKey: ["symm", "openOrders"]
|
|
26168
|
-
});
|
|
26169
|
-
})
|
|
26170
|
-
);
|
|
26171
|
-
if (openOrdersUnsub) unsubscribers.push(openOrdersUnsub);
|
|
26172
|
-
const tradesUnsub = asUnsubscribeFn(
|
|
26173
|
-
ws.subscribeToTrades(addr, chainId, () => {
|
|
26174
|
-
queryClient.invalidateQueries({
|
|
26175
|
-
queryKey: ["symm", "tradeHistory"]
|
|
26176
|
-
});
|
|
26177
|
-
})
|
|
26178
|
-
);
|
|
26179
|
-
if (tradesUnsub) unsubscribers.push(tradesUnsub);
|
|
26180
|
-
const accountSummaryUnsub = asUnsubscribeFn(
|
|
26181
|
-
ws.subscribeToAccountSummary(addr, chainId, () => {
|
|
26182
|
-
queryClient.invalidateQueries({
|
|
26183
|
-
queryKey: symmKeys.balances(accountAddress, chainId)
|
|
26184
|
-
});
|
|
26185
|
-
queryClient.invalidateQueries({
|
|
26186
|
-
queryKey: symmKeys.accountSummary(accountAddress, chainId)
|
|
26187
|
-
});
|
|
26188
|
-
})
|
|
26189
|
-
);
|
|
26190
|
-
if (accountSummaryUnsub) unsubscribers.push(accountSummaryUnsub);
|
|
26191
|
-
const notificationsUnsub = asUnsubscribeFn(
|
|
26192
|
-
ws.subscribeToNotifications(addr, chainId, () => {
|
|
26193
|
-
queryClient.invalidateQueries({
|
|
26194
|
-
queryKey: symmKeys.notifications(accountAddress, chainId)
|
|
26195
|
-
});
|
|
26196
|
-
queryClient.invalidateQueries({
|
|
26197
|
-
queryKey: symmKeys.unreadCount(accountAddress, chainId)
|
|
26198
|
-
});
|
|
26199
|
-
})
|
|
26200
|
-
);
|
|
26201
|
-
if (notificationsUnsub) unsubscribers.push(notificationsUnsub);
|
|
26202
|
-
const tpslUnsub = asUnsubscribeFn(
|
|
26203
|
-
ws.subscribeToTpsl(addr, chainId, () => {
|
|
26204
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "tpslOrders"] });
|
|
26205
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26206
|
-
})
|
|
26207
|
-
);
|
|
26208
|
-
if (tpslUnsub) unsubscribers.push(tpslUnsub);
|
|
26209
|
-
const twapUnsub = asUnsubscribeFn(
|
|
26210
|
-
ws.subscribeToTwapOrders(addr, chainId, () => {
|
|
26211
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "twapOrders"] });
|
|
26212
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26213
|
-
})
|
|
26214
|
-
);
|
|
26215
|
-
if (twapUnsub) unsubscribers.push(twapUnsub);
|
|
26216
|
-
const triggerOrdersUnsub = asUnsubscribeFn(
|
|
26217
|
-
ws.subscribeToTriggerOrders(addr, chainId, () => {
|
|
26218
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "triggerOrders"] });
|
|
26219
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26220
|
-
})
|
|
26221
|
-
);
|
|
26222
|
-
if (triggerOrdersUnsub) unsubscribers.push(triggerOrdersUnsub);
|
|
26223
|
-
const executionsUnsub = asUnsubscribeFn(
|
|
26224
|
-
ws.subscribeToExecutions(addr, chainId, () => {
|
|
26225
|
-
queryClient.invalidateQueries({
|
|
26226
|
-
queryKey: ["symm", "positions"]
|
|
26227
|
-
});
|
|
26228
|
-
queryClient.invalidateQueries({
|
|
26229
|
-
queryKey: ["symm", "portfolio"]
|
|
26230
|
-
});
|
|
26231
|
-
})
|
|
26232
|
-
);
|
|
26233
|
-
if (executionsUnsub) unsubscribers.push(executionsUnsub);
|
|
26234
|
-
return () => {
|
|
26235
|
-
unsubscribers.forEach((unsubscribe) => unsubscribe());
|
|
26236
|
-
};
|
|
26237
|
-
}, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);
|
|
26238
|
-
return { isConnected };
|
|
26239
|
-
}
|
|
26240
26159
|
var STABLE_SYMBOLS = /* @__PURE__ */ new Set(["USDC", "USD", "USDT", "USDE", "USDH", "USDT0"]);
|
|
26241
26160
|
function useSymmChartSelection(input) {
|
|
26242
26161
|
const {
|
|
@@ -26466,7 +26385,10 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
|
|
|
26466
26385
|
);
|
|
26467
26386
|
const isUnsupported = unsupportedSymbols.length > 0;
|
|
26468
26387
|
const unavailableReason = isUnsupported ? `Binance market data is unavailable for ${unsupportedSymbols.join(", ")}.` : null;
|
|
26469
|
-
const symbolsKey =
|
|
26388
|
+
const symbolsKey = useMemo(
|
|
26389
|
+
() => [...selectedSymbols].sort().join(","),
|
|
26390
|
+
[selectedSymbols]
|
|
26391
|
+
);
|
|
26470
26392
|
const liveMarkPrices = useBinanceMarkPriceStore((state) => state.markPrices);
|
|
26471
26393
|
const liveFundingRates = useBinanceMarkPriceStore(
|
|
26472
26394
|
(state) => state.fundingRates
|
|
@@ -26563,7 +26485,6 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
|
|
|
26563
26485
|
}, [
|
|
26564
26486
|
isUnsupported,
|
|
26565
26487
|
longTokens,
|
|
26566
|
-
query,
|
|
26567
26488
|
query.data,
|
|
26568
26489
|
query.isLoading,
|
|
26569
26490
|
shortTokens,
|
|
@@ -26977,7 +26898,11 @@ function getSymmErrorMessage(error) {
|
|
|
26977
26898
|
if (error instanceof Error) return error.message;
|
|
26978
26899
|
return "An unexpected error occurred.";
|
|
26979
26900
|
}
|
|
26901
|
+
var useSymmWsStore = create((set) => ({
|
|
26902
|
+
isConnected: false,
|
|
26903
|
+
setConnected: (isConnected) => set({ isConnected })
|
|
26904
|
+
}));
|
|
26980
26905
|
|
|
26981
|
-
export { SymmProvider, getSymmErrorMessage, symmKeys, useBinanceMarkPriceStore, useSymmAccountData, useSymmAccountSummary, useSymmAccountsApi, useSymmAccountsLength, useSymmAccountsQuery, useSymmAccountsWithPositions, useSymmAllocateCollateralMutation, useSymmApprovalQuery, useSymmApproveMutation, useSymmAuth, useSymmAvailableMargin, useSymmBalances, useSymmCancelClose, useSymmCancelOpenMutation, useSymmCancelTpslMutation, useSymmCancelTwapOrderMutation, useSymmChartCandles, useSymmChartSelection, useSymmClearTriggerConfigMutation, useSymmCloseAllPositionsMutation, useSymmCloseOrder, useSymmClosePositionMutation, useSymmContext, useSymmCoreClient, useSymmCreateAccountMutation, useSymmDeallocateCollateralMutation, useSymmDelegateAccessMutation, useSymmDelegation, useSymmDepositAndAllocateMutation, useSymmDepositMutation, useSymmEditAccountNameMutation, useSymmFunding, useSymmFundingHistory, useSymmFundingPayments, useSymmHedgerMarketById, useSymmHedgerMarketBySymbol, useSymmHedgerMarkets, useSymmInstantTradeEnsureReadyMutation, useSymmInstantTradeExecuteMutation, useSymmInternalTransferCollateralMutation, useSymmLockedParams, useSymmMarkReadNotificationMutation, useSymmMarkets, useSymmNotificationsQuery, useSymmOpenBasketMutation, useSymmOpenOrders, useSymmPendingIds, useSymmPendingInstantOpens, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmProposeRevokeDelegationMutation, useSymmRevokeDelegationMutation, useSymmSetTpslMutation, useSymmSetTriggerConfigMutation, useSymmSignTermsMutation, useSymmSignatureQuery, useSymmTokenMarkPrice, useSymmTokenSelectionMarkets, useSymmTokenSelectionMetadata, useSymmTpslOrders, useSymmTradeHistory, useSymmTriggerConfigQuery, useSymmTriggerOrders, useSymmTwapOrder, useSymmTwapOrdersQuery, useSymmUnreadCountQuery, useSymmUpdatePositionMutation, useSymmWithdraw,
|
|
26906
|
+
export { SymmProvider, getSymmErrorMessage, symmKeys, useBinanceMarkPriceStore, useSymmAccountData, useSymmAccountSummary, useSymmAccountsApi, useSymmAccountsLength, useSymmAccountsQuery, useSymmAccountsWithPositions, useSymmAllocateCollateralMutation, useSymmApprovalQuery, useSymmApproveMutation, useSymmAuth, useSymmAvailableMargin, useSymmBalances, useSymmCancelClose, useSymmCancelOpenMutation, useSymmCancelTpslMutation, useSymmCancelTwapOrderMutation, useSymmChartCandles, useSymmChartSelection, useSymmClearTriggerConfigMutation, useSymmCloseAllPositionsMutation, useSymmCloseOrder, useSymmClosePositionMutation, useSymmContext, useSymmCoreClient, useSymmCreateAccountMutation, useSymmDeallocateCollateralMutation, useSymmDelegateAccessMutation, useSymmDelegation, useSymmDepositAndAllocateMutation, useSymmDepositMutation, useSymmEditAccountNameMutation, useSymmFunding, useSymmFundingHistory, useSymmFundingPayments, useSymmHedgerMarketById, useSymmHedgerMarketBySymbol, useSymmHedgerMarkets, useSymmInstantTradeEnsureReadyMutation, useSymmInstantTradeExecuteMutation, useSymmInternalTransferCollateralMutation, useSymmLockedParams, useSymmMarkReadNotificationMutation, useSymmMarkets, useSymmNotificationsQuery, useSymmOpenBasketMutation, useSymmOpenOrders, useSymmPendingIds, useSymmPendingInstantOpens, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmProposeRevokeDelegationMutation, useSymmRevokeDelegationMutation, useSymmSetTpslMutation, useSymmSetTriggerConfigMutation, useSymmSignTermsMutation, useSymmSignatureQuery, useSymmTokenMarkPrice, useSymmTokenSelectionMarkets, useSymmTokenSelectionMetadata, useSymmTpslOrders, useSymmTradeHistory, useSymmTriggerConfigQuery, useSymmTriggerOrders, useSymmTwapOrder, useSymmTwapOrdersQuery, useSymmUnreadCountQuery, useSymmUpdatePositionMutation, useSymmWithdraw, useSymmWsStore };
|
|
26982
26907
|
//# sourceMappingURL=index.mjs.map
|
|
26983
26908
|
//# sourceMappingURL=index.mjs.map
|