@pear-protocol/symmio-client 0.2.47 → 0.3.0
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 +34 -16
- package/dist/react/index.d.ts +34 -16
- package/dist/react/index.js +127 -180
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +129 -181
- package/dist/react/index.mjs.map +1 -1
- package/package.json +2 -2
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],
|
|
@@ -732,8 +743,8 @@ var symmKeys = {
|
|
|
732
743
|
fundingPayments: (params) => ["symm", "fundingPayments", params],
|
|
733
744
|
fundingHistory: (params) => ["symm", "fundingHistory", params],
|
|
734
745
|
portfolio: (params) => ["symm", "portfolio", params],
|
|
735
|
-
notifications: (
|
|
736
|
-
unreadCount: (
|
|
746
|
+
notifications: (params) => ["symm", "notifications", params],
|
|
747
|
+
unreadCount: (params) => ["symm", "unreadCount", params],
|
|
737
748
|
availableMargin: (address, chainId) => ["symm", "availableMargin", address, chainId],
|
|
738
749
|
pendingIds: (address, chainId) => ["symm", "pendingIds", address, chainId],
|
|
739
750
|
pendingInstantOpens: (accountAddress, chainId) => ["symm", "pendingInstantOpens", accountAddress, chainId],
|
|
@@ -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 ({
|
|
@@ -25308,7 +25337,8 @@ function useResolveTradeAuthToken(params = {}) {
|
|
|
25308
25337
|
const inMemoryToken = getAuthTokenFromRuntimeCache(
|
|
25309
25338
|
queryClient,
|
|
25310
25339
|
resolvedAccountAddress,
|
|
25311
|
-
chainId
|
|
25340
|
+
chainId,
|
|
25341
|
+
address
|
|
25312
25342
|
);
|
|
25313
25343
|
if (inMemoryToken) {
|
|
25314
25344
|
logTradeAuth("resolve-auth:store-hit", {
|
|
@@ -25444,13 +25474,14 @@ function useSymmUpdatePositionMutation(paramsOrOptions, maybeOptions) {
|
|
|
25444
25474
|
typedRequest.authToken,
|
|
25445
25475
|
typedRequest.accountAddress
|
|
25446
25476
|
);
|
|
25447
|
-
|
|
25448
|
-
throw new Error("auth token is required to update a position");
|
|
25449
|
-
}
|
|
25450
|
-
return symmCoreClient.positions.update(positionId, {
|
|
25477
|
+
const requestWithOptionalAuth = authToken ? {
|
|
25451
25478
|
...request,
|
|
25452
25479
|
authToken
|
|
25453
|
-
}
|
|
25480
|
+
} : request;
|
|
25481
|
+
return symmCoreClient.positions.update(
|
|
25482
|
+
positionId,
|
|
25483
|
+
requestWithOptionalAuth
|
|
25484
|
+
);
|
|
25454
25485
|
}
|
|
25455
25486
|
});
|
|
25456
25487
|
}
|
|
@@ -25826,9 +25857,10 @@ async function fetch24hrTickers() {
|
|
|
25826
25857
|
}
|
|
25827
25858
|
|
|
25828
25859
|
// src/react/hooks/use-symm-token-selection-markets.ts
|
|
25860
|
+
var EMPTY_MARKETS = [];
|
|
25829
25861
|
function useSymmTokenSelectionMarkets(params) {
|
|
25830
25862
|
const query = useSymmHedgerMarkets(params);
|
|
25831
|
-
const baseMarkets = query.data?.filteredMarkets ?? query.data?.markets ??
|
|
25863
|
+
const baseMarkets = query.data?.filteredMarkets ?? query.data?.markets ?? EMPTY_MARKETS;
|
|
25832
25864
|
const marketSymbols = useMemo(
|
|
25833
25865
|
() => Array.from(
|
|
25834
25866
|
new Set(
|
|
@@ -26007,61 +26039,81 @@ function useSymmPortfolio(params) {
|
|
|
26007
26039
|
function useResolvedNotificationsParams(params) {
|
|
26008
26040
|
const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
|
|
26009
26041
|
const chainId = params.chainId ?? ctxChainId;
|
|
26042
|
+
const accountAddress = params.accountAddress;
|
|
26043
|
+
const address = accountAddress ? void 0 : params.address;
|
|
26010
26044
|
return {
|
|
26011
26045
|
symmCoreClient,
|
|
26012
26046
|
chainId,
|
|
26013
|
-
|
|
26047
|
+
accountAddress,
|
|
26048
|
+
address,
|
|
26014
26049
|
query: params.query
|
|
26015
26050
|
};
|
|
26016
26051
|
}
|
|
26017
26052
|
function useSymmNotificationsQuery(params) {
|
|
26018
|
-
const { symmCoreClient, chainId,
|
|
26019
|
-
const internalEnabled = !!symmCoreClient && !!
|
|
26053
|
+
const { symmCoreClient, chainId, accountAddress, address, query } = useResolvedNotificationsParams(params);
|
|
26054
|
+
const internalEnabled = !!symmCoreClient && !!(accountAddress || address);
|
|
26055
|
+
const queryParams = {
|
|
26056
|
+
accountAddress,
|
|
26057
|
+
address,
|
|
26058
|
+
chainId
|
|
26059
|
+
};
|
|
26020
26060
|
return useQuery({
|
|
26021
26061
|
...query,
|
|
26022
|
-
queryKey: symmKeys.notifications(
|
|
26062
|
+
queryKey: symmKeys.notifications(queryParams),
|
|
26023
26063
|
queryFn: () => symmCoreClient.notifications.list({
|
|
26024
|
-
|
|
26064
|
+
accountAddress,
|
|
26065
|
+
address,
|
|
26025
26066
|
chainId
|
|
26026
26067
|
}),
|
|
26027
26068
|
enabled: internalEnabled && (query?.enabled ?? true)
|
|
26028
26069
|
});
|
|
26029
26070
|
}
|
|
26030
26071
|
function useSymmUnreadCountQuery(params) {
|
|
26031
|
-
const { symmCoreClient, chainId,
|
|
26032
|
-
const internalEnabled = !!symmCoreClient && !!
|
|
26072
|
+
const { symmCoreClient, chainId, accountAddress, address, query } = useResolvedNotificationsParams(params);
|
|
26073
|
+
const internalEnabled = !!symmCoreClient && !!(accountAddress || address);
|
|
26074
|
+
const queryParams = {
|
|
26075
|
+
accountAddress,
|
|
26076
|
+
address,
|
|
26077
|
+
chainId
|
|
26078
|
+
};
|
|
26033
26079
|
return useQuery({
|
|
26034
26080
|
...query,
|
|
26035
|
-
queryKey: symmKeys.unreadCount(
|
|
26081
|
+
queryKey: symmKeys.unreadCount(queryParams),
|
|
26036
26082
|
queryFn: () => symmCoreClient.notifications.getUnreadCount({
|
|
26037
|
-
|
|
26083
|
+
accountAddress,
|
|
26084
|
+
address,
|
|
26038
26085
|
chainId
|
|
26039
26086
|
}),
|
|
26040
26087
|
enabled: internalEnabled && (query?.enabled ?? true)
|
|
26041
26088
|
});
|
|
26042
26089
|
}
|
|
26043
26090
|
function useSymmMarkReadNotificationMutation(params, options) {
|
|
26044
|
-
const { symmCoreClient, chainId,
|
|
26091
|
+
const { symmCoreClient, chainId, accountAddress, address } = useResolvedNotificationsParams(params);
|
|
26045
26092
|
const queryClient = useQueryClient();
|
|
26093
|
+
const queryParams = {
|
|
26094
|
+
accountAddress,
|
|
26095
|
+
address,
|
|
26096
|
+
chainId
|
|
26097
|
+
};
|
|
26046
26098
|
return useMutation({
|
|
26047
26099
|
...withSymmMutationConfig(options?.mutation, {
|
|
26048
26100
|
onSuccess: () => {
|
|
26049
26101
|
queryClient.invalidateQueries({
|
|
26050
|
-
queryKey: symmKeys.notifications(
|
|
26102
|
+
queryKey: symmKeys.notifications(queryParams)
|
|
26051
26103
|
});
|
|
26052
26104
|
queryClient.invalidateQueries({
|
|
26053
|
-
queryKey: symmKeys.unreadCount(
|
|
26105
|
+
queryKey: symmKeys.unreadCount(queryParams)
|
|
26054
26106
|
});
|
|
26055
26107
|
}
|
|
26056
26108
|
}),
|
|
26057
26109
|
mutationFn: async ({ id, timestamp }) => {
|
|
26058
|
-
if (!symmCoreClient || !
|
|
26110
|
+
if (!symmCoreClient || !accountAddress) {
|
|
26059
26111
|
throw new Error("symm-core client not available");
|
|
26060
26112
|
}
|
|
26061
26113
|
return symmCoreClient.notifications.markRead({
|
|
26062
26114
|
id,
|
|
26063
26115
|
timestamp,
|
|
26064
|
-
|
|
26116
|
+
accountAddress,
|
|
26065
26117
|
chainId
|
|
26066
26118
|
});
|
|
26067
26119
|
}
|
|
@@ -26085,7 +26137,8 @@ function useSymmPendingIds(params) {
|
|
|
26085
26137
|
function useSymmPendingInstantOpens(params) {
|
|
26086
26138
|
const {
|
|
26087
26139
|
symmCoreClient,
|
|
26088
|
-
chainId: ctxChainId
|
|
26140
|
+
chainId: ctxChainId,
|
|
26141
|
+
address
|
|
26089
26142
|
} = useSymmContext();
|
|
26090
26143
|
const queryClient = useQueryClient();
|
|
26091
26144
|
const { accountAddress, authToken: providedAuthToken } = params;
|
|
@@ -26095,7 +26148,12 @@ function useSymmPendingInstantOpens(params) {
|
|
|
26095
26148
|
...params.query,
|
|
26096
26149
|
queryKey: symmKeys.pendingInstantOpens(accountAddress, chainId),
|
|
26097
26150
|
queryFn: async () => {
|
|
26098
|
-
const authToken = providedAuthToken ?? getAuthTokenFromRuntimeCache(
|
|
26151
|
+
const authToken = providedAuthToken ?? getAuthTokenFromRuntimeCache(
|
|
26152
|
+
queryClient,
|
|
26153
|
+
accountAddress,
|
|
26154
|
+
chainId,
|
|
26155
|
+
address
|
|
26156
|
+
);
|
|
26099
26157
|
if (!authToken) {
|
|
26100
26158
|
throw new Error("failed to acquire auth token for pending instant opens");
|
|
26101
26159
|
}
|
|
@@ -26119,122 +26177,6 @@ function useSymmTwapOrder(params) {
|
|
|
26119
26177
|
enabled: internalEnabled && (params.query?.enabled ?? true)
|
|
26120
26178
|
});
|
|
26121
26179
|
}
|
|
26122
|
-
var useSymmWsStore = create((set) => ({
|
|
26123
|
-
isConnected: false,
|
|
26124
|
-
setConnected: (isConnected) => set({ isConnected })
|
|
26125
|
-
}));
|
|
26126
|
-
|
|
26127
|
-
// src/react/hooks/use-symm-ws.ts
|
|
26128
|
-
function asUnsubscribeFn(value) {
|
|
26129
|
-
return typeof value === "function" ? value : null;
|
|
26130
|
-
}
|
|
26131
|
-
function useSymmWs(params = {}) {
|
|
26132
|
-
const {
|
|
26133
|
-
symmCoreClient: ctxClient,
|
|
26134
|
-
address: ctxAddress,
|
|
26135
|
-
chainId: ctxChainId
|
|
26136
|
-
} = useSymmContext();
|
|
26137
|
-
const queryClient = useQueryClient();
|
|
26138
|
-
const isConnected = useSymmWsStore((state) => state.isConnected);
|
|
26139
|
-
const setConnected = useSymmWsStore((state) => state.setConnected);
|
|
26140
|
-
const symmCoreClient = params.symmCoreClient ?? ctxClient;
|
|
26141
|
-
const accountAddress = params.accountAddress ?? ctxAddress;
|
|
26142
|
-
const chainId = params.chainId ?? ctxChainId;
|
|
26143
|
-
useEffect(() => {
|
|
26144
|
-
if (!symmCoreClient || !accountAddress) {
|
|
26145
|
-
setConnected(false);
|
|
26146
|
-
return;
|
|
26147
|
-
}
|
|
26148
|
-
const ws = symmCoreClient.ws;
|
|
26149
|
-
const addr = accountAddress;
|
|
26150
|
-
const unsubscribers = [];
|
|
26151
|
-
const removeOnConnect = ws.onConnect(() => setConnected(true));
|
|
26152
|
-
const removeOnDisconnect = ws.onDisconnect(() => setConnected(false));
|
|
26153
|
-
unsubscribers.push(removeOnConnect, removeOnDisconnect);
|
|
26154
|
-
const positionsUnsub = asUnsubscribeFn(
|
|
26155
|
-
ws.subscribeToPositions(addr, chainId, () => {
|
|
26156
|
-
queryClient.invalidateQueries({
|
|
26157
|
-
queryKey: ["symm", "positions"]
|
|
26158
|
-
});
|
|
26159
|
-
})
|
|
26160
|
-
);
|
|
26161
|
-
if (positionsUnsub) unsubscribers.push(positionsUnsub);
|
|
26162
|
-
const openOrdersUnsub = asUnsubscribeFn(
|
|
26163
|
-
ws.subscribeToOpenOrders(addr, chainId, () => {
|
|
26164
|
-
queryClient.invalidateQueries({
|
|
26165
|
-
queryKey: ["symm", "openOrders"]
|
|
26166
|
-
});
|
|
26167
|
-
})
|
|
26168
|
-
);
|
|
26169
|
-
if (openOrdersUnsub) unsubscribers.push(openOrdersUnsub);
|
|
26170
|
-
const tradesUnsub = asUnsubscribeFn(
|
|
26171
|
-
ws.subscribeToTrades(addr, chainId, () => {
|
|
26172
|
-
queryClient.invalidateQueries({
|
|
26173
|
-
queryKey: ["symm", "tradeHistory"]
|
|
26174
|
-
});
|
|
26175
|
-
})
|
|
26176
|
-
);
|
|
26177
|
-
if (tradesUnsub) unsubscribers.push(tradesUnsub);
|
|
26178
|
-
const accountSummaryUnsub = asUnsubscribeFn(
|
|
26179
|
-
ws.subscribeToAccountSummary(addr, chainId, () => {
|
|
26180
|
-
queryClient.invalidateQueries({
|
|
26181
|
-
queryKey: symmKeys.balances(accountAddress, chainId)
|
|
26182
|
-
});
|
|
26183
|
-
queryClient.invalidateQueries({
|
|
26184
|
-
queryKey: symmKeys.accountSummary(accountAddress, chainId)
|
|
26185
|
-
});
|
|
26186
|
-
})
|
|
26187
|
-
);
|
|
26188
|
-
if (accountSummaryUnsub) unsubscribers.push(accountSummaryUnsub);
|
|
26189
|
-
const notificationsUnsub = asUnsubscribeFn(
|
|
26190
|
-
ws.subscribeToNotifications(addr, chainId, () => {
|
|
26191
|
-
queryClient.invalidateQueries({
|
|
26192
|
-
queryKey: symmKeys.notifications(accountAddress, chainId)
|
|
26193
|
-
});
|
|
26194
|
-
queryClient.invalidateQueries({
|
|
26195
|
-
queryKey: symmKeys.unreadCount(accountAddress, chainId)
|
|
26196
|
-
});
|
|
26197
|
-
})
|
|
26198
|
-
);
|
|
26199
|
-
if (notificationsUnsub) unsubscribers.push(notificationsUnsub);
|
|
26200
|
-
const tpslUnsub = asUnsubscribeFn(
|
|
26201
|
-
ws.subscribeToTpsl(addr, chainId, () => {
|
|
26202
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "tpslOrders"] });
|
|
26203
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26204
|
-
})
|
|
26205
|
-
);
|
|
26206
|
-
if (tpslUnsub) unsubscribers.push(tpslUnsub);
|
|
26207
|
-
const twapUnsub = asUnsubscribeFn(
|
|
26208
|
-
ws.subscribeToTwapOrders(addr, chainId, () => {
|
|
26209
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "twapOrders"] });
|
|
26210
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26211
|
-
})
|
|
26212
|
-
);
|
|
26213
|
-
if (twapUnsub) unsubscribers.push(twapUnsub);
|
|
26214
|
-
const triggerOrdersUnsub = asUnsubscribeFn(
|
|
26215
|
-
ws.subscribeToTriggerOrders(addr, chainId, () => {
|
|
26216
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "triggerOrders"] });
|
|
26217
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26218
|
-
})
|
|
26219
|
-
);
|
|
26220
|
-
if (triggerOrdersUnsub) unsubscribers.push(triggerOrdersUnsub);
|
|
26221
|
-
const executionsUnsub = asUnsubscribeFn(
|
|
26222
|
-
ws.subscribeToExecutions(addr, chainId, () => {
|
|
26223
|
-
queryClient.invalidateQueries({
|
|
26224
|
-
queryKey: ["symm", "positions"]
|
|
26225
|
-
});
|
|
26226
|
-
queryClient.invalidateQueries({
|
|
26227
|
-
queryKey: ["symm", "portfolio"]
|
|
26228
|
-
});
|
|
26229
|
-
})
|
|
26230
|
-
);
|
|
26231
|
-
if (executionsUnsub) unsubscribers.push(executionsUnsub);
|
|
26232
|
-
return () => {
|
|
26233
|
-
unsubscribers.forEach((unsubscribe) => unsubscribe());
|
|
26234
|
-
};
|
|
26235
|
-
}, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);
|
|
26236
|
-
return { isConnected };
|
|
26237
|
-
}
|
|
26238
26180
|
var STABLE_SYMBOLS = /* @__PURE__ */ new Set(["USDC", "USD", "USDT", "USDE", "USDH", "USDT0"]);
|
|
26239
26181
|
function useSymmChartSelection(input) {
|
|
26240
26182
|
const {
|
|
@@ -26464,7 +26406,10 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
|
|
|
26464
26406
|
);
|
|
26465
26407
|
const isUnsupported = unsupportedSymbols.length > 0;
|
|
26466
26408
|
const unavailableReason = isUnsupported ? `Binance market data is unavailable for ${unsupportedSymbols.join(", ")}.` : null;
|
|
26467
|
-
const symbolsKey =
|
|
26409
|
+
const symbolsKey = useMemo(
|
|
26410
|
+
() => [...selectedSymbols].sort().join(","),
|
|
26411
|
+
[selectedSymbols]
|
|
26412
|
+
);
|
|
26468
26413
|
const liveMarkPrices = useBinanceMarkPriceStore((state) => state.markPrices);
|
|
26469
26414
|
const liveFundingRates = useBinanceMarkPriceStore(
|
|
26470
26415
|
(state) => state.fundingRates
|
|
@@ -26561,7 +26506,6 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
|
|
|
26561
26506
|
}, [
|
|
26562
26507
|
isUnsupported,
|
|
26563
26508
|
longTokens,
|
|
26564
|
-
query,
|
|
26565
26509
|
query.data,
|
|
26566
26510
|
query.isLoading,
|
|
26567
26511
|
shortTokens,
|
|
@@ -26975,7 +26919,11 @@ function getSymmErrorMessage(error) {
|
|
|
26975
26919
|
if (error instanceof Error) return error.message;
|
|
26976
26920
|
return "An unexpected error occurred.";
|
|
26977
26921
|
}
|
|
26922
|
+
var useSymmWsStore = create((set) => ({
|
|
26923
|
+
isConnected: false,
|
|
26924
|
+
setConnected: (isConnected) => set({ isConnected })
|
|
26925
|
+
}));
|
|
26978
26926
|
|
|
26979
|
-
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,
|
|
26927
|
+
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 };
|
|
26980
26928
|
//# sourceMappingURL=index.mjs.map
|
|
26981
26929
|
//# sourceMappingURL=index.mjs.map
|