@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.js
CHANGED
|
@@ -707,6 +707,17 @@ async function fetchAccessTokenEntry(walletClient, signerAddress, accountAddress
|
|
|
707
707
|
// src/react/query-keys.ts
|
|
708
708
|
var symmKeys = {
|
|
709
709
|
all: ["symm"],
|
|
710
|
+
balancesRoot: ["symm", "balances"],
|
|
711
|
+
accountSummaryRoot: ["symm", "accountSummary"],
|
|
712
|
+
accountDataRoot: ["symm", "accountData"],
|
|
713
|
+
approvalRoot: ["symm", "approval"],
|
|
714
|
+
positionsRoot: ["symm", "positions"],
|
|
715
|
+
openOrdersRoot: ["symm", "openOrders"],
|
|
716
|
+
tradeHistoryRoot: ["symm", "tradeHistory"],
|
|
717
|
+
portfolioRoot: ["symm", "portfolio"],
|
|
718
|
+
tpslOrdersRoot: ["symm", "tpslOrders"],
|
|
719
|
+
twapOrdersRoot: ["symm", "twapOrders"],
|
|
720
|
+
triggerOrdersRoot: ["symm", "triggerOrders"],
|
|
710
721
|
accounts: (address, chainId) => ["symm", "accounts", address, chainId],
|
|
711
722
|
accountsApi: (address, chainId) => ["symm", "accountsApi", address, chainId],
|
|
712
723
|
accountsLength: (address, chainId) => ["symm", "accountsLength", address, chainId],
|
|
@@ -714,7 +725,7 @@ var symmKeys = {
|
|
|
714
725
|
accountSummary: (address, chainId) => ["symm", "accountSummary", address, chainId],
|
|
715
726
|
accountData: (address, chainId, upnl) => ["symm", "accountData", address, chainId, upnl],
|
|
716
727
|
signature: (address, chainId) => ["symm", "signature", address, chainId],
|
|
717
|
-
auth: (accountAddress, chainId) => ["symm", "auth", accountAddress, chainId],
|
|
728
|
+
auth: (accountAddress, chainId, signerAddress) => ["symm", "auth", accountAddress, chainId, signerAddress],
|
|
718
729
|
approval: (owner, spender, chainId, token) => ["symm", "approval", owner, spender, chainId, token],
|
|
719
730
|
balances: (address, chainId) => ["symm", "balances", address, chainId],
|
|
720
731
|
positions: (params) => ["symm", "positions", params],
|
|
@@ -745,23 +756,25 @@ var symmKeys = {
|
|
|
745
756
|
};
|
|
746
757
|
|
|
747
758
|
// src/react/auth-cache.ts
|
|
748
|
-
function getAuthQueryData(queryClient, accountAddress, chainId) {
|
|
749
|
-
return queryClient.getQueryData(
|
|
759
|
+
function getAuthQueryData(queryClient, accountAddress, chainId, signerAddress) {
|
|
760
|
+
return queryClient.getQueryData(
|
|
761
|
+
symmKeys.auth(accountAddress, chainId, signerAddress)
|
|
762
|
+
) ?? null;
|
|
750
763
|
}
|
|
751
|
-
function setAuthQueryData(queryClient, accountAddress, chainId, entry) {
|
|
752
|
-
queryClient.setQueryData(symmKeys.auth(accountAddress, chainId), entry);
|
|
764
|
+
function setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, entry) {
|
|
765
|
+
queryClient.setQueryData(symmKeys.auth(accountAddress, chainId, signerAddress), entry);
|
|
753
766
|
}
|
|
754
|
-
function clearAuthQueryData(queryClient, accountAddress, chainId) {
|
|
767
|
+
function clearAuthQueryData(queryClient, accountAddress, chainId, signerAddress) {
|
|
755
768
|
queryClient.removeQueries({
|
|
756
|
-
queryKey: symmKeys.auth(accountAddress, chainId),
|
|
769
|
+
queryKey: symmKeys.auth(accountAddress, chainId, signerAddress),
|
|
757
770
|
exact: true
|
|
758
771
|
});
|
|
759
772
|
}
|
|
760
773
|
function clearPersistedAuthState(accountAddress, chainId) {
|
|
761
774
|
clearCachedToken(accountAddress, chainId);
|
|
762
775
|
}
|
|
763
|
-
function getAuthTokenFromRuntimeCache(queryClient, accountAddress, chainId) {
|
|
764
|
-
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId);
|
|
776
|
+
function getAuthTokenFromRuntimeCache(queryClient, accountAddress, chainId, signerAddress) {
|
|
777
|
+
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId, signerAddress) ?? getAuthQueryData(queryClient, accountAddress, chainId);
|
|
765
778
|
if (inQuery && inQuery.expiresAt > Date.now()) {
|
|
766
779
|
return inQuery.token;
|
|
767
780
|
}
|
|
@@ -769,7 +782,7 @@ function getAuthTokenFromRuntimeCache(queryClient, accountAddress, chainId) {
|
|
|
769
782
|
if (!persisted) {
|
|
770
783
|
return null;
|
|
771
784
|
}
|
|
772
|
-
setAuthQueryData(queryClient, accountAddress, chainId, persisted);
|
|
785
|
+
setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, persisted);
|
|
773
786
|
return persisted.token;
|
|
774
787
|
}
|
|
775
788
|
async function resolveAuthTokenEntry({
|
|
@@ -785,13 +798,13 @@ async function resolveAuthTokenEntry({
|
|
|
785
798
|
return null;
|
|
786
799
|
}
|
|
787
800
|
if (!force) {
|
|
788
|
-
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId);
|
|
801
|
+
const inQuery = getAuthQueryData(queryClient, accountAddress, chainId, signerAddress);
|
|
789
802
|
if (inQuery && inQuery.expiresAt > Date.now()) {
|
|
790
803
|
return inQuery;
|
|
791
804
|
}
|
|
792
805
|
const persisted = getCachedTokenEntry(accountAddress, chainId);
|
|
793
806
|
if (persisted) {
|
|
794
|
-
setAuthQueryData(queryClient, accountAddress, chainId, persisted);
|
|
807
|
+
setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, persisted);
|
|
795
808
|
return persisted;
|
|
796
809
|
}
|
|
797
810
|
}
|
|
@@ -802,12 +815,12 @@ async function resolveAuthTokenEntry({
|
|
|
802
815
|
chainId,
|
|
803
816
|
siweDomain
|
|
804
817
|
);
|
|
805
|
-
setAuthQueryData(queryClient, accountAddress, chainId, fresh);
|
|
818
|
+
setAuthQueryData(queryClient, accountAddress, chainId, signerAddress, fresh);
|
|
806
819
|
return fresh;
|
|
807
820
|
}
|
|
808
|
-
function clearAuthState(queryClient, accountAddress, chainId) {
|
|
821
|
+
function clearAuthState(queryClient, accountAddress, chainId, signerAddress) {
|
|
809
822
|
clearPersistedAuthState(accountAddress, chainId);
|
|
810
|
-
clearAuthQueryData(queryClient, accountAddress, chainId);
|
|
823
|
+
clearAuthQueryData(queryClient, accountAddress, chainId, signerAddress);
|
|
811
824
|
}
|
|
812
825
|
|
|
813
826
|
// src/react/hooks/use-symm-auth.ts
|
|
@@ -881,7 +894,7 @@ function useSymmAuth(params) {
|
|
|
881
894
|
]
|
|
882
895
|
);
|
|
883
896
|
const authQuery = reactQuery.useQuery({
|
|
884
|
-
queryKey: symmKeys.auth(activeAccountAddress, chainId),
|
|
897
|
+
queryKey: symmKeys.auth(activeAccountAddress, chainId, address),
|
|
885
898
|
queryFn: async () => {
|
|
886
899
|
const tokenEntry = await resolveAuthTokenEntry({
|
|
887
900
|
queryClient,
|
|
@@ -903,9 +916,9 @@ function useSymmAuth(params) {
|
|
|
903
916
|
});
|
|
904
917
|
const clearAuth = react.useCallback(() => {
|
|
905
918
|
if (activeAccountAddress) {
|
|
906
|
-
clearAuthState(queryClient, activeAccountAddress, chainId);
|
|
919
|
+
clearAuthState(queryClient, activeAccountAddress, chainId, address);
|
|
907
920
|
}
|
|
908
|
-
}, [activeAccountAddress, chainId, queryClient]);
|
|
921
|
+
}, [activeAccountAddress, address, chainId, queryClient]);
|
|
909
922
|
const token = authQuery.data?.token ?? null;
|
|
910
923
|
return {
|
|
911
924
|
accessToken: token,
|
|
@@ -1670,22 +1683,22 @@ function useSymmRevokeDelegationMutation(params = {}, options) {
|
|
|
1670
1683
|
|
|
1671
1684
|
// src/react/cache.ts
|
|
1672
1685
|
function invalidateBalances(qc) {
|
|
1673
|
-
qc.invalidateQueries({ queryKey:
|
|
1674
|
-
qc.invalidateQueries({ queryKey:
|
|
1675
|
-
qc.invalidateQueries({ queryKey:
|
|
1676
|
-
qc.invalidateQueries({ queryKey:
|
|
1686
|
+
qc.invalidateQueries({ queryKey: symmKeys.balancesRoot });
|
|
1687
|
+
qc.invalidateQueries({ queryKey: symmKeys.accountSummaryRoot });
|
|
1688
|
+
qc.invalidateQueries({ queryKey: symmKeys.accountDataRoot });
|
|
1689
|
+
qc.invalidateQueries({ queryKey: symmKeys.portfolioRoot });
|
|
1677
1690
|
}
|
|
1678
1691
|
function invalidatePositions(qc) {
|
|
1679
|
-
qc.invalidateQueries({ queryKey:
|
|
1680
|
-
qc.invalidateQueries({ queryKey:
|
|
1681
|
-
qc.invalidateQueries({ queryKey:
|
|
1682
|
-
qc.invalidateQueries({ queryKey:
|
|
1692
|
+
qc.invalidateQueries({ queryKey: symmKeys.positionsRoot });
|
|
1693
|
+
qc.invalidateQueries({ queryKey: symmKeys.openOrdersRoot });
|
|
1694
|
+
qc.invalidateQueries({ queryKey: symmKeys.tradeHistoryRoot });
|
|
1695
|
+
qc.invalidateQueries({ queryKey: symmKeys.portfolioRoot });
|
|
1683
1696
|
}
|
|
1684
1697
|
function invalidateOrders(qc) {
|
|
1685
|
-
qc.invalidateQueries({ queryKey:
|
|
1686
|
-
qc.invalidateQueries({ queryKey:
|
|
1687
|
-
qc.invalidateQueries({ queryKey:
|
|
1688
|
-
qc.invalidateQueries({ queryKey:
|
|
1698
|
+
qc.invalidateQueries({ queryKey: symmKeys.openOrdersRoot });
|
|
1699
|
+
qc.invalidateQueries({ queryKey: symmKeys.tpslOrdersRoot });
|
|
1700
|
+
qc.invalidateQueries({ queryKey: symmKeys.twapOrdersRoot });
|
|
1701
|
+
qc.invalidateQueries({ queryKey: symmKeys.triggerOrdersRoot });
|
|
1689
1702
|
}
|
|
1690
1703
|
|
|
1691
1704
|
// src/react/hooks/use-symm-instant-trade.ts
|
|
@@ -1702,12 +1715,13 @@ function useInstantTradeDeps(params) {
|
|
|
1702
1715
|
defaultTarget,
|
|
1703
1716
|
multiAccount,
|
|
1704
1717
|
publicClient: params.publicClient,
|
|
1718
|
+
signerAddress: address,
|
|
1705
1719
|
symmCoreClient,
|
|
1706
1720
|
walletClient: params.walletClient
|
|
1707
1721
|
};
|
|
1708
1722
|
}
|
|
1709
1723
|
async function ensureInstantTradeReady(deps, queryClient, request) {
|
|
1710
|
-
const { chainId, defaultAccountAddress, defaultSelectors, defaultTarget, multiAccount, publicClient, walletClient } = deps;
|
|
1724
|
+
const { chainId, defaultAccountAddress, defaultSelectors, defaultTarget, multiAccount, publicClient, signerAddress, walletClient } = deps;
|
|
1711
1725
|
if (!publicClient || !walletClient) throw new Error("Clients not available");
|
|
1712
1726
|
const accountAddress = request?.accountAddress ?? defaultAccountAddress;
|
|
1713
1727
|
const target = request?.target ?? defaultTarget;
|
|
@@ -1717,7 +1731,12 @@ async function ensureInstantTradeReady(deps, queryClient, request) {
|
|
|
1717
1731
|
if (selectors.length === 0) {
|
|
1718
1732
|
throw new Error("at least one delegation selector is required");
|
|
1719
1733
|
}
|
|
1720
|
-
const accessToken = getAuthTokenFromRuntimeCache(
|
|
1734
|
+
const accessToken = getAuthTokenFromRuntimeCache(
|
|
1735
|
+
queryClient,
|
|
1736
|
+
accountAddress,
|
|
1737
|
+
chainId,
|
|
1738
|
+
signerAddress
|
|
1739
|
+
);
|
|
1721
1740
|
if (!accessToken) {
|
|
1722
1741
|
throw new Error("auth token is required for instant trading");
|
|
1723
1742
|
}
|
|
@@ -2130,7 +2149,12 @@ function useSymmCancelClose(options) {
|
|
|
2130
2149
|
}
|
|
2131
2150
|
const resolvedAccountAddress = accountAddress ?? address;
|
|
2132
2151
|
const resolvedChainId = overrideChainId ?? chainId;
|
|
2133
|
-
const resolvedAuthToken = authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2152
|
+
const resolvedAuthToken = authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2153
|
+
queryClient,
|
|
2154
|
+
resolvedAccountAddress,
|
|
2155
|
+
resolvedChainId,
|
|
2156
|
+
address
|
|
2157
|
+
) : null);
|
|
2134
2158
|
if (!resolvedAuthToken) {
|
|
2135
2159
|
throw new Error("auth token is required to cancel a pending close");
|
|
2136
2160
|
}
|
|
@@ -2161,7 +2185,12 @@ function useSymmCloseOrder(options) {
|
|
|
2161
2185
|
return symmCoreClient.orders.close(request.id, {
|
|
2162
2186
|
kind: request.kind,
|
|
2163
2187
|
type: request.type,
|
|
2164
|
-
authToken: request.authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2188
|
+
authToken: request.authToken ?? (resolvedAccountAddress ? getAuthTokenFromRuntimeCache(
|
|
2189
|
+
queryClient,
|
|
2190
|
+
resolvedAccountAddress,
|
|
2191
|
+
chainId,
|
|
2192
|
+
address
|
|
2193
|
+
) ?? void 0 : void 0)
|
|
2165
2194
|
});
|
|
2166
2195
|
}
|
|
2167
2196
|
});
|
|
@@ -2234,7 +2263,7 @@ function useSymmDepositMutation(params = {}, options) {
|
|
|
2234
2263
|
...withSymmMutationConfig(options?.mutation, {
|
|
2235
2264
|
onSuccess: () => {
|
|
2236
2265
|
invalidateBalances(queryClient);
|
|
2237
|
-
queryClient.invalidateQueries({ queryKey:
|
|
2266
|
+
queryClient.invalidateQueries({ queryKey: symmKeys.approvalRoot });
|
|
2238
2267
|
}
|
|
2239
2268
|
}),
|
|
2240
2269
|
mutationFn: async ({
|
|
@@ -2253,7 +2282,7 @@ function useSymmDepositAndAllocateMutation(params = {}, options) {
|
|
|
2253
2282
|
...withSymmMutationConfig(options?.mutation, {
|
|
2254
2283
|
onSuccess: () => {
|
|
2255
2284
|
invalidateBalances(queryClient);
|
|
2256
|
-
queryClient.invalidateQueries({ queryKey:
|
|
2285
|
+
queryClient.invalidateQueries({ queryKey: symmKeys.approvalRoot });
|
|
2257
2286
|
}
|
|
2258
2287
|
}),
|
|
2259
2288
|
mutationFn: async ({
|
|
@@ -25294,13 +25323,6 @@ function useResolveTradeAuthToken(params = {}) {
|
|
|
25294
25323
|
const queryClient = reactQuery.useQueryClient();
|
|
25295
25324
|
const address = params.address ?? context.address;
|
|
25296
25325
|
const chainId = params.chainId ?? context.chainId;
|
|
25297
|
-
const { refreshAuth } = useSymmAuth({
|
|
25298
|
-
address,
|
|
25299
|
-
chainId,
|
|
25300
|
-
walletClient: params.walletClient,
|
|
25301
|
-
siweDomain: params.siweDomain
|
|
25302
|
-
});
|
|
25303
|
-
const refreshAuthFromContext = context.refreshAuth;
|
|
25304
25326
|
return react.useCallback(
|
|
25305
25327
|
async (providedAuthToken, accountAddress) => {
|
|
25306
25328
|
if (providedAuthToken) {
|
|
@@ -25317,7 +25339,8 @@ function useResolveTradeAuthToken(params = {}) {
|
|
|
25317
25339
|
const inMemoryToken = getAuthTokenFromRuntimeCache(
|
|
25318
25340
|
queryClient,
|
|
25319
25341
|
resolvedAccountAddress,
|
|
25320
|
-
chainId
|
|
25342
|
+
chainId,
|
|
25343
|
+
address
|
|
25321
25344
|
);
|
|
25322
25345
|
if (inMemoryToken) {
|
|
25323
25346
|
logTradeAuth("resolve-auth:store-hit", {
|
|
@@ -25326,20 +25349,13 @@ function useResolveTradeAuthToken(params = {}) {
|
|
|
25326
25349
|
});
|
|
25327
25350
|
return inMemoryToken;
|
|
25328
25351
|
}
|
|
25329
|
-
|
|
25330
|
-
logTradeAuth("resolve-auth:context-refresh", {
|
|
25331
|
-
accountAddress: resolvedAccountAddress,
|
|
25332
|
-
chainId
|
|
25333
|
-
});
|
|
25334
|
-
return refreshAuthFromContext(resolvedAccountAddress);
|
|
25335
|
-
}
|
|
25336
|
-
logTradeAuth("resolve-auth:hook-refresh", {
|
|
25352
|
+
logTradeAuth("resolve-auth:miss", {
|
|
25337
25353
|
accountAddress: resolvedAccountAddress,
|
|
25338
25354
|
chainId
|
|
25339
25355
|
});
|
|
25340
|
-
return
|
|
25356
|
+
return null;
|
|
25341
25357
|
},
|
|
25342
|
-
[address, chainId, queryClient
|
|
25358
|
+
[address, chainId, queryClient]
|
|
25343
25359
|
);
|
|
25344
25360
|
}
|
|
25345
25361
|
function useSymmOpenBasketMutation(options) {
|
|
@@ -25398,8 +25414,9 @@ function useSymmClosePositionMutation(paramsOrOptions, maybeOptions) {
|
|
|
25398
25414
|
});
|
|
25399
25415
|
}
|
|
25400
25416
|
function useSymmCloseAllPositionsMutation(options) {
|
|
25401
|
-
const { symmCoreClient } = useSymmContext();
|
|
25417
|
+
const { symmCoreClient, address, chainId } = useSymmContext();
|
|
25402
25418
|
const queryClient = reactQuery.useQueryClient();
|
|
25419
|
+
const resolveAuthToken = useResolveTradeAuthToken({ address, chainId });
|
|
25403
25420
|
return reactQuery.useMutation({
|
|
25404
25421
|
...withSymmMutationConfig(options?.mutation, {
|
|
25405
25422
|
onSuccess: () => {
|
|
@@ -25408,7 +25425,18 @@ function useSymmCloseAllPositionsMutation(options) {
|
|
|
25408
25425
|
}),
|
|
25409
25426
|
mutationFn: async (request) => {
|
|
25410
25427
|
if (!symmCoreClient) throw new Error("symm-core client not available");
|
|
25411
|
-
|
|
25428
|
+
const typedRequest = request;
|
|
25429
|
+
const authToken = await resolveAuthToken(
|
|
25430
|
+
typedRequest.authToken,
|
|
25431
|
+
typedRequest.accountAddress
|
|
25432
|
+
);
|
|
25433
|
+
if (!authToken) {
|
|
25434
|
+
throw new Error("auth token is required to close all positions");
|
|
25435
|
+
}
|
|
25436
|
+
return symmCoreClient.positions.closeAll({
|
|
25437
|
+
...request,
|
|
25438
|
+
authToken
|
|
25439
|
+
});
|
|
25412
25440
|
}
|
|
25413
25441
|
});
|
|
25414
25442
|
}
|
|
@@ -25830,9 +25858,10 @@ async function fetch24hrTickers() {
|
|
|
25830
25858
|
}
|
|
25831
25859
|
|
|
25832
25860
|
// src/react/hooks/use-symm-token-selection-markets.ts
|
|
25861
|
+
var EMPTY_MARKETS = [];
|
|
25833
25862
|
function useSymmTokenSelectionMarkets(params) {
|
|
25834
25863
|
const query = useSymmHedgerMarkets(params);
|
|
25835
|
-
const baseMarkets = query.data?.filteredMarkets ?? query.data?.markets ??
|
|
25864
|
+
const baseMarkets = query.data?.filteredMarkets ?? query.data?.markets ?? EMPTY_MARKETS;
|
|
25836
25865
|
const marketSymbols = react.useMemo(
|
|
25837
25866
|
() => Array.from(
|
|
25838
25867
|
new Set(
|
|
@@ -26089,7 +26118,8 @@ function useSymmPendingIds(params) {
|
|
|
26089
26118
|
function useSymmPendingInstantOpens(params) {
|
|
26090
26119
|
const {
|
|
26091
26120
|
symmCoreClient,
|
|
26092
|
-
chainId: ctxChainId
|
|
26121
|
+
chainId: ctxChainId,
|
|
26122
|
+
address
|
|
26093
26123
|
} = useSymmContext();
|
|
26094
26124
|
const queryClient = reactQuery.useQueryClient();
|
|
26095
26125
|
const { accountAddress, authToken: providedAuthToken } = params;
|
|
@@ -26099,7 +26129,12 @@ function useSymmPendingInstantOpens(params) {
|
|
|
26099
26129
|
...params.query,
|
|
26100
26130
|
queryKey: symmKeys.pendingInstantOpens(accountAddress, chainId),
|
|
26101
26131
|
queryFn: async () => {
|
|
26102
|
-
const authToken = providedAuthToken ?? getAuthTokenFromRuntimeCache(
|
|
26132
|
+
const authToken = providedAuthToken ?? getAuthTokenFromRuntimeCache(
|
|
26133
|
+
queryClient,
|
|
26134
|
+
accountAddress,
|
|
26135
|
+
chainId,
|
|
26136
|
+
address
|
|
26137
|
+
);
|
|
26103
26138
|
if (!authToken) {
|
|
26104
26139
|
throw new Error("failed to acquire auth token for pending instant opens");
|
|
26105
26140
|
}
|
|
@@ -26123,122 +26158,6 @@ function useSymmTwapOrder(params) {
|
|
|
26123
26158
|
enabled: internalEnabled && (params.query?.enabled ?? true)
|
|
26124
26159
|
});
|
|
26125
26160
|
}
|
|
26126
|
-
var useSymmWsStore = zustand.create((set) => ({
|
|
26127
|
-
isConnected: false,
|
|
26128
|
-
setConnected: (isConnected) => set({ isConnected })
|
|
26129
|
-
}));
|
|
26130
|
-
|
|
26131
|
-
// src/react/hooks/use-symm-ws.ts
|
|
26132
|
-
function asUnsubscribeFn(value) {
|
|
26133
|
-
return typeof value === "function" ? value : null;
|
|
26134
|
-
}
|
|
26135
|
-
function useSymmWs(params = {}) {
|
|
26136
|
-
const {
|
|
26137
|
-
symmCoreClient: ctxClient,
|
|
26138
|
-
address: ctxAddress,
|
|
26139
|
-
chainId: ctxChainId
|
|
26140
|
-
} = useSymmContext();
|
|
26141
|
-
const queryClient = reactQuery.useQueryClient();
|
|
26142
|
-
const isConnected = useSymmWsStore((state) => state.isConnected);
|
|
26143
|
-
const setConnected = useSymmWsStore((state) => state.setConnected);
|
|
26144
|
-
const symmCoreClient = params.symmCoreClient ?? ctxClient;
|
|
26145
|
-
const accountAddress = params.accountAddress ?? ctxAddress;
|
|
26146
|
-
const chainId = params.chainId ?? ctxChainId;
|
|
26147
|
-
react.useEffect(() => {
|
|
26148
|
-
if (!symmCoreClient || !accountAddress) {
|
|
26149
|
-
setConnected(false);
|
|
26150
|
-
return;
|
|
26151
|
-
}
|
|
26152
|
-
const ws = symmCoreClient.ws;
|
|
26153
|
-
const addr = accountAddress;
|
|
26154
|
-
const unsubscribers = [];
|
|
26155
|
-
const removeOnConnect = ws.onConnect(() => setConnected(true));
|
|
26156
|
-
const removeOnDisconnect = ws.onDisconnect(() => setConnected(false));
|
|
26157
|
-
unsubscribers.push(removeOnConnect, removeOnDisconnect);
|
|
26158
|
-
const positionsUnsub = asUnsubscribeFn(
|
|
26159
|
-
ws.subscribeToPositions(addr, chainId, () => {
|
|
26160
|
-
queryClient.invalidateQueries({
|
|
26161
|
-
queryKey: ["symm", "positions"]
|
|
26162
|
-
});
|
|
26163
|
-
})
|
|
26164
|
-
);
|
|
26165
|
-
if (positionsUnsub) unsubscribers.push(positionsUnsub);
|
|
26166
|
-
const openOrdersUnsub = asUnsubscribeFn(
|
|
26167
|
-
ws.subscribeToOpenOrders(addr, chainId, () => {
|
|
26168
|
-
queryClient.invalidateQueries({
|
|
26169
|
-
queryKey: ["symm", "openOrders"]
|
|
26170
|
-
});
|
|
26171
|
-
})
|
|
26172
|
-
);
|
|
26173
|
-
if (openOrdersUnsub) unsubscribers.push(openOrdersUnsub);
|
|
26174
|
-
const tradesUnsub = asUnsubscribeFn(
|
|
26175
|
-
ws.subscribeToTrades(addr, chainId, () => {
|
|
26176
|
-
queryClient.invalidateQueries({
|
|
26177
|
-
queryKey: ["symm", "tradeHistory"]
|
|
26178
|
-
});
|
|
26179
|
-
})
|
|
26180
|
-
);
|
|
26181
|
-
if (tradesUnsub) unsubscribers.push(tradesUnsub);
|
|
26182
|
-
const accountSummaryUnsub = asUnsubscribeFn(
|
|
26183
|
-
ws.subscribeToAccountSummary(addr, chainId, () => {
|
|
26184
|
-
queryClient.invalidateQueries({
|
|
26185
|
-
queryKey: symmKeys.balances(accountAddress, chainId)
|
|
26186
|
-
});
|
|
26187
|
-
queryClient.invalidateQueries({
|
|
26188
|
-
queryKey: symmKeys.accountSummary(accountAddress, chainId)
|
|
26189
|
-
});
|
|
26190
|
-
})
|
|
26191
|
-
);
|
|
26192
|
-
if (accountSummaryUnsub) unsubscribers.push(accountSummaryUnsub);
|
|
26193
|
-
const notificationsUnsub = asUnsubscribeFn(
|
|
26194
|
-
ws.subscribeToNotifications(addr, chainId, () => {
|
|
26195
|
-
queryClient.invalidateQueries({
|
|
26196
|
-
queryKey: symmKeys.notifications(accountAddress, chainId)
|
|
26197
|
-
});
|
|
26198
|
-
queryClient.invalidateQueries({
|
|
26199
|
-
queryKey: symmKeys.unreadCount(accountAddress, chainId)
|
|
26200
|
-
});
|
|
26201
|
-
})
|
|
26202
|
-
);
|
|
26203
|
-
if (notificationsUnsub) unsubscribers.push(notificationsUnsub);
|
|
26204
|
-
const tpslUnsub = asUnsubscribeFn(
|
|
26205
|
-
ws.subscribeToTpsl(addr, chainId, () => {
|
|
26206
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "tpslOrders"] });
|
|
26207
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26208
|
-
})
|
|
26209
|
-
);
|
|
26210
|
-
if (tpslUnsub) unsubscribers.push(tpslUnsub);
|
|
26211
|
-
const twapUnsub = asUnsubscribeFn(
|
|
26212
|
-
ws.subscribeToTwapOrders(addr, chainId, () => {
|
|
26213
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "twapOrders"] });
|
|
26214
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26215
|
-
})
|
|
26216
|
-
);
|
|
26217
|
-
if (twapUnsub) unsubscribers.push(twapUnsub);
|
|
26218
|
-
const triggerOrdersUnsub = asUnsubscribeFn(
|
|
26219
|
-
ws.subscribeToTriggerOrders(addr, chainId, () => {
|
|
26220
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "triggerOrders"] });
|
|
26221
|
-
queryClient.invalidateQueries({ queryKey: ["symm", "openOrders"] });
|
|
26222
|
-
})
|
|
26223
|
-
);
|
|
26224
|
-
if (triggerOrdersUnsub) unsubscribers.push(triggerOrdersUnsub);
|
|
26225
|
-
const executionsUnsub = asUnsubscribeFn(
|
|
26226
|
-
ws.subscribeToExecutions(addr, chainId, () => {
|
|
26227
|
-
queryClient.invalidateQueries({
|
|
26228
|
-
queryKey: ["symm", "positions"]
|
|
26229
|
-
});
|
|
26230
|
-
queryClient.invalidateQueries({
|
|
26231
|
-
queryKey: ["symm", "portfolio"]
|
|
26232
|
-
});
|
|
26233
|
-
})
|
|
26234
|
-
);
|
|
26235
|
-
if (executionsUnsub) unsubscribers.push(executionsUnsub);
|
|
26236
|
-
return () => {
|
|
26237
|
-
unsubscribers.forEach((unsubscribe) => unsubscribe());
|
|
26238
|
-
};
|
|
26239
|
-
}, [symmCoreClient, accountAddress, chainId, queryClient, setConnected]);
|
|
26240
|
-
return { isConnected };
|
|
26241
|
-
}
|
|
26242
26161
|
var STABLE_SYMBOLS = /* @__PURE__ */ new Set(["USDC", "USD", "USDT", "USDE", "USDH", "USDT0"]);
|
|
26243
26162
|
function useSymmChartSelection(input) {
|
|
26244
26163
|
const {
|
|
@@ -26468,7 +26387,10 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
|
|
|
26468
26387
|
);
|
|
26469
26388
|
const isUnsupported = unsupportedSymbols.length > 0;
|
|
26470
26389
|
const unavailableReason = isUnsupported ? `Binance market data is unavailable for ${unsupportedSymbols.join(", ")}.` : null;
|
|
26471
|
-
const symbolsKey =
|
|
26390
|
+
const symbolsKey = react.useMemo(
|
|
26391
|
+
() => [...selectedSymbols].sort().join(","),
|
|
26392
|
+
[selectedSymbols]
|
|
26393
|
+
);
|
|
26472
26394
|
const liveMarkPrices = useBinanceMarkPriceStore((state) => state.markPrices);
|
|
26473
26395
|
const liveFundingRates = useBinanceMarkPriceStore(
|
|
26474
26396
|
(state) => state.fundingRates
|
|
@@ -26565,7 +26487,6 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
|
|
|
26565
26487
|
}, [
|
|
26566
26488
|
isUnsupported,
|
|
26567
26489
|
longTokens,
|
|
26568
|
-
query,
|
|
26569
26490
|
query.data,
|
|
26570
26491
|
query.isLoading,
|
|
26571
26492
|
shortTokens,
|
|
@@ -26979,6 +26900,10 @@ function getSymmErrorMessage(error) {
|
|
|
26979
26900
|
if (error instanceof Error) return error.message;
|
|
26980
26901
|
return "An unexpected error occurred.";
|
|
26981
26902
|
}
|
|
26903
|
+
var useSymmWsStore = zustand.create((set) => ({
|
|
26904
|
+
isConnected: false,
|
|
26905
|
+
setConnected: (isConnected) => set({ isConnected })
|
|
26906
|
+
}));
|
|
26982
26907
|
|
|
26983
26908
|
exports.SymmProvider = SymmProvider;
|
|
26984
26909
|
exports.getSymmErrorMessage = getSymmErrorMessage;
|
|
@@ -27053,7 +26978,6 @@ exports.useSymmTwapOrdersQuery = useSymmTwapOrdersQuery;
|
|
|
27053
26978
|
exports.useSymmUnreadCountQuery = useSymmUnreadCountQuery;
|
|
27054
26979
|
exports.useSymmUpdatePositionMutation = useSymmUpdatePositionMutation;
|
|
27055
26980
|
exports.useSymmWithdraw = useSymmWithdraw;
|
|
27056
|
-
exports.useSymmWs = useSymmWs;
|
|
27057
26981
|
exports.useSymmWsStore = useSymmWsStore;
|
|
27058
26982
|
//# sourceMappingURL=index.js.map
|
|
27059
26983
|
//# sourceMappingURL=index.js.map
|