@agg-build/hooks 2.7.2 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -84,8 +84,8 @@ __export(src_exports, {
84
84
  MarketStatus: () => MarketStatus,
85
85
  MatchStatus: () => MatchStatus,
86
86
  MatchType: () => MatchType,
87
- QueryClient: () => import_react_query43.QueryClient,
88
- QueryClientProvider: () => import_react_query43.QueryClientProvider,
87
+ QueryClient: () => import_react_query45.QueryClient,
88
+ QueryClientProvider: () => import_react_query45.QueryClientProvider,
89
89
  RedeemRejectedError: () => RedeemRejectedError,
90
90
  TradeSide: () => TradeSide,
91
91
  TurnstileChallengeError: () => import_sdk4.TurnstileChallengeError,
@@ -141,6 +141,7 @@ __export(src_exports, {
141
141
  useAggWebSocket: () => useAggWebSocket,
142
142
  useAppConfig: () => useAppConfig,
143
143
  useArbFeed: () => useArbFeed,
144
+ useBalanceRefillPolicies: () => useBalanceRefillPolicies,
144
145
  useCachedAppConfig: () => useCachedAppConfig,
145
146
  useCancelManagedOrder: () => useCancelManagedOrder,
146
147
  useCategories: () => useCategories,
@@ -158,6 +159,7 @@ __export(src_exports, {
158
159
  useExternalId: () => useExternalId,
159
160
  useGeoBlock: () => useGeoBlock,
160
161
  useLabels: () => useLabels,
162
+ useLimitOrderVenueQuotes: () => useLimitOrderVenueQuotes,
161
163
  useLinkAccount: () => useLinkAccount,
162
164
  useLiveBestPriceCandidates: () => useLiveBestPriceCandidates,
163
165
  useLiveBestPrices: () => useLiveBestPrices,
@@ -184,7 +186,7 @@ __export(src_exports, {
184
186
  useOrders: () => useOrders,
185
187
  usePlaceLimitOrder: () => usePlaceLimitOrder,
186
188
  usePositions: () => usePositions,
187
- useQueryClient: () => import_react_query43.useQueryClient,
189
+ useQueryClient: () => import_react_query45.useQueryClient,
188
190
  useQuoteManaged: () => useQuoteManaged,
189
191
  useRampQuotes: () => useRampQuotes,
190
192
  useRampSession: () => useRampSession,
@@ -352,7 +354,7 @@ var getVenueOrder = (venue) => {
352
354
  var sortVenues = (venues) => [...venues].sort((a, b) => getVenueOrder(a) - getVenueOrder(b));
353
355
 
354
356
  // src/index.ts
355
- var import_react_query43 = require("@tanstack/react-query");
357
+ var import_react_query45 = require("@tanstack/react-query");
356
358
 
357
359
  // src/candle-store.ts
358
360
  var import_sdk = require("@agg-build/sdk");
@@ -617,6 +619,34 @@ var enUsLabels = {
617
619
  claimableWinningsTooltip: (count) => `${count} position${count === 1 ? "" : "s"} ready to claim`,
618
620
  walletMenuFor: (profileLabel) => `Profile menu for ${profileLabel}`
619
621
  },
622
+ balanceRefill: {
623
+ tabLabel: "Balance management",
624
+ title: "Automatic balance refill",
625
+ description: "Keep a minimum USDC balance on one network by moving funds from another managed network.",
626
+ networkLabel: "Network to maintain",
627
+ minimumLabel: "Minimum balance",
628
+ refillAmountLabel: "Refill by at least",
629
+ dailyCapLabel: "Maximum per day",
630
+ maximumFeeLabel: "Maximum fee per refill",
631
+ activeLabel: "Automatic refill is active",
632
+ pausedLabel: "Automatic refill is paused",
633
+ enableAction: "Enable automatic refill",
634
+ saveAction: "Save refill settings",
635
+ pauseAction: "Pause automatic refill",
636
+ resumeAction: "Resume automatic refill",
637
+ loading: "Loading refill settings...",
638
+ loadError: "Refill settings could not be loaded.",
639
+ saveError: "Refill settings could not be saved.",
640
+ saved: "Refill settings saved.",
641
+ consent: "By enabling, you authorize AGG to move USDC between your managed wallets within these limits.",
642
+ lastRefill: "Latest refill",
643
+ statuses: {
644
+ reserved: "Funds reserved",
645
+ executing: "Refill in progress",
646
+ completed: "Refill completed",
647
+ failed: "Refill failed"
648
+ }
649
+ },
620
650
  deposit: {
621
651
  title: "Deposit",
622
652
  back: "Go back",
@@ -1192,6 +1222,7 @@ var enUsLabels = {
1192
1222
  tradingAccessAddKalshiAccount: "Add Kalshi Account",
1193
1223
  outcome: (label) => `Outcome: ${label}`,
1194
1224
  smartRouting: "Smart Routing",
1225
+ limitRoutingCurrentPrice: (priceLabel, feeLabel) => feeLabel ? `Current ${priceLabel} \xB7 Fee ${feeLabel}` : `Current ${priceLabel}`,
1195
1226
  orderTypeMarket: "Market",
1196
1227
  orderTypeLimit: "Limit",
1197
1228
  orderTypeAria: "Order type",
@@ -1665,7 +1696,7 @@ var mergeAggUiSearchConfig = (config) => {
1665
1696
  };
1666
1697
  };
1667
1698
  var mergeAggUiConfig = (persisted, config) => {
1668
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$;
1699
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa;
1669
1700
  const locale = (_d = (_c = (_a = config == null ? void 0 : config.general) == null ? void 0 : _a.locale) != null ? _c : (_b = persisted.general) == null ? void 0 : _b.locale) != null ? _d : DEFAULT_LOCALE;
1670
1701
  const theme = (_h = (_g = (_e = config == null ? void 0 : config.general) == null ? void 0 : _e.theme) != null ? _g : (_f = persisted.general) == null ? void 0 : _f.theme) != null ? _h : defaultAggUiConfig.general.theme;
1671
1702
  const formatters = createFormatters(locale);
@@ -1703,13 +1734,16 @@ var mergeAggUiConfig = (persisted, config) => {
1703
1734
  formatting: {
1704
1735
  formatNumber: (_R = (_Q = config == null ? void 0 : config.formatting) == null ? void 0 : _Q.formatNumber) != null ? _R : formatters.formatNumber,
1705
1736
  formatPercent: (_T = (_S = config == null ? void 0 : config.formatting) == null ? void 0 : _S.formatPercent) != null ? _T : formatters.formatPercent,
1706
- formatCurrency: (_V = (_U = config == null ? void 0 : config.formatting) == null ? void 0 : _U.formatCurrency) != null ? _V : formatters.formatCurrency,
1707
- formatCompactCurrency: (_X = (_W = config == null ? void 0 : config.formatting) == null ? void 0 : _W.formatCompactCurrency) != null ? _X : formatters.formatCompactCurrency,
1708
- formatDate: (_Z = (_Y = config == null ? void 0 : config.formatting) == null ? void 0 : _Y.formatDate) != null ? _Z : formatters.formatDate
1737
+ // ponytail: no default here — each cents surface keeps its own rendering
1738
+ // when unset, so adding this knob changes nothing for existing partners.
1739
+ formatPrice: (_U = config == null ? void 0 : config.formatting) == null ? void 0 : _U.formatPrice,
1740
+ formatCurrency: (_W = (_V = config == null ? void 0 : config.formatting) == null ? void 0 : _V.formatCurrency) != null ? _W : formatters.formatCurrency,
1741
+ formatCompactCurrency: (_Y = (_X = config == null ? void 0 : config.formatting) == null ? void 0 : _X.formatCompactCurrency) != null ? _Y : formatters.formatCompactCurrency,
1742
+ formatDate: (__ = (_Z = config == null ? void 0 : config.formatting) == null ? void 0 : _Z.formatDate) != null ? __ : formatters.formatDate
1709
1743
  },
1710
1744
  search: mergeAggUiSearchConfig(config == null ? void 0 : config.search),
1711
1745
  trading: {
1712
- executionMode: (_$ = (__ = config == null ? void 0 : config.trading) == null ? void 0 : __.executionMode) != null ? _$ : defaultAggUiConfig.trading.executionMode
1746
+ executionMode: (_aa = (_$ = config == null ? void 0 : config.trading) == null ? void 0 : _$.executionMode) != null ? _aa : defaultAggUiConfig.trading.executionMode
1713
1747
  },
1714
1748
  walletActions: config == null ? void 0 : config.walletActions,
1715
1749
  solanaRpcUrl: config == null ? void 0 : config.solanaRpcUrl
@@ -1985,7 +2019,8 @@ var executionKeys = {
1985
2019
  claimableClosedPositionsCount: () => ["execution", "positions", "claimable-count"],
1986
2020
  orders: (status, cursor, limit) => ["execution", "orders", status != null ? status : null, cursor != null ? cursor : null, limit != null ? limit : null],
1987
2021
  ordersPrefix: () => ["execution", "orders"],
1988
- depositAddresses: () => ["execution", "deposit-addresses"]
2022
+ depositAddresses: () => ["execution", "deposit-addresses"],
2023
+ balanceRefillPolicies: () => ["execution", "balance-refill-policies"]
1989
2024
  };
1990
2025
 
1991
2026
  // src/execution/balance-invalidation.ts
@@ -4800,6 +4835,53 @@ function useExecutionProgress({
4800
4835
  return { phase, submittedOrders, latestBalance, dagProgress, terminalOrderEvents };
4801
4836
  }
4802
4837
 
4838
+ // src/execution/use-balance-refill-policies.ts
4839
+ var import_react_query16 = require("@tanstack/react-query");
4840
+ function useBalanceRefillPolicies(options) {
4841
+ var _a, _b;
4842
+ const client = useAggClient();
4843
+ const queryClient = (0, import_react_query16.useQueryClient)();
4844
+ const queryKey = executionKeys.balanceRefillPolicies();
4845
+ const query = (0, import_react_query16.useQuery)({
4846
+ queryKey,
4847
+ queryFn: () => client.getBalanceRefillPolicies(),
4848
+ enabled: (_a = options == null ? void 0 : options.enabled) != null ? _a : true,
4849
+ staleTime: 15e3,
4850
+ refetchInterval: (state) => {
4851
+ var _a2;
4852
+ return ((_a2 = state.state.data) == null ? void 0 : _a2.some(
4853
+ (policy) => {
4854
+ var _a3, _b2;
4855
+ return ["reserved", "executing"].includes((_b2 = (_a3 = policy.latestAttempt) == null ? void 0 : _a3.status) != null ? _b2 : "");
4856
+ }
4857
+ )) ? 5e3 : false;
4858
+ }
4859
+ });
4860
+ const createPolicy = (0, import_react_query16.useMutation)({
4861
+ mutationFn: (params) => client.createBalanceRefillPolicy(params),
4862
+ onSuccess: (policy) => {
4863
+ queryClient.setQueryData(queryKey, [policy]);
4864
+ }
4865
+ });
4866
+ const updatePolicy = (0, import_react_query16.useMutation)({
4867
+ mutationFn: ({
4868
+ policyId,
4869
+ params
4870
+ }) => client.updateBalanceRefillPolicy(policyId, params),
4871
+ onSuccess: (updated) => {
4872
+ queryClient.setQueryData(
4873
+ queryKey,
4874
+ (current) => (current != null ? current : []).map((policy) => policy.id === updated.id ? updated : policy)
4875
+ );
4876
+ }
4877
+ });
4878
+ return __spreadProps(__spreadValues({}, query), {
4879
+ policies: (_b = query.data) != null ? _b : [],
4880
+ createPolicy,
4881
+ updatePolicy
4882
+ });
4883
+ }
4884
+
4803
4885
  // src/execution/compute-closed-position-totals.ts
4804
4886
  var computeClosedPositionTotals = (group) => {
4805
4887
  const outcomes = group.venueMarket.venueMarketOutcomes;
@@ -4839,7 +4921,7 @@ var computeClosedPositionTotals = (group) => {
4839
4921
  };
4840
4922
 
4841
4923
  // src/execution/use-redeem.ts
4842
- var import_react_query16 = require("@tanstack/react-query");
4924
+ var import_react_query17 = require("@tanstack/react-query");
4843
4925
  var RedeemRejectedError = class extends Error {
4844
4926
  constructor(message, response) {
4845
4927
  super(message);
@@ -4850,8 +4932,8 @@ var RedeemRejectedError = class extends Error {
4850
4932
  var isLegRejected = (status) => status === "ineligible" || status === "rejected";
4851
4933
  var useRedeem = () => {
4852
4934
  const client = useAggClient();
4853
- const queryClient = (0, import_react_query16.useQueryClient)();
4854
- return (0, import_react_query16.useMutation)({
4935
+ const queryClient = (0, import_react_query17.useQueryClient)();
4936
+ return (0, import_react_query17.useMutation)({
4855
4937
  mutationFn: (body) => __async(null, null, function* () {
4856
4938
  const response = yield client.redeem(body);
4857
4939
  if (response.results.length > 0 && response.results.every((r) => isLegRejected(r.status))) {
@@ -4873,7 +4955,7 @@ var useOnRedeemEvent2 = (listener) => {
4873
4955
  };
4874
4956
 
4875
4957
  // src/execution/use-redeem-eligible-count.ts
4876
- var import_react_query17 = require("@tanstack/react-query");
4958
+ var import_react_query18 = require("@tanstack/react-query");
4877
4959
  var CLAIMABLE_COUNT_PAGE_LIMIT = 100;
4878
4960
  var getClaimablePositionsCount = (client) => __async(null, null, function* () {
4879
4961
  var _a;
@@ -4898,7 +4980,7 @@ var useRedeemEligibleCount = () => {
4898
4980
  var _a;
4899
4981
  const client = useAggClient();
4900
4982
  const { isAuthenticated } = useAggAuthState();
4901
- const query = (0, import_react_query17.useQuery)({
4983
+ const query = (0, import_react_query18.useQuery)({
4902
4984
  queryKey: executionKeys.claimablePositionsCount(),
4903
4985
  queryFn: () => getClaimablePositionsCount(client),
4904
4986
  enabled: isAuthenticated,
@@ -5374,7 +5456,7 @@ function useWithdrawEstimate({
5374
5456
 
5375
5457
  // src/withdraw/use-withdrawal-lifecycle.ts
5376
5458
  var import_react15 = require("react");
5377
- var import_react_query18 = require("@tanstack/react-query");
5459
+ var import_react_query19 = require("@tanstack/react-query");
5378
5460
  var INITIAL_STATE2 = {
5379
5461
  pending: true,
5380
5462
  status: null,
@@ -5431,7 +5513,7 @@ var restToLifecycleState = (response) => {
5431
5513
  function useWithdrawalLifecycle(withdrawalId) {
5432
5514
  const client = useAggClient();
5433
5515
  const wsConnected = useAggWebSocketConnectionState();
5434
- const queryClient = (0, import_react_query18.useQueryClient)();
5516
+ const queryClient = (0, import_react_query19.useQueryClient)();
5435
5517
  const [state, setState] = (0, import_react15.useState)(INITIAL_STATE2);
5436
5518
  const stateRef = (0, import_react15.useRef)(state);
5437
5519
  stateRef.current = state;
@@ -5500,7 +5582,7 @@ function useWithdrawalLifecycle(withdrawalId) {
5500
5582
  }
5501
5583
 
5502
5584
  // src/withdraw/use-withdraw-preview.ts
5503
- var import_react_query19 = require("@tanstack/react-query");
5585
+ var import_react_query20 = require("@tanstack/react-query");
5504
5586
  function useWithdrawPreview({
5505
5587
  amountRaw,
5506
5588
  tokenSymbol,
@@ -5510,7 +5592,7 @@ function useWithdrawPreview({
5510
5592
  }) {
5511
5593
  const client = useAggClient();
5512
5594
  const enabled = !!amountRaw && BigInt(amountRaw || "0") > BigInt(0) && !!tokenSymbol && !!destinationChainId && !!destinationAddress;
5513
- return (0, import_react_query19.useQuery)({
5595
+ return (0, import_react_query20.useQuery)({
5514
5596
  queryKey: [
5515
5597
  "withdraw-preview",
5516
5598
  tokenSymbol,
@@ -5582,14 +5664,14 @@ var getVenueAvailabilityState = ({
5582
5664
  };
5583
5665
 
5584
5666
  // src/use-venue-key-status.ts
5585
- var import_react_query20 = require("@tanstack/react-query");
5667
+ var import_react_query21 = require("@tanstack/react-query");
5586
5668
  var venueKeyQueryKeys = {
5587
5669
  all: ["agg", "venue-keys"],
5588
5670
  status: (venue) => [...venueKeyQueryKeys.all, venue, "status"]
5589
5671
  };
5590
5672
  var useVenueKeyStatus = (venue, enabled = true) => {
5591
5673
  const client = useAggClient();
5592
- return (0, import_react_query20.useQuery)({
5674
+ return (0, import_react_query21.useQuery)({
5593
5675
  queryKey: venueKeyQueryKeys.status(venue),
5594
5676
  queryFn: () => client.getVenueKeyStatus(venue),
5595
5677
  enabled
@@ -5664,7 +5746,7 @@ var requestAggAuthChooserOpen = () => {
5664
5746
  };
5665
5747
 
5666
5748
  // src/use-categories.ts
5667
- var import_react_query21 = require("@tanstack/react-query");
5749
+ var import_react_query22 = require("@tanstack/react-query");
5668
5750
  function useCategories(options) {
5669
5751
  var _a, _b, _c, _d, _e, _f;
5670
5752
  const client = useAggClient();
@@ -5672,7 +5754,7 @@ function useCategories(options) {
5672
5754
  const parentId = (_b = options == null ? void 0 : options.parentId) != null ? _b : null;
5673
5755
  const enabled = (_c = options == null ? void 0 : options.enabled) != null ? _c : true;
5674
5756
  const limit = (_d = options == null ? void 0 : options.limit) != null ? _d : 20;
5675
- const query = (0, import_react_query21.useInfiniteQuery)({
5757
+ const query = (0, import_react_query22.useInfiniteQuery)({
5676
5758
  queryKey: [queryKeyScope, "parent", parentId != null ? parentId : "__root__", limit],
5677
5759
  queryFn: (_0) => __async(null, [_0], function* ({ pageParam }) {
5678
5760
  const res = yield client.getCategories(__spreadValues({
@@ -5704,7 +5786,7 @@ function useCategoryChildren(options) {
5704
5786
  const parentIds = Array.from(
5705
5787
  new Set(((_d = options == null ? void 0 : options.parentIds) != null ? _d : []).filter((parentId) => Boolean(parentId)))
5706
5788
  );
5707
- const queries = (0, import_react_query21.useQueries)({
5789
+ const queries = (0, import_react_query22.useQueries)({
5708
5790
  queries: parentIds.map((parentId) => ({
5709
5791
  queryKey: [queryKeyScope, "parent", parentId, limit],
5710
5792
  queryFn: () => __async(null, null, function* () {
@@ -5747,7 +5829,7 @@ function useDebouncedValue(value, delay) {
5747
5829
  }
5748
5830
 
5749
5831
  // src/use-execution-orders.ts
5750
- var import_react_query22 = require("@tanstack/react-query");
5832
+ var import_react_query23 = require("@tanstack/react-query");
5751
5833
  function useExecutionOrders(options = {}) {
5752
5834
  var _a, _b;
5753
5835
  const client = useAggClient();
@@ -5760,7 +5842,7 @@ function useExecutionOrders(options = {}) {
5760
5842
  enabled = true,
5761
5843
  refetchIntervalMs = false
5762
5844
  } = options;
5763
- const query = (0, import_react_query22.useInfiniteQuery)({
5845
+ const query = (0, import_react_query23.useInfiniteQuery)({
5764
5846
  // quoteId + orderId are part of the cache key — different filters
5765
5847
  // produce different result sets, so they have to vary the key.
5766
5848
  queryKey: [
@@ -5796,7 +5878,7 @@ function useExecutionOrders(options = {}) {
5796
5878
  }
5797
5879
 
5798
5880
  // src/use-user-activity.ts
5799
- var import_react_query23 = require("@tanstack/react-query");
5881
+ var import_react_query24 = require("@tanstack/react-query");
5800
5882
  var DEFAULT_PENDING_REFETCH_INTERVAL_MS = 15e3;
5801
5883
  var PENDING_ACTIVITY_STATUSES = /* @__PURE__ */ new Set([
5802
5884
  "pending",
@@ -5830,7 +5912,7 @@ function useUserActivity(options = {}) {
5830
5912
  enabled = true,
5831
5913
  pendingRefetchIntervalMs = DEFAULT_PENDING_REFETCH_INTERVAL_MS
5832
5914
  } = options;
5833
- const query = (0, import_react_query23.useInfiniteQuery)({
5915
+ const query = (0, import_react_query24.useInfiniteQuery)({
5834
5916
  queryKey: userActivityQueryKeys.feed(type, limit),
5835
5917
  queryFn: ({ pageParam }) => client.getUserActivity({
5836
5918
  type,
@@ -5847,7 +5929,7 @@ function useUserActivity(options = {}) {
5847
5929
  // flight (typically after a deposit / withdraw cache invalidation).
5848
5930
  // Without this the feed flashes to the skeleton mid-session, which
5849
5931
  // is worse UX than briefly showing slightly-stale rows.
5850
- placeholderData: import_react_query23.keepPreviousData,
5932
+ placeholderData: import_react_query24.keepPreviousData,
5851
5933
  refetchInterval: (q) => {
5852
5934
  if (pendingRefetchIntervalMs === false) return false;
5853
5935
  const data = q.state.data;
@@ -5892,12 +5974,12 @@ function useExternalId(options = {}) {
5892
5974
  }
5893
5975
 
5894
5976
  // src/use-execution-positions.ts
5895
- var import_react_query24 = require("@tanstack/react-query");
5977
+ var import_react_query25 = require("@tanstack/react-query");
5896
5978
  function useExecutionPositions(options = {}) {
5897
5979
  var _a, _b;
5898
5980
  const client = useAggClient();
5899
5981
  const { limit = 50, status, mode, enabled = true } = options;
5900
- const query = (0, import_react_query24.useInfiniteQuery)({
5982
+ const query = (0, import_react_query25.useInfiniteQuery)({
5901
5983
  queryKey: executionKeys.positions(null, limit, status != null ? status : null, mode != null ? mode : null),
5902
5984
  queryFn: ({ pageParam }) => client.getExecutionPositions(__spreadProps(__spreadValues({
5903
5985
  limit,
@@ -5928,7 +6010,7 @@ var import_react23 = require("react");
5928
6010
  var import_sdk3 = require("@agg-build/sdk");
5929
6011
 
5930
6012
  // src/use-market-chart.ts
5931
- var import_react_query25 = require("@tanstack/react-query");
6013
+ var import_react_query26 = require("@tanstack/react-query");
5932
6014
 
5933
6015
  // src/market-data/subscription.ts
5934
6016
  var import_react21 = require("react");
@@ -6013,7 +6095,7 @@ function useMarketChart(options) {
6013
6095
  orderbook: true,
6014
6096
  trades: true
6015
6097
  });
6016
- const queries = (0, import_react_query25.useQueries)({
6098
+ const queries = (0, import_react_query26.useQueries)({
6017
6099
  queries: outcomeIds.map((outcomeId) => ({
6018
6100
  // Cache key is intentionally time-free. The rolling window's
6019
6101
  // startTs/endTs advance on every bucket but the user expects the same
@@ -6048,7 +6130,7 @@ function useMarketChart(options) {
6048
6130
  gcTime: 60 * 6e4,
6049
6131
  refetchOnWindowFocus: false,
6050
6132
  retry: 1,
6051
- placeholderData: import_react_query25.keepPreviousData,
6133
+ placeholderData: import_react_query26.keepPreviousData,
6052
6134
  refetchInterval: refetchIntervalMs != null && refetchIntervalMs > 0 ? refetchIntervalMs : false,
6053
6135
  refetchIntervalInBackground: false
6054
6136
  }))
@@ -6291,7 +6373,7 @@ function useEventOrderbookData(venueMarkets, selectedMarketId) {
6291
6373
  }
6292
6374
 
6293
6375
  // src/use-live-market.ts
6294
- var import_react_query26 = require("@tanstack/react-query");
6376
+ var import_react_query27 = require("@tanstack/react-query");
6295
6377
  function outcomeOrderbookToState(response, marketId) {
6296
6378
  var _a, _b, _c, _d;
6297
6379
  const { venue, orderbook, midpoint, spread, seq, checksum, timestamp, venueMarketOutcomeId } = response;
@@ -6341,7 +6423,7 @@ function useLiveMarket(canonicalMarketId) {
6341
6423
  enabled: isLiveSubscriptionEnabled,
6342
6424
  orderbook: true
6343
6425
  });
6344
- const query = (0, import_react_query26.useQuery)({
6426
+ const query = (0, import_react_query27.useQuery)({
6345
6427
  queryKey: marketDataKeys.live(canonicalMarketId != null ? canonicalMarketId : "__disabled__"),
6346
6428
  queryFn: () => __async(null, null, function* () {
6347
6429
  return createMarketLiveState(canonicalMarketId != null ? canonicalMarketId : "__disabled__");
@@ -6353,7 +6435,7 @@ function useLiveMarket(canonicalMarketId) {
6353
6435
  isConnected: Boolean(isLiveSubscriptionEnabled && isConnected)
6354
6436
  })
6355
6437
  });
6356
- const seedQuery = (0, import_react_query26.useQuery)({
6438
+ const seedQuery = (0, import_react_query27.useQuery)({
6357
6439
  queryKey: ["live-market-seed", canonicalMarketId],
6358
6440
  queryFn: ({ signal }) => canonicalMarketId ? client.getOutcomeOrderbook(canonicalMarketId, { signal }) : Promise.resolve(null),
6359
6441
  enabled: Boolean(canonicalMarketId),
@@ -6374,7 +6456,7 @@ function useLiveMarket(canonicalMarketId) {
6374
6456
 
6375
6457
  // src/use-live-outcome-prices.ts
6376
6458
  var import_react26 = require("react");
6377
- var import_react_query27 = require("@tanstack/react-query");
6459
+ var import_react_query28 = require("@tanstack/react-query");
6378
6460
  var EMPTY_PRICES = /* @__PURE__ */ new Map();
6379
6461
  var buildMidpointFingerprint = (outcomeIds, queries) => {
6380
6462
  var _a, _b, _c;
@@ -6390,17 +6472,20 @@ function useLiveOutcomePrices(venueMarkets) {
6390
6472
  features: { enableLiveUpdates }
6391
6473
  } = useAggUiConfig();
6392
6474
  const outcomeIds = (0, import_react26.useMemo)(() => {
6393
- var _a;
6475
+ var _a, _b;
6394
6476
  if (!(venueMarkets == null ? void 0 : venueMarkets.length)) return [];
6395
6477
  const ids = /* @__PURE__ */ new Set();
6396
6478
  for (const vm of venueMarkets) {
6397
6479
  for (const outcome of (_a = vm.venueMarketOutcomes) != null ? _a : []) {
6398
6480
  if (outcome.id) ids.add(outcome.id);
6481
+ for (const ref of (_b = outcome.matchedVenueMarketOutcomes) != null ? _b : []) {
6482
+ if (ref.venueMarketOutcomeId) ids.add(ref.venueMarketOutcomeId);
6483
+ }
6399
6484
  }
6400
6485
  }
6401
6486
  return [...ids].sort();
6402
6487
  }, [venueMarkets]);
6403
- const queries = (0, import_react_query27.useQueries)({
6488
+ const queries = (0, import_react_query28.useQueries)({
6404
6489
  queries: outcomeIds.map((id) => ({
6405
6490
  queryKey: marketDataKeys.live(id),
6406
6491
  queryFn: () => createMarketLiveState(id),
@@ -6416,7 +6501,7 @@ function useLiveOutcomePrices(venueMarkets) {
6416
6501
  prices: EMPTY_PRICES
6417
6502
  });
6418
6503
  const data = (0, import_react26.useMemo)(() => {
6419
- var _a, _b, _c, _d;
6504
+ var _a, _b, _c;
6420
6505
  if (!(venueMarkets == null ? void 0 : venueMarkets.length)) return EMPTY_PRICES;
6421
6506
  if (fingerprint === prevRef.current.fingerprint) {
6422
6507
  return prevRef.current.prices;
@@ -6427,16 +6512,10 @@ function useLiveOutcomePrices(venueMarkets) {
6427
6512
  const state = (_a = queries[i]) == null ? void 0 : _a.data;
6428
6513
  liveByOutcomeId.set(outcomeIds[i], (_c = (_b = state == null ? void 0 : state.orderbook) == null ? void 0 : _b.midpoint) != null ? _c : null);
6429
6514
  }
6430
- for (const vm of venueMarkets) {
6431
- for (const outcome of (_d = vm.venueMarketOutcomes) != null ? _d : []) {
6432
- if (!enableLiveUpdates) {
6433
- continue;
6434
- }
6435
- const liveMidpoint = liveByOutcomeId.get(outcome.id);
6436
- if (liveMidpoint != null) {
6437
- prices.set(outcome.id, liveMidpoint);
6438
- }
6439
- }
6515
+ if (!enableLiveUpdates) return prices;
6516
+ for (const outcomeId of outcomeIds) {
6517
+ const liveMidpoint = liveByOutcomeId.get(outcomeId);
6518
+ if (liveMidpoint != null) prices.set(outcomeId, liveMidpoint);
6440
6519
  }
6441
6520
  prevRef.current = { fingerprint, prices };
6442
6521
  return prices;
@@ -6449,7 +6528,7 @@ function findLivePriceById(livePrices, id) {
6449
6528
 
6450
6529
  // src/use-live-best-prices.ts
6451
6530
  var import_react27 = require("react");
6452
- var import_react_query28 = require("@tanstack/react-query");
6531
+ var import_react_query29 = require("@tanstack/react-query");
6453
6532
  var EMPTY = /* @__PURE__ */ new Map();
6454
6533
  var EMPTY_CANDIDATES = /* @__PURE__ */ new Map();
6455
6534
  var extractOutcomeBestPrices = (state) => {
@@ -6492,7 +6571,7 @@ function useLiveBestPrices(venueMarkets) {
6492
6571
  }
6493
6572
  return [...ids].sort();
6494
6573
  }, [venueMarkets]);
6495
- const queries = (0, import_react_query28.useQueries)({
6574
+ const queries = (0, import_react_query29.useQueries)({
6496
6575
  queries: outcomeIds.map((id) => ({
6497
6576
  queryKey: marketDataKeys.live(id),
6498
6577
  queryFn: () => createMarketLiveState(id),
@@ -6711,7 +6790,7 @@ function useLiveBestPriceCandidates(venueMarkets) {
6711
6790
  }
6712
6791
  return [...ids].sort();
6713
6792
  }, [venueMarkets]);
6714
- const queries = (0, import_react_query28.useQueries)({
6793
+ const queries = (0, import_react_query29.useQueries)({
6715
6794
  queries: outcomeIds.map((id) => ({
6716
6795
  queryKey: marketDataKeys.live(id),
6717
6796
  queryFn: () => createMarketLiveState(id),
@@ -6755,7 +6834,7 @@ function useLiveTrades(canonicalMarketId) {
6755
6834
  }
6756
6835
 
6757
6836
  // src/use-midpoints.ts
6758
- var import_react_query29 = require("@tanstack/react-query");
6837
+ var import_react_query30 = require("@tanstack/react-query");
6759
6838
  var import_react28 = require("react");
6760
6839
  var normalizeVenueMarketIds = (venueMarkets) => {
6761
6840
  var _a;
@@ -6934,7 +7013,7 @@ function useMidpoints(venueMarkets, options) {
6934
7013
  () => resolveBestMidpointCandidateOutcomeIds(venueMarkets),
6935
7014
  [venueMarkets]
6936
7015
  );
6937
- const { data, isLoading } = (0, import_react_query29.useQuery)({
7016
+ const { data, isLoading } = (0, import_react_query30.useQuery)({
6938
7017
  queryKey: ["midpoints", ids, maxMidpointIdsPerRequest],
6939
7018
  queryFn: () => client.getMidpoints(ids, { bestPrice: true, maxMidpointIdsPerRequest }),
6940
7019
  enabled: ids.length > 0,
@@ -6947,8 +7026,9 @@ function useMidpoints(venueMarkets, options) {
6947
7026
  const result = (0, import_react28.useMemo)(() => {
6948
7027
  var _a2, _b, _c, _d, _e, _f;
6949
7028
  const map = /* @__PURE__ */ new Map();
7029
+ const currentMap = /* @__PURE__ */ new Map();
6950
7030
  const venueMap = /* @__PURE__ */ new Map();
6951
- if (!(data == null ? void 0 : data.data) || !venueMarkets) return { map, venueMap };
7031
+ if (!(data == null ? void 0 : data.data) || !venueMarkets) return { map, currentMap, venueMap };
6952
7032
  const itemByMarketId = new Map(data.data.map((item) => [item.venueMarketId, item]));
6953
7033
  const marketById = new Map(venueMarkets.map((market) => [market.id, market]));
6954
7034
  for (const item of data.data) {
@@ -6956,6 +7036,7 @@ function useMidpoints(venueMarkets, options) {
6956
7036
  for (const o of item.outcomes) {
6957
7037
  if (o.midpoint == null) continue;
6958
7038
  map.set(o.venueMarketOutcomeId, o.midpoint);
7039
+ currentMap.set(o.venueMarketOutcomeId, o.midpoint);
6959
7040
  if (item.venue) venueMap.set(o.venueMarketOutcomeId, item.venue);
6960
7041
  }
6961
7042
  }
@@ -6970,6 +7051,7 @@ function useMidpoints(venueMarkets, options) {
6970
7051
  for (const ref of refs) {
6971
7052
  const sib = resolveSiblingOutcomeMidpoint(item.matched, ref);
6972
7053
  if (sib == null) continue;
7054
+ currentMap.set(ref.venueMarketOutcomeId, sib.midpoint);
6973
7055
  if (best == null || sib.midpoint < best) {
6974
7056
  best = sib.midpoint;
6975
7057
  bestVenue = (_e = sib.venue) != null ? _e : bestVenue;
@@ -6992,7 +7074,7 @@ function useMidpoints(venueMarkets, options) {
6992
7074
  }
6993
7075
  }
6994
7076
  }
6995
- return { map, venueMap };
7077
+ return { map, currentMap, venueMap };
6996
7078
  }, [data, venueMarkets]);
6997
7079
  const { bestMidpoint, bestMidpointVenue } = (0, import_react28.useMemo)(() => {
6998
7080
  let value;
@@ -7022,6 +7104,7 @@ function useMidpoints(venueMarkets, options) {
7022
7104
  return {
7023
7105
  prices: result.map,
7024
7106
  bestMidpointsByOutcomeId: result.map,
7107
+ currentMidpointsByOutcomeId: result.currentMap,
7025
7108
  venueByOutcomeId: result.venueMap,
7026
7109
  bestPrices,
7027
7110
  bestPriceVenuesByOutcomeId,
@@ -7079,10 +7162,10 @@ var useRollingChartWindow = (options) => {
7079
7162
  };
7080
7163
 
7081
7164
  // src/use-market-orderbook.ts
7082
- var import_react_query30 = require("@tanstack/react-query");
7165
+ var import_react_query31 = require("@tanstack/react-query");
7083
7166
  function useMarketOrderbook(options) {
7084
7167
  var _a, _b, _c, _d, _e, _f, _g, _h;
7085
- const queryClient = (0, import_react_query30.useQueryClient)();
7168
+ const queryClient = (0, import_react_query31.useQueryClient)();
7086
7169
  const ws = useAggWebSocket();
7087
7170
  const isConnected = useAggWebSocketConnectionState();
7088
7171
  const {
@@ -7100,7 +7183,7 @@ function useMarketOrderbook(options) {
7100
7183
  enabled: enabled && !!selectedOutcomeId,
7101
7184
  orderbook: true
7102
7185
  });
7103
- const liveQueries = (0, import_react_query30.useQueries)({
7186
+ const liveQueries = (0, import_react_query31.useQueries)({
7104
7187
  queries: subscriptionIds.map((subscriptionId) => ({
7105
7188
  queryKey: marketDataKeys.live(subscriptionId),
7106
7189
  queryFn: () => createMarketLiveState(subscriptionId),
@@ -7224,7 +7307,7 @@ function useArbFeed() {
7224
7307
  }
7225
7308
 
7226
7309
  // src/use-order-book.ts
7227
- var import_react_query31 = require("@tanstack/react-query");
7310
+ var import_react_query32 = require("@tanstack/react-query");
7228
7311
  function useOrderBook(options) {
7229
7312
  const client = useAggClient();
7230
7313
  const { orderbooks, enabled = true, canonicalMarketId } = options;
@@ -7237,7 +7320,7 @@ function useOrderBook(options) {
7237
7320
  venueMarketOutcomeId: outcome.id
7238
7321
  })) : void 0
7239
7322
  });
7240
- const batchedResult = (0, import_react_query31.useQuery)({
7323
+ const batchedResult = (0, import_react_query32.useQuery)({
7241
7324
  queryKey: requestedVenueMarketIds.length ? ["orderbooks", requestedVenueMarketIds, null] : ["orderbooks", "__disabled__", null],
7242
7325
  queryFn: ({ signal }) => client.getOrderbooks(
7243
7326
  {
@@ -7250,7 +7333,7 @@ function useOrderBook(options) {
7250
7333
  gcTime: 5 * 6e4,
7251
7334
  refetchOnWindowFocus: false,
7252
7335
  retry: 1,
7253
- placeholderData: import_react_query31.keepPreviousData
7336
+ placeholderData: import_react_query32.keepPreviousData
7254
7337
  });
7255
7338
  const data = (() => {
7256
7339
  var _a, _b;
@@ -7305,7 +7388,7 @@ function useOrderBook(options) {
7305
7388
  }
7306
7389
 
7307
7390
  // src/use-orderbook-quote.ts
7308
- var import_react_query32 = require("@tanstack/react-query");
7391
+ var import_react_query33 = require("@tanstack/react-query");
7309
7392
  var QUOTE_DEBOUNCE_MS = 300;
7310
7393
  var createUnavailableOrderbookError = (message, code, retryable) => {
7311
7394
  const error = new Error(message);
@@ -7367,7 +7450,7 @@ function useOrderbookQuote(options) {
7367
7450
  const { marketId, side, size, enabled = true } = options;
7368
7451
  const debouncedSize = useDebouncedValue(size, QUOTE_DEBOUNCE_MS);
7369
7452
  const shouldFetch = enabled && !!marketId && debouncedSize > 0;
7370
- const query = (0, import_react_query32.useQuery)({
7453
+ const query = (0, import_react_query33.useQuery)({
7371
7454
  queryKey: marketId ? marketDataKeys.orderbookQuote(marketId, side, debouncedSize) : ["market-data", "orderbook-quote", "__disabled__"],
7372
7455
  queryFn: () => __async(null, null, function* () {
7373
7456
  var _a2, _b, _c, _d;
@@ -7398,7 +7481,7 @@ function useOrderbookQuote(options) {
7398
7481
  staleTime: 1e4,
7399
7482
  gcTime: 5 * 6e4,
7400
7483
  retry: 1,
7401
- placeholderData: import_react_query32.keepPreviousData
7484
+ placeholderData: import_react_query33.keepPreviousData
7402
7485
  });
7403
7486
  return {
7404
7487
  data: (_a = query.data) != null ? _a : null,
@@ -7409,12 +7492,12 @@ function useOrderbookQuote(options) {
7409
7492
  }
7410
7493
 
7411
7494
  // src/use-orders.ts
7412
- var import_react_query33 = require("@tanstack/react-query");
7495
+ var import_react_query34 = require("@tanstack/react-query");
7413
7496
  function useOrders(options = {}) {
7414
7497
  var _a, _b, _c, _d;
7415
7498
  const client = useAggClient();
7416
7499
  const { userId, status, limit = 50, offset = 0, enabled = true } = options;
7417
- const query = (0, import_react_query33.useQuery)({
7500
+ const query = (0, import_react_query34.useQuery)({
7418
7501
  queryKey: ["orders", userId != null ? userId : "me", status != null ? status : "all", limit, offset],
7419
7502
  queryFn: () => client.getOrders({
7420
7503
  userId,
@@ -7431,13 +7514,13 @@ function useOrders(options = {}) {
7431
7514
  }
7432
7515
 
7433
7516
  // src/use-search.ts
7434
- var import_react_query34 = require("@tanstack/react-query");
7517
+ var import_react_query35 = require("@tanstack/react-query");
7435
7518
  var import_react31 = require("react");
7436
7519
  function useSearch(options) {
7437
7520
  var _a, _b, _c, _d;
7438
7521
  const client = (0, import_react31.useContext)(AggClientContext);
7439
- const queryClient = (0, import_react31.useContext)(import_react_query34.QueryClientContext);
7440
- const [fallbackQueryClient] = (0, import_react31.useState)(() => new import_react_query34.QueryClient());
7522
+ const queryClient = (0, import_react31.useContext)(import_react_query35.QueryClientContext);
7523
+ const [fallbackQueryClient] = (0, import_react31.useState)(() => new import_react_query35.QueryClient());
7441
7524
  const { q, type, categoryIds, status, limit = 20, enabled = true, deep = false } = options;
7442
7525
  const isEnabled = enabled && q.length > 0;
7443
7526
  (0, import_react31.useEffect)(() => {
@@ -7450,7 +7533,7 @@ function useSearch(options) {
7450
7533
  if (isEnabled && !client) {
7451
7534
  throw new Error("useSearch must be used within an <AggProvider>");
7452
7535
  }
7453
- const query = (0, import_react_query34.useInfiniteQuery)(
7536
+ const query = (0, import_react_query35.useInfiniteQuery)(
7454
7537
  {
7455
7538
  // deep is part of the key — TanStack treats deep vs light as
7456
7539
  // independent queries so users can have both modes cached side-by-side.
@@ -7484,7 +7567,7 @@ function useSearch(options) {
7484
7567
  if (!lastPage.hasMore) return void 0;
7485
7568
  return (_a2 = lastPage.nextCursor) != null ? _a2 : void 0;
7486
7569
  },
7487
- placeholderData: import_react_query34.keepPreviousData,
7570
+ placeholderData: import_react_query35.keepPreviousData,
7488
7571
  enabled: isEnabled && !!client
7489
7572
  },
7490
7573
  queryClient != null ? queryClient : fallbackQueryClient
@@ -7592,7 +7675,7 @@ function useMarketSearch(options) {
7592
7675
  }
7593
7676
 
7594
7677
  // src/use-smart-route.ts
7595
- var import_react_query35 = require("@tanstack/react-query");
7678
+ var import_react_query36 = require("@tanstack/react-query");
7596
7679
 
7597
7680
  // src/smart-route-refresh-policy.ts
7598
7681
  var THIN_SMART_ROUTE_REFETCH_INTERVAL_MS = 5e3;
@@ -7741,7 +7824,7 @@ function useSmartRoute(options) {
7741
7824
  const resolvedVenueMarketOutcomeId = (_a = venueMarketOutcomeId != null ? venueMarketOutcomeId : venueMarketId) != null ? _a : outcomeId;
7742
7825
  const hasValidInput = (maxSpend != null ? maxSpend : 0) > 0 || (sellShares != null ? sellShares : 0) > 0;
7743
7826
  const queryEnabled = enabled && !!resolvedVenueMarketOutcomeId && hasValidInput;
7744
- const query = (0, import_react_query35.useQuery)({
7827
+ const query = (0, import_react_query36.useQuery)({
7745
7828
  queryKey: [
7746
7829
  "smart-route",
7747
7830
  resolvedVenueMarketOutcomeId,
@@ -7797,7 +7880,7 @@ function useSmartRoute(options) {
7797
7880
  // a different amount or position snapshot. Never expose it under a new
7798
7881
  // sell key while the replacement request is in flight. BUY retains the
7799
7882
  // existing no-flicker behavior.
7800
- placeholderData: tradeSide === "sell" ? void 0 : import_react_query35.keepPreviousData
7883
+ placeholderData: tradeSide === "sell" ? void 0 : import_react_query36.keepPreviousData
7801
7884
  });
7802
7885
  const error = query.error;
7803
7886
  let loadingReason = null;
@@ -7818,13 +7901,123 @@ function useSmartRoute(options) {
7818
7901
  };
7819
7902
  }
7820
7903
 
7821
- // src/use-venue-sell-quotes.ts
7822
- var import_react_query36 = require("@tanstack/react-query");
7904
+ // src/use-limit-order-venue-quotes.ts
7905
+ var import_react_query37 = require("@tanstack/react-query");
7823
7906
  var getIsDocumentVisible2 = () => {
7824
7907
  if (typeof document === "undefined") return true;
7825
7908
  return document.visibilityState !== "hidden";
7826
7909
  };
7827
7910
  var getUniqueVenueRequests = (requests) => {
7911
+ const requestsByVenue = /* @__PURE__ */ new Map();
7912
+ for (const request of requests) {
7913
+ if (!request.venueMarketOutcomeId || requestsByVenue.has(request.venue)) continue;
7914
+ requestsByVenue.set(request.venue, request);
7915
+ }
7916
+ return [...requestsByVenue.values()].sort((left, right) => left.venue.localeCompare(right.venue));
7917
+ };
7918
+ var useLimitOrderVenueQuotes = (options) => {
7919
+ var _a, _b;
7920
+ const client = useAggClient();
7921
+ const {
7922
+ requests,
7923
+ tradeSide,
7924
+ amount,
7925
+ marketId,
7926
+ accountId,
7927
+ chainBalances,
7928
+ mode,
7929
+ slipCapBps,
7930
+ enabled = true,
7931
+ staleTimeMs = SMART_ROUTE_STALE_TIME_MS,
7932
+ refreshContext
7933
+ } = options;
7934
+ const uniqueRequests = getUniqueVenueRequests(requests);
7935
+ const hasValidInput = typeof amount === "number" && Number.isFinite(amount) && amount > 0;
7936
+ const hasRequiredAccount = tradeSide === "buy" || Boolean(accountId);
7937
+ const queryEnabled = enabled && hasValidInput && hasRequiredAccount;
7938
+ const serializedChainBalances = chainBalances ? JSON.stringify(chainBalances) : null;
7939
+ const queries = (0, import_react_query37.useQueries)({
7940
+ queries: uniqueRequests.map((request) => ({
7941
+ queryKey: [
7942
+ "smart-route",
7943
+ request.venueMarketOutcomeId,
7944
+ "limit-order-venue-info",
7945
+ {
7946
+ venue: request.venue,
7947
+ tradeSide,
7948
+ amount: amount != null ? amount : null,
7949
+ // The quote endpoint does not use limit price, so it must not be
7950
+ // part of this key or trigger a new informational quote.
7951
+ marketId: marketId != null ? marketId : null,
7952
+ accountId: accountId != null ? accountId : null,
7953
+ chainBalances: serializedChainBalances,
7954
+ mode: mode != null ? mode : null,
7955
+ slipCapBps: slipCapBps != null ? slipCapBps : null
7956
+ }
7957
+ ],
7958
+ queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
7959
+ return client.getSmartRoute(
7960
+ __spreadProps(__spreadValues(__spreadValues(__spreadValues({
7961
+ venueMarketOutcomeId: request.venueMarketOutcomeId,
7962
+ tradeSide
7963
+ }, tradeSide === "buy" ? { maxSpend: amount } : { sellShares: amount }), chainBalances ? { chainBalances } : {}), mode ? { mode } : {}), {
7964
+ slipCapBps,
7965
+ allowedVenues: [request.venue]
7966
+ }),
7967
+ { signal }
7968
+ );
7969
+ }),
7970
+ enabled: queryEnabled,
7971
+ placeholderData: import_react_query37.keepPreviousData,
7972
+ staleTime: staleTimeMs,
7973
+ refetchInterval: (queryState) => {
7974
+ var _a2, _b2, _c, _d;
7975
+ return resolveSmartRouteRefetchInterval({
7976
+ data: queryState.state.data,
7977
+ defaultIntervalMs: staleTimeMs,
7978
+ isDocumentVisible: getIsDocumentVisible2(),
7979
+ isEditing: (_a2 = refreshContext == null ? void 0 : refreshContext.isEditing) != null ? _a2 : false,
7980
+ isInputValid: hasValidInput,
7981
+ isMarketOpen: (_b2 = refreshContext == null ? void 0 : refreshContext.isMarketOpen) != null ? _b2 : true,
7982
+ isPanelActive: (_c = refreshContext == null ? void 0 : refreshContext.isPanelActive) != null ? _c : true,
7983
+ isSubmitting: (_d = refreshContext == null ? void 0 : refreshContext.isSubmitting) != null ? _d : false,
7984
+ queryEnabled
7985
+ });
7986
+ },
7987
+ gcTime: 6e4,
7988
+ refetchOnWindowFocus: false,
7989
+ refetchIntervalInBackground: false,
7990
+ retry: 1
7991
+ }))
7992
+ });
7993
+ const quotes = queries.map((query, index) => {
7994
+ var _a2;
7995
+ const queryError = query.error;
7996
+ return {
7997
+ request: uniqueRequests[index],
7998
+ data: (_a2 = query.data) != null ? _a2 : null,
7999
+ isLoading: query.isLoading,
8000
+ isFetching: query.isFetching,
8001
+ error: queryError instanceof Error ? queryError : queryError ? new Error(String(queryError)) : null,
8002
+ refetch: query.refetch
8003
+ };
8004
+ });
8005
+ return {
8006
+ quotes,
8007
+ isLoading: quotes.some((quote) => quote.isLoading),
8008
+ isFetching: quotes.some((quote) => quote.isFetching),
8009
+ error: (_b = (_a = quotes.find((quote) => quote.error)) == null ? void 0 : _a.error) != null ? _b : null,
8010
+ refetch: () => Promise.all(quotes.map((quote) => quote.refetch()))
8011
+ };
8012
+ };
8013
+
8014
+ // src/use-venue-sell-quotes.ts
8015
+ var import_react_query38 = require("@tanstack/react-query");
8016
+ var getIsDocumentVisible3 = () => {
8017
+ if (typeof document === "undefined") return true;
8018
+ return document.visibilityState !== "hidden";
8019
+ };
8020
+ var getUniqueVenueRequests2 = (requests) => {
7828
8021
  const requestsByVenue = /* @__PURE__ */ new Map();
7829
8022
  for (const request of requests) {
7830
8023
  if (request.requestedSellShares <= 0 || request.sellShares <= 0 || request.availableShares <= 0) {
@@ -7849,8 +8042,8 @@ var useVenueSellQuotes = (options) => {
7849
8042
  staleTimeMs = SMART_ROUTE_STALE_TIME_MS,
7850
8043
  refreshContext
7851
8044
  } = options;
7852
- const uniqueRequests = getUniqueVenueRequests(requests);
7853
- const queries = (0, import_react_query36.useQueries)({
8045
+ const uniqueRequests = getUniqueVenueRequests2(requests);
8046
+ const queries = (0, import_react_query38.useQueries)({
7854
8047
  queries: uniqueRequests.map((request) => {
7855
8048
  const hasValidInput = request.requestedSellShares > 0 && request.sellShares > 0 && request.availableShares > 0;
7856
8049
  const queryEnabled = enabled && !!venueMarketOutcomeId && !!accountId && hasValidInput;
@@ -7892,7 +8085,7 @@ var useVenueSellQuotes = (options) => {
7892
8085
  return resolveSmartRouteRefetchInterval({
7893
8086
  data: queryState.state.data,
7894
8087
  defaultIntervalMs: staleTimeMs,
7895
- isDocumentVisible: getIsDocumentVisible2(),
8088
+ isDocumentVisible: getIsDocumentVisible3(),
7896
8089
  isEditing: (_a2 = refreshContext == null ? void 0 : refreshContext.isEditing) != null ? _a2 : false,
7897
8090
  isInputValid: hasValidInput,
7898
8091
  isMarketOpen: (_b2 = refreshContext == null ? void 0 : refreshContext.isMarketOpen) != null ? _b2 : true,
@@ -7930,12 +8123,12 @@ var useVenueSellQuotes = (options) => {
7930
8123
  };
7931
8124
 
7932
8125
  // src/use-user-holdings.ts
7933
- var import_react_query37 = require("@tanstack/react-query");
8126
+ var import_react_query39 = require("@tanstack/react-query");
7934
8127
  function useUserHoldings(options) {
7935
8128
  var _a, _b;
7936
8129
  const client = useAggClient();
7937
8130
  const { venue, venueMarketId, venueEventId, enabled = true } = options;
7938
- const query = (0, import_react_query37.useInfiniteQuery)({
8131
+ const query = (0, import_react_query39.useInfiniteQuery)({
7939
8132
  queryKey: ["user-holdings", venue, venueMarketId, venueEventId],
7940
8133
  queryFn: (_0) => __async(null, [_0], function* ({ pageParam }) {
7941
8134
  return client.getUserHoldings({
@@ -7964,7 +8157,7 @@ function useUserHoldings(options) {
7964
8157
  var import_react34 = require("react");
7965
8158
 
7966
8159
  // src/use-venue-event.ts
7967
- var import_react_query38 = require("@tanstack/react-query");
8160
+ var import_react_query40 = require("@tanstack/react-query");
7968
8161
  var RESOLUTION_POLL_MS = 15e3;
7969
8162
  var RESOLUTION_POLL_MAX_PAST_END_MS = 60 * 6e4;
7970
8163
  function resolutionPollInterval(event) {
@@ -7982,7 +8175,7 @@ function useVenueEvent(options) {
7982
8175
  var _a;
7983
8176
  const client = useAggClient();
7984
8177
  const { eventId, enabled = true } = options;
7985
- const query = (0, import_react_query38.useQuery)({
8178
+ const query = (0, import_react_query40.useQuery)({
7986
8179
  queryKey: ["venue-event", eventId],
7987
8180
  queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
7988
8181
  return client.getVenueEventById(eventId, { signal });
@@ -8002,13 +8195,13 @@ function useVenueEvent(options) {
8002
8195
  }
8003
8196
 
8004
8197
  // src/use-venue-markets.ts
8005
- var import_react_query39 = require("@tanstack/react-query");
8198
+ var import_react_query41 = require("@tanstack/react-query");
8006
8199
  var import_react33 = require("react");
8007
8200
  function useVenueMarkets(options) {
8008
8201
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
8009
8202
  const client = (0, import_react33.useContext)(AggClientContext);
8010
- const queryClient = (0, import_react33.useContext)(import_react_query39.QueryClientContext);
8011
- const [fallbackQueryClient] = (0, import_react33.useState)(() => new import_react_query39.QueryClient());
8203
+ const queryClient = (0, import_react33.useContext)(import_react_query41.QueryClientContext);
8204
+ const [fallbackQueryClient] = (0, import_react33.useState)(() => new import_react_query41.QueryClient());
8012
8205
  const venue = options == null ? void 0 : options.venue;
8013
8206
  const venueEventId = options == null ? void 0 : options.venueEventId;
8014
8207
  const search = options == null ? void 0 : options.search;
@@ -8035,7 +8228,7 @@ function useVenueMarkets(options) {
8035
8228
  if (enabled && !client) {
8036
8229
  throw new Error("useVenueMarkets must be used within an <AggProvider>");
8037
8230
  }
8038
- const query = (0, import_react_query39.useInfiniteQuery)(
8231
+ const query = (0, import_react_query41.useInfiniteQuery)(
8039
8232
  {
8040
8233
  queryKey: [
8041
8234
  "venue-markets",
@@ -8156,13 +8349,13 @@ function useEnrichedVenueEvent(options) {
8156
8349
  }
8157
8350
 
8158
8351
  // src/use-venue-events.ts
8159
- var import_react_query40 = require("@tanstack/react-query");
8352
+ var import_react_query42 = require("@tanstack/react-query");
8160
8353
  var import_react35 = require("react");
8161
8354
  function useVenueEvents(options) {
8162
8355
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
8163
8356
  const client = (0, import_react35.useContext)(AggClientContext);
8164
- const queryClient = (0, import_react35.useContext)(import_react_query40.QueryClientContext);
8165
- const [fallbackQueryClient] = (0, import_react35.useState)(() => new import_react_query40.QueryClient());
8357
+ const queryClient = (0, import_react35.useContext)(import_react_query42.QueryClientContext);
8358
+ const [fallbackQueryClient] = (0, import_react35.useState)(() => new import_react_query42.QueryClient());
8166
8359
  const venues = options == null ? void 0 : options.venues;
8167
8360
  const search = options == null ? void 0 : options.search;
8168
8361
  const categoryIds = options == null ? void 0 : options.categoryIds;
@@ -8189,7 +8382,7 @@ function useVenueEvents(options) {
8189
8382
  if (enabled && !client) {
8190
8383
  throw new Error("useVenueEvents must be used within an <AggProvider>");
8191
8384
  }
8192
- const query = (0, import_react_query40.useInfiniteQuery)(
8385
+ const query = (0, import_react_query42.useInfiniteQuery)(
8193
8386
  {
8194
8387
  queryKey: [
8195
8388
  queryKeyScope,
@@ -8236,7 +8429,7 @@ function useVenueEvents(options) {
8236
8429
  return (_a2 = lastPage.nextCursor) != null ? _a2 : void 0;
8237
8430
  },
8238
8431
  // TODO: RMIK - Comment out to show skeletons on category switch
8239
- placeholderData: import_react_query40.keepPreviousData,
8432
+ placeholderData: import_react_query42.keepPreviousData,
8240
8433
  enabled: enabled && !!client
8241
8434
  },
8242
8435
  queryClient != null ? queryClient : fallbackQueryClient
@@ -8278,7 +8471,7 @@ function useVenueEvents(options) {
8278
8471
  }
8279
8472
 
8280
8473
  // src/use-venue-market-midpoints.ts
8281
- var import_react_query41 = require("@tanstack/react-query");
8474
+ var import_react_query43 = require("@tanstack/react-query");
8282
8475
  var normalizeVenueMarketIds2 = (venueMarketIds) => {
8283
8476
  return [
8284
8477
  ...new Set(venueMarketIds.map((venueMarketId) => venueMarketId.trim()).filter(Boolean))
@@ -8317,7 +8510,7 @@ function useVenueMarketMidpoints(options) {
8317
8510
  const enabled = (_a = options.enabled) != null ? _a : true;
8318
8511
  const requestedVenueMarketIds = normalizeVenueMarketIds2(options.venueMarketIds);
8319
8512
  const maxMidpointIdsPerRequest = (_b = options.maxMidpointIdsPerRequest) != null ? _b : configuredMaxMidpointIdsPerRequest;
8320
- const query = (0, import_react_query41.useQuery)({
8513
+ const query = (0, import_react_query43.useQuery)({
8321
8514
  queryKey: requestedVenueMarketIds.length ? ["venue-market-midpoints", requestedVenueMarketIds, maxMidpointIdsPerRequest] : ["venue-market-midpoints", "__disabled__"],
8322
8515
  queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
8323
8516
  if (requestedVenueMarketIds.length === 0) {
@@ -8333,7 +8526,7 @@ function useVenueMarketMidpoints(options) {
8333
8526
  gcTime: 5 * 6e4,
8334
8527
  refetchOnWindowFocus: false,
8335
8528
  retry: 1,
8336
- placeholderData: import_react_query41.keepPreviousData
8529
+ placeholderData: import_react_query43.keepPreviousData
8337
8530
  });
8338
8531
  const midpointRows = (_d = (_c = query.data) == null ? void 0 : _c.data) != null ? _d : [];
8339
8532
  const midpointsByVenueMarketId = mapMidpointsByVenueMarketId(midpointRows);
@@ -8584,12 +8777,12 @@ function useVisibleIds(options = {}) {
8584
8777
  }
8585
8778
 
8586
8779
  // src/use-app-config.ts
8587
- var import_react_query42 = require("@tanstack/react-query");
8780
+ var import_react_query44 = require("@tanstack/react-query");
8588
8781
  var FIVE_MINUTES = 5 * 60 * 1e3;
8589
8782
  var APP_CONFIG_QUERY_KEY = ["agg", "app-config"];
8590
8783
  function useAppConfig() {
8591
8784
  const client = useAggClient();
8592
- const query = (0, import_react_query42.useQuery)({
8785
+ const query = (0, import_react_query44.useQuery)({
8593
8786
  queryKey: APP_CONFIG_QUERY_KEY,
8594
8787
  queryFn: () => client.getAppConfig(),
8595
8788
  staleTime: FIVE_MINUTES
@@ -8601,8 +8794,8 @@ function useAppConfig() {
8601
8794
  });
8602
8795
  }
8603
8796
  function useCachedAppConfig() {
8604
- const queryClient = (0, import_react_query42.useQueryClient)();
8605
- const query = (0, import_react_query42.useQuery)({
8797
+ const queryClient = (0, import_react_query44.useQueryClient)();
8798
+ const query = (0, import_react_query44.useQuery)({
8606
8799
  queryKey: APP_CONFIG_QUERY_KEY,
8607
8800
  enabled: false,
8608
8801
  initialData: () => queryClient.getQueryData(APP_CONFIG_QUERY_KEY),
@@ -8698,6 +8891,7 @@ var toAppConfigResult = (query) => {
8698
8891
  useAggWebSocket,
8699
8892
  useAppConfig,
8700
8893
  useArbFeed,
8894
+ useBalanceRefillPolicies,
8701
8895
  useCachedAppConfig,
8702
8896
  useCancelManagedOrder,
8703
8897
  useCategories,
@@ -8715,6 +8909,7 @@ var toAppConfigResult = (query) => {
8715
8909
  useExternalId,
8716
8910
  useGeoBlock,
8717
8911
  useLabels,
8912
+ useLimitOrderVenueQuotes,
8718
8913
  useLinkAccount,
8719
8914
  useLiveBestPriceCandidates,
8720
8915
  useLiveBestPrices,