@agg-build/hooks 4.23.0 → 4.26.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.
@@ -1704,7 +1704,7 @@ var mergeAggUiSearchConfig = (config) => {
1704
1704
  };
1705
1705
  };
1706
1706
  var mergeAggUiConfig = (persisted, config) => {
1707
- 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, _ba, _ca;
1707
+ 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, _ba, _ca, _da, _ea;
1708
1708
  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;
1709
1709
  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;
1710
1710
  const formatters = createFormatters(locale);
@@ -1733,26 +1733,27 @@ var mergeAggUiConfig = (persisted, config) => {
1733
1733
  },
1734
1734
  market: {
1735
1735
  arbitrageThreshold: (_J = (_I = config == null ? void 0 : config.market) == null ? void 0 : _I.arbitrageThreshold) != null ? _J : defaultAggUiConfig.market.arbitrageThreshold,
1736
- maxMidpointIdsPerRequest: (_L = (_K = config == null ? void 0 : config.market) == null ? void 0 : _K.maxMidpointIdsPerRequest) != null ? _L : defaultAggUiConfig.market.maxMidpointIdsPerRequest
1736
+ maxMidpointIdsPerRequest: (_L = (_K = config == null ? void 0 : config.market) == null ? void 0 : _K.maxMidpointIdsPerRequest) != null ? _L : defaultAggUiConfig.market.maxMidpointIdsPerRequest,
1737
+ minVolume: (_N = (_M = config == null ? void 0 : config.market) == null ? void 0 : _M.minVolume) != null ? _N : defaultAggUiConfig.market.minVolume
1737
1738
  },
1738
1739
  chart: {
1739
- defaultChartTimeRange: (_N = (_M = config == null ? void 0 : config.chart) == null ? void 0 : _M.defaultChartTimeRange) != null ? _N : defaultAggUiConfig.chart.defaultChartTimeRange,
1740
- selectedChartTimeRange: (_R = (_Q = (_O = persisted.chart) == null ? void 0 : _O.selectedChartTimeRange) != null ? _Q : (_P = config == null ? void 0 : config.chart) == null ? void 0 : _P.defaultChartTimeRange) != null ? _R : defaultAggUiConfig.chart.defaultChartTimeRange,
1740
+ defaultChartTimeRange: (_P = (_O = config == null ? void 0 : config.chart) == null ? void 0 : _O.defaultChartTimeRange) != null ? _P : defaultAggUiConfig.chart.defaultChartTimeRange,
1741
+ selectedChartTimeRange: (_T = (_S = (_Q = persisted.chart) == null ? void 0 : _Q.selectedChartTimeRange) != null ? _S : (_R = config == null ? void 0 : config.chart) == null ? void 0 : _R.defaultChartTimeRange) != null ? _T : defaultAggUiConfig.chart.defaultChartTimeRange,
1741
1742
  setSelectedChartTimeRange: defaultAggUiConfig.chart.setSelectedChartTimeRange
1742
1743
  },
1743
1744
  formatting: {
1744
- formatNumber: (_T = (_S = config == null ? void 0 : config.formatting) == null ? void 0 : _S.formatNumber) != null ? _T : formatters.formatNumber,
1745
- formatPercent: (_V = (_U = config == null ? void 0 : config.formatting) == null ? void 0 : _U.formatPercent) != null ? _V : formatters.formatPercent,
1745
+ formatNumber: (_V = (_U = config == null ? void 0 : config.formatting) == null ? void 0 : _U.formatNumber) != null ? _V : formatters.formatNumber,
1746
+ formatPercent: (_X = (_W = config == null ? void 0 : config.formatting) == null ? void 0 : _W.formatPercent) != null ? _X : formatters.formatPercent,
1746
1747
  // ponytail: no default here — each cents surface keeps its own rendering
1747
1748
  // when unset, so adding this knob changes nothing for existing partners.
1748
- formatPrice: (_W = config == null ? void 0 : config.formatting) == null ? void 0 : _W.formatPrice,
1749
- formatCurrency: (_Y = (_X = config == null ? void 0 : config.formatting) == null ? void 0 : _X.formatCurrency) != null ? _Y : formatters.formatCurrency,
1750
- formatCompactCurrency: (__ = (_Z = config == null ? void 0 : config.formatting) == null ? void 0 : _Z.formatCompactCurrency) != null ? __ : formatters.formatCompactCurrency,
1751
- formatDate: (_aa = (_$ = config == null ? void 0 : config.formatting) == null ? void 0 : _$.formatDate) != null ? _aa : formatters.formatDate
1749
+ formatPrice: (_Y = config == null ? void 0 : config.formatting) == null ? void 0 : _Y.formatPrice,
1750
+ formatCurrency: (__ = (_Z = config == null ? void 0 : config.formatting) == null ? void 0 : _Z.formatCurrency) != null ? __ : formatters.formatCurrency,
1751
+ formatCompactCurrency: (_aa = (_$ = config == null ? void 0 : config.formatting) == null ? void 0 : _$.formatCompactCurrency) != null ? _aa : formatters.formatCompactCurrency,
1752
+ formatDate: (_ca = (_ba = config == null ? void 0 : config.formatting) == null ? void 0 : _ba.formatDate) != null ? _ca : formatters.formatDate
1752
1753
  },
1753
1754
  search: mergeAggUiSearchConfig(config == null ? void 0 : config.search),
1754
1755
  trading: {
1755
- executionMode: (_ca = (_ba = config == null ? void 0 : config.trading) == null ? void 0 : _ba.executionMode) != null ? _ca : defaultAggUiConfig.trading.executionMode
1756
+ executionMode: (_ea = (_da = config == null ? void 0 : config.trading) == null ? void 0 : _da.executionMode) != null ? _ea : defaultAggUiConfig.trading.executionMode
1756
1757
  },
1757
1758
  walletActions: config == null ? void 0 : config.walletActions,
1758
1759
  solanaRpcUrl: config == null ? void 0 : config.solanaRpcUrl
@@ -11,7 +11,7 @@ import {
11
11
  useOnWithdrawalLifecycle,
12
12
  useSyncBalances,
13
13
  useWithdrawManaged
14
- } from "./chunk-EXLVICJM.mjs";
14
+ } from "./chunk-JFJNW2PD.mjs";
15
15
 
16
16
  // src/withdraw/use-withdraw-flow.ts
17
17
  import { useCallback, useEffect, useMemo, useState } from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  __async,
3
3
  useAggClient
4
- } from "./chunk-EXLVICJM.mjs";
4
+ } from "./chunk-JFJNW2PD.mjs";
5
5
 
6
6
  // src/use-ramp-quotes.ts
7
7
  import { useMutation } from "@tanstack/react-query";
package/dist/deposit.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useRampQuotes,
3
3
  useRampSession
4
- } from "./chunk-5YCKWYG7.mjs";
4
+ } from "./chunk-OZQ3K47U.mjs";
5
5
  import {
6
6
  __async,
7
7
  useAggAuthState,
@@ -11,7 +11,7 @@ import {
11
11
  useDepositAddresses,
12
12
  useOptionalAggClient,
13
13
  useSyncBalances
14
- } from "./chunk-EXLVICJM.mjs";
14
+ } from "./chunk-JFJNW2PD.mjs";
15
15
 
16
16
  // src/deposit/normalize-wallet-error.ts
17
17
  function normalizeWalletError(error, supportedChains) {
package/dist/index.d.mts CHANGED
@@ -2,7 +2,7 @@ import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
  export { QueryClient, QueryClientProvider, useQueryClient } from '@tanstack/react-query';
4
4
  import * as _agg_build_sdk from '@agg-build/sdk';
5
- import { CandleBuilder, AggAuthStartBody, AggAuthStartResult, AggClientSessionInput, AggClient, RampQuote, RampQuoteRequest, RampWidgetSession, RampSessionRequest, ExecuteManagedResponse, ExecuteManagedParams, PlaceLimitOrderResponse, PlaceLimitOrderParams, CancelManagedExecutionResponse, GetPositionsParams, ExecutionStatusStep, WsOrderSubmitted, WsBalanceUpdate, ExecutionStatusOrder, CreateBalanceRefillPolicyParams, UpdateBalanceRefillPolicyParams, RedeemResponse, RedeemRequest, WsRedeemEvent, AggWebSocket, WsOrderEvent, WsWithdrawalLifecycleEvent, ChartBarsMeta, WsCandleInterval, WsTrade, AggregatedOrderbookResponse, Venue as Venue$1, VenueKeyStatus, AggLinkAccountBody, AggLinkAccountResult, AggLinkAccountWalletConfirmBody, AggLinkAccountConfirmResult, Category, UserActivityQuery, UserActivityItem, PaginatedResponse, LeaderboardMetric, LeaderboardRow, CandleInterval, OrderbookState, OrderbookQuoteResponse, OrderListQuery, TradeExecutorOrder, SmartRouteSide, ExecutionMode, SmartRouteResponse, RecurringCryptoDuration, RecurringCryptoVenueMarket, RecurringCryptoWindowMarket, RecurrenceFilter, SportsLiveResponse, SportsLiveState, MidpointRow, BatchMidpointsResponse, AppClientConfigResponse, AppTradingMode, VenueMarket as VenueMarket$1, HostedVenueWithdrawalRequest } from '@agg-build/sdk';
5
+ import { CandleBuilder, AggAuthStartBody, AggAuthStartResult, AggClientSessionInput, AggClient, RampQuote, RampQuoteRequest, RampWidgetSession, RampSessionRequest, ExecuteManagedResponse, ExecuteManagedParams, PlaceLimitOrderResponse, PlaceLimitOrderParams, CancelManagedExecutionResponse, GetPositionsParams, ExecutionStatusStep, WsOrderSubmitted, WsBalanceUpdate, ExecutionStatusOrder, CreateBalanceRefillPolicyParams, UpdateBalanceRefillPolicyParams, RedeemResponse, RedeemRequest, WsRedeemEvent, AggWebSocket, WsOrderEvent, WsWithdrawalLifecycleEvent, ChartBarsMeta, WsCandleInterval, WsTrade, AggregatedOrderbookResponse, Venue as Venue$1, VenueKeyStatus, AggLinkAccountBody, AggLinkAccountResult, AggLinkAccountWalletConfirmBody, AggLinkAccountConfirmResult, Category, UserActivityQuery, UserActivityItem, PaginatedResponse, LeaderboardMetric, LeaderboardRow, CandleInterval, OrderbookState, OrderbookQuoteResponse, OrderListQuery, TradeExecutorOrder, SmartRouteSide, ExecutionMode, SmartRouteResponse, BatchOrderbooksResponse, RecurringCryptoDuration, RecurringCryptoVenueMarket, RecurringCryptoWindowMarket, RecurrenceFilter, SportsLiveResponse, SportsLiveState, MidpointRow, BatchMidpointsResponse, AppClientConfigResponse, AppTradingMode, VenueMarket as VenueMarket$1, HostedVenueWithdrawalRequest } from '@agg-build/sdk';
6
6
  export { SportsGameStatus, SportsLiveParticipant, SportsLiveResponse, SportsLiveState, TurnstileChallengeError } from '@agg-build/sdk';
7
7
  import React, { ReactNode } from 'react';
8
8
  export { UseManagedBalancesOptions, UseWithdrawEstimateParams, UseWithdrawFlowOptions, UseWithdrawFlowResult, UseWithdrawManagedOptions, UseWithdrawPreviewParams, UseWithdrawalLifecycleResult, WithdrawFeeEstimate, WithdrawalLifecycleState, useManagedBalances, useWithdrawEstimate, useWithdrawFlow, useWithdrawManaged, useWithdrawPreview, useWithdrawalLifecycle } from './withdraw.mjs';
@@ -219,6 +219,12 @@ type GetPositionsQuery = {
219
219
  cursor?: string | undefined;
220
220
  limit?: number | undefined;
221
221
  status?: "active" | "closed" | undefined;
222
+ venueEventId?: string | undefined;
223
+ venueMarketId?: string | undefined;
224
+ /** Only positions on events in any of these categories (a league is a category). At most 20. */
225
+ categoryIds?: string[] | undefined;
226
+ /** `realizedPnl`: highest realized P&L first. Live positions only. */
227
+ sort?: "realizedPnl" | undefined;
222
228
  };
223
229
  type OrderListItem = {
224
230
  status: string;
@@ -370,6 +376,8 @@ type PositionGroup = {
370
376
  currentPrice: number;
371
377
  totalValue: number;
372
378
  unrealizedPnlPercent: number;
379
+ /** Realized P&L across the legs (sells + settlement), before fees. USD. */
380
+ realizedPnl: number;
373
381
  priceSource: PriceSource;
374
382
  bookQuality: BookQuality;
375
383
  }[];
@@ -2067,6 +2075,11 @@ interface AggUiMarketConfig {
2067
2075
  * Lower this when proxy/CDN URL limits are stricter than AGG's backend cap.
2068
2076
  */
2069
2077
  maxMidpointIdsPerRequest: number;
2078
+ /**
2079
+ * Lifetime-volume floor (USD) applied by list/detail components to
2080
+ * /venue-events and /venue-markets. Unset = no filter (default).
2081
+ */
2082
+ minVolume?: number;
2070
2083
  }
2071
2084
  type AggUiMarketConfigInput = Partial<AggUiMarketConfig>;
2072
2085
  interface AggUiChartConfig {
@@ -5696,6 +5709,8 @@ declare function useSmartRoute(options: UseSmartRouteOptions): UseSmartRouteResu
5696
5709
  interface LimitOrderVenueQuoteRequest {
5697
5710
  venue: Venue$1;
5698
5711
  venueMarketOutcomeId: string;
5712
+ /** The venue's own market; its tick and size rules are fetched with the selected market's. */
5713
+ venueMarketId?: string;
5699
5714
  }
5700
5715
  interface UseLimitOrderVenueQuotesOptions {
5701
5716
  requests: LimitOrderVenueQuoteRequest[];
@@ -5714,6 +5729,10 @@ interface LimitOrderVenueQuoteResult {
5714
5729
  request: LimitOrderVenueQuoteRequest;
5715
5730
  data: SmartRouteResponse | null;
5716
5731
  tickSize?: number | null;
5732
+ /** Limit size step, raw 6-dec shares, from orderbook metadata. Null = 1-raw step. */
5733
+ sizeStepRaw?: string | null;
5734
+ /** Limit size minimum, raw 6-dec shares, from orderbook metadata. Null = none known. */
5735
+ minSizeRaw?: string | null;
5717
5736
  isLoading: boolean;
5718
5737
  isFetching: boolean;
5719
5738
  error: Error | null;
@@ -5721,11 +5740,19 @@ interface LimitOrderVenueQuoteResult {
5721
5740
  }
5722
5741
  interface UseLimitOrderVenueQuotesResult {
5723
5742
  quotes: LimitOrderVenueQuoteResult[];
5743
+ /** The market's orderbook metadata (ticks, size rules) has not loaded yet. */
5744
+ isMetadataPending: boolean;
5724
5745
  isLoading: boolean;
5725
5746
  isFetching: boolean;
5726
5747
  error: Error | null;
5727
5748
  refetch: () => Promise<unknown>;
5728
5749
  }
5750
+ interface LimitOrderSizeRules {
5751
+ sizeStepRaw?: string;
5752
+ minSizeRaw?: string;
5753
+ }
5754
+ /** Per-venue limit size rules from the same batch orderbook metadata as ticks. */
5755
+ declare const resolveLimitOrderSizeRulesByVenue: (response: BatchOrderbooksResponse | null | undefined) => Map<Venue$1, LimitOrderSizeRules>;
5729
5756
  /**
5730
5757
  * Fetches informational single-venue quotes for limit-order routing cards.
5731
5758
  * Quote IDs are intentionally not consumed by the limit-order execution flow.
@@ -6011,6 +6038,11 @@ interface UseVenueEventOptions {
6011
6038
  * on `useVenueMarkets` so the count matches the market list you render.
6012
6039
  */
6013
6040
  cluster?: boolean;
6041
+ /**
6042
+ * Lifetime-volume floor. Scopes `marketCount` to the markets `useVenueMarkets`
6043
+ * returns with the same `minVolume`. Unset = no filter.
6044
+ */
6045
+ minVolume?: number;
6014
6046
  }
6015
6047
  /**
6016
6048
  * Fetch a single venue event by ID via the API.
@@ -6188,6 +6220,8 @@ declare function useVenueEvent(options: UseVenueEventOptions): {
6188
6220
 
6189
6221
  type UseEnrichedVenueEventOptions = UseVenueEventOptions & {
6190
6222
  progressive?: boolean;
6223
+ /** Lifetime-volume floor for the open-markets list (the all-status fallback ignores it). */
6224
+ minVolume?: number;
6191
6225
  };
6192
6226
  /**
6193
6227
  * Fetches a venue event and enriches its venueMarkets with full data
@@ -6622,6 +6656,8 @@ interface UseVenueEventsOptions {
6622
6656
  enabled?: boolean;
6623
6657
  /** Page size when using cursor pagination. Default 20. */
6624
6658
  limit?: number;
6659
+ /** Lifetime-volume floor (USD). Omit or 0 = no filter. */
6660
+ minVolume?: number;
6625
6661
  /** If provided, filter by minimum yes price. */
6626
6662
  minYesPrice?: number;
6627
6663
  /** If provided, filter by maximum yes price. */
@@ -7093,6 +7129,8 @@ interface UseVenueMarketsOptions {
7093
7129
  /** Sort surface. "list" makes axis/dates events sort by volume (matches the
7094
7130
  * tile top-3); omit or "detail" on the detail page to keep structured order. */
7095
7131
  context?: "list" | "detail";
7132
+ /** Lifetime-volume floor (USD). Omit or 0 = no filter. */
7133
+ minVolume?: number;
7096
7134
  }
7097
7135
  /**
7098
7136
  * Fetch venue markets with cursor-based pagination.
@@ -8254,4 +8292,4 @@ declare function useHostedVenueTransfers(accountId: string, environment: Environ
8254
8292
  clear: () => void;
8255
8293
  };
8256
8294
 
8257
- export { AUTH_CHOOSER_OPEN_EVENT, type AggAuthContextValue, type AggAuthSignInOptions, type AggBalanceContextValue, AggBalanceProvider, AggProvider, type AggProviderProps, AggProvider as AggSdkProvider, type AggProviderProps as AggSdkProviderProps, type AggUiConfig, type AggUiConfigInput, type AggUiLabels, type AggUiLabelsInput, AggUiProvider, type AggUiTradingExecutionMode, CHART_TIME_RANGES, CONFIRMED_MATCH_STATUSES, type ChartTimeRange, type ClosedPositionTotals, type ComputePriceGapsOptions, DEFAULT_AGG_ROOT_CLASS_NAME, type DagStepProgress, type EventListStateContextValue, EventListStateProvider, type EventListStateSnapshot, type EventTradingContextValue, type EventTradingState, type ExecutionProgressPhase, type ExecutionRawStepProgress, type ExecutionStepProgress, type ExecutionTerminalOrderEvent, type GeoBlockState, type GetOrdersQuery, type GetPositionsQuery, type InvalidateUserActivityOptions, type InvalidateUserMoneyStateOptions, LEADERBOARD_PERIODS, type LeaderboardPeriod, type LimitOrderVenueQuoteRequest, type LimitOrderVenueQuoteResult, type LiveBestPriceCandidate, type LiveBestPriceCandidates, type LiveBestPrices, type LiveCandle, MAX_ORDER_VENUE_MARKET_IDS_PER_REQUEST, MAX_PRICE_GAP_PCT, MIN_PRICE_GAP_PCT, type MarketChartAvailability, type MarketChartCandle, type MarketChartData, type MarketChartVenueData, type MarketOrderbookData, type MarketOrderbookIntegrity, MarketStatus, type MarketTradingState, MatchStatus, MatchType, type OrderEligibility, type OrderEligibilityReason, type OrderListItem, type OrderbookResult, type PositionGroup, type PriceGapValue, type RecurringCryptoIdentity, type RecurringCryptoMarketInstance, type RecurringCryptoTimeline, type RedeemEvent, type RedeemLegLifecycle, type RedeemLifecycleState, RedeemRejectedError, type RollingChartWindow, SPORTS_LIVE_POLL_INTERVAL_MS, SPORTS_SCHEDULED_POLL_INTERVAL_MS, type ScaledCandlePoint, type SdkUiConfig, type SdkUiConfigInput, type SdkUiProviderProps, type SettlementDiff, type SettlementDifference, type SmartRouteLoadingReason, type ThemeMode, TradeSide, type TradingAction, type TradingState, type TradingStateBase, type TradingStateKind, type UseAggAuthOptions, type UseAggAuthReturn, type UseAppConfigResult, type UseArbFeedResult, type UseCancelManagedOrderOptions, type UseCategoriesOptions, type UseCategoryChildrenOptions, type UseEnrichedVenueEventOptions, type UseExecuteManagedOptions, type UseExecutionOrdersForMarketsOptions, type UseExecutionOrdersForMarketsResult, type UseExecutionOrdersOptions, type UseExecutionPositionsOptions, type UseExecutionProgressOptions, type UseExecutionProgressResult, type UseExternalIdOptions, type UseExternalIdReturn, type UseLeaderboardOptions, type UseLimitOrderVenueQuotesOptions, type UseLimitOrderVenueQuotesResult, type UseLinkAccountReturn, type UseLiveCandleOverlayOptions, type UseLiveCandleOverlayResult, type UseLiveCandlesOptions, type UseLiveCandlesResult, type UseLiveMarketResult, type UseMarketArbResult, type UseMarketChartOptions, type UseMarketChartResult, type UseMarketChartsResult, type UseMarketOrderbookOptions, type UseMarketOrderbookResult, type UseMarketOrderbookVenueOutcome, type UseMarketSearchOptions, type UseMidpointsOptions, type UseMidpointsResult, type UseOrderBookOptions, type UseOrderbookQuoteOptions, type UseOrderbookQuoteResult, type UseOrdersOptions, type UsePaperOnboardingResult, type UsePlaceLimitOrderOptions, type UsePositionsOptions, type UseRecurringCryptoMarketsOptions, type UseRedeemLifecycleInput, type UseResolvedExecutionModeResult, type UseRollingChartWindowOptions, type UseSearchOptions, type UseSettlementDetailsDataOptions, type UseSmartRouteOptions, type UseSmartRouteResult, type UseUserActivityOptions, type UseUserHoldingsOptions, type UseVenueEventOptions, type UseVenueEventsOptions, type UseVenueMarketMidpointsOptions, type UseVenueMarketsOptions, type UseVenueSellQuotesOptions, type UseVenueSellQuotesResult, type UseViewportMidpointsOptions, type UseVisibleIdsOptions, type UseVisibleIdsResult, type UserActivityInvalidationStrategy, Venue, type VenueAvailabilityState, type VenueEvent, type VenueEventWithMarkets, type VenueMarket, type VenueMarketOutcome, type VenueSellQuoteRequest, type VenueSellQuoteResult, type WalletActionSendTokenParams, type WalletActions, appConfigQueryKey, buildLiveBestPriceCandidates, computeClosedPositionTotals, computePriceGaps, defaultAggUiConfig, defaultAggUiConfig as defaultSdkUiConfig, executionKeys, extractOutcomeBestCandidate, fetchRecurringCryptoMarkets, findLivePriceById, getBuilder, getOrCreateBuilder, getVenueAvailabilityState, getVisibleVenueIdsByConfig, getVisibleVenuesByConfig, getWalletAddressFromUserProfile, hostedVenueAccountQueryKeys, invalidateBalanceQueries, invalidatePositionQueries, invalidateUserActivityQueries, invalidateUserClaimState, invalidateUserMoneyState, isVenueDisabledByConfig, leaderboardQueryKeys, leaderboardRange, mergeBestPricesPreferringLive, mergeRecurringCryptoWindows, normalizeVenueId, optimizedImageUrl, parseEmail, parseEmailStrict, rangeToSeconds, recurringCryptoTransitionPollInterval, requestAggAuthChooserOpen, resolveAggUiLabels, resolveDefaultMarket as resolveDefaultTradingMarket, resolveEventTradingState, resolveMarketTradingState, resolveMarketWinningOutcome, resolveOrderEligibility, resolveRecurringCryptoIdentity, resolveRecurringCryptoTimeline, resolveRollingWindow, resolveTradingStateKind, retinaImageUrl, sharedKycQueryKeys, sortVenues, sportsLiveQueryKey, sportsLiveRefetchInterval, timeRangeToInterval, tradingReducer, useAggAuth, useAggAuthContext, useAggAuthState, useAggBalance, useAggBalanceContext, useAggBalanceState, useAggClient, useAggLabels, useAggUiConfig, useAggWebSocket, useAppConfig, useArbFeed, useBalanceRefillPolicies, useCachedAppConfig, useCancelManagedOrder, useCategories, useCategoryChildren, useDebouncedValue, useEnrichedVenueEvent, useEventListState, useEventOrderbookData, useEventTradingContext, useExecuteManaged, useExecutionOrders, useExecutionOrdersForMarkets, useExecutionPositions, useExecutionProgress, useExternalId, useGeoBlock, useHostedVenueAccount, useHostedVenueActivity, useHostedVenueTransfers, useLabels, useLeaderboard, useLimitOrderVenueQuotes, useLinkAccount, useLiveBestPriceCandidates, useLiveBestPrices, useLiveCandleOverlay, useLiveCandles, useLiveMarket, useLiveMarketStores, useLiveOutcomePrices, useLiveTrades, useMarketArb, useMarketChart, useMarketCharts, useMarketOrderbook, useMarketSearch, useMidpoints, useOnBalanceUpdate, useOnOrderEvent, useOnOrderSubmitted, useOnRedeemEvent, useOnWithdrawalLifecycle, useOptionalAggClient, useOrderBook, useOrderbookQuote, useOrders, usePaperOnboarding, usePlaceLimitOrder, usePositions, useRampQuotes, useRampSession, useRecurringCryptoMarkets, useRedeem, useRedeemEligibleCount, useRedeemLifecycle, useRedeemLifecycles, useResolvedExecutionMode, useRollingChartWindow, useSdkLabels, useSdkUiConfig, useSearch, useSettlementDetailsData, useSharedKyc, useSmartRoute, useSportsLive, useUserActivity, useUserHoldings, useVenueEvent, useVenueEvents, useVenueKeyStatus, useVenueMarketMidpoints, useVenueMarkets, useVenueSellQuotes, useViewportMidpoints, useVisibleIds, userActivityQueryKeys, venueKeyQueryKeys };
8295
+ export { AUTH_CHOOSER_OPEN_EVENT, type AggAuthContextValue, type AggAuthSignInOptions, type AggBalanceContextValue, AggBalanceProvider, AggProvider, type AggProviderProps, AggProvider as AggSdkProvider, type AggProviderProps as AggSdkProviderProps, type AggUiConfig, type AggUiConfigInput, type AggUiLabels, type AggUiLabelsInput, AggUiProvider, type AggUiTradingExecutionMode, CHART_TIME_RANGES, CONFIRMED_MATCH_STATUSES, type ChartTimeRange, type ClosedPositionTotals, type ComputePriceGapsOptions, DEFAULT_AGG_ROOT_CLASS_NAME, type DagStepProgress, type EventListStateContextValue, EventListStateProvider, type EventListStateSnapshot, type EventTradingContextValue, type EventTradingState, type ExecutionProgressPhase, type ExecutionRawStepProgress, type ExecutionStepProgress, type ExecutionTerminalOrderEvent, type GeoBlockState, type GetOrdersQuery, type GetPositionsQuery, type InvalidateUserActivityOptions, type InvalidateUserMoneyStateOptions, LEADERBOARD_PERIODS, type LeaderboardPeriod, type LimitOrderSizeRules, type LimitOrderVenueQuoteRequest, type LimitOrderVenueQuoteResult, type LiveBestPriceCandidate, type LiveBestPriceCandidates, type LiveBestPrices, type LiveCandle, MAX_ORDER_VENUE_MARKET_IDS_PER_REQUEST, MAX_PRICE_GAP_PCT, MIN_PRICE_GAP_PCT, type MarketChartAvailability, type MarketChartCandle, type MarketChartData, type MarketChartVenueData, type MarketOrderbookData, type MarketOrderbookIntegrity, MarketStatus, type MarketTradingState, MatchStatus, MatchType, type OrderEligibility, type OrderEligibilityReason, type OrderListItem, type OrderbookResult, type PositionGroup, type PriceGapValue, type RecurringCryptoIdentity, type RecurringCryptoMarketInstance, type RecurringCryptoTimeline, type RedeemEvent, type RedeemLegLifecycle, type RedeemLifecycleState, RedeemRejectedError, type RollingChartWindow, SPORTS_LIVE_POLL_INTERVAL_MS, SPORTS_SCHEDULED_POLL_INTERVAL_MS, type ScaledCandlePoint, type SdkUiConfig, type SdkUiConfigInput, type SdkUiProviderProps, type SettlementDiff, type SettlementDifference, type SmartRouteLoadingReason, type ThemeMode, TradeSide, type TradingAction, type TradingState, type TradingStateBase, type TradingStateKind, type UseAggAuthOptions, type UseAggAuthReturn, type UseAppConfigResult, type UseArbFeedResult, type UseCancelManagedOrderOptions, type UseCategoriesOptions, type UseCategoryChildrenOptions, type UseEnrichedVenueEventOptions, type UseExecuteManagedOptions, type UseExecutionOrdersForMarketsOptions, type UseExecutionOrdersForMarketsResult, type UseExecutionOrdersOptions, type UseExecutionPositionsOptions, type UseExecutionProgressOptions, type UseExecutionProgressResult, type UseExternalIdOptions, type UseExternalIdReturn, type UseLeaderboardOptions, type UseLimitOrderVenueQuotesOptions, type UseLimitOrderVenueQuotesResult, type UseLinkAccountReturn, type UseLiveCandleOverlayOptions, type UseLiveCandleOverlayResult, type UseLiveCandlesOptions, type UseLiveCandlesResult, type UseLiveMarketResult, type UseMarketArbResult, type UseMarketChartOptions, type UseMarketChartResult, type UseMarketChartsResult, type UseMarketOrderbookOptions, type UseMarketOrderbookResult, type UseMarketOrderbookVenueOutcome, type UseMarketSearchOptions, type UseMidpointsOptions, type UseMidpointsResult, type UseOrderBookOptions, type UseOrderbookQuoteOptions, type UseOrderbookQuoteResult, type UseOrdersOptions, type UsePaperOnboardingResult, type UsePlaceLimitOrderOptions, type UsePositionsOptions, type UseRecurringCryptoMarketsOptions, type UseRedeemLifecycleInput, type UseResolvedExecutionModeResult, type UseRollingChartWindowOptions, type UseSearchOptions, type UseSettlementDetailsDataOptions, type UseSmartRouteOptions, type UseSmartRouteResult, type UseUserActivityOptions, type UseUserHoldingsOptions, type UseVenueEventOptions, type UseVenueEventsOptions, type UseVenueMarketMidpointsOptions, type UseVenueMarketsOptions, type UseVenueSellQuotesOptions, type UseVenueSellQuotesResult, type UseViewportMidpointsOptions, type UseVisibleIdsOptions, type UseVisibleIdsResult, type UserActivityInvalidationStrategy, Venue, type VenueAvailabilityState, type VenueEvent, type VenueEventWithMarkets, type VenueMarket, type VenueMarketOutcome, type VenueSellQuoteRequest, type VenueSellQuoteResult, type WalletActionSendTokenParams, type WalletActions, appConfigQueryKey, buildLiveBestPriceCandidates, computeClosedPositionTotals, computePriceGaps, defaultAggUiConfig, defaultAggUiConfig as defaultSdkUiConfig, executionKeys, extractOutcomeBestCandidate, fetchRecurringCryptoMarkets, findLivePriceById, getBuilder, getOrCreateBuilder, getVenueAvailabilityState, getVisibleVenueIdsByConfig, getVisibleVenuesByConfig, getWalletAddressFromUserProfile, hostedVenueAccountQueryKeys, invalidateBalanceQueries, invalidatePositionQueries, invalidateUserActivityQueries, invalidateUserClaimState, invalidateUserMoneyState, isVenueDisabledByConfig, leaderboardQueryKeys, leaderboardRange, mergeBestPricesPreferringLive, mergeRecurringCryptoWindows, normalizeVenueId, optimizedImageUrl, parseEmail, parseEmailStrict, rangeToSeconds, recurringCryptoTransitionPollInterval, requestAggAuthChooserOpen, resolveAggUiLabels, resolveDefaultMarket as resolveDefaultTradingMarket, resolveEventTradingState, resolveLimitOrderSizeRulesByVenue, resolveMarketTradingState, resolveMarketWinningOutcome, resolveOrderEligibility, resolveRecurringCryptoIdentity, resolveRecurringCryptoTimeline, resolveRollingWindow, resolveTradingStateKind, retinaImageUrl, sharedKycQueryKeys, sortVenues, sportsLiveQueryKey, sportsLiveRefetchInterval, timeRangeToInterval, tradingReducer, useAggAuth, useAggAuthContext, useAggAuthState, useAggBalance, useAggBalanceContext, useAggBalanceState, useAggClient, useAggLabels, useAggUiConfig, useAggWebSocket, useAppConfig, useArbFeed, useBalanceRefillPolicies, useCachedAppConfig, useCancelManagedOrder, useCategories, useCategoryChildren, useDebouncedValue, useEnrichedVenueEvent, useEventListState, useEventOrderbookData, useEventTradingContext, useExecuteManaged, useExecutionOrders, useExecutionOrdersForMarkets, useExecutionPositions, useExecutionProgress, useExternalId, useGeoBlock, useHostedVenueAccount, useHostedVenueActivity, useHostedVenueTransfers, useLabels, useLeaderboard, useLimitOrderVenueQuotes, useLinkAccount, useLiveBestPriceCandidates, useLiveBestPrices, useLiveCandleOverlay, useLiveCandles, useLiveMarket, useLiveMarketStores, useLiveOutcomePrices, useLiveTrades, useMarketArb, useMarketChart, useMarketCharts, useMarketOrderbook, useMarketSearch, useMidpoints, useOnBalanceUpdate, useOnOrderEvent, useOnOrderSubmitted, useOnRedeemEvent, useOnWithdrawalLifecycle, useOptionalAggClient, useOrderBook, useOrderbookQuote, useOrders, usePaperOnboarding, usePlaceLimitOrder, usePositions, useRampQuotes, useRampSession, useRecurringCryptoMarkets, useRedeem, useRedeemEligibleCount, useRedeemLifecycle, useRedeemLifecycles, useResolvedExecutionMode, useRollingChartWindow, useSdkLabels, useSdkUiConfig, useSearch, useSettlementDetailsData, useSharedKyc, useSmartRoute, useSportsLive, useUserActivity, useUserHoldings, useVenueEvent, useVenueEvents, useVenueKeyStatus, useVenueMarketMidpoints, useVenueMarkets, useVenueSellQuotes, useViewportMidpoints, useVisibleIds, userActivityQueryKeys, venueKeyQueryKeys };
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
  export { QueryClient, QueryClientProvider, useQueryClient } from '@tanstack/react-query';
4
4
  import * as _agg_build_sdk from '@agg-build/sdk';
5
- import { CandleBuilder, AggAuthStartBody, AggAuthStartResult, AggClientSessionInput, AggClient, RampQuote, RampQuoteRequest, RampWidgetSession, RampSessionRequest, ExecuteManagedResponse, ExecuteManagedParams, PlaceLimitOrderResponse, PlaceLimitOrderParams, CancelManagedExecutionResponse, GetPositionsParams, ExecutionStatusStep, WsOrderSubmitted, WsBalanceUpdate, ExecutionStatusOrder, CreateBalanceRefillPolicyParams, UpdateBalanceRefillPolicyParams, RedeemResponse, RedeemRequest, WsRedeemEvent, AggWebSocket, WsOrderEvent, WsWithdrawalLifecycleEvent, ChartBarsMeta, WsCandleInterval, WsTrade, AggregatedOrderbookResponse, Venue as Venue$1, VenueKeyStatus, AggLinkAccountBody, AggLinkAccountResult, AggLinkAccountWalletConfirmBody, AggLinkAccountConfirmResult, Category, UserActivityQuery, UserActivityItem, PaginatedResponse, LeaderboardMetric, LeaderboardRow, CandleInterval, OrderbookState, OrderbookQuoteResponse, OrderListQuery, TradeExecutorOrder, SmartRouteSide, ExecutionMode, SmartRouteResponse, RecurringCryptoDuration, RecurringCryptoVenueMarket, RecurringCryptoWindowMarket, RecurrenceFilter, SportsLiveResponse, SportsLiveState, MidpointRow, BatchMidpointsResponse, AppClientConfigResponse, AppTradingMode, VenueMarket as VenueMarket$1, HostedVenueWithdrawalRequest } from '@agg-build/sdk';
5
+ import { CandleBuilder, AggAuthStartBody, AggAuthStartResult, AggClientSessionInput, AggClient, RampQuote, RampQuoteRequest, RampWidgetSession, RampSessionRequest, ExecuteManagedResponse, ExecuteManagedParams, PlaceLimitOrderResponse, PlaceLimitOrderParams, CancelManagedExecutionResponse, GetPositionsParams, ExecutionStatusStep, WsOrderSubmitted, WsBalanceUpdate, ExecutionStatusOrder, CreateBalanceRefillPolicyParams, UpdateBalanceRefillPolicyParams, RedeemResponse, RedeemRequest, WsRedeemEvent, AggWebSocket, WsOrderEvent, WsWithdrawalLifecycleEvent, ChartBarsMeta, WsCandleInterval, WsTrade, AggregatedOrderbookResponse, Venue as Venue$1, VenueKeyStatus, AggLinkAccountBody, AggLinkAccountResult, AggLinkAccountWalletConfirmBody, AggLinkAccountConfirmResult, Category, UserActivityQuery, UserActivityItem, PaginatedResponse, LeaderboardMetric, LeaderboardRow, CandleInterval, OrderbookState, OrderbookQuoteResponse, OrderListQuery, TradeExecutorOrder, SmartRouteSide, ExecutionMode, SmartRouteResponse, BatchOrderbooksResponse, RecurringCryptoDuration, RecurringCryptoVenueMarket, RecurringCryptoWindowMarket, RecurrenceFilter, SportsLiveResponse, SportsLiveState, MidpointRow, BatchMidpointsResponse, AppClientConfigResponse, AppTradingMode, VenueMarket as VenueMarket$1, HostedVenueWithdrawalRequest } from '@agg-build/sdk';
6
6
  export { SportsGameStatus, SportsLiveParticipant, SportsLiveResponse, SportsLiveState, TurnstileChallengeError } from '@agg-build/sdk';
7
7
  import React, { ReactNode } from 'react';
8
8
  export { UseManagedBalancesOptions, UseWithdrawEstimateParams, UseWithdrawFlowOptions, UseWithdrawFlowResult, UseWithdrawManagedOptions, UseWithdrawPreviewParams, UseWithdrawalLifecycleResult, WithdrawFeeEstimate, WithdrawalLifecycleState, useManagedBalances, useWithdrawEstimate, useWithdrawFlow, useWithdrawManaged, useWithdrawPreview, useWithdrawalLifecycle } from './withdraw.js';
@@ -219,6 +219,12 @@ type GetPositionsQuery = {
219
219
  cursor?: string | undefined;
220
220
  limit?: number | undefined;
221
221
  status?: "active" | "closed" | undefined;
222
+ venueEventId?: string | undefined;
223
+ venueMarketId?: string | undefined;
224
+ /** Only positions on events in any of these categories (a league is a category). At most 20. */
225
+ categoryIds?: string[] | undefined;
226
+ /** `realizedPnl`: highest realized P&L first. Live positions only. */
227
+ sort?: "realizedPnl" | undefined;
222
228
  };
223
229
  type OrderListItem = {
224
230
  status: string;
@@ -370,6 +376,8 @@ type PositionGroup = {
370
376
  currentPrice: number;
371
377
  totalValue: number;
372
378
  unrealizedPnlPercent: number;
379
+ /** Realized P&L across the legs (sells + settlement), before fees. USD. */
380
+ realizedPnl: number;
373
381
  priceSource: PriceSource;
374
382
  bookQuality: BookQuality;
375
383
  }[];
@@ -2067,6 +2075,11 @@ interface AggUiMarketConfig {
2067
2075
  * Lower this when proxy/CDN URL limits are stricter than AGG's backend cap.
2068
2076
  */
2069
2077
  maxMidpointIdsPerRequest: number;
2078
+ /**
2079
+ * Lifetime-volume floor (USD) applied by list/detail components to
2080
+ * /venue-events and /venue-markets. Unset = no filter (default).
2081
+ */
2082
+ minVolume?: number;
2070
2083
  }
2071
2084
  type AggUiMarketConfigInput = Partial<AggUiMarketConfig>;
2072
2085
  interface AggUiChartConfig {
@@ -5696,6 +5709,8 @@ declare function useSmartRoute(options: UseSmartRouteOptions): UseSmartRouteResu
5696
5709
  interface LimitOrderVenueQuoteRequest {
5697
5710
  venue: Venue$1;
5698
5711
  venueMarketOutcomeId: string;
5712
+ /** The venue's own market; its tick and size rules are fetched with the selected market's. */
5713
+ venueMarketId?: string;
5699
5714
  }
5700
5715
  interface UseLimitOrderVenueQuotesOptions {
5701
5716
  requests: LimitOrderVenueQuoteRequest[];
@@ -5714,6 +5729,10 @@ interface LimitOrderVenueQuoteResult {
5714
5729
  request: LimitOrderVenueQuoteRequest;
5715
5730
  data: SmartRouteResponse | null;
5716
5731
  tickSize?: number | null;
5732
+ /** Limit size step, raw 6-dec shares, from orderbook metadata. Null = 1-raw step. */
5733
+ sizeStepRaw?: string | null;
5734
+ /** Limit size minimum, raw 6-dec shares, from orderbook metadata. Null = none known. */
5735
+ minSizeRaw?: string | null;
5717
5736
  isLoading: boolean;
5718
5737
  isFetching: boolean;
5719
5738
  error: Error | null;
@@ -5721,11 +5740,19 @@ interface LimitOrderVenueQuoteResult {
5721
5740
  }
5722
5741
  interface UseLimitOrderVenueQuotesResult {
5723
5742
  quotes: LimitOrderVenueQuoteResult[];
5743
+ /** The market's orderbook metadata (ticks, size rules) has not loaded yet. */
5744
+ isMetadataPending: boolean;
5724
5745
  isLoading: boolean;
5725
5746
  isFetching: boolean;
5726
5747
  error: Error | null;
5727
5748
  refetch: () => Promise<unknown>;
5728
5749
  }
5750
+ interface LimitOrderSizeRules {
5751
+ sizeStepRaw?: string;
5752
+ minSizeRaw?: string;
5753
+ }
5754
+ /** Per-venue limit size rules from the same batch orderbook metadata as ticks. */
5755
+ declare const resolveLimitOrderSizeRulesByVenue: (response: BatchOrderbooksResponse | null | undefined) => Map<Venue$1, LimitOrderSizeRules>;
5729
5756
  /**
5730
5757
  * Fetches informational single-venue quotes for limit-order routing cards.
5731
5758
  * Quote IDs are intentionally not consumed by the limit-order execution flow.
@@ -6011,6 +6038,11 @@ interface UseVenueEventOptions {
6011
6038
  * on `useVenueMarkets` so the count matches the market list you render.
6012
6039
  */
6013
6040
  cluster?: boolean;
6041
+ /**
6042
+ * Lifetime-volume floor. Scopes `marketCount` to the markets `useVenueMarkets`
6043
+ * returns with the same `minVolume`. Unset = no filter.
6044
+ */
6045
+ minVolume?: number;
6014
6046
  }
6015
6047
  /**
6016
6048
  * Fetch a single venue event by ID via the API.
@@ -6188,6 +6220,8 @@ declare function useVenueEvent(options: UseVenueEventOptions): {
6188
6220
 
6189
6221
  type UseEnrichedVenueEventOptions = UseVenueEventOptions & {
6190
6222
  progressive?: boolean;
6223
+ /** Lifetime-volume floor for the open-markets list (the all-status fallback ignores it). */
6224
+ minVolume?: number;
6191
6225
  };
6192
6226
  /**
6193
6227
  * Fetches a venue event and enriches its venueMarkets with full data
@@ -6622,6 +6656,8 @@ interface UseVenueEventsOptions {
6622
6656
  enabled?: boolean;
6623
6657
  /** Page size when using cursor pagination. Default 20. */
6624
6658
  limit?: number;
6659
+ /** Lifetime-volume floor (USD). Omit or 0 = no filter. */
6660
+ minVolume?: number;
6625
6661
  /** If provided, filter by minimum yes price. */
6626
6662
  minYesPrice?: number;
6627
6663
  /** If provided, filter by maximum yes price. */
@@ -7093,6 +7129,8 @@ interface UseVenueMarketsOptions {
7093
7129
  /** Sort surface. "list" makes axis/dates events sort by volume (matches the
7094
7130
  * tile top-3); omit or "detail" on the detail page to keep structured order. */
7095
7131
  context?: "list" | "detail";
7132
+ /** Lifetime-volume floor (USD). Omit or 0 = no filter. */
7133
+ minVolume?: number;
7096
7134
  }
7097
7135
  /**
7098
7136
  * Fetch venue markets with cursor-based pagination.
@@ -8254,4 +8292,4 @@ declare function useHostedVenueTransfers(accountId: string, environment: Environ
8254
8292
  clear: () => void;
8255
8293
  };
8256
8294
 
8257
- export { AUTH_CHOOSER_OPEN_EVENT, type AggAuthContextValue, type AggAuthSignInOptions, type AggBalanceContextValue, AggBalanceProvider, AggProvider, type AggProviderProps, AggProvider as AggSdkProvider, type AggProviderProps as AggSdkProviderProps, type AggUiConfig, type AggUiConfigInput, type AggUiLabels, type AggUiLabelsInput, AggUiProvider, type AggUiTradingExecutionMode, CHART_TIME_RANGES, CONFIRMED_MATCH_STATUSES, type ChartTimeRange, type ClosedPositionTotals, type ComputePriceGapsOptions, DEFAULT_AGG_ROOT_CLASS_NAME, type DagStepProgress, type EventListStateContextValue, EventListStateProvider, type EventListStateSnapshot, type EventTradingContextValue, type EventTradingState, type ExecutionProgressPhase, type ExecutionRawStepProgress, type ExecutionStepProgress, type ExecutionTerminalOrderEvent, type GeoBlockState, type GetOrdersQuery, type GetPositionsQuery, type InvalidateUserActivityOptions, type InvalidateUserMoneyStateOptions, LEADERBOARD_PERIODS, type LeaderboardPeriod, type LimitOrderVenueQuoteRequest, type LimitOrderVenueQuoteResult, type LiveBestPriceCandidate, type LiveBestPriceCandidates, type LiveBestPrices, type LiveCandle, MAX_ORDER_VENUE_MARKET_IDS_PER_REQUEST, MAX_PRICE_GAP_PCT, MIN_PRICE_GAP_PCT, type MarketChartAvailability, type MarketChartCandle, type MarketChartData, type MarketChartVenueData, type MarketOrderbookData, type MarketOrderbookIntegrity, MarketStatus, type MarketTradingState, MatchStatus, MatchType, type OrderEligibility, type OrderEligibilityReason, type OrderListItem, type OrderbookResult, type PositionGroup, type PriceGapValue, type RecurringCryptoIdentity, type RecurringCryptoMarketInstance, type RecurringCryptoTimeline, type RedeemEvent, type RedeemLegLifecycle, type RedeemLifecycleState, RedeemRejectedError, type RollingChartWindow, SPORTS_LIVE_POLL_INTERVAL_MS, SPORTS_SCHEDULED_POLL_INTERVAL_MS, type ScaledCandlePoint, type SdkUiConfig, type SdkUiConfigInput, type SdkUiProviderProps, type SettlementDiff, type SettlementDifference, type SmartRouteLoadingReason, type ThemeMode, TradeSide, type TradingAction, type TradingState, type TradingStateBase, type TradingStateKind, type UseAggAuthOptions, type UseAggAuthReturn, type UseAppConfigResult, type UseArbFeedResult, type UseCancelManagedOrderOptions, type UseCategoriesOptions, type UseCategoryChildrenOptions, type UseEnrichedVenueEventOptions, type UseExecuteManagedOptions, type UseExecutionOrdersForMarketsOptions, type UseExecutionOrdersForMarketsResult, type UseExecutionOrdersOptions, type UseExecutionPositionsOptions, type UseExecutionProgressOptions, type UseExecutionProgressResult, type UseExternalIdOptions, type UseExternalIdReturn, type UseLeaderboardOptions, type UseLimitOrderVenueQuotesOptions, type UseLimitOrderVenueQuotesResult, type UseLinkAccountReturn, type UseLiveCandleOverlayOptions, type UseLiveCandleOverlayResult, type UseLiveCandlesOptions, type UseLiveCandlesResult, type UseLiveMarketResult, type UseMarketArbResult, type UseMarketChartOptions, type UseMarketChartResult, type UseMarketChartsResult, type UseMarketOrderbookOptions, type UseMarketOrderbookResult, type UseMarketOrderbookVenueOutcome, type UseMarketSearchOptions, type UseMidpointsOptions, type UseMidpointsResult, type UseOrderBookOptions, type UseOrderbookQuoteOptions, type UseOrderbookQuoteResult, type UseOrdersOptions, type UsePaperOnboardingResult, type UsePlaceLimitOrderOptions, type UsePositionsOptions, type UseRecurringCryptoMarketsOptions, type UseRedeemLifecycleInput, type UseResolvedExecutionModeResult, type UseRollingChartWindowOptions, type UseSearchOptions, type UseSettlementDetailsDataOptions, type UseSmartRouteOptions, type UseSmartRouteResult, type UseUserActivityOptions, type UseUserHoldingsOptions, type UseVenueEventOptions, type UseVenueEventsOptions, type UseVenueMarketMidpointsOptions, type UseVenueMarketsOptions, type UseVenueSellQuotesOptions, type UseVenueSellQuotesResult, type UseViewportMidpointsOptions, type UseVisibleIdsOptions, type UseVisibleIdsResult, type UserActivityInvalidationStrategy, Venue, type VenueAvailabilityState, type VenueEvent, type VenueEventWithMarkets, type VenueMarket, type VenueMarketOutcome, type VenueSellQuoteRequest, type VenueSellQuoteResult, type WalletActionSendTokenParams, type WalletActions, appConfigQueryKey, buildLiveBestPriceCandidates, computeClosedPositionTotals, computePriceGaps, defaultAggUiConfig, defaultAggUiConfig as defaultSdkUiConfig, executionKeys, extractOutcomeBestCandidate, fetchRecurringCryptoMarkets, findLivePriceById, getBuilder, getOrCreateBuilder, getVenueAvailabilityState, getVisibleVenueIdsByConfig, getVisibleVenuesByConfig, getWalletAddressFromUserProfile, hostedVenueAccountQueryKeys, invalidateBalanceQueries, invalidatePositionQueries, invalidateUserActivityQueries, invalidateUserClaimState, invalidateUserMoneyState, isVenueDisabledByConfig, leaderboardQueryKeys, leaderboardRange, mergeBestPricesPreferringLive, mergeRecurringCryptoWindows, normalizeVenueId, optimizedImageUrl, parseEmail, parseEmailStrict, rangeToSeconds, recurringCryptoTransitionPollInterval, requestAggAuthChooserOpen, resolveAggUiLabels, resolveDefaultMarket as resolveDefaultTradingMarket, resolveEventTradingState, resolveMarketTradingState, resolveMarketWinningOutcome, resolveOrderEligibility, resolveRecurringCryptoIdentity, resolveRecurringCryptoTimeline, resolveRollingWindow, resolveTradingStateKind, retinaImageUrl, sharedKycQueryKeys, sortVenues, sportsLiveQueryKey, sportsLiveRefetchInterval, timeRangeToInterval, tradingReducer, useAggAuth, useAggAuthContext, useAggAuthState, useAggBalance, useAggBalanceContext, useAggBalanceState, useAggClient, useAggLabels, useAggUiConfig, useAggWebSocket, useAppConfig, useArbFeed, useBalanceRefillPolicies, useCachedAppConfig, useCancelManagedOrder, useCategories, useCategoryChildren, useDebouncedValue, useEnrichedVenueEvent, useEventListState, useEventOrderbookData, useEventTradingContext, useExecuteManaged, useExecutionOrders, useExecutionOrdersForMarkets, useExecutionPositions, useExecutionProgress, useExternalId, useGeoBlock, useHostedVenueAccount, useHostedVenueActivity, useHostedVenueTransfers, useLabels, useLeaderboard, useLimitOrderVenueQuotes, useLinkAccount, useLiveBestPriceCandidates, useLiveBestPrices, useLiveCandleOverlay, useLiveCandles, useLiveMarket, useLiveMarketStores, useLiveOutcomePrices, useLiveTrades, useMarketArb, useMarketChart, useMarketCharts, useMarketOrderbook, useMarketSearch, useMidpoints, useOnBalanceUpdate, useOnOrderEvent, useOnOrderSubmitted, useOnRedeemEvent, useOnWithdrawalLifecycle, useOptionalAggClient, useOrderBook, useOrderbookQuote, useOrders, usePaperOnboarding, usePlaceLimitOrder, usePositions, useRampQuotes, useRampSession, useRecurringCryptoMarkets, useRedeem, useRedeemEligibleCount, useRedeemLifecycle, useRedeemLifecycles, useResolvedExecutionMode, useRollingChartWindow, useSdkLabels, useSdkUiConfig, useSearch, useSettlementDetailsData, useSharedKyc, useSmartRoute, useSportsLive, useUserActivity, useUserHoldings, useVenueEvent, useVenueEvents, useVenueKeyStatus, useVenueMarketMidpoints, useVenueMarkets, useVenueSellQuotes, useViewportMidpoints, useVisibleIds, userActivityQueryKeys, venueKeyQueryKeys };
8295
+ export { AUTH_CHOOSER_OPEN_EVENT, type AggAuthContextValue, type AggAuthSignInOptions, type AggBalanceContextValue, AggBalanceProvider, AggProvider, type AggProviderProps, AggProvider as AggSdkProvider, type AggProviderProps as AggSdkProviderProps, type AggUiConfig, type AggUiConfigInput, type AggUiLabels, type AggUiLabelsInput, AggUiProvider, type AggUiTradingExecutionMode, CHART_TIME_RANGES, CONFIRMED_MATCH_STATUSES, type ChartTimeRange, type ClosedPositionTotals, type ComputePriceGapsOptions, DEFAULT_AGG_ROOT_CLASS_NAME, type DagStepProgress, type EventListStateContextValue, EventListStateProvider, type EventListStateSnapshot, type EventTradingContextValue, type EventTradingState, type ExecutionProgressPhase, type ExecutionRawStepProgress, type ExecutionStepProgress, type ExecutionTerminalOrderEvent, type GeoBlockState, type GetOrdersQuery, type GetPositionsQuery, type InvalidateUserActivityOptions, type InvalidateUserMoneyStateOptions, LEADERBOARD_PERIODS, type LeaderboardPeriod, type LimitOrderSizeRules, type LimitOrderVenueQuoteRequest, type LimitOrderVenueQuoteResult, type LiveBestPriceCandidate, type LiveBestPriceCandidates, type LiveBestPrices, type LiveCandle, MAX_ORDER_VENUE_MARKET_IDS_PER_REQUEST, MAX_PRICE_GAP_PCT, MIN_PRICE_GAP_PCT, type MarketChartAvailability, type MarketChartCandle, type MarketChartData, type MarketChartVenueData, type MarketOrderbookData, type MarketOrderbookIntegrity, MarketStatus, type MarketTradingState, MatchStatus, MatchType, type OrderEligibility, type OrderEligibilityReason, type OrderListItem, type OrderbookResult, type PositionGroup, type PriceGapValue, type RecurringCryptoIdentity, type RecurringCryptoMarketInstance, type RecurringCryptoTimeline, type RedeemEvent, type RedeemLegLifecycle, type RedeemLifecycleState, RedeemRejectedError, type RollingChartWindow, SPORTS_LIVE_POLL_INTERVAL_MS, SPORTS_SCHEDULED_POLL_INTERVAL_MS, type ScaledCandlePoint, type SdkUiConfig, type SdkUiConfigInput, type SdkUiProviderProps, type SettlementDiff, type SettlementDifference, type SmartRouteLoadingReason, type ThemeMode, TradeSide, type TradingAction, type TradingState, type TradingStateBase, type TradingStateKind, type UseAggAuthOptions, type UseAggAuthReturn, type UseAppConfigResult, type UseArbFeedResult, type UseCancelManagedOrderOptions, type UseCategoriesOptions, type UseCategoryChildrenOptions, type UseEnrichedVenueEventOptions, type UseExecuteManagedOptions, type UseExecutionOrdersForMarketsOptions, type UseExecutionOrdersForMarketsResult, type UseExecutionOrdersOptions, type UseExecutionPositionsOptions, type UseExecutionProgressOptions, type UseExecutionProgressResult, type UseExternalIdOptions, type UseExternalIdReturn, type UseLeaderboardOptions, type UseLimitOrderVenueQuotesOptions, type UseLimitOrderVenueQuotesResult, type UseLinkAccountReturn, type UseLiveCandleOverlayOptions, type UseLiveCandleOverlayResult, type UseLiveCandlesOptions, type UseLiveCandlesResult, type UseLiveMarketResult, type UseMarketArbResult, type UseMarketChartOptions, type UseMarketChartResult, type UseMarketChartsResult, type UseMarketOrderbookOptions, type UseMarketOrderbookResult, type UseMarketOrderbookVenueOutcome, type UseMarketSearchOptions, type UseMidpointsOptions, type UseMidpointsResult, type UseOrderBookOptions, type UseOrderbookQuoteOptions, type UseOrderbookQuoteResult, type UseOrdersOptions, type UsePaperOnboardingResult, type UsePlaceLimitOrderOptions, type UsePositionsOptions, type UseRecurringCryptoMarketsOptions, type UseRedeemLifecycleInput, type UseResolvedExecutionModeResult, type UseRollingChartWindowOptions, type UseSearchOptions, type UseSettlementDetailsDataOptions, type UseSmartRouteOptions, type UseSmartRouteResult, type UseUserActivityOptions, type UseUserHoldingsOptions, type UseVenueEventOptions, type UseVenueEventsOptions, type UseVenueMarketMidpointsOptions, type UseVenueMarketsOptions, type UseVenueSellQuotesOptions, type UseVenueSellQuotesResult, type UseViewportMidpointsOptions, type UseVisibleIdsOptions, type UseVisibleIdsResult, type UserActivityInvalidationStrategy, Venue, type VenueAvailabilityState, type VenueEvent, type VenueEventWithMarkets, type VenueMarket, type VenueMarketOutcome, type VenueSellQuoteRequest, type VenueSellQuoteResult, type WalletActionSendTokenParams, type WalletActions, appConfigQueryKey, buildLiveBestPriceCandidates, computeClosedPositionTotals, computePriceGaps, defaultAggUiConfig, defaultAggUiConfig as defaultSdkUiConfig, executionKeys, extractOutcomeBestCandidate, fetchRecurringCryptoMarkets, findLivePriceById, getBuilder, getOrCreateBuilder, getVenueAvailabilityState, getVisibleVenueIdsByConfig, getVisibleVenuesByConfig, getWalletAddressFromUserProfile, hostedVenueAccountQueryKeys, invalidateBalanceQueries, invalidatePositionQueries, invalidateUserActivityQueries, invalidateUserClaimState, invalidateUserMoneyState, isVenueDisabledByConfig, leaderboardQueryKeys, leaderboardRange, mergeBestPricesPreferringLive, mergeRecurringCryptoWindows, normalizeVenueId, optimizedImageUrl, parseEmail, parseEmailStrict, rangeToSeconds, recurringCryptoTransitionPollInterval, requestAggAuthChooserOpen, resolveAggUiLabels, resolveDefaultMarket as resolveDefaultTradingMarket, resolveEventTradingState, resolveLimitOrderSizeRulesByVenue, resolveMarketTradingState, resolveMarketWinningOutcome, resolveOrderEligibility, resolveRecurringCryptoIdentity, resolveRecurringCryptoTimeline, resolveRollingWindow, resolveTradingStateKind, retinaImageUrl, sharedKycQueryKeys, sortVenues, sportsLiveQueryKey, sportsLiveRefetchInterval, timeRangeToInterval, tradingReducer, useAggAuth, useAggAuthContext, useAggAuthState, useAggBalance, useAggBalanceContext, useAggBalanceState, useAggClient, useAggLabels, useAggUiConfig, useAggWebSocket, useAppConfig, useArbFeed, useBalanceRefillPolicies, useCachedAppConfig, useCancelManagedOrder, useCategories, useCategoryChildren, useDebouncedValue, useEnrichedVenueEvent, useEventListState, useEventOrderbookData, useEventTradingContext, useExecuteManaged, useExecutionOrders, useExecutionOrdersForMarkets, useExecutionPositions, useExecutionProgress, useExternalId, useGeoBlock, useHostedVenueAccount, useHostedVenueActivity, useHostedVenueTransfers, useLabels, useLeaderboard, useLimitOrderVenueQuotes, useLinkAccount, useLiveBestPriceCandidates, useLiveBestPrices, useLiveCandleOverlay, useLiveCandles, useLiveMarket, useLiveMarketStores, useLiveOutcomePrices, useLiveTrades, useMarketArb, useMarketChart, useMarketCharts, useMarketOrderbook, useMarketSearch, useMidpoints, useOnBalanceUpdate, useOnOrderEvent, useOnOrderSubmitted, useOnRedeemEvent, useOnWithdrawalLifecycle, useOptionalAggClient, useOrderBook, useOrderbookQuote, useOrders, usePaperOnboarding, usePlaceLimitOrder, usePositions, useRampQuotes, useRampSession, useRecurringCryptoMarkets, useRedeem, useRedeemEligibleCount, useRedeemLifecycle, useRedeemLifecycles, useResolvedExecutionMode, useRollingChartWindow, useSdkLabels, useSdkUiConfig, useSearch, useSettlementDetailsData, useSharedKyc, useSmartRoute, useSportsLive, useUserActivity, useUserHoldings, useVenueEvent, useVenueEvents, useVenueKeyStatus, useVenueMarketMidpoints, useVenueMarkets, useVenueSellQuotes, useViewportMidpoints, useVisibleIds, userActivityQueryKeys, venueKeyQueryKeys };
package/dist/index.js CHANGED
@@ -132,6 +132,7 @@ __export(src_exports, {
132
132
  resolveAggUiLabels: () => resolveAggUiLabels,
133
133
  resolveDefaultTradingMarket: () => resolveDefaultMarket,
134
134
  resolveEventTradingState: () => resolveEventTradingState,
135
+ resolveLimitOrderSizeRulesByVenue: () => resolveLimitOrderSizeRulesByVenue,
135
136
  resolveMarketTradingState: () => resolveMarketTradingState,
136
137
  resolveMarketWinningOutcome: () => resolveMarketWinningOutcome,
137
138
  resolveOrderEligibility: () => resolveOrderEligibility,
@@ -2074,7 +2075,7 @@ var mergeAggUiSearchConfig = (config) => {
2074
2075
  };
2075
2076
  };
2076
2077
  var mergeAggUiConfig = (persisted, config) => {
2077
- 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, _ba, _ca;
2078
+ 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, _ba, _ca, _da, _ea;
2078
2079
  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;
2079
2080
  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;
2080
2081
  const formatters = createFormatters(locale);
@@ -2103,26 +2104,27 @@ var mergeAggUiConfig = (persisted, config) => {
2103
2104
  },
2104
2105
  market: {
2105
2106
  arbitrageThreshold: (_J = (_I = config == null ? void 0 : config.market) == null ? void 0 : _I.arbitrageThreshold) != null ? _J : defaultAggUiConfig.market.arbitrageThreshold,
2106
- maxMidpointIdsPerRequest: (_L = (_K = config == null ? void 0 : config.market) == null ? void 0 : _K.maxMidpointIdsPerRequest) != null ? _L : defaultAggUiConfig.market.maxMidpointIdsPerRequest
2107
+ maxMidpointIdsPerRequest: (_L = (_K = config == null ? void 0 : config.market) == null ? void 0 : _K.maxMidpointIdsPerRequest) != null ? _L : defaultAggUiConfig.market.maxMidpointIdsPerRequest,
2108
+ minVolume: (_N = (_M = config == null ? void 0 : config.market) == null ? void 0 : _M.minVolume) != null ? _N : defaultAggUiConfig.market.minVolume
2107
2109
  },
2108
2110
  chart: {
2109
- defaultChartTimeRange: (_N = (_M = config == null ? void 0 : config.chart) == null ? void 0 : _M.defaultChartTimeRange) != null ? _N : defaultAggUiConfig.chart.defaultChartTimeRange,
2110
- selectedChartTimeRange: (_R = (_Q = (_O = persisted.chart) == null ? void 0 : _O.selectedChartTimeRange) != null ? _Q : (_P = config == null ? void 0 : config.chart) == null ? void 0 : _P.defaultChartTimeRange) != null ? _R : defaultAggUiConfig.chart.defaultChartTimeRange,
2111
+ defaultChartTimeRange: (_P = (_O = config == null ? void 0 : config.chart) == null ? void 0 : _O.defaultChartTimeRange) != null ? _P : defaultAggUiConfig.chart.defaultChartTimeRange,
2112
+ selectedChartTimeRange: (_T = (_S = (_Q = persisted.chart) == null ? void 0 : _Q.selectedChartTimeRange) != null ? _S : (_R = config == null ? void 0 : config.chart) == null ? void 0 : _R.defaultChartTimeRange) != null ? _T : defaultAggUiConfig.chart.defaultChartTimeRange,
2111
2113
  setSelectedChartTimeRange: defaultAggUiConfig.chart.setSelectedChartTimeRange
2112
2114
  },
2113
2115
  formatting: {
2114
- formatNumber: (_T = (_S = config == null ? void 0 : config.formatting) == null ? void 0 : _S.formatNumber) != null ? _T : formatters.formatNumber,
2115
- formatPercent: (_V = (_U = config == null ? void 0 : config.formatting) == null ? void 0 : _U.formatPercent) != null ? _V : formatters.formatPercent,
2116
+ formatNumber: (_V = (_U = config == null ? void 0 : config.formatting) == null ? void 0 : _U.formatNumber) != null ? _V : formatters.formatNumber,
2117
+ formatPercent: (_X = (_W = config == null ? void 0 : config.formatting) == null ? void 0 : _W.formatPercent) != null ? _X : formatters.formatPercent,
2116
2118
  // ponytail: no default here — each cents surface keeps its own rendering
2117
2119
  // when unset, so adding this knob changes nothing for existing partners.
2118
- formatPrice: (_W = config == null ? void 0 : config.formatting) == null ? void 0 : _W.formatPrice,
2119
- formatCurrency: (_Y = (_X = config == null ? void 0 : config.formatting) == null ? void 0 : _X.formatCurrency) != null ? _Y : formatters.formatCurrency,
2120
- formatCompactCurrency: (__ = (_Z = config == null ? void 0 : config.formatting) == null ? void 0 : _Z.formatCompactCurrency) != null ? __ : formatters.formatCompactCurrency,
2121
- formatDate: (_aa = (_$ = config == null ? void 0 : config.formatting) == null ? void 0 : _$.formatDate) != null ? _aa : formatters.formatDate
2120
+ formatPrice: (_Y = config == null ? void 0 : config.formatting) == null ? void 0 : _Y.formatPrice,
2121
+ formatCurrency: (__ = (_Z = config == null ? void 0 : config.formatting) == null ? void 0 : _Z.formatCurrency) != null ? __ : formatters.formatCurrency,
2122
+ formatCompactCurrency: (_aa = (_$ = config == null ? void 0 : config.formatting) == null ? void 0 : _$.formatCompactCurrency) != null ? _aa : formatters.formatCompactCurrency,
2123
+ formatDate: (_ca = (_ba = config == null ? void 0 : config.formatting) == null ? void 0 : _ba.formatDate) != null ? _ca : formatters.formatDate
2122
2124
  },
2123
2125
  search: mergeAggUiSearchConfig(config == null ? void 0 : config.search),
2124
2126
  trading: {
2125
- executionMode: (_ca = (_ba = config == null ? void 0 : config.trading) == null ? void 0 : _ba.executionMode) != null ? _ca : defaultAggUiConfig.trading.executionMode
2127
+ executionMode: (_ea = (_da = config == null ? void 0 : config.trading) == null ? void 0 : _da.executionMode) != null ? _ea : defaultAggUiConfig.trading.executionMode
2126
2128
  },
2127
2129
  walletActions: config == null ? void 0 : config.walletActions,
2128
2130
  solanaRpcUrl: config == null ? void 0 : config.solanaRpcUrl
@@ -9556,6 +9558,7 @@ var getIsDocumentVisible2 = () => {
9556
9558
  if (typeof document === "undefined") return true;
9557
9559
  return document.visibilityState !== "hidden";
9558
9560
  };
9561
+ var MAX_ORDERBOOK_METADATA_MARKET_IDS = 20;
9559
9562
  var getUniqueVenueRequests = (requests) => {
9560
9563
  const requestsByVenue = /* @__PURE__ */ new Map();
9561
9564
  for (const request of requests) {
@@ -9585,6 +9588,21 @@ var resolveLimitOrderTickSizesByVenue = (response) => {
9585
9588
  }
9586
9589
  return tickSizes;
9587
9590
  };
9591
+ var resolveLimitOrderSizeRulesByVenue = (response) => {
9592
+ var _a;
9593
+ const rulesByVenue = /* @__PURE__ */ new Map();
9594
+ const setRules = (venue, entry) => {
9595
+ if (rulesByVenue.has(venue)) return;
9596
+ if (!entry.sizeStepRaw && !entry.minSizeRaw) return;
9597
+ rulesByVenue.set(venue, __spreadValues(__spreadValues({}, entry.sizeStepRaw ? { sizeStepRaw: entry.sizeStepRaw } : {}), entry.minSizeRaw ? { minSizeRaw: entry.minSizeRaw } : {}));
9598
+ };
9599
+ for (const item of (_a = response == null ? void 0 : response.data) != null ? _a : []) {
9600
+ for (const [venue, entry] of Object.entries(item.venueOrderbooks)) setRules(venue, entry);
9601
+ for (const market of item.matchedMarkets) setRules(market.venue, market);
9602
+ if (item.requestedMarket) setRules(item.requestedMarket.venue, item.requestedMarket);
9603
+ }
9604
+ return rulesByVenue;
9605
+ };
9588
9606
  var useLimitOrderVenueQuotes = (options) => {
9589
9607
  var _a, _b;
9590
9608
  const client = useAggClient();
@@ -9606,9 +9624,22 @@ var useLimitOrderVenueQuotes = (options) => {
9606
9624
  const hasRequiredAccount = tradeSide === "buy" || Boolean(accountId);
9607
9625
  const queryEnabled = enabled && hasValidInput && hasRequiredAccount;
9608
9626
  const serializedChainBalances = chainBalances ? JSON.stringify(chainBalances) : null;
9627
+ const metadataMarketIds = marketId ? [
9628
+ .../* @__PURE__ */ new Set([
9629
+ marketId,
9630
+ ...uniqueRequests.flatMap(
9631
+ (request) => request.venueMarketId ? [request.venueMarketId] : []
9632
+ )
9633
+ ])
9634
+ ].slice(0, MAX_ORDERBOOK_METADATA_MARKET_IDS) : [];
9609
9635
  const tickMetadataQuery = (0, import_react_query41.useQuery)({
9610
- queryKey: ["orderbooks", marketId != null ? marketId : "__disabled__", "limit-order-ticks"],
9611
- queryFn: ({ signal }) => client.getOrderbooks({ venueMarketIds: [marketId] }, { signal }),
9636
+ queryKey: [
9637
+ "orderbooks",
9638
+ marketId != null ? marketId : "__disabled__",
9639
+ "limit-order-ticks",
9640
+ metadataMarketIds
9641
+ ],
9642
+ queryFn: ({ signal }) => client.getOrderbooks({ venueMarketIds: metadataMarketIds }, { signal }),
9612
9643
  enabled: enabled && Boolean(marketId),
9613
9644
  staleTime: 6e4,
9614
9645
  gcTime: 5 * 6e4,
@@ -9670,14 +9701,17 @@ var useLimitOrderVenueQuotes = (options) => {
9670
9701
  }))
9671
9702
  });
9672
9703
  const tickSizesByVenue = resolveLimitOrderTickSizesByVenue(tickMetadataQuery.data);
9704
+ const sizeRulesByVenue = resolveLimitOrderSizeRulesByVenue(tickMetadataQuery.data);
9673
9705
  const quotes = queries.map((query, index) => {
9674
- var _a2, _b2;
9706
+ var _a2, _b2, _c, _d, _e, _f;
9675
9707
  const queryError = query.error;
9676
9708
  const request = uniqueRequests[index];
9677
9709
  return {
9678
9710
  request,
9679
9711
  data: (_a2 = query.data) != null ? _a2 : null,
9680
9712
  tickSize: (_b2 = tickSizesByVenue.get(request.venue)) != null ? _b2 : null,
9713
+ sizeStepRaw: (_d = (_c = sizeRulesByVenue.get(request.venue)) == null ? void 0 : _c.sizeStepRaw) != null ? _d : null,
9714
+ minSizeRaw: (_f = (_e = sizeRulesByVenue.get(request.venue)) == null ? void 0 : _e.minSizeRaw) != null ? _f : null,
9681
9715
  isLoading: query.isLoading,
9682
9716
  isFetching: query.isFetching,
9683
9717
  error: queryError instanceof Error ? queryError : queryError ? new Error(String(queryError)) : null,
@@ -9686,6 +9720,8 @@ var useLimitOrderVenueQuotes = (options) => {
9686
9720
  });
9687
9721
  return {
9688
9722
  quotes,
9723
+ // A failed metadata read is not pending: callers fall back to 1-raw sizing.
9724
+ isMetadataPending: Boolean(marketId) && tickMetadataQuery.isPending === true,
9689
9725
  isLoading: quotes.some((quote) => quote.isLoading),
9690
9726
  isFetching: quotes.some((quote) => quote.isFetching),
9691
9727
  error: (_b = (_a = quotes.find((quote) => quote.error)) == null ? void 0 : _a.error) != null ? _b : null,
@@ -10410,11 +10446,11 @@ function resolutionPollInterval(event) {
10410
10446
  function useVenueEvent(options) {
10411
10447
  var _a;
10412
10448
  const client = useAggClient();
10413
- const { eventId, enabled = true, cluster } = options;
10449
+ const { eventId, enabled = true, cluster, minVolume } = options;
10414
10450
  const query = (0, import_react_query45.useQuery)({
10415
- queryKey: ["venue-event", eventId, cluster === false ? "no-cluster" : ""],
10451
+ queryKey: ["venue-event", eventId, cluster === false ? "no-cluster" : "", minVolume != null ? minVolume : ""],
10416
10452
  queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
10417
- return client.getVenueEventById(eventId, { signal, cluster });
10453
+ return client.getVenueEventById(eventId, { signal, cluster, minVolume });
10418
10454
  }),
10419
10455
  enabled: enabled && !!eventId,
10420
10456
  staleTime: 5 * 6e4,
@@ -10454,6 +10490,7 @@ function useVenueMarkets(options) {
10454
10490
  const sortBy = options == null ? void 0 : options.sortBy;
10455
10491
  const sortDir = options == null ? void 0 : options.sortDir;
10456
10492
  const context = options == null ? void 0 : options.context;
10493
+ const minVolume = options == null ? void 0 : options.minVolume;
10457
10494
  (0, import_react40.useEffect)(() => {
10458
10495
  if (queryClient) return void 0;
10459
10496
  fallbackQueryClient.mount();
@@ -10482,7 +10519,8 @@ function useVenueMarkets(options) {
10482
10519
  limit,
10483
10520
  sortBy != null ? sortBy : "",
10484
10521
  sortDir != null ? sortDir : "",
10485
- context != null ? context : ""
10522
+ context != null ? context : "",
10523
+ minVolume != null ? minVolume : ""
10486
10524
  ],
10487
10525
  queryFn: (_0) => __async(null, [_0], function* ({ pageParam, signal }) {
10488
10526
  if (!client) {
@@ -10505,7 +10543,8 @@ function useVenueMarkets(options) {
10505
10543
  cursor: pageParam,
10506
10544
  sortBy,
10507
10545
  sortDir,
10508
- context
10546
+ context,
10547
+ minVolume
10509
10548
  },
10510
10549
  { signal }
10511
10550
  );
@@ -10561,7 +10600,8 @@ function useEnrichedVenueEvent(options) {
10561
10600
  // MarketDetailsList (including limit, part of the query key) preserves the
10562
10601
  // shared React Query cache key and the event-type ordering.
10563
10602
  limit: 100,
10564
- fetchAll: !options.progressive
10603
+ fetchAll: !options.progressive,
10604
+ minVolume: options.minVolume
10565
10605
  });
10566
10606
  const { markets: openMarkets, isLoading: isEnrichingOpenMarkets } = openQuery;
10567
10607
  const shouldFetchAllMarketsFallback = ((_c = options.enabled) != null ? _c : true) && !!event && shouldFetchOnlyOpenMarkets && !isEnrichingOpenMarkets && openMarkets.length === 0;
@@ -10572,6 +10612,8 @@ function useEnrichedVenueEvent(options) {
10572
10612
  // No status filter on fallback: if an active event temporarily has only
10573
10613
  // closed/resolved markets, still render the event page instead of the
10574
10614
  // unavailable state.
10615
+ // No minVolume on fallback: an event whose open markets are all below the
10616
+ // floor must still render (mirrors the bootstrap endpoint's fallback).
10575
10617
  limit: 100,
10576
10618
  fetchAll: !options.progressive
10577
10619
  });
@@ -10614,6 +10656,7 @@ function useVenueEvents(options) {
10614
10656
  const sortDir = options == null ? void 0 : options.sortDir;
10615
10657
  const recurrence = options == null ? void 0 : options.recurrence;
10616
10658
  const queryKeyScope = (_d = options == null ? void 0 : options.queryKeyScope) != null ? _d : "events";
10659
+ const minVolume = options == null ? void 0 : options.minVolume;
10617
10660
  const minYesPrice = options == null ? void 0 : options.minYesPrice;
10618
10661
  const maxYesPrice = options == null ? void 0 : options.maxYesPrice;
10619
10662
  const endDateFrom = options == null ? void 0 : options.endDateFrom;
@@ -10645,6 +10688,7 @@ function useVenueEvents(options) {
10645
10688
  maxYesPrice != null ? maxYesPrice : "",
10646
10689
  endDateFrom != null ? endDateFrom : "",
10647
10690
  grouped != null ? grouped : false,
10691
+ minVolume != null ? minVolume : "",
10648
10692
  limit
10649
10693
  ],
10650
10694
  queryFn: (_0) => __async(null, [_0], function* ({ pageParam, signal }) {
@@ -10661,6 +10705,7 @@ function useVenueEvents(options) {
10661
10705
  sortDir,
10662
10706
  recurrence,
10663
10707
  limit,
10708
+ minVolume,
10664
10709
  minYesPrice,
10665
10710
  maxYesPrice,
10666
10711
  endDateFrom,
@@ -11377,6 +11422,7 @@ function useHostedVenueTransfers(accountId, environment) {
11377
11422
  resolveAggUiLabels,
11378
11423
  resolveDefaultTradingMarket,
11379
11424
  resolveEventTradingState,
11425
+ resolveLimitOrderSizeRulesByVenue,
11380
11426
  resolveMarketTradingState,
11381
11427
  resolveMarketWinningOutcome,
11382
11428
  resolveOrderEligibility,
package/dist/index.mjs CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  useRampQuotes,
3
3
  useRampSession
4
- } from "./chunk-5YCKWYG7.mjs";
4
+ } from "./chunk-OZQ3K47U.mjs";
5
5
  import {
6
6
  useWithdrawEstimate,
7
7
  useWithdrawFlow,
8
8
  useWithdrawPreview,
9
9
  useWithdrawalLifecycle
10
- } from "./chunk-YJDYAGPC.mjs";
10
+ } from "./chunk-LNIAMJTZ.mjs";
11
11
  import {
12
12
  AggAuthContext,
13
13
  AggBalanceProvider,
@@ -98,7 +98,7 @@ import {
98
98
  useSyncBalances,
99
99
  useWithdrawManaged,
100
100
  userActivityQueryKeys
101
- } from "./chunk-EXLVICJM.mjs";
101
+ } from "./chunk-JFJNW2PD.mjs";
102
102
 
103
103
  // src/index.ts
104
104
  import { QueryClient as QueryClient4, QueryClientProvider, useQueryClient as useQueryClient5 } from "@tanstack/react-query";
@@ -3406,6 +3406,7 @@ var getIsDocumentVisible2 = () => {
3406
3406
  if (typeof document === "undefined") return true;
3407
3407
  return document.visibilityState !== "hidden";
3408
3408
  };
3409
+ var MAX_ORDERBOOK_METADATA_MARKET_IDS = 20;
3409
3410
  var getUniqueVenueRequests = (requests) => {
3410
3411
  const requestsByVenue = /* @__PURE__ */ new Map();
3411
3412
  for (const request of requests) {
@@ -3435,6 +3436,21 @@ var resolveLimitOrderTickSizesByVenue = (response) => {
3435
3436
  }
3436
3437
  return tickSizes;
3437
3438
  };
3439
+ var resolveLimitOrderSizeRulesByVenue = (response) => {
3440
+ var _a;
3441
+ const rulesByVenue = /* @__PURE__ */ new Map();
3442
+ const setRules = (venue, entry) => {
3443
+ if (rulesByVenue.has(venue)) return;
3444
+ if (!entry.sizeStepRaw && !entry.minSizeRaw) return;
3445
+ rulesByVenue.set(venue, __spreadValues(__spreadValues({}, entry.sizeStepRaw ? { sizeStepRaw: entry.sizeStepRaw } : {}), entry.minSizeRaw ? { minSizeRaw: entry.minSizeRaw } : {}));
3446
+ };
3447
+ for (const item of (_a = response == null ? void 0 : response.data) != null ? _a : []) {
3448
+ for (const [venue, entry] of Object.entries(item.venueOrderbooks)) setRules(venue, entry);
3449
+ for (const market of item.matchedMarkets) setRules(market.venue, market);
3450
+ if (item.requestedMarket) setRules(item.requestedMarket.venue, item.requestedMarket);
3451
+ }
3452
+ return rulesByVenue;
3453
+ };
3438
3454
  var useLimitOrderVenueQuotes = (options) => {
3439
3455
  var _a, _b;
3440
3456
  const client = useAggClient();
@@ -3456,9 +3472,22 @@ var useLimitOrderVenueQuotes = (options) => {
3456
3472
  const hasRequiredAccount = tradeSide === "buy" || Boolean(accountId);
3457
3473
  const queryEnabled = enabled && hasValidInput && hasRequiredAccount;
3458
3474
  const serializedChainBalances = chainBalances ? JSON.stringify(chainBalances) : null;
3475
+ const metadataMarketIds = marketId ? [
3476
+ .../* @__PURE__ */ new Set([
3477
+ marketId,
3478
+ ...uniqueRequests.flatMap(
3479
+ (request) => request.venueMarketId ? [request.venueMarketId] : []
3480
+ )
3481
+ ])
3482
+ ].slice(0, MAX_ORDERBOOK_METADATA_MARKET_IDS) : [];
3459
3483
  const tickMetadataQuery = useQuery11({
3460
- queryKey: ["orderbooks", marketId != null ? marketId : "__disabled__", "limit-order-ticks"],
3461
- queryFn: ({ signal }) => client.getOrderbooks({ venueMarketIds: [marketId] }, { signal }),
3484
+ queryKey: [
3485
+ "orderbooks",
3486
+ marketId != null ? marketId : "__disabled__",
3487
+ "limit-order-ticks",
3488
+ metadataMarketIds
3489
+ ],
3490
+ queryFn: ({ signal }) => client.getOrderbooks({ venueMarketIds: metadataMarketIds }, { signal }),
3462
3491
  enabled: enabled && Boolean(marketId),
3463
3492
  staleTime: 6e4,
3464
3493
  gcTime: 5 * 6e4,
@@ -3520,14 +3549,17 @@ var useLimitOrderVenueQuotes = (options) => {
3520
3549
  }))
3521
3550
  });
3522
3551
  const tickSizesByVenue = resolveLimitOrderTickSizesByVenue(tickMetadataQuery.data);
3552
+ const sizeRulesByVenue = resolveLimitOrderSizeRulesByVenue(tickMetadataQuery.data);
3523
3553
  const quotes = queries.map((query, index) => {
3524
- var _a2, _b2;
3554
+ var _a2, _b2, _c, _d, _e, _f;
3525
3555
  const queryError = query.error;
3526
3556
  const request = uniqueRequests[index];
3527
3557
  return {
3528
3558
  request,
3529
3559
  data: (_a2 = query.data) != null ? _a2 : null,
3530
3560
  tickSize: (_b2 = tickSizesByVenue.get(request.venue)) != null ? _b2 : null,
3561
+ sizeStepRaw: (_d = (_c = sizeRulesByVenue.get(request.venue)) == null ? void 0 : _c.sizeStepRaw) != null ? _d : null,
3562
+ minSizeRaw: (_f = (_e = sizeRulesByVenue.get(request.venue)) == null ? void 0 : _e.minSizeRaw) != null ? _f : null,
3531
3563
  isLoading: query.isLoading,
3532
3564
  isFetching: query.isFetching,
3533
3565
  error: queryError instanceof Error ? queryError : queryError ? new Error(String(queryError)) : null,
@@ -3536,6 +3568,8 @@ var useLimitOrderVenueQuotes = (options) => {
3536
3568
  });
3537
3569
  return {
3538
3570
  quotes,
3571
+ // A failed metadata read is not pending: callers fall back to 1-raw sizing.
3572
+ isMetadataPending: Boolean(marketId) && tickMetadataQuery.isPending === true,
3539
3573
  isLoading: quotes.some((quote) => quote.isLoading),
3540
3574
  isFetching: quotes.some((quote) => quote.isFetching),
3541
3575
  error: (_b = (_a = quotes.find((quote) => quote.error)) == null ? void 0 : _a.error) != null ? _b : null,
@@ -4260,11 +4294,11 @@ function resolutionPollInterval(event) {
4260
4294
  function useVenueEvent(options) {
4261
4295
  var _a;
4262
4296
  const client = useAggClient();
4263
- const { eventId, enabled = true, cluster } = options;
4297
+ const { eventId, enabled = true, cluster, minVolume } = options;
4264
4298
  const query = useQuery13({
4265
- queryKey: ["venue-event", eventId, cluster === false ? "no-cluster" : ""],
4299
+ queryKey: ["venue-event", eventId, cluster === false ? "no-cluster" : "", minVolume != null ? minVolume : ""],
4266
4300
  queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
4267
- return client.getVenueEventById(eventId, { signal, cluster });
4301
+ return client.getVenueEventById(eventId, { signal, cluster, minVolume });
4268
4302
  }),
4269
4303
  enabled: enabled && !!eventId,
4270
4304
  staleTime: 5 * 6e4,
@@ -4304,6 +4338,7 @@ function useVenueMarkets(options) {
4304
4338
  const sortBy = options == null ? void 0 : options.sortBy;
4305
4339
  const sortDir = options == null ? void 0 : options.sortDir;
4306
4340
  const context = options == null ? void 0 : options.context;
4341
+ const minVolume = options == null ? void 0 : options.minVolume;
4307
4342
  useEffect10(() => {
4308
4343
  if (queryClient) return void 0;
4309
4344
  fallbackQueryClient.mount();
@@ -4332,7 +4367,8 @@ function useVenueMarkets(options) {
4332
4367
  limit,
4333
4368
  sortBy != null ? sortBy : "",
4334
4369
  sortDir != null ? sortDir : "",
4335
- context != null ? context : ""
4370
+ context != null ? context : "",
4371
+ minVolume != null ? minVolume : ""
4336
4372
  ],
4337
4373
  queryFn: (_0) => __async(null, [_0], function* ({ pageParam, signal }) {
4338
4374
  if (!client) {
@@ -4355,7 +4391,8 @@ function useVenueMarkets(options) {
4355
4391
  cursor: pageParam,
4356
4392
  sortBy,
4357
4393
  sortDir,
4358
- context
4394
+ context,
4395
+ minVolume
4359
4396
  },
4360
4397
  { signal }
4361
4398
  );
@@ -4411,7 +4448,8 @@ function useEnrichedVenueEvent(options) {
4411
4448
  // MarketDetailsList (including limit, part of the query key) preserves the
4412
4449
  // shared React Query cache key and the event-type ordering.
4413
4450
  limit: 100,
4414
- fetchAll: !options.progressive
4451
+ fetchAll: !options.progressive,
4452
+ minVolume: options.minVolume
4415
4453
  });
4416
4454
  const { markets: openMarkets, isLoading: isEnrichingOpenMarkets } = openQuery;
4417
4455
  const shouldFetchAllMarketsFallback = ((_c = options.enabled) != null ? _c : true) && !!event && shouldFetchOnlyOpenMarkets && !isEnrichingOpenMarkets && openMarkets.length === 0;
@@ -4422,6 +4460,8 @@ function useEnrichedVenueEvent(options) {
4422
4460
  // No status filter on fallback: if an active event temporarily has only
4423
4461
  // closed/resolved markets, still render the event page instead of the
4424
4462
  // unavailable state.
4463
+ // No minVolume on fallback: an event whose open markets are all below the
4464
+ // floor must still render (mirrors the bootstrap endpoint's fallback).
4425
4465
  limit: 100,
4426
4466
  fetchAll: !options.progressive
4427
4467
  });
@@ -4469,6 +4509,7 @@ function useVenueEvents(options) {
4469
4509
  const sortDir = options == null ? void 0 : options.sortDir;
4470
4510
  const recurrence = options == null ? void 0 : options.recurrence;
4471
4511
  const queryKeyScope = (_d = options == null ? void 0 : options.queryKeyScope) != null ? _d : "events";
4512
+ const minVolume = options == null ? void 0 : options.minVolume;
4472
4513
  const minYesPrice = options == null ? void 0 : options.minYesPrice;
4473
4514
  const maxYesPrice = options == null ? void 0 : options.maxYesPrice;
4474
4515
  const endDateFrom = options == null ? void 0 : options.endDateFrom;
@@ -4500,6 +4541,7 @@ function useVenueEvents(options) {
4500
4541
  maxYesPrice != null ? maxYesPrice : "",
4501
4542
  endDateFrom != null ? endDateFrom : "",
4502
4543
  grouped != null ? grouped : false,
4544
+ minVolume != null ? minVolume : "",
4503
4545
  limit
4504
4546
  ],
4505
4547
  queryFn: (_0) => __async(null, [_0], function* ({ pageParam, signal }) {
@@ -4516,6 +4558,7 @@ function useVenueEvents(options) {
4516
4558
  sortDir,
4517
4559
  recurrence,
4518
4560
  limit,
4561
+ minVolume,
4519
4562
  minYesPrice,
4520
4563
  maxYesPrice,
4521
4564
  endDateFrom,
@@ -5231,6 +5274,7 @@ export {
5231
5274
  resolveAggUiLabels,
5232
5275
  resolveDefaultMarket as resolveDefaultTradingMarket,
5233
5276
  resolveEventTradingState,
5277
+ resolveLimitOrderSizeRulesByVenue,
5234
5278
  resolveMarketTradingState,
5235
5279
  resolveMarketWinningOutcome,
5236
5280
  resolveOrderEligibility,
package/dist/withdraw.mjs CHANGED
@@ -3,12 +3,12 @@ import {
3
3
  useWithdrawFlow,
4
4
  useWithdrawPreview,
5
5
  useWithdrawalLifecycle
6
- } from "./chunk-YJDYAGPC.mjs";
6
+ } from "./chunk-LNIAMJTZ.mjs";
7
7
  import {
8
8
  useDepositAddresses,
9
9
  useManagedBalances,
10
10
  useWithdrawManaged
11
- } from "./chunk-EXLVICJM.mjs";
11
+ } from "./chunk-JFJNW2PD.mjs";
12
12
  export {
13
13
  useDepositAddresses,
14
14
  useManagedBalances,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agg-build/hooks",
3
- "version": "4.23.0",
3
+ "version": "4.26.0",
4
4
  "description": "React hooks and providers for the AGG prediction market aggregator. Wraps @agg-build/sdk with TanStack Query, shared session state, and live WebSocket data.",
5
5
  "sideEffects": false,
6
6
  "license": "MIT",
@@ -83,7 +83,7 @@
83
83
  "react": "^18.0.0 || ^19.0.0",
84
84
  "viem": "^2.0.0",
85
85
  "wagmi": "^3.0.0 || ^2.0.0",
86
- "@agg-build/sdk": "^4.23.0"
86
+ "@agg-build/sdk": "^4.26.0"
87
87
  },
88
88
  "peerDependenciesMeta": {
89
89
  "@solana/wallet-adapter-react": {