@pear-protocol/symmio-client 0.2.12 → 0.2.14

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.
@@ -950,95 +950,124 @@ function invalidateOrders(qc) {
950
950
  qc.invalidateQueries({ queryKey: ["symm", "triggerOrders"] });
951
951
  }
952
952
 
953
- // src/react/hooks/use-symm-instant-trade.ts
954
- function useSymmInstantTrade(params) {
953
+ // src/react/mutation-config.ts
954
+ function withSymmMutationConfig(config, internal) {
955
955
  const {
956
- symmCoreClient,
957
- chainId,
958
- address,
959
- symmioConfig
960
- } = useSymmContext();
961
- const { publicClient, walletClient } = params;
962
- const queryClient = reactQuery.useQueryClient();
956
+ onSuccess: configOnSuccess,
957
+ onError: configOnError,
958
+ onSettled: configOnSettled,
959
+ ...rest
960
+ } = config ?? {};
961
+ return {
962
+ ...rest,
963
+ onSuccess: async (...args) => {
964
+ await internal?.onSuccess?.(...args);
965
+ await configOnSuccess?.(...args);
966
+ },
967
+ onError: async (...args) => {
968
+ await internal?.onError?.(...args);
969
+ await configOnError?.(...args);
970
+ },
971
+ onSettled: async (...args) => {
972
+ await internal?.onSettled?.(...args);
973
+ await configOnSettled?.(...args);
974
+ }
975
+ };
976
+ }
977
+
978
+ // src/react/hooks/use-symm-instant-trade.ts
979
+ function useInstantTradeDeps(params) {
980
+ const { symmCoreClient, chainId, address, symmioConfig } = useSymmContext();
963
981
  const multiAccount = symmioConfig?.multiAccountAddress ?? getAddress(MULTI_ACCOUNT_ADDRESS, chainId, "MultiAccount");
964
982
  const defaultAccountAddress = params.accountAddress ?? address;
965
983
  const defaultTarget = params.target ?? DEFAULT_PARTY_B_ADDRESS[chainId];
966
984
  const defaultSelectors = params.selectors ?? ALL_TRADING_SELECTORS;
967
- const delegation = useSymmDelegation({
968
- accountAddress: defaultAccountAddress,
969
- publicClient,
970
- target: defaultTarget,
971
- selectors: defaultSelectors,
972
- enabled: params.enabled
973
- });
974
- const ensureReady = reactQuery.useMutation({
975
- mutationFn: async (request) => {
976
- if (!publicClient || !walletClient) throw new Error("Clients not available");
977
- const accountAddress = request?.accountAddress ?? defaultAccountAddress;
978
- const target = request?.target ?? defaultTarget;
979
- const selectors = request?.selectors ?? defaultSelectors;
980
- if (!accountAddress) throw new Error("account address is required");
981
- if (!target) throw new Error("delegation target is not configured");
982
- if (selectors.length === 0) {
983
- throw new Error("at least one delegation selector is required");
984
- }
985
- const accessToken = useSymmAuthStore.getState().getToken(accountAddress, chainId);
986
- if (!accessToken) {
987
- throw new Error("auth token is required for instant trading");
988
- }
989
- const accessStates = await Promise.all(
990
- selectors.map(
991
- (selector) => hasDelegatedAccess(publicClient, multiAccount, {
992
- account: accountAddress,
993
- target,
994
- selector
995
- })
996
- )
997
- );
998
- if (!accessStates.every(Boolean)) {
999
- await delegateAccess(walletClient, publicClient, multiAccount, {
1000
- account: accountAddress,
1001
- target,
1002
- selectors: [...selectors],
1003
- activate: true
1004
- });
1005
- await queryClient.invalidateQueries({
1006
- queryKey: symmKeys.delegation(accountAddress, target, selectors, chainId)
1007
- });
1008
- }
1009
- return {
1010
- accessToken,
1011
- accountAddress,
985
+ return {
986
+ chainId,
987
+ defaultAccountAddress,
988
+ defaultSelectors,
989
+ defaultTarget,
990
+ multiAccount,
991
+ publicClient: params.publicClient,
992
+ symmCoreClient,
993
+ walletClient: params.walletClient
994
+ };
995
+ }
996
+ async function ensureInstantTradeReady(deps, queryClient, request) {
997
+ const { chainId, defaultAccountAddress, defaultSelectors, defaultTarget, multiAccount, publicClient, walletClient } = deps;
998
+ if (!publicClient || !walletClient) throw new Error("Clients not available");
999
+ const accountAddress = request?.accountAddress ?? defaultAccountAddress;
1000
+ const target = request?.target ?? defaultTarget;
1001
+ const selectors = request?.selectors ?? defaultSelectors;
1002
+ if (!accountAddress) throw new Error("account address is required");
1003
+ if (!target) throw new Error("delegation target is not configured");
1004
+ if (selectors.length === 0) {
1005
+ throw new Error("at least one delegation selector is required");
1006
+ }
1007
+ const accessToken = useSymmAuthStore.getState().getToken(accountAddress, chainId);
1008
+ if (!accessToken) {
1009
+ throw new Error("auth token is required for instant trading");
1010
+ }
1011
+ const accessStates = await Promise.all(
1012
+ selectors.map(
1013
+ (selector) => hasDelegatedAccess(publicClient, multiAccount, {
1014
+ account: accountAddress,
1012
1015
  target,
1013
- selectors
1014
- };
1015
- }
1016
+ selector
1017
+ })
1018
+ )
1019
+ );
1020
+ if (!accessStates.every(Boolean)) {
1021
+ await delegateAccess(walletClient, publicClient, multiAccount, {
1022
+ account: accountAddress,
1023
+ target,
1024
+ selectors: [...selectors],
1025
+ activate: true
1026
+ });
1027
+ await queryClient.invalidateQueries({
1028
+ queryKey: symmKeys.delegation(accountAddress, target, selectors, chainId)
1029
+ });
1030
+ }
1031
+ return {
1032
+ accessToken,
1033
+ accountAddress,
1034
+ target,
1035
+ selectors
1036
+ };
1037
+ }
1038
+ function useSymmInstantTradeEnsureReadyMutation(params, options) {
1039
+ const queryClient = reactQuery.useQueryClient();
1040
+ const deps = useInstantTradeDeps(params);
1041
+ return reactQuery.useMutation({
1042
+ ...withSymmMutationConfig(options?.mutation),
1043
+ mutationFn: async (request) => ensureInstantTradeReady(deps, queryClient, request)
1016
1044
  });
1017
- const execute = reactQuery.useMutation({
1045
+ }
1046
+ function useSymmInstantTradeExecuteMutation(params, options) {
1047
+ const queryClient = reactQuery.useQueryClient();
1048
+ const deps = useInstantTradeDeps(params);
1049
+ return reactQuery.useMutation({
1050
+ ...withSymmMutationConfig(options?.mutation, {
1051
+ onSuccess: (_data, variables) => {
1052
+ if (variables.invalidatePositionsOnSuccess !== false) {
1053
+ invalidatePositions(queryClient);
1054
+ }
1055
+ }
1056
+ }),
1018
1057
  mutationFn: async (request) => {
1019
- if (!symmCoreClient) throw new Error("symm-core client not available");
1020
- const setup = await ensureReady.mutateAsync({
1058
+ if (!deps.symmCoreClient) throw new Error("symm-core client not available");
1059
+ const setup = await ensureInstantTradeReady(deps, queryClient, {
1021
1060
  accountAddress: request.accountAddress,
1022
1061
  target: request.target,
1023
1062
  selectors: request.selectors
1024
1063
  });
1025
1064
  return request.action({
1026
- symmCoreClient,
1065
+ symmCoreClient: deps.symmCoreClient,
1027
1066
  accessToken: setup.accessToken,
1028
1067
  accountAddress: setup.accountAddress
1029
1068
  });
1030
- },
1031
- onSuccess: (_data, variables) => {
1032
- if (variables.invalidatePositionsOnSuccess !== false) {
1033
- invalidatePositions(queryClient);
1034
- }
1035
1069
  }
1036
1070
  });
1037
- return {
1038
- delegation,
1039
- ensureReady,
1040
- execute
1041
- };
1042
1071
  }
1043
1072
  function prepareAddAccount(multiAccount, account, name) {
1044
1073
  const data = viem.encodeFunctionData({
@@ -1097,56 +1126,65 @@ async function getAccounts(publicClient, multiAccount, user, start = 0, size = 1
1097
1126
  }
1098
1127
 
1099
1128
  // src/react/hooks/use-symm-accounts.ts
1100
- var EMPTY_ACCOUNTS = [];
1101
- function useSymmAccounts(params = {}, options) {
1129
+ function useResolvedMultiAccount() {
1102
1130
  const { chainId, symmioConfig } = useSymmContext();
1103
- const { userAddress, publicClient, walletClient } = params;
1104
- const queryClient = reactQuery.useQueryClient();
1105
- const multiAccount = symmioConfig?.multiAccountAddress ?? getAddress(MULTI_ACCOUNT_ADDRESS, chainId, "MultiAccount");
1131
+ return symmioConfig?.multiAccountAddress ?? getAddress(MULTI_ACCOUNT_ADDRESS, chainId, "MultiAccount");
1132
+ }
1133
+ function useSymmAccountsQuery(params = {}, options) {
1134
+ const { chainId } = useSymmContext();
1135
+ const multiAccount = useResolvedMultiAccount();
1136
+ const { userAddress, publicClient } = params;
1106
1137
  const internalEnabled = !!publicClient && !!userAddress;
1107
- const accountsQuery = reactQuery.useQuery({
1138
+ return reactQuery.useQuery({
1108
1139
  ...options?.query,
1109
1140
  queryKey: symmKeys.accounts(userAddress, chainId),
1110
1141
  queryFn: () => getAccounts(publicClient, multiAccount, userAddress),
1111
1142
  enabled: internalEnabled && (options?.query?.enabled ?? true)
1112
1143
  });
1113
- const createAccount = reactQuery.useMutation({
1144
+ }
1145
+ function useSymmCreateAccountMutation(params = {}, options) {
1146
+ const { chainId } = useSymmContext();
1147
+ const queryClient = reactQuery.useQueryClient();
1148
+ const multiAccount = useResolvedMultiAccount();
1149
+ const { userAddress, publicClient, walletClient } = params;
1150
+ return reactQuery.useMutation({
1151
+ ...withSymmMutationConfig(options?.mutation, {
1152
+ onSuccess: () => {
1153
+ queryClient.invalidateQueries({ queryKey: symmKeys.accounts(userAddress, chainId) });
1154
+ }
1155
+ }),
1114
1156
  mutationFn: async ({ name }) => {
1115
1157
  if (!walletClient || !publicClient) throw new Error("Clients not available");
1116
1158
  return addAccount(walletClient, publicClient, multiAccount, name);
1117
- },
1118
- onSuccess: () => {
1119
- queryClient.invalidateQueries({ queryKey: symmKeys.accounts(userAddress, chainId) });
1120
1159
  }
1121
1160
  });
1122
- const editName = reactQuery.useMutation({
1161
+ }
1162
+ function useSymmEditAccountNameMutation(params = {}, options) {
1163
+ const { chainId } = useSymmContext();
1164
+ const queryClient = reactQuery.useQueryClient();
1165
+ const multiAccount = useResolvedMultiAccount();
1166
+ const { userAddress, publicClient, walletClient } = params;
1167
+ return reactQuery.useMutation({
1168
+ ...withSymmMutationConfig(options?.mutation, {
1169
+ onSuccess: () => {
1170
+ queryClient.invalidateQueries({ queryKey: symmKeys.accounts(userAddress, chainId) });
1171
+ }
1172
+ }),
1123
1173
  mutationFn: async ({
1124
1174
  accountAddress,
1125
1175
  name
1126
1176
  }) => {
1127
1177
  if (!walletClient || !publicClient) throw new Error("Clients not available");
1128
1178
  return editAccountName(walletClient, publicClient, multiAccount, accountAddress, name);
1129
- },
1130
- onSuccess: () => {
1131
- queryClient.invalidateQueries({ queryKey: symmKeys.accounts(userAddress, chainId) });
1132
1179
  }
1133
1180
  });
1134
- return {
1135
- accounts: accountsQuery.data ?? EMPTY_ACCOUNTS,
1136
- count: accountsQuery.data?.length ?? 0,
1137
- isLoading: accountsQuery.isLoading,
1138
- error: accountsQuery.error,
1139
- refetch: accountsQuery.refetch,
1140
- createAccount,
1141
- editName
1142
- };
1143
1181
  }
1144
1182
  function useSymmAccountsApi(params) {
1145
1183
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
1146
1184
  const { userAddress } = params;
1147
1185
  const chainId = params.chainId ?? ctxChainId;
1148
1186
  const internalEnabled = !!symmCoreClient && !!userAddress;
1149
- const query = reactQuery.useQuery({
1187
+ return reactQuery.useQuery({
1150
1188
  ...params.query,
1151
1189
  queryKey: symmKeys.accountsApi(userAddress, chainId),
1152
1190
  queryFn: () => symmCoreClient.accounts.list({
@@ -1155,19 +1193,13 @@ function useSymmAccountsApi(params) {
1155
1193
  }),
1156
1194
  enabled: internalEnabled && (params.query?.enabled ?? true)
1157
1195
  });
1158
- return {
1159
- accounts: query.data?.data?.accounts ?? [],
1160
- total: query.data?.data?.total ?? 0,
1161
- isLoading: query.isLoading,
1162
- refetch: query.refetch
1163
- };
1164
1196
  }
1165
1197
  function useSymmAccountsLength(params) {
1166
1198
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
1167
1199
  const { userAddress } = params;
1168
1200
  const chainId = params.chainId ?? ctxChainId;
1169
1201
  const internalEnabled = !!symmCoreClient && !!userAddress;
1170
- const query = reactQuery.useQuery({
1202
+ return reactQuery.useQuery({
1171
1203
  ...params.query,
1172
1204
  queryKey: symmKeys.accountsLength(userAddress, chainId),
1173
1205
  queryFn: () => symmCoreClient.accounts.getLength({
@@ -1176,19 +1208,13 @@ function useSymmAccountsLength(params) {
1176
1208
  }),
1177
1209
  enabled: internalEnabled && (params.query?.enabled ?? true)
1178
1210
  });
1179
- return {
1180
- chains: query.data?.data?.chains ?? [],
1181
- total: query.data?.data?.total ?? 0,
1182
- isLoading: query.isLoading,
1183
- refetch: query.refetch
1184
- };
1185
1211
  }
1186
1212
  function useSymmAccountsWithPositions(params) {
1187
1213
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
1188
1214
  const { userAddress } = params;
1189
1215
  const chainId = params.chainId ?? ctxChainId;
1190
1216
  const internalEnabled = !!symmCoreClient && !!userAddress;
1191
- const query = reactQuery.useQuery({
1217
+ return reactQuery.useQuery({
1192
1218
  ...params.query,
1193
1219
  queryKey: symmKeys.accountsWithPositions(userAddress, chainId),
1194
1220
  queryFn: () => symmCoreClient.accounts.getWithPositions({
@@ -1197,12 +1223,6 @@ function useSymmAccountsWithPositions(params) {
1197
1223
  }),
1198
1224
  enabled: internalEnabled && (params.query?.enabled ?? true)
1199
1225
  });
1200
- return {
1201
- accounts: query.data?.data?.accounts ?? [],
1202
- total: query.data?.data?.total ?? 0,
1203
- isLoading: query.isLoading,
1204
- refetch: query.refetch
1205
- };
1206
1226
  }
1207
1227
 
1208
1228
  // src/abis/ERC20.ts
@@ -1320,14 +1340,22 @@ async function getBalance(publicClient, tokenAddress, account) {
1320
1340
  }
1321
1341
 
1322
1342
  // src/react/hooks/use-symm-approval.ts
1323
- function useSymmApproval(params) {
1343
+ function useResolvedApprovalConfig(params) {
1324
1344
  const { chainId, symmioConfig } = useSymmContext();
1325
- const queryClient = reactQuery.useQueryClient();
1326
- const { owner, amount, publicClient, walletClient, spender, collateralToken } = params;
1327
1345
  const multiAccount = symmioConfig?.multiAccountAddress ?? getAddress(MULTI_ACCOUNT_ADDRESS, chainId, "MultiAccount");
1328
1346
  const collateral = symmioConfig?.collateralAddress ?? getAddress(COLLATERAL_ADDRESS, chainId, "Collateral");
1329
- const resolvedSpender = spender ?? multiAccount;
1330
- const resolvedToken = collateralToken ?? collateral;
1347
+ const resolvedSpender = params.spender ?? multiAccount;
1348
+ const resolvedToken = params.collateralToken ?? collateral;
1349
+ return {
1350
+ chainId,
1351
+ multiAccount,
1352
+ resolvedSpender,
1353
+ resolvedToken
1354
+ };
1355
+ }
1356
+ function useSymmApprovalQuery(params) {
1357
+ const { owner, amount, publicClient } = params;
1358
+ const { chainId, resolvedSpender, resolvedToken } = useResolvedApprovalConfig(params);
1331
1359
  const selectWithAmount = react.useCallback(
1332
1360
  (data) => ({
1333
1361
  ...data,
@@ -1336,7 +1364,7 @@ function useSymmApproval(params) {
1336
1364
  [amount]
1337
1365
  );
1338
1366
  const internalEnabled = !!publicClient && !!owner && !!resolvedSpender && !!resolvedToken;
1339
- const approvalQuery = reactQuery.useQuery({
1367
+ return reactQuery.useQuery({
1340
1368
  ...params.query,
1341
1369
  queryKey: symmKeys.approval(owner, resolvedSpender, chainId, resolvedToken),
1342
1370
  queryFn: async () => {
@@ -1349,29 +1377,35 @@ function useSymmApproval(params) {
1349
1377
  select: selectWithAmount,
1350
1378
  enabled: internalEnabled && (params.query?.enabled ?? true)
1351
1379
  });
1352
- const approveMutation = reactQuery.useMutation({
1380
+ }
1381
+ function useSymmApproveMutation(params, options) {
1382
+ const { owner, publicClient, walletClient } = params;
1383
+ const { chainId, multiAccount, resolvedSpender, resolvedToken } = useResolvedApprovalConfig(params);
1384
+ const queryClient = reactQuery.useQueryClient();
1385
+ return reactQuery.useMutation({
1386
+ ...withSymmMutationConfig(options?.mutation, {
1387
+ onSuccess: () => {
1388
+ queryClient.invalidateQueries({
1389
+ queryKey: symmKeys.approval(owner, resolvedSpender, chainId, resolvedToken)
1390
+ });
1391
+ }
1392
+ }),
1353
1393
  mutationFn: async (approveAmount) => {
1354
1394
  if (!walletClient || !publicClient) throw new Error("Clients not available");
1355
1395
  return approve(walletClient, publicClient, resolvedToken, multiAccount, approveAmount);
1356
- },
1357
- onSuccess: () => {
1358
- queryClient.invalidateQueries({
1359
- queryKey: symmKeys.approval(owner, resolvedSpender, chainId, resolvedToken)
1360
- });
1361
1396
  }
1362
1397
  });
1363
- return {
1364
- approvalState: approvalQuery.data?.state ?? null,
1365
- allowance: approvalQuery.data?.allowance ?? 0n,
1366
- balance: approvalQuery.data?.balance ?? 0n,
1367
- isLoading: approvalQuery.isLoading,
1368
- approve: approveMutation
1369
- };
1370
1398
  }
1371
- function useSymmCancelClose() {
1399
+ function useSymmCancelClose(options) {
1372
1400
  const { symmCoreClient, chainId, address } = useSymmContext();
1373
1401
  const queryClient = reactQuery.useQueryClient();
1374
- const cancelClose = reactQuery.useMutation({
1402
+ return reactQuery.useMutation({
1403
+ ...withSymmMutationConfig(options?.mutation, {
1404
+ onSuccess: () => {
1405
+ invalidateOrders(queryClient);
1406
+ invalidatePositions(queryClient);
1407
+ }
1408
+ }),
1375
1409
  mutationFn: async ({
1376
1410
  quoteId,
1377
1411
  authToken,
@@ -1392,18 +1426,19 @@ function useSymmCancelClose() {
1392
1426
  authToken: resolvedAuthToken,
1393
1427
  chainId: resolvedChainId
1394
1428
  });
1395
- },
1396
- onSuccess: () => {
1397
- invalidateOrders(queryClient);
1398
- invalidatePositions(queryClient);
1399
1429
  }
1400
1430
  });
1401
- return { cancelClose };
1402
1431
  }
1403
- function useSymmCloseOrder() {
1432
+ function useSymmCloseOrder(options) {
1404
1433
  const { symmCoreClient, address, chainId } = useSymmContext();
1405
1434
  const queryClient = reactQuery.useQueryClient();
1406
- const closeOrder = reactQuery.useMutation({
1435
+ return reactQuery.useMutation({
1436
+ ...withSymmMutationConfig(options?.mutation, {
1437
+ onSuccess: () => {
1438
+ invalidateOrders(queryClient);
1439
+ invalidatePositions(queryClient);
1440
+ }
1441
+ }),
1407
1442
  mutationFn: async (request) => {
1408
1443
  if (!symmCoreClient) {
1409
1444
  throw new Error("symm-core client not available");
@@ -1413,13 +1448,8 @@ function useSymmCloseOrder() {
1413
1448
  type: request.type,
1414
1449
  authToken: request.authToken ?? (address ? useSymmAuthStore.getState().getToken(address, chainId) ?? void 0 : void 0)
1415
1450
  });
1416
- },
1417
- onSuccess: () => {
1418
- invalidateOrders(queryClient);
1419
- invalidatePositions(queryClient);
1420
1451
  }
1421
1452
  });
1422
- return { closeOrder };
1423
1453
  }
1424
1454
  function prepareDeposit(multiAccount, account, params) {
1425
1455
  validateAmount(params.amount, "deposit amount");
@@ -1473,38 +1503,52 @@ async function depositAndAllocate(walletClient, publicClient, multiAccount, para
1473
1503
  }
1474
1504
 
1475
1505
  // src/react/hooks/use-symm-deposit.ts
1476
- function useSymmDeposit(params = {}) {
1506
+ function useResolvedDepositParams(params = {}) {
1477
1507
  const { chainId, symmioConfig } = useSymmContext();
1478
- const { publicClient, walletClient } = params;
1479
- const queryClient = reactQuery.useQueryClient();
1480
1508
  const multiAccount = symmioConfig?.multiAccountAddress ?? getAddress(MULTI_ACCOUNT_ADDRESS, chainId, "MultiAccount");
1481
- const depositMutation = reactQuery.useMutation({
1509
+ return {
1510
+ multiAccount,
1511
+ publicClient: params.publicClient,
1512
+ walletClient: params.walletClient
1513
+ };
1514
+ }
1515
+ function useSymmDepositMutation(params = {}, options) {
1516
+ const queryClient = reactQuery.useQueryClient();
1517
+ const { multiAccount, publicClient, walletClient } = useResolvedDepositParams(params);
1518
+ return reactQuery.useMutation({
1519
+ ...withSymmMutationConfig(options?.mutation, {
1520
+ onSuccess: () => {
1521
+ invalidateBalances(queryClient);
1522
+ queryClient.invalidateQueries({ queryKey: ["symm", "approval"] });
1523
+ }
1524
+ }),
1482
1525
  mutationFn: async ({
1483
1526
  account,
1484
1527
  amount
1485
1528
  }) => {
1486
1529
  if (!walletClient || !publicClient) throw new Error("Clients not available");
1487
1530
  return deposit(walletClient, publicClient, multiAccount, { account, amount });
1488
- },
1489
- onSuccess: () => {
1490
- invalidateBalances(queryClient);
1491
- queryClient.invalidateQueries({ queryKey: ["symm", "approval"] });
1492
1531
  }
1493
1532
  });
1494
- const depositAndAllocateMutation = reactQuery.useMutation({
1533
+ }
1534
+ function useSymmDepositAndAllocateMutation(params = {}, options) {
1535
+ const queryClient = reactQuery.useQueryClient();
1536
+ const { multiAccount, publicClient, walletClient } = useResolvedDepositParams(params);
1537
+ return reactQuery.useMutation({
1538
+ ...withSymmMutationConfig(options?.mutation, {
1539
+ onSuccess: () => {
1540
+ invalidateBalances(queryClient);
1541
+ queryClient.invalidateQueries({ queryKey: ["symm", "approval"] });
1542
+ }
1543
+ }),
1495
1544
  mutationFn: async ({
1496
1545
  account,
1497
1546
  amount
1498
1547
  }) => {
1499
1548
  if (!walletClient || !publicClient) throw new Error("Clients not available");
1500
1549
  return depositAndAllocate(walletClient, publicClient, multiAccount, { account, amount });
1501
- },
1502
- onSuccess: () => {
1503
- invalidateBalances(queryClient);
1504
- queryClient.invalidateQueries({ queryKey: ["symm", "approval"] });
1505
1550
  }
1506
1551
  });
1507
- return { deposit: depositMutation, depositAndAllocate: depositAndAllocateMutation };
1508
1552
  }
1509
1553
  function prepareWithdraw(multiAccount, account, params) {
1510
1554
  validateAmount(params.amount, "withdraw amount");
@@ -1533,24 +1577,25 @@ async function withdraw(walletClient, publicClient, multiAccount, params) {
1533
1577
  }
1534
1578
 
1535
1579
  // src/react/hooks/use-symm-withdraw.ts
1536
- function useSymmWithdraw(params = {}) {
1580
+ function useSymmWithdraw(params = {}, options) {
1537
1581
  const { chainId, symmioConfig } = useSymmContext();
1538
1582
  const { publicClient, walletClient } = params;
1539
1583
  const queryClient = reactQuery.useQueryClient();
1540
1584
  const multiAccount = symmioConfig?.multiAccountAddress ?? getAddress(MULTI_ACCOUNT_ADDRESS, chainId, "MultiAccount");
1541
- const withdrawMutation = reactQuery.useMutation({
1585
+ return reactQuery.useMutation({
1586
+ ...withSymmMutationConfig(options?.mutation, {
1587
+ onSuccess: () => {
1588
+ invalidateBalances(queryClient);
1589
+ }
1590
+ }),
1542
1591
  mutationFn: async ({
1543
1592
  account,
1544
1593
  amount
1545
1594
  }) => {
1546
1595
  if (!walletClient || !publicClient) throw new Error("Clients not available");
1547
1596
  return withdraw(walletClient, publicClient, multiAccount, { account, amount });
1548
- },
1549
- onSuccess: () => {
1550
- invalidateBalances(queryClient);
1551
1597
  }
1552
1598
  });
1553
- return { withdraw: withdrawMutation };
1554
1599
  }
1555
1600
 
1556
1601
  // src/abis/SymmioDiamond.ts
@@ -24201,10 +24246,8 @@ var MuonClient = class {
24201
24246
  };
24202
24247
 
24203
24248
  // src/react/hooks/use-symm-collateral.ts
24204
- function useSymmCollateral(params = {}) {
24249
+ function useResolvedCollateralDeps(params = {}) {
24205
24250
  const { chainId, symmioConfig } = useSymmContext();
24206
- const { publicClient, walletClient } = params;
24207
- const queryClient = reactQuery.useQueryClient();
24208
24251
  const multiAccount = symmioConfig?.multiAccountAddress ?? getAddress(MULTI_ACCOUNT_ADDRESS, chainId, "MultiAccount");
24209
24252
  const symmioDiamond = symmioConfig?.symmioDiamondAddress ?? getAddress(SYMMIO_DIAMOND_ADDRESS, chainId, "SymmioDiamond");
24210
24253
  const muon = react.useMemo(
@@ -24214,19 +24257,42 @@ function useSymmCollateral(params = {}) {
24214
24257
  }),
24215
24258
  [symmioConfig?.muonBaseUrls, symmioConfig?.muonAppName]
24216
24259
  );
24217
- const allocateMutation = reactQuery.useMutation({
24260
+ return {
24261
+ chainId,
24262
+ muon,
24263
+ multiAccount,
24264
+ publicClient: params.publicClient,
24265
+ symmioDiamond,
24266
+ walletClient: params.walletClient
24267
+ };
24268
+ }
24269
+ function useSymmAllocateCollateralMutation(params = {}, options) {
24270
+ const queryClient = reactQuery.useQueryClient();
24271
+ const { multiAccount, publicClient, walletClient } = useResolvedCollateralDeps(params);
24272
+ return reactQuery.useMutation({
24273
+ ...withSymmMutationConfig(options?.mutation, {
24274
+ onSuccess: () => {
24275
+ invalidateBalances(queryClient);
24276
+ }
24277
+ }),
24218
24278
  mutationFn: async ({
24219
24279
  subAccount,
24220
24280
  amount
24221
24281
  }) => {
24222
24282
  if (!walletClient || !publicClient) throw new Error("Clients not available");
24223
24283
  return allocate(walletClient, publicClient, multiAccount, subAccount, { amount });
24224
- },
24225
- onSuccess: () => {
24226
- invalidateBalances(queryClient);
24227
24284
  }
24228
24285
  });
24229
- const deallocateMutation = reactQuery.useMutation({
24286
+ }
24287
+ function useSymmDeallocateCollateralMutation(params = {}, options) {
24288
+ const queryClient = reactQuery.useQueryClient();
24289
+ const { chainId, muon, multiAccount, publicClient, symmioDiamond, walletClient } = useResolvedCollateralDeps(params);
24290
+ return reactQuery.useMutation({
24291
+ ...withSymmMutationConfig(options?.mutation, {
24292
+ onSuccess: () => {
24293
+ invalidateBalances(queryClient);
24294
+ }
24295
+ }),
24230
24296
  mutationFn: async ({
24231
24297
  subAccount,
24232
24298
  amount
@@ -24241,28 +24307,26 @@ function useSymmCollateral(params = {}) {
24241
24307
  amount,
24242
24308
  upnlSig
24243
24309
  });
24244
- },
24245
- onSuccess: () => {
24246
- invalidateBalances(queryClient);
24247
24310
  }
24248
24311
  });
24249
- const internalTransferMutation = reactQuery.useMutation({
24312
+ }
24313
+ function useSymmInternalTransferCollateralMutation(params = {}, options) {
24314
+ const queryClient = reactQuery.useQueryClient();
24315
+ const { multiAccount, publicClient, walletClient } = useResolvedCollateralDeps(params);
24316
+ return reactQuery.useMutation({
24317
+ ...withSymmMutationConfig(options?.mutation, {
24318
+ onSuccess: () => {
24319
+ invalidateBalances(queryClient);
24320
+ }
24321
+ }),
24250
24322
  mutationFn: async ({
24251
24323
  subAccount,
24252
24324
  params: transferParams
24253
24325
  }) => {
24254
24326
  if (!walletClient || !publicClient) throw new Error("Clients not available");
24255
24327
  return internalTransfer(walletClient, publicClient, multiAccount, subAccount, transferParams);
24256
- },
24257
- onSuccess: () => {
24258
- invalidateBalances(queryClient);
24259
24328
  }
24260
24329
  });
24261
- return {
24262
- allocate: allocateMutation,
24263
- deallocate: deallocateMutation,
24264
- internalTransfer: internalTransferMutation
24265
- };
24266
24330
  }
24267
24331
 
24268
24332
  // src/abis/SignatureStore.ts
@@ -24354,41 +24418,47 @@ async function hasSignedCurrentVersion(publicClient, signatureStore, user) {
24354
24418
  }
24355
24419
 
24356
24420
  // src/react/hooks/use-symm-signature.ts
24357
- function useSymmSignature(params = {}, options) {
24421
+ function useResolvedSignatureStore() {
24358
24422
  const { chainId, symmioConfig } = useSymmContext();
24359
- const { userAddress, publicClient, walletClient } = params;
24360
- const queryClient = reactQuery.useQueryClient();
24361
24423
  let signatureStore;
24362
24424
  try {
24363
24425
  signatureStore = symmioConfig?.signatureStoreAddress ?? getAddress(SIGNATURE_STORE_ADDRESS, chainId, "SignatureStore");
24364
24426
  } catch {
24427
+ signatureStore = void 0;
24365
24428
  }
24429
+ return { chainId, signatureStore };
24430
+ }
24431
+ function useSymmSignatureQuery(params = {}, options) {
24432
+ const { userAddress, publicClient } = params;
24433
+ const { chainId, signatureStore } = useResolvedSignatureStore();
24366
24434
  const internalEnabled = !!publicClient && !!userAddress && !!signatureStore;
24367
- const signedQuery = reactQuery.useQuery({
24435
+ return reactQuery.useQuery({
24368
24436
  ...options?.query,
24369
24437
  queryKey: symmKeys.signature(userAddress, chainId),
24370
24438
  queryFn: () => hasSignedCurrentVersion(publicClient, signatureStore, userAddress),
24371
24439
  enabled: internalEnabled && (options?.query?.enabled ?? true)
24372
24440
  });
24373
- const signTerms = reactQuery.useMutation({
24441
+ }
24442
+ function useSymmSignTermsMutation(params = {}, options) {
24443
+ const { userAddress, publicClient, walletClient } = params;
24444
+ const { chainId, signatureStore } = useResolvedSignatureStore();
24445
+ const queryClient = reactQuery.useQueryClient();
24446
+ return reactQuery.useMutation({
24447
+ ...withSymmMutationConfig(options?.mutation, {
24448
+ onSuccess: () => {
24449
+ queryClient.invalidateQueries({
24450
+ queryKey: symmKeys.signature(userAddress, chainId)
24451
+ });
24452
+ }
24453
+ }),
24374
24454
  mutationFn: async () => {
24375
24455
  if (!walletClient || !publicClient || !signatureStore) {
24376
24456
  throw new Error("Clients or SignatureStore not available");
24377
24457
  }
24378
24458
  const sig = await signTermsMessage(walletClient, publicClient, signatureStore);
24379
24459
  await storeSignature(walletClient, publicClient, signatureStore, sig);
24380
- },
24381
- onSuccess: () => {
24382
- queryClient.invalidateQueries({
24383
- queryKey: symmKeys.signature(userAddress, chainId)
24384
- });
24385
24460
  }
24386
24461
  });
24387
- return {
24388
- hasSigned: signedQuery.data ?? false,
24389
- isLoading: signedQuery.isLoading,
24390
- signTerms
24391
- };
24392
24462
  }
24393
24463
 
24394
24464
  // src/actions/stats.ts
@@ -24416,25 +24486,6 @@ async function getPartyAStats(publicClient, symmioDiamond, partyA) {
24416
24486
  nonces: 0
24417
24487
  };
24418
24488
  }
24419
- function calculateAvailableForOrder(stats, upnl) {
24420
- const {
24421
- allocatedBalance,
24422
- lockedCVA,
24423
- lockedLF,
24424
- lockedPartyAMM,
24425
- pendingLockedCVA,
24426
- pendingLockedLF,
24427
- pendingLockedPartyAMM
24428
- } = stats;
24429
- const totalPendingLocked = pendingLockedCVA + pendingLockedLF + pendingLockedPartyAMM;
24430
- if (upnl >= 0n) {
24431
- const totalLocked = lockedCVA + lockedLF + lockedPartyAMM;
24432
- return allocatedBalance + upnl - totalLocked - totalPendingLocked;
24433
- }
24434
- const absUpnl = -upnl;
24435
- const consideringMm = absUpnl > lockedPartyAMM ? absUpnl : lockedPartyAMM;
24436
- return allocatedBalance - lockedCVA - lockedLF - totalPendingLocked - consideringMm;
24437
- }
24438
24489
 
24439
24490
  // src/react/hooks/use-symm-available-margin.ts
24440
24491
  function useSymmAvailableMargin(params) {
@@ -24445,32 +24496,25 @@ function useSymmAvailableMargin(params) {
24445
24496
  const selectWithUpnl = react.useCallback(
24446
24497
  (stats) => ({
24447
24498
  ...stats,
24448
- upnl: resolvedUpnl,
24449
- availableForOrder: calculateAvailableForOrder(stats, resolvedUpnl)
24499
+ upnl: resolvedUpnl
24450
24500
  }),
24451
24501
  [resolvedUpnl]
24452
24502
  );
24453
24503
  const internalEnabled = !!publicClient && !!accountAddress;
24454
- const query = reactQuery.useQuery({
24504
+ return reactQuery.useQuery({
24455
24505
  ...params.query,
24456
24506
  queryKey: symmKeys.availableMargin(accountAddress, chainId),
24457
24507
  queryFn: () => getPartyAStats(publicClient, symmioDiamond, accountAddress),
24458
24508
  select: selectWithUpnl,
24459
24509
  enabled: internalEnabled && (params.query?.enabled ?? true)
24460
24510
  });
24461
- return {
24462
- availableForOrder: query.data?.availableForOrder ?? null,
24463
- stats: query.data ?? null,
24464
- isLoading: query.isLoading,
24465
- refetch: query.refetch
24466
- };
24467
24511
  }
24468
24512
  function useSymmAccountSummary(params) {
24469
24513
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24470
24514
  const { userAddress } = params;
24471
24515
  const chainId = params.chainId ?? ctxChainId;
24472
24516
  const internalEnabled = !!symmCoreClient && !!userAddress;
24473
- const query = reactQuery.useQuery({
24517
+ return reactQuery.useQuery({
24474
24518
  ...params.query,
24475
24519
  queryKey: symmKeys.accountSummary(userAddress, chainId),
24476
24520
  queryFn: () => symmCoreClient.accounts.getSummary({
@@ -24479,19 +24523,13 @@ function useSymmAccountSummary(params) {
24479
24523
  }),
24480
24524
  enabled: internalEnabled && (params.query?.enabled ?? true)
24481
24525
  });
24482
- return {
24483
- accounts: query.data?.data?.accounts ?? [],
24484
- total: query.data?.data?.total ?? 0,
24485
- isLoading: query.isLoading,
24486
- refetch: query.refetch
24487
- };
24488
24526
  }
24489
24527
  function useSymmAccountData(params) {
24490
24528
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24491
24529
  const { address, upnl } = params;
24492
24530
  const chainId = params.chainId ?? ctxChainId;
24493
24531
  const internalEnabled = !!symmCoreClient && !!address;
24494
- const query = reactQuery.useQuery({
24532
+ return reactQuery.useQuery({
24495
24533
  ...params.query,
24496
24534
  queryKey: symmKeys.accountData(address, chainId, upnl),
24497
24535
  queryFn: () => symmCoreClient.accounts.getData({
@@ -24501,18 +24539,13 @@ function useSymmAccountData(params) {
24501
24539
  }),
24502
24540
  enabled: internalEnabled && (params.query?.enabled ?? true)
24503
24541
  });
24504
- return {
24505
- accountData: query.data?.data ?? null,
24506
- isLoading: query.isLoading,
24507
- refetch: query.refetch
24508
- };
24509
24542
  }
24510
24543
  function useSymmBalances(params) {
24511
24544
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24512
24545
  const { userAddress, multiAccountAddress } = params;
24513
24546
  const chainId = params.chainId ?? ctxChainId;
24514
24547
  const internalEnabled = !!symmCoreClient && !!userAddress;
24515
- const query = reactQuery.useQuery({
24548
+ return reactQuery.useQuery({
24516
24549
  ...params.query,
24517
24550
  queryKey: symmKeys.balances(userAddress, chainId),
24518
24551
  queryFn: () => symmCoreClient.accounts.getBalanceInfo({
@@ -24522,64 +24555,134 @@ function useSymmBalances(params) {
24522
24555
  }),
24523
24556
  enabled: internalEnabled && (params.query?.enabled ?? true)
24524
24557
  });
24525
- return {
24526
- balanceInfo: query.data ?? null,
24527
- isLoading: query.isLoading,
24528
- refetch: query.refetch
24529
- };
24530
24558
  }
24531
- function useSymmTrade() {
24559
+ function useResolveTradeAuthToken() {
24560
+ const context = useSymmContext();
24561
+ const { address, chainId } = context;
24562
+ const { refreshAuth } = useSymmAuth({ address, chainId });
24563
+ const refreshAuthFromContext = context.refreshAuth;
24564
+ return react.useCallback(
24565
+ async (providedAuthToken, accountAddress) => {
24566
+ if (providedAuthToken) {
24567
+ return providedAuthToken;
24568
+ }
24569
+ const resolvedAccountAddress = accountAddress ?? address;
24570
+ if (!resolvedAccountAddress) {
24571
+ return null;
24572
+ }
24573
+ const inMemoryToken = useSymmAuthStore.getState().getToken(resolvedAccountAddress, chainId);
24574
+ if (inMemoryToken) {
24575
+ return inMemoryToken;
24576
+ }
24577
+ if (refreshAuthFromContext) {
24578
+ return refreshAuthFromContext(resolvedAccountAddress);
24579
+ }
24580
+ return refreshAuth(resolvedAccountAddress);
24581
+ },
24582
+ [address, chainId, refreshAuth, refreshAuthFromContext]
24583
+ );
24584
+ }
24585
+ function useSymmOpenBasketMutation(options) {
24532
24586
  const { symmCoreClient } = useSymmContext();
24533
24587
  const queryClient = reactQuery.useQueryClient();
24534
- const openBasket = reactQuery.useMutation({
24588
+ return reactQuery.useMutation({
24589
+ ...withSymmMutationConfig(options?.mutation, {
24590
+ onSuccess: () => {
24591
+ invalidatePositions(queryClient);
24592
+ }
24593
+ }),
24535
24594
  mutationFn: async (request) => {
24536
24595
  if (!symmCoreClient) throw new Error("symm-core client not available");
24537
24596
  return symmCoreClient.positions.openBasket(request);
24538
- },
24539
- onSuccess: () => {
24540
- invalidatePositions(queryClient);
24541
24597
  }
24542
24598
  });
24543
- const closePosition = reactQuery.useMutation({
24599
+ }
24600
+ function useSymmClosePositionMutation(options) {
24601
+ const { symmCoreClient } = useSymmContext();
24602
+ const queryClient = reactQuery.useQueryClient();
24603
+ const resolveAuthToken = useResolveTradeAuthToken();
24604
+ return reactQuery.useMutation({
24605
+ ...withSymmMutationConfig(options?.mutation, {
24606
+ onSuccess: () => {
24607
+ invalidatePositions(queryClient);
24608
+ }
24609
+ }),
24544
24610
  mutationFn: async (request) => {
24545
24611
  if (!symmCoreClient) throw new Error("symm-core client not available");
24546
- return symmCoreClient.positions.close(request);
24547
- },
24548
- onSuccess: () => {
24549
- invalidatePositions(queryClient);
24612
+ const typedRequest = request;
24613
+ const authToken = await resolveAuthToken(
24614
+ typedRequest.authToken,
24615
+ typedRequest.accountAddress
24616
+ );
24617
+ if (!authToken) {
24618
+ throw new Error("auth token is required to close a position");
24619
+ }
24620
+ return symmCoreClient.positions.close({
24621
+ ...request,
24622
+ authToken
24623
+ });
24550
24624
  }
24551
24625
  });
24552
- const closeAll = reactQuery.useMutation({
24626
+ }
24627
+ function useSymmCloseAllPositionsMutation(options) {
24628
+ const { symmCoreClient } = useSymmContext();
24629
+ const queryClient = reactQuery.useQueryClient();
24630
+ return reactQuery.useMutation({
24631
+ ...withSymmMutationConfig(options?.mutation, {
24632
+ onSuccess: () => {
24633
+ invalidatePositions(queryClient);
24634
+ }
24635
+ }),
24553
24636
  mutationFn: async (request) => {
24554
24637
  if (!symmCoreClient) throw new Error("symm-core client not available");
24555
24638
  return symmCoreClient.positions.closeAll(request);
24556
- },
24557
- onSuccess: () => {
24558
- invalidatePositions(queryClient);
24559
24639
  }
24560
24640
  });
24561
- const cancelOpen = reactQuery.useMutation({
24641
+ }
24642
+ function useSymmCancelOpenMutation(options) {
24643
+ const { symmCoreClient } = useSymmContext();
24644
+ const queryClient = reactQuery.useQueryClient();
24645
+ return reactQuery.useMutation({
24646
+ ...withSymmMutationConfig(options?.mutation, {
24647
+ onSuccess: () => {
24648
+ invalidatePositions(queryClient);
24649
+ }
24650
+ }),
24562
24651
  mutationFn: async (request) => {
24563
24652
  if (!symmCoreClient) throw new Error("symm-core client not available");
24564
24653
  return symmCoreClient.positions.cancelOpen(request);
24565
- },
24566
- onSuccess: () => {
24567
- invalidatePositions(queryClient);
24568
24654
  }
24569
24655
  });
24570
- const updatePosition = reactQuery.useMutation({
24656
+ }
24657
+ function useSymmUpdatePositionMutation(options) {
24658
+ const { symmCoreClient } = useSymmContext();
24659
+ const queryClient = reactQuery.useQueryClient();
24660
+ const resolveAuthToken = useResolveTradeAuthToken();
24661
+ return reactQuery.useMutation({
24662
+ ...withSymmMutationConfig(options?.mutation, {
24663
+ onSuccess: () => {
24664
+ invalidatePositions(queryClient);
24665
+ }
24666
+ }),
24571
24667
  mutationFn: async ({
24572
24668
  positionId,
24573
24669
  request
24574
24670
  }) => {
24575
24671
  if (!symmCoreClient) throw new Error("symm-core client not available");
24576
- return symmCoreClient.positions.update(positionId, request);
24577
- },
24578
- onSuccess: () => {
24579
- invalidatePositions(queryClient);
24672
+ const typedRequest = request;
24673
+ const authToken = await resolveAuthToken(
24674
+ typedRequest.authToken,
24675
+ typedRequest.accountAddress
24676
+ );
24677
+ if (!authToken) {
24678
+ throw new Error("auth token is required to update a position");
24679
+ }
24680
+ return symmCoreClient.positions.update(positionId, {
24681
+ ...request,
24682
+ authToken
24683
+ });
24580
24684
  }
24581
24685
  });
24582
- return { openBasket, closePosition, closeAll, cancelOpen, updatePosition };
24583
24686
  }
24584
24687
  function useSymmPositions(params) {
24585
24688
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -24587,14 +24690,7 @@ function useSymmPositions(params) {
24587
24690
  const resolvedAddress = accountAddress ? void 0 : address;
24588
24691
  const chainId = params.chainId ?? ctxChainId;
24589
24692
  const internalEnabled = !!symmCoreClient && !!(accountAddress || resolvedAddress);
24590
- console.log({
24591
- symmCoreClient,
24592
- accountAddress,
24593
- resolvedAddress,
24594
- chainId,
24595
- internalEnabled
24596
- });
24597
- const query = reactQuery.useQuery({
24693
+ return reactQuery.useQuery({
24598
24694
  ...params.query,
24599
24695
  queryKey: symmKeys.positions({
24600
24696
  accountAddress,
@@ -24608,12 +24704,6 @@ function useSymmPositions(params) {
24608
24704
  }),
24609
24705
  enabled: internalEnabled && (params.query?.enabled ?? true)
24610
24706
  });
24611
- console.log("positions query", { query });
24612
- return {
24613
- positions: query.data?.data?.positions ?? [],
24614
- isLoading: query.isLoading,
24615
- refetch: query.refetch
24616
- };
24617
24707
  }
24618
24708
  function useSymmOpenOrders(params) {
24619
24709
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -24621,7 +24711,7 @@ function useSymmOpenOrders(params) {
24621
24711
  const resolvedAddress = accountAddress ? void 0 : address;
24622
24712
  const chainId = params.chainId ?? ctxChainId;
24623
24713
  const internalEnabled = !!symmCoreClient && !!(accountAddress || resolvedAddress);
24624
- const query = reactQuery.useQuery({
24714
+ return reactQuery.useQuery({
24625
24715
  ...params.query,
24626
24716
  queryKey: symmKeys.openOrders({
24627
24717
  accountAddress,
@@ -24634,11 +24724,6 @@ function useSymmOpenOrders(params) {
24634
24724
  }),
24635
24725
  enabled: internalEnabled && (params.query?.enabled ?? true)
24636
24726
  });
24637
- return {
24638
- orders: query.data?.data?.orders ?? [],
24639
- isLoading: query.isLoading,
24640
- refetch: query.refetch
24641
- };
24642
24727
  }
24643
24728
  function useSymmTradeHistory(params) {
24644
24729
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -24646,7 +24731,7 @@ function useSymmTradeHistory(params) {
24646
24731
  const resolvedAddress = accountAddress ? void 0 : address;
24647
24732
  const chainId = params.chainId ?? ctxChainId;
24648
24733
  const internalEnabled = !!symmCoreClient && !!(accountAddress || resolvedAddress);
24649
- const query = reactQuery.useQuery({
24734
+ return reactQuery.useQuery({
24650
24735
  ...params.query,
24651
24736
  queryKey: symmKeys.tradeHistory({
24652
24737
  accountAddress,
@@ -24663,36 +24748,38 @@ function useSymmTradeHistory(params) {
24663
24748
  },
24664
24749
  enabled: internalEnabled && (params.query?.enabled ?? true)
24665
24750
  });
24666
- return {
24667
- trades: query.data ?? null,
24668
- isLoading: query.isLoading,
24669
- refetch: query.refetch
24670
- };
24671
24751
  }
24672
- function useSymmTpsl() {
24752
+ function useSymmSetTpslMutation(options) {
24673
24753
  const { symmCoreClient } = useSymmContext();
24674
24754
  const queryClient = reactQuery.useQueryClient();
24675
- const setTpsl = reactQuery.useMutation({
24755
+ return reactQuery.useMutation({
24756
+ ...withSymmMutationConfig(options?.mutation, {
24757
+ onSuccess: () => {
24758
+ invalidateOrders(queryClient);
24759
+ invalidatePositions(queryClient);
24760
+ }
24761
+ }),
24676
24762
  mutationFn: async (request) => {
24677
24763
  if (!symmCoreClient) throw new Error("symm-core client not available");
24678
24764
  return symmCoreClient.orders.setTpsl(request);
24679
- },
24680
- onSuccess: () => {
24681
- invalidateOrders(queryClient);
24682
- invalidatePositions(queryClient);
24683
24765
  }
24684
24766
  });
24685
- const cancelTpsl = reactQuery.useMutation({
24767
+ }
24768
+ function useSymmCancelTpslMutation(options) {
24769
+ const { symmCoreClient } = useSymmContext();
24770
+ const queryClient = reactQuery.useQueryClient();
24771
+ return reactQuery.useMutation({
24772
+ ...withSymmMutationConfig(options?.mutation, {
24773
+ onSuccess: () => {
24774
+ invalidateOrders(queryClient);
24775
+ invalidatePositions(queryClient);
24776
+ }
24777
+ }),
24686
24778
  mutationFn: async (request) => {
24687
24779
  if (!symmCoreClient) throw new Error("symm-core client not available");
24688
24780
  return symmCoreClient.orders.cancelTpsl(request);
24689
- },
24690
- onSuccess: () => {
24691
- invalidateOrders(queryClient);
24692
- invalidatePositions(queryClient);
24693
24781
  }
24694
24782
  });
24695
- return { setTpsl, cancelTpsl };
24696
24783
  }
24697
24784
  function useSymmTpslOrders(params) {
24698
24785
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -24707,7 +24794,7 @@ function useSymmTpslOrders(params) {
24707
24794
  status,
24708
24795
  chainId
24709
24796
  };
24710
- const query = reactQuery.useQuery({
24797
+ return reactQuery.useQuery({
24711
24798
  ...params.query,
24712
24799
  queryKey: symmKeys.tpslOrdersList({
24713
24800
  accountAddress,
@@ -24720,90 +24807,94 @@ function useSymmTpslOrders(params) {
24720
24807
  queryFn: () => symmCoreClient.orders.getTpslOrders(request),
24721
24808
  enabled: internalEnabled && (params.query?.enabled ?? true)
24722
24809
  });
24723
- return {
24724
- tpslOrders: query.data?.data?.tpslOrders ?? [],
24725
- total: query.data?.data?.total ?? 0,
24726
- isLoading: query.isLoading,
24727
- refetch: query.refetch
24728
- };
24729
24810
  }
24730
- function useSymmTwap(params) {
24811
+ function useResolvedTwapParams(params) {
24731
24812
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24732
- const queryClient = reactQuery.useQueryClient();
24733
24813
  const { accountAddress, address } = params;
24734
24814
  const resolvedAddress = accountAddress ? void 0 : address;
24735
24815
  const chainId = params.chainId ?? ctxChainId;
24816
+ return { symmCoreClient, accountAddress, resolvedAddress, chainId, query: params.query };
24817
+ }
24818
+ function useSymmTwapOrdersQuery(params) {
24819
+ const { symmCoreClient, accountAddress, resolvedAddress, chainId, query } = useResolvedTwapParams(params);
24736
24820
  const internalEnabled = !!symmCoreClient && !!(accountAddress || resolvedAddress);
24737
- const query = reactQuery.useQuery({
24738
- ...params.query,
24821
+ return reactQuery.useQuery({
24822
+ ...query,
24739
24823
  queryKey: symmKeys.twapOrders(accountAddress ?? resolvedAddress, chainId),
24740
24824
  queryFn: () => symmCoreClient.orders.getTwapOrders({
24741
24825
  address: accountAddress ?? resolvedAddress,
24742
24826
  chainId
24743
24827
  }),
24744
- enabled: internalEnabled && (params.query?.enabled ?? true)
24828
+ enabled: internalEnabled && (query?.enabled ?? true)
24745
24829
  });
24746
- const cancelTwap = reactQuery.useMutation({
24830
+ }
24831
+ function useSymmCancelTwapOrderMutation(options) {
24832
+ const { symmCoreClient } = useSymmContext();
24833
+ const queryClient = reactQuery.useQueryClient();
24834
+ return reactQuery.useMutation({
24835
+ ...withSymmMutationConfig(options?.mutation, {
24836
+ onSuccess: () => {
24837
+ invalidateOrders(queryClient);
24838
+ }
24839
+ }),
24747
24840
  mutationFn: async (orderId) => {
24748
24841
  if (!symmCoreClient) throw new Error("symm-core client not available");
24749
24842
  return symmCoreClient.orders.cancelTwapOrder(orderId);
24750
- },
24751
- onSuccess: () => {
24752
- invalidateOrders(queryClient);
24753
24843
  }
24754
24844
  });
24755
- return {
24756
- twapOrders: query.data?.data?.orders ?? [],
24757
- isLoading: query.isLoading,
24758
- cancelTwap
24759
- };
24760
24845
  }
24761
- function useSymmTriggerConfig(params) {
24846
+ function useSymmTriggerConfigQuery(params) {
24762
24847
  const { symmCoreClient } = useSymmContext();
24763
- const queryClient = reactQuery.useQueryClient();
24764
24848
  const { orderId } = params;
24765
24849
  const internalEnabled = !!symmCoreClient && !!orderId;
24766
- const query = reactQuery.useQuery({
24850
+ return reactQuery.useQuery({
24767
24851
  ...params.query,
24768
24852
  queryKey: symmKeys.triggerConfig(orderId),
24769
24853
  queryFn: () => symmCoreClient.orders.getTriggerConfig(orderId),
24770
24854
  enabled: internalEnabled && (params.query?.enabled ?? true)
24771
24855
  });
24772
- const setTriggerConfig = reactQuery.useMutation({
24856
+ }
24857
+ function useSymmSetTriggerConfigMutation(params, options) {
24858
+ const { symmCoreClient } = useSymmContext();
24859
+ const { orderId } = params;
24860
+ const queryClient = reactQuery.useQueryClient();
24861
+ return reactQuery.useMutation({
24862
+ ...withSymmMutationConfig(options?.mutation, {
24863
+ onSuccess: () => {
24864
+ queryClient.invalidateQueries({
24865
+ queryKey: symmKeys.triggerConfig(orderId)
24866
+ });
24867
+ invalidateOrders(queryClient);
24868
+ }
24869
+ }),
24773
24870
  mutationFn: async (request) => {
24774
24871
  if (!symmCoreClient || !orderId) {
24775
24872
  throw new Error("symm-core client or orderId not available");
24776
24873
  }
24777
24874
  return symmCoreClient.orders.setTriggerConfig(orderId, request);
24778
- },
24779
- onSuccess: () => {
24780
- queryClient.invalidateQueries({
24781
- queryKey: symmKeys.triggerConfig(orderId)
24782
- });
24783
- invalidateOrders(queryClient);
24784
24875
  }
24785
24876
  });
24786
- const clearTriggerConfig = reactQuery.useMutation({
24877
+ }
24878
+ function useSymmClearTriggerConfigMutation(params, options) {
24879
+ const { symmCoreClient } = useSymmContext();
24880
+ const { orderId } = params;
24881
+ const queryClient = reactQuery.useQueryClient();
24882
+ return reactQuery.useMutation({
24883
+ ...withSymmMutationConfig(options?.mutation, {
24884
+ onSuccess: () => {
24885
+ queryClient.invalidateQueries({
24886
+ queryKey: symmKeys.triggerConfig(orderId)
24887
+ });
24888
+ invalidateOrders(queryClient);
24889
+ }
24890
+ }),
24787
24891
  mutationFn: async () => {
24788
24892
  if (!symmCoreClient || !orderId) {
24789
24893
  throw new Error("symm-core client or orderId not available");
24790
24894
  }
24791
24895
  return symmCoreClient.orders.clearTriggerConfig(orderId);
24792
- },
24793
- onSuccess: () => {
24794
- queryClient.invalidateQueries({
24795
- queryKey: symmKeys.triggerConfig(orderId)
24796
- });
24797
- invalidateOrders(queryClient);
24798
24896
  }
24799
24897
  });
24800
- return {
24801
- triggerConfig: query.data?.data?.triggerConfig ?? null,
24802
- isLoading: query.isLoading,
24803
- refetch: query.refetch,
24804
- setTriggerConfig,
24805
- clearTriggerConfig
24806
- };
24807
24898
  }
24808
24899
  function useSymmTriggerOrders(params) {
24809
24900
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -24818,7 +24909,7 @@ function useSymmTriggerOrders(params) {
24818
24909
  limit,
24819
24910
  offset
24820
24911
  };
24821
- const query = reactQuery.useQuery({
24912
+ return reactQuery.useQuery({
24822
24913
  ...params.query,
24823
24914
  queryKey: symmKeys.triggerOrders({
24824
24915
  accountAddress,
@@ -24831,21 +24922,13 @@ function useSymmTriggerOrders(params) {
24831
24922
  queryFn: () => symmCoreClient.orders.listTriggerOrders(request),
24832
24923
  enabled: internalEnabled && (params.query?.enabled ?? true)
24833
24924
  });
24834
- return {
24835
- orders: query.data?.data?.orders ?? [],
24836
- total: query.data?.data?.total ?? 0,
24837
- limit: query.data?.data?.limit ?? limit ?? 0,
24838
- offset: query.data?.data?.offset ?? offset ?? 0,
24839
- isLoading: query.isLoading,
24840
- refetch: query.refetch
24841
- };
24842
24925
  }
24843
24926
  function useSymmMarkets(params) {
24844
24927
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24845
24928
  const chainId = params?.chainId ?? ctxChainId;
24846
24929
  const searchText = params?.searchText;
24847
24930
  const internalEnabled = !!symmCoreClient;
24848
- const query = reactQuery.useQuery({
24931
+ return reactQuery.useQuery({
24849
24932
  ...params?.query,
24850
24933
  queryKey: symmKeys.markets(chainId, searchText),
24851
24934
  queryFn: () => {
@@ -24857,54 +24940,37 @@ function useSymmMarkets(params) {
24857
24940
  },
24858
24941
  enabled: internalEnabled && (params?.query?.enabled ?? true)
24859
24942
  });
24860
- return {
24861
- markets: query.data?.markets ?? [],
24862
- isLoading: query.isLoading,
24863
- refetch: query.refetch
24864
- };
24865
24943
  }
24866
24944
  function useSymmHedgerMarketById(params) {
24867
24945
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24868
24946
  const { id } = params;
24869
24947
  const chainId = params.chainId ?? ctxChainId;
24870
24948
  const internalEnabled = !!symmCoreClient && id != null;
24871
- const query = reactQuery.useQuery({
24949
+ return reactQuery.useQuery({
24872
24950
  ...params.query,
24873
24951
  queryKey: symmKeys.hedgerMarketById(id, chainId),
24874
24952
  queryFn: () => symmCoreClient.markets.getById(id, chainId),
24875
24953
  enabled: internalEnabled && (params.query?.enabled ?? true)
24876
24954
  });
24877
- return {
24878
- market: query.data?.data?.markets?.[0] ?? null,
24879
- markets: query.data?.data?.markets ?? [],
24880
- isLoading: query.isLoading,
24881
- refetch: query.refetch
24882
- };
24883
24955
  }
24884
24956
  function useSymmHedgerMarketBySymbol(params) {
24885
24957
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24886
24958
  const { symbol } = params;
24887
24959
  const chainId = params.chainId ?? ctxChainId;
24888
24960
  const internalEnabled = !!symmCoreClient && !!symbol;
24889
- const query = reactQuery.useQuery({
24961
+ return reactQuery.useQuery({
24890
24962
  ...params.query,
24891
24963
  queryKey: symmKeys.hedgerMarketBySymbol(symbol, chainId),
24892
24964
  queryFn: () => symmCoreClient.markets.getBySymbol(symbol, chainId),
24893
24965
  enabled: internalEnabled && (params.query?.enabled ?? true)
24894
24966
  });
24895
- return {
24896
- market: query.data?.data?.markets?.[0] ?? null,
24897
- markets: query.data?.data?.markets ?? [],
24898
- isLoading: query.isLoading,
24899
- refetch: query.refetch
24900
- };
24901
24967
  }
24902
24968
  function useSymmLockedParams(params) {
24903
24969
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24904
24970
  const { marketName, leverage } = params;
24905
24971
  const chainId = params.chainId ?? ctxChainId;
24906
24972
  const internalEnabled = !!symmCoreClient && !!marketName && leverage != null;
24907
- const query = reactQuery.useQuery({
24973
+ return reactQuery.useQuery({
24908
24974
  ...params.query,
24909
24975
  queryKey: symmKeys.lockedParams(marketName, leverage, chainId),
24910
24976
  queryFn: () => symmCoreClient.markets.getLockedParams({
@@ -24914,16 +24980,7 @@ function useSymmLockedParams(params) {
24914
24980
  }),
24915
24981
  enabled: internalEnabled && (params.query?.enabled ?? true)
24916
24982
  });
24917
- return {
24918
- lockedParams: query.data?.data ?? null,
24919
- isLoading: query.isLoading,
24920
- refetch: query.refetch
24921
- };
24922
24983
  }
24923
- var EMPTY_MARKETS = [];
24924
- var EMPTY_SYMBOLS = [];
24925
- var EMPTY_MAP_BY_ID = /* @__PURE__ */ new Map();
24926
- var EMPTY_MAP_BY_SYMBOL = /* @__PURE__ */ new Map();
24927
24984
  function useSymmHedgerMarkets(params) {
24928
24985
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24929
24986
  const chainId = params?.chainId ?? ctxChainId;
@@ -24936,43 +24993,23 @@ function useSymmHedgerMarkets(params) {
24936
24993
  searchText: searchText || void 0
24937
24994
  };
24938
24995
  const internalEnabled = !!symmCoreClient;
24939
- const query = reactQuery.useQuery({
24996
+ return reactQuery.useQuery({
24940
24997
  ...params?.query,
24941
24998
  queryKey: symmKeys.hedgerMarkets(request),
24942
24999
  queryFn: () => symmCoreClient.markets.listSymmHedger(request),
24943
25000
  enabled: internalEnabled && consumerEnabled
24944
25001
  });
24945
- const data = query.data ?? null;
24946
- return {
24947
- data,
24948
- markets: data?.markets ?? EMPTY_MARKETS,
24949
- rawMarkets: data?.rawMarkets ?? EMPTY_MARKETS,
24950
- filteredMarkets: data?.filteredMarkets ?? EMPTY_MARKETS,
24951
- allSymbols: data?.allSymbols ?? EMPTY_SYMBOLS,
24952
- filteredSymbols: data?.filteredSymbols ?? EMPTY_SYMBOLS,
24953
- marketsById: data?.marketsById ?? EMPTY_MAP_BY_ID,
24954
- marketsBySymbol: data?.marketsBySymbol ?? EMPTY_MAP_BY_SYMBOL,
24955
- category: data?.category ?? params?.category ?? "all",
24956
- resolvedSearchText: data?.searchText ?? searchText ?? "",
24957
- isLoading: query.isLoading,
24958
- isFetching: query.isFetching,
24959
- refetch: query.refetch
24960
- };
24961
25002
  }
24962
25003
  function useSymmFunding(params) {
24963
25004
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
24964
25005
  const chainId = params?.chainId ?? ctxChainId;
24965
25006
  const internalEnabled = !!symmCoreClient;
24966
- const query = reactQuery.useQuery({
25007
+ return reactQuery.useQuery({
24967
25008
  ...params?.query,
24968
25009
  queryKey: symmKeys.fundingRates(chainId),
24969
25010
  queryFn: () => symmCoreClient.funding.getRates({ chainId }),
24970
25011
  enabled: internalEnabled && (params?.query?.enabled ?? true)
24971
25012
  });
24972
- return {
24973
- rates: query.data?.data?.rates ?? [],
24974
- isLoading: query.isLoading
24975
- };
24976
25013
  }
24977
25014
  function useSymmFundingHistory(params) {
24978
25015
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -24995,17 +25032,12 @@ function useSymmFundingHistory(params) {
24995
25032
  weightMode,
24996
25033
  includeContributions
24997
25034
  };
24998
- const query = reactQuery.useQuery({
25035
+ return reactQuery.useQuery({
24999
25036
  ...params.query,
25000
25037
  queryKey: symmKeys.fundingHistory(request),
25001
25038
  queryFn: () => symmCoreClient.funding.getHistory(request),
25002
25039
  enabled: internalEnabled && (params.query?.enabled ?? true)
25003
25040
  });
25004
- return {
25005
- history: query.data?.data ?? null,
25006
- isLoading: query.isLoading,
25007
- refetch: query.refetch
25008
- };
25009
25041
  }
25010
25042
  function useSymmFundingPayments(params) {
25011
25043
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -25019,7 +25051,7 @@ function useSymmFundingPayments(params) {
25019
25051
  limit,
25020
25052
  offset
25021
25053
  };
25022
- const query = reactQuery.useQuery({
25054
+ return reactQuery.useQuery({
25023
25055
  ...params.query,
25024
25056
  queryKey: symmKeys.fundingPayments({
25025
25057
  address,
@@ -25031,12 +25063,6 @@ function useSymmFundingPayments(params) {
25031
25063
  queryFn: () => symmCoreClient.funding.getPayments(request),
25032
25064
  enabled: internalEnabled && (params.query?.enabled ?? true)
25033
25065
  });
25034
- return {
25035
- payments: query.data?.data?.payments ?? [],
25036
- total: query.data?.data?.total ?? 0,
25037
- isLoading: query.isLoading,
25038
- refetch: query.refetch
25039
- };
25040
25066
  }
25041
25067
  function useSymmPortfolio(params) {
25042
25068
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
@@ -25044,7 +25070,7 @@ function useSymmPortfolio(params) {
25044
25070
  const resolvedAddress = accountAddress ? void 0 : address;
25045
25071
  const chainId = params.chainId ?? ctxChainId;
25046
25072
  const internalEnabled = !!symmCoreClient && !!(accountAddress || resolvedAddress);
25047
- const query = reactQuery.useQuery({
25073
+ return reactQuery.useQuery({
25048
25074
  ...params.query,
25049
25075
  queryKey: symmKeys.portfolio({
25050
25076
  accountAddress,
@@ -25061,70 +25087,76 @@ function useSymmPortfolio(params) {
25061
25087
  },
25062
25088
  enabled: internalEnabled && (params.query?.enabled ?? true)
25063
25089
  });
25064
- return {
25065
- metrics: query.data ?? null,
25066
- isLoading: query.isLoading,
25067
- refetch: query.refetch
25068
- };
25069
25090
  }
25070
- function useSymmNotifications(params) {
25091
+ function useResolvedNotificationsParams(params) {
25071
25092
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
25072
- const queryClient = reactQuery.useQueryClient();
25073
- const { userAddress } = params;
25074
25093
  const chainId = params.chainId ?? ctxChainId;
25094
+ return {
25095
+ symmCoreClient,
25096
+ chainId,
25097
+ userAddress: params.userAddress,
25098
+ query: params.query
25099
+ };
25100
+ }
25101
+ function useSymmNotificationsQuery(params) {
25102
+ const { symmCoreClient, chainId, userAddress, query } = useResolvedNotificationsParams(params);
25075
25103
  const internalEnabled = !!symmCoreClient && !!userAddress;
25076
- const notificationsQuery = reactQuery.useQuery({
25077
- ...params.query,
25104
+ return reactQuery.useQuery({
25105
+ ...query,
25078
25106
  queryKey: symmKeys.notifications(userAddress, chainId),
25079
25107
  queryFn: () => symmCoreClient.notifications.list({
25080
25108
  userAddress,
25081
25109
  chainId
25082
25110
  }),
25083
- enabled: internalEnabled && (params.query?.enabled ?? true)
25111
+ enabled: internalEnabled && (query?.enabled ?? true)
25084
25112
  });
25085
- const unreadQuery = reactQuery.useQuery({
25086
- ...params.query,
25113
+ }
25114
+ function useSymmUnreadCountQuery(params) {
25115
+ const { symmCoreClient, chainId, userAddress, query } = useResolvedNotificationsParams(params);
25116
+ const internalEnabled = !!symmCoreClient && !!userAddress;
25117
+ return reactQuery.useQuery({
25118
+ ...query,
25087
25119
  queryKey: symmKeys.unreadCount(userAddress, chainId),
25088
25120
  queryFn: () => symmCoreClient.notifications.getUnreadCount({
25089
25121
  userAddress,
25090
25122
  chainId
25091
25123
  }),
25092
- enabled: internalEnabled && (params.query?.enabled ?? true)
25124
+ enabled: internalEnabled && (query?.enabled ?? true)
25093
25125
  });
25094
- const markRead = reactQuery.useMutation({
25126
+ }
25127
+ function useSymmMarkReadNotificationMutation(params, options) {
25128
+ const { symmCoreClient, chainId, userAddress } = useResolvedNotificationsParams(params);
25129
+ const queryClient = reactQuery.useQueryClient();
25130
+ return reactQuery.useMutation({
25131
+ ...withSymmMutationConfig(options?.mutation, {
25132
+ onSuccess: () => {
25133
+ queryClient.invalidateQueries({
25134
+ queryKey: symmKeys.notifications(userAddress, chainId)
25135
+ });
25136
+ queryClient.invalidateQueries({
25137
+ queryKey: symmKeys.unreadCount(userAddress, chainId)
25138
+ });
25139
+ }
25140
+ }),
25095
25141
  mutationFn: async ({ id, timestamp }) => {
25096
- if (!symmCoreClient || !userAddress)
25142
+ if (!symmCoreClient || !userAddress) {
25097
25143
  throw new Error("symm-core client not available");
25144
+ }
25098
25145
  return symmCoreClient.notifications.markRead({
25099
25146
  id,
25100
25147
  timestamp,
25101
25148
  userAddress,
25102
25149
  chainId
25103
25150
  });
25104
- },
25105
- onSuccess: () => {
25106
- queryClient.invalidateQueries({
25107
- queryKey: symmKeys.notifications(userAddress, chainId)
25108
- });
25109
- queryClient.invalidateQueries({
25110
- queryKey: symmKeys.unreadCount(userAddress, chainId)
25111
- });
25112
25151
  }
25113
25152
  });
25114
- return {
25115
- notifications: notificationsQuery.data?.data?.notifications ?? [],
25116
- unreadCount: unreadQuery.data?.data?.unreadCount ?? 0,
25117
- isLoading: notificationsQuery.isLoading,
25118
- markRead,
25119
- refetch: notificationsQuery.refetch
25120
- };
25121
25153
  }
25122
25154
  function useSymmPendingIds(params) {
25123
25155
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
25124
25156
  const { accountAddress } = params;
25125
25157
  const chainId = params.chainId ?? ctxChainId;
25126
25158
  const internalEnabled = !!symmCoreClient && !!accountAddress;
25127
- const query = reactQuery.useQuery({
25159
+ return reactQuery.useQuery({
25128
25160
  ...params.query,
25129
25161
  queryKey: symmKeys.pendingIds(accountAddress, chainId),
25130
25162
  queryFn: () => symmCoreClient.positions.getPendingIds({
@@ -25133,11 +25165,6 @@ function useSymmPendingIds(params) {
25133
25165
  }),
25134
25166
  enabled: internalEnabled && (params.query?.enabled ?? true)
25135
25167
  });
25136
- return {
25137
- pendingIds: query.data?.data?.pendingIds ?? [],
25138
- isLoading: query.isLoading,
25139
- refetch: query.refetch
25140
- };
25141
25168
  }
25142
25169
  function useSymmPendingInstantOpens(params) {
25143
25170
  const {
@@ -25147,7 +25174,7 @@ function useSymmPendingInstantOpens(params) {
25147
25174
  const { accountAddress, authToken: providedAuthToken } = params;
25148
25175
  const chainId = params.chainId ?? ctxChainId;
25149
25176
  const internalEnabled = !!symmCoreClient && !!accountAddress;
25150
- const query = reactQuery.useQuery({
25177
+ return reactQuery.useQuery({
25151
25178
  ...params.query,
25152
25179
  queryKey: symmKeys.pendingInstantOpens(accountAddress, chainId),
25153
25180
  queryFn: async () => {
@@ -25163,28 +25190,17 @@ function useSymmPendingInstantOpens(params) {
25163
25190
  },
25164
25191
  enabled: internalEnabled && (params.query?.enabled ?? true)
25165
25192
  });
25166
- return {
25167
- pendingOpens: query.data?.data?.pendingOpens ?? [],
25168
- total: query.data?.data?.total ?? 0,
25169
- isLoading: query.isLoading,
25170
- refetch: query.refetch
25171
- };
25172
25193
  }
25173
25194
  function useSymmTwapOrder(params) {
25174
25195
  const { symmCoreClient } = useSymmContext();
25175
25196
  const { orderId } = params;
25176
25197
  const internalEnabled = !!symmCoreClient && !!orderId;
25177
- const query = reactQuery.useQuery({
25198
+ return reactQuery.useQuery({
25178
25199
  ...params.query,
25179
25200
  queryKey: symmKeys.twapOrder(orderId),
25180
25201
  queryFn: () => symmCoreClient.orders.getTwapOrder(orderId),
25181
25202
  enabled: internalEnabled && (params.query?.enabled ?? true)
25182
25203
  });
25183
- return {
25184
- order: query.data?.data ?? null,
25185
- isLoading: query.isLoading,
25186
- refetch: query.refetch
25187
- };
25188
25204
  }
25189
25205
  var useSymmWsStore = zustand.create((set) => ({
25190
25206
  isConnected: false,
@@ -25977,6 +25993,7 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
25977
25993
  const weightedRatio24h = computeWeightedRatio24h(metricInput) ?? 0;
25978
25994
  const sumNetFunding = computeNetFundingSum(metricInput);
25979
25995
  return {
25996
+ query,
25980
25997
  isLoading,
25981
25998
  isPriceDataReady,
25982
25999
  isUnsupported,
@@ -26388,50 +26405,68 @@ exports.symmKeys = symmKeys;
26388
26405
  exports.useBinanceMarkPriceStore = useBinanceMarkPriceStore;
26389
26406
  exports.useSymmAccountData = useSymmAccountData;
26390
26407
  exports.useSymmAccountSummary = useSymmAccountSummary;
26391
- exports.useSymmAccounts = useSymmAccounts;
26392
26408
  exports.useSymmAccountsApi = useSymmAccountsApi;
26393
26409
  exports.useSymmAccountsLength = useSymmAccountsLength;
26410
+ exports.useSymmAccountsQuery = useSymmAccountsQuery;
26394
26411
  exports.useSymmAccountsWithPositions = useSymmAccountsWithPositions;
26395
- exports.useSymmApproval = useSymmApproval;
26412
+ exports.useSymmAllocateCollateralMutation = useSymmAllocateCollateralMutation;
26413
+ exports.useSymmApprovalQuery = useSymmApprovalQuery;
26414
+ exports.useSymmApproveMutation = useSymmApproveMutation;
26396
26415
  exports.useSymmAuth = useSymmAuth;
26397
26416
  exports.useSymmAuthStore = useSymmAuthStore;
26398
26417
  exports.useSymmAvailableMargin = useSymmAvailableMargin;
26399
26418
  exports.useSymmBalances = useSymmBalances;
26400
26419
  exports.useSymmCancelClose = useSymmCancelClose;
26420
+ exports.useSymmCancelOpenMutation = useSymmCancelOpenMutation;
26421
+ exports.useSymmCancelTpslMutation = useSymmCancelTpslMutation;
26422
+ exports.useSymmCancelTwapOrderMutation = useSymmCancelTwapOrderMutation;
26401
26423
  exports.useSymmChartCandles = useSymmChartCandles;
26402
26424
  exports.useSymmChartSelection = useSymmChartSelection;
26425
+ exports.useSymmClearTriggerConfigMutation = useSymmClearTriggerConfigMutation;
26426
+ exports.useSymmCloseAllPositionsMutation = useSymmCloseAllPositionsMutation;
26403
26427
  exports.useSymmCloseOrder = useSymmCloseOrder;
26404
- exports.useSymmCollateral = useSymmCollateral;
26428
+ exports.useSymmClosePositionMutation = useSymmClosePositionMutation;
26405
26429
  exports.useSymmContext = useSymmContext;
26406
26430
  exports.useSymmCoreClient = useSymmCoreClient;
26431
+ exports.useSymmCreateAccountMutation = useSymmCreateAccountMutation;
26432
+ exports.useSymmDeallocateCollateralMutation = useSymmDeallocateCollateralMutation;
26407
26433
  exports.useSymmDelegation = useSymmDelegation;
26408
- exports.useSymmDeposit = useSymmDeposit;
26434
+ exports.useSymmDepositAndAllocateMutation = useSymmDepositAndAllocateMutation;
26435
+ exports.useSymmDepositMutation = useSymmDepositMutation;
26436
+ exports.useSymmEditAccountNameMutation = useSymmEditAccountNameMutation;
26409
26437
  exports.useSymmFunding = useSymmFunding;
26410
26438
  exports.useSymmFundingHistory = useSymmFundingHistory;
26411
26439
  exports.useSymmFundingPayments = useSymmFundingPayments;
26412
26440
  exports.useSymmHedgerMarketById = useSymmHedgerMarketById;
26413
26441
  exports.useSymmHedgerMarketBySymbol = useSymmHedgerMarketBySymbol;
26414
26442
  exports.useSymmHedgerMarkets = useSymmHedgerMarkets;
26415
- exports.useSymmInstantTrade = useSymmInstantTrade;
26443
+ exports.useSymmInstantTradeEnsureReadyMutation = useSymmInstantTradeEnsureReadyMutation;
26444
+ exports.useSymmInstantTradeExecuteMutation = useSymmInstantTradeExecuteMutation;
26445
+ exports.useSymmInternalTransferCollateralMutation = useSymmInternalTransferCollateralMutation;
26416
26446
  exports.useSymmLockedParams = useSymmLockedParams;
26447
+ exports.useSymmMarkReadNotificationMutation = useSymmMarkReadNotificationMutation;
26417
26448
  exports.useSymmMarkets = useSymmMarkets;
26418
- exports.useSymmNotifications = useSymmNotifications;
26449
+ exports.useSymmNotificationsQuery = useSymmNotificationsQuery;
26450
+ exports.useSymmOpenBasketMutation = useSymmOpenBasketMutation;
26419
26451
  exports.useSymmOpenOrders = useSymmOpenOrders;
26420
26452
  exports.useSymmPendingIds = useSymmPendingIds;
26421
26453
  exports.useSymmPendingInstantOpens = useSymmPendingInstantOpens;
26422
26454
  exports.useSymmPerformanceOverlays = useSymmPerformanceOverlays;
26423
26455
  exports.useSymmPortfolio = useSymmPortfolio;
26424
26456
  exports.useSymmPositions = useSymmPositions;
26425
- exports.useSymmSignature = useSymmSignature;
26457
+ exports.useSymmSetTpslMutation = useSymmSetTpslMutation;
26458
+ exports.useSymmSetTriggerConfigMutation = useSymmSetTriggerConfigMutation;
26459
+ exports.useSymmSignTermsMutation = useSymmSignTermsMutation;
26460
+ exports.useSymmSignatureQuery = useSymmSignatureQuery;
26426
26461
  exports.useSymmTokenSelectionMetadata = useSymmTokenSelectionMetadata;
26427
- exports.useSymmTpsl = useSymmTpsl;
26428
26462
  exports.useSymmTpslOrders = useSymmTpslOrders;
26429
- exports.useSymmTrade = useSymmTrade;
26430
26463
  exports.useSymmTradeHistory = useSymmTradeHistory;
26431
- exports.useSymmTriggerConfig = useSymmTriggerConfig;
26464
+ exports.useSymmTriggerConfigQuery = useSymmTriggerConfigQuery;
26432
26465
  exports.useSymmTriggerOrders = useSymmTriggerOrders;
26433
- exports.useSymmTwap = useSymmTwap;
26434
26466
  exports.useSymmTwapOrder = useSymmTwapOrder;
26467
+ exports.useSymmTwapOrdersQuery = useSymmTwapOrdersQuery;
26468
+ exports.useSymmUnreadCountQuery = useSymmUnreadCountQuery;
26469
+ exports.useSymmUpdatePositionMutation = useSymmUpdatePositionMutation;
26435
26470
  exports.useSymmWithdraw = useSymmWithdraw;
26436
26471
  exports.useSymmWs = useSymmWs;
26437
26472
  exports.useSymmWsStore = useSymmWsStore;