@agg-build/hooks 2.5.1 → 2.6.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.mjs CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  useRampQuotes,
3
3
  useRampSession
4
- } from "./chunk-DPY6RZNW.mjs";
4
+ } from "./chunk-Q4FRCMP6.mjs";
5
5
  import {
6
6
  useWithdrawEstimate,
7
7
  useWithdrawFlow,
8
8
  useWithdrawPreview,
9
9
  useWithdrawalLifecycle
10
- } from "./chunk-PK2JGXQV.mjs";
10
+ } from "./chunk-DP6VYGAX.mjs";
11
11
  import {
12
12
  AggAuthContext,
13
13
  AggBalanceProvider,
@@ -97,7 +97,7 @@ import {
97
97
  useSyncBalances,
98
98
  useWithdrawManaged,
99
99
  userActivityQueryKeys
100
- } from "./chunk-5NJBAP42.mjs";
100
+ } from "./chunk-TJRQ55UC.mjs";
101
101
 
102
102
  // src/index.ts
103
103
  import { QueryClient as QueryClient4, QueryClientProvider, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
@@ -142,13 +142,30 @@ var getVisibleVenueIdsByConfig = (venueIds, disabledVenues) => {
142
142
  var getVenueAvailabilityState = ({
143
143
  venueId,
144
144
  disabledVenues,
145
+ isConfigLoading,
145
146
  isLocationBlocked
146
147
  }) => {
148
+ if (isConfigLoading) return "hidden";
147
149
  if (isVenueDisabledByConfig(venueId, disabledVenues)) return "hidden";
148
150
  if (isLocationBlocked) return "geoblocked";
149
151
  return "available";
150
152
  };
151
153
 
154
+ // src/use-venue-key-status.ts
155
+ import { useQuery } from "@tanstack/react-query";
156
+ var venueKeyQueryKeys = {
157
+ all: ["agg", "venue-keys"],
158
+ status: (venue) => [...venueKeyQueryKeys.all, venue, "status"]
159
+ };
160
+ var useVenueKeyStatus = (venue, enabled = true) => {
161
+ const client = useAggClient();
162
+ return useQuery({
163
+ queryKey: venueKeyQueryKeys.status(venue),
164
+ queryFn: () => client.getVenueKeyStatus(venue),
165
+ enabled
166
+ });
167
+ };
168
+
152
169
  // src/use-agg-auth.ts
153
170
  import { useCallback } from "react";
154
171
  function useAggAuth(options = {}) {
@@ -844,7 +861,7 @@ function useEventOrderbookData(venueMarkets, selectedMarketId) {
844
861
  }
845
862
 
846
863
  // src/use-live-market.ts
847
- import { useQuery } from "@tanstack/react-query";
864
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
848
865
  function outcomeOrderbookToState(response, marketId) {
849
866
  var _a, _b, _c, _d;
850
867
  const { venue, orderbook, midpoint, spread, seq, checksum, timestamp, venueMarketOutcomeId } = response;
@@ -894,7 +911,7 @@ function useLiveMarket(canonicalMarketId) {
894
911
  enabled: isLiveSubscriptionEnabled,
895
912
  orderbook: true
896
913
  });
897
- const query = useQuery({
914
+ const query = useQuery2({
898
915
  queryKey: marketDataKeys.live(canonicalMarketId != null ? canonicalMarketId : "__disabled__"),
899
916
  queryFn: () => __async(null, null, function* () {
900
917
  return createMarketLiveState(canonicalMarketId != null ? canonicalMarketId : "__disabled__");
@@ -906,7 +923,7 @@ function useLiveMarket(canonicalMarketId) {
906
923
  isConnected: Boolean(isLiveSubscriptionEnabled && isConnected)
907
924
  })
908
925
  });
909
- const seedQuery = useQuery({
926
+ const seedQuery = useQuery2({
910
927
  queryKey: ["live-market-seed", canonicalMarketId],
911
928
  queryFn: ({ signal }) => canonicalMarketId ? client.getOutcomeOrderbook(canonicalMarketId, { signal }) : Promise.resolve(null),
912
929
  enabled: Boolean(canonicalMarketId),
@@ -1308,7 +1325,7 @@ function useLiveTrades(canonicalMarketId) {
1308
1325
  }
1309
1326
 
1310
1327
  // src/use-midpoints.ts
1311
- import { useQuery as useQuery2 } from "@tanstack/react-query";
1328
+ import { useQuery as useQuery3 } from "@tanstack/react-query";
1312
1329
  import { useMemo as useMemo8 } from "react";
1313
1330
  var normalizeVenueMarketIds = (venueMarkets) => {
1314
1331
  var _a;
@@ -1487,7 +1504,7 @@ function useMidpoints(venueMarkets, options) {
1487
1504
  () => resolveBestMidpointCandidateOutcomeIds(venueMarkets),
1488
1505
  [venueMarkets]
1489
1506
  );
1490
- const { data, isLoading } = useQuery2({
1507
+ const { data, isLoading } = useQuery3({
1491
1508
  queryKey: ["midpoints", ids, maxMidpointIdsPerRequest],
1492
1509
  queryFn: () => client.getMidpoints(ids, { bestPrice: true, maxMidpointIdsPerRequest }),
1493
1510
  enabled: ids.length > 0,
@@ -1777,7 +1794,7 @@ function useArbFeed() {
1777
1794
  }
1778
1795
 
1779
1796
  // src/use-order-book.ts
1780
- import { keepPreviousData as keepPreviousData3, useQuery as useQuery3 } from "@tanstack/react-query";
1797
+ import { keepPreviousData as keepPreviousData3, useQuery as useQuery4 } from "@tanstack/react-query";
1781
1798
  function useOrderBook(options) {
1782
1799
  const client = useAggClient();
1783
1800
  const { orderbooks, enabled = true, canonicalMarketId } = options;
@@ -1790,7 +1807,7 @@ function useOrderBook(options) {
1790
1807
  venueMarketOutcomeId: outcome.id
1791
1808
  })) : void 0
1792
1809
  });
1793
- const batchedResult = useQuery3({
1810
+ const batchedResult = useQuery4({
1794
1811
  queryKey: requestedVenueMarketIds.length ? ["orderbooks", requestedVenueMarketIds, null] : ["orderbooks", "__disabled__", null],
1795
1812
  queryFn: ({ signal }) => client.getOrderbooks(
1796
1813
  {
@@ -1858,7 +1875,7 @@ function useOrderBook(options) {
1858
1875
  }
1859
1876
 
1860
1877
  // src/use-orderbook-quote.ts
1861
- import { keepPreviousData as keepPreviousData4, useQuery as useQuery4 } from "@tanstack/react-query";
1878
+ import { keepPreviousData as keepPreviousData4, useQuery as useQuery5 } from "@tanstack/react-query";
1862
1879
  var QUOTE_DEBOUNCE_MS = 300;
1863
1880
  var createUnavailableOrderbookError = (message, code, retryable) => {
1864
1881
  const error = new Error(message);
@@ -1920,7 +1937,7 @@ function useOrderbookQuote(options) {
1920
1937
  const { marketId, side, size, enabled = true } = options;
1921
1938
  const debouncedSize = useDebouncedValue(size, QUOTE_DEBOUNCE_MS);
1922
1939
  const shouldFetch = enabled && !!marketId && debouncedSize > 0;
1923
- const query = useQuery4({
1940
+ const query = useQuery5({
1924
1941
  queryKey: marketId ? marketDataKeys.orderbookQuote(marketId, side, debouncedSize) : ["market-data", "orderbook-quote", "__disabled__"],
1925
1942
  queryFn: () => __async(null, null, function* () {
1926
1943
  var _a2, _b, _c, _d;
@@ -1962,12 +1979,12 @@ function useOrderbookQuote(options) {
1962
1979
  }
1963
1980
 
1964
1981
  // src/use-orders.ts
1965
- import { useQuery as useQuery5 } from "@tanstack/react-query";
1982
+ import { useQuery as useQuery6 } from "@tanstack/react-query";
1966
1983
  function useOrders(options = {}) {
1967
1984
  var _a, _b, _c, _d;
1968
1985
  const client = useAggClient();
1969
1986
  const { userId, status, limit = 50, offset = 0, enabled = true } = options;
1970
- const query = useQuery5({
1987
+ const query = useQuery6({
1971
1988
  queryKey: ["orders", userId != null ? userId : "me", status != null ? status : "all", limit, offset],
1972
1989
  queryFn: () => client.getOrders({
1973
1990
  userId,
@@ -2150,7 +2167,7 @@ function useMarketSearch(options) {
2150
2167
  }
2151
2168
 
2152
2169
  // src/use-smart-route.ts
2153
- import { keepPreviousData as keepPreviousData6, useQuery as useQuery6 } from "@tanstack/react-query";
2170
+ import { keepPreviousData as keepPreviousData6, useQuery as useQuery7 } from "@tanstack/react-query";
2154
2171
 
2155
2172
  // src/smart-route-refresh-policy.ts
2156
2173
  var THIN_SMART_ROUTE_REFETCH_INTERVAL_MS = 5e3;
@@ -2276,7 +2293,7 @@ var getIsDocumentVisible = () => {
2276
2293
  return document.visibilityState !== "hidden";
2277
2294
  };
2278
2295
  function useSmartRoute(options) {
2279
- var _a, _b;
2296
+ var _a, _b, _c, _d;
2280
2297
  const client = useAggClient();
2281
2298
  const {
2282
2299
  venueMarketOutcomeId,
@@ -2290,6 +2307,7 @@ function useSmartRoute(options) {
2290
2307
  chainBalances,
2291
2308
  slipCapBps,
2292
2309
  compareVenues,
2310
+ sellCacheScope,
2293
2311
  deepEstimate,
2294
2312
  enabled = true,
2295
2313
  staleTimeMs = SMART_ROUTE_STALE_TIME_MS,
@@ -2298,7 +2316,7 @@ function useSmartRoute(options) {
2298
2316
  const resolvedVenueMarketOutcomeId = (_a = venueMarketOutcomeId != null ? venueMarketOutcomeId : venueMarketId) != null ? _a : outcomeId;
2299
2317
  const hasValidInput = (maxSpend != null ? maxSpend : 0) > 0 || (sellShares != null ? sellShares : 0) > 0;
2300
2318
  const queryEnabled = enabled && !!resolvedVenueMarketOutcomeId && hasValidInput;
2301
- const query = useQuery6({
2319
+ const query = useQuery7({
2302
2320
  queryKey: [
2303
2321
  "smart-route",
2304
2322
  resolvedVenueMarketOutcomeId,
@@ -2310,7 +2328,8 @@ function useSmartRoute(options) {
2310
2328
  chainBalances ? JSON.stringify(chainBalances) : null,
2311
2329
  slipCapBps != null ? slipCapBps : null,
2312
2330
  compareVenues != null ? compareVenues : false,
2313
- deepEstimate != null ? deepEstimate : false
2331
+ deepEstimate != null ? deepEstimate : false,
2332
+ ...tradeSide === "sell" ? [(_b = sellCacheScope == null ? void 0 : sellCacheScope.accountId) != null ? _b : null, (_c = sellCacheScope == null ? void 0 : sellCacheScope.positionVersion) != null ? _c : null] : []
2314
2333
  ],
2315
2334
  queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
2316
2335
  return client.getSmartRoute(
@@ -2332,7 +2351,7 @@ function useSmartRoute(options) {
2332
2351
  enabled: queryEnabled,
2333
2352
  staleTime: staleTimeMs,
2334
2353
  refetchInterval: (queryState) => {
2335
- var _a2, _b2, _c, _d;
2354
+ var _a2, _b2, _c2, _d2;
2336
2355
  return resolveSmartRouteRefetchInterval({
2337
2356
  data: queryState.state.data,
2338
2357
  defaultIntervalMs: staleTimeMs,
@@ -2340,8 +2359,8 @@ function useSmartRoute(options) {
2340
2359
  isEditing: (_a2 = refreshContext == null ? void 0 : refreshContext.isEditing) != null ? _a2 : false,
2341
2360
  isInputValid: hasValidInput,
2342
2361
  isMarketOpen: (_b2 = refreshContext == null ? void 0 : refreshContext.isMarketOpen) != null ? _b2 : true,
2343
- isPanelActive: (_c = refreshContext == null ? void 0 : refreshContext.isPanelActive) != null ? _c : true,
2344
- isSubmitting: (_d = refreshContext == null ? void 0 : refreshContext.isSubmitting) != null ? _d : false,
2362
+ isPanelActive: (_c2 = refreshContext == null ? void 0 : refreshContext.isPanelActive) != null ? _c2 : true,
2363
+ isSubmitting: (_d2 = refreshContext == null ? void 0 : refreshContext.isSubmitting) != null ? _d2 : false,
2345
2364
  queryEnabled
2346
2365
  });
2347
2366
  },
@@ -2349,7 +2368,11 @@ function useSmartRoute(options) {
2349
2368
  refetchOnWindowFocus: false,
2350
2369
  refetchIntervalInBackground: false,
2351
2370
  retry: 1,
2352
- placeholderData: keepPreviousData6
2371
+ // A previous SELL quote can carry a quoteId and position availability for
2372
+ // a different amount or position snapshot. Never expose it under a new
2373
+ // sell key while the replacement request is in flight. BUY retains the
2374
+ // existing no-flicker behavior.
2375
+ placeholderData: tradeSide === "sell" ? void 0 : keepPreviousData6
2353
2376
  });
2354
2377
  const error = query.error;
2355
2378
  let loadingReason = null;
@@ -2361,7 +2384,7 @@ function useSmartRoute(options) {
2361
2384
  }
2362
2385
  }
2363
2386
  return {
2364
- data: (_b = query.data) != null ? _b : null,
2387
+ data: (_d = query.data) != null ? _d : null,
2365
2388
  isLoading: query.isLoading,
2366
2389
  isFetching: query.isFetching,
2367
2390
  error: error instanceof Error ? error : error ? new Error(String(error)) : null,
@@ -2370,6 +2393,117 @@ function useSmartRoute(options) {
2370
2393
  };
2371
2394
  }
2372
2395
 
2396
+ // src/use-venue-sell-quotes.ts
2397
+ import { useQueries as useQueries6 } from "@tanstack/react-query";
2398
+ var getIsDocumentVisible2 = () => {
2399
+ if (typeof document === "undefined") return true;
2400
+ return document.visibilityState !== "hidden";
2401
+ };
2402
+ var getUniqueVenueRequests = (requests) => {
2403
+ const requestsByVenue = /* @__PURE__ */ new Map();
2404
+ for (const request of requests) {
2405
+ if (request.requestedSellShares <= 0 || request.sellShares <= 0 || request.availableShares <= 0) {
2406
+ continue;
2407
+ }
2408
+ if (requestsByVenue.has(request.venue)) continue;
2409
+ requestsByVenue.set(request.venue, request);
2410
+ }
2411
+ return [...requestsByVenue.values()].sort((left, right) => left.venue.localeCompare(right.venue));
2412
+ };
2413
+ var useVenueSellQuotes = (options) => {
2414
+ var _a, _b;
2415
+ const client = useAggClient();
2416
+ const {
2417
+ venueMarketOutcomeId,
2418
+ accountId,
2419
+ positionVersion,
2420
+ requests,
2421
+ mode,
2422
+ slipCapBps,
2423
+ enabled = true,
2424
+ staleTimeMs = SMART_ROUTE_STALE_TIME_MS,
2425
+ refreshContext
2426
+ } = options;
2427
+ const uniqueRequests = getUniqueVenueRequests(requests);
2428
+ const queries = useQueries6({
2429
+ queries: uniqueRequests.map((request) => {
2430
+ const hasValidInput = request.requestedSellShares > 0 && request.sellShares > 0 && request.availableShares > 0;
2431
+ const queryEnabled = enabled && !!venueMarketOutcomeId && !!accountId && hasValidInput;
2432
+ return {
2433
+ queryKey: [
2434
+ "smart-route",
2435
+ venueMarketOutcomeId,
2436
+ "venue-sell",
2437
+ {
2438
+ accountId: accountId != null ? accountId : null,
2439
+ positionVersion: positionVersion != null ? positionVersion : null,
2440
+ requestedSellShares: request.requestedSellShares,
2441
+ sellShares: request.sellShares,
2442
+ availableShares: request.availableShares,
2443
+ allowedVenues: [request.venue],
2444
+ compareVenues: false,
2445
+ tradeSide: "sell",
2446
+ mode: mode != null ? mode : null,
2447
+ slipCapBps: slipCapBps != null ? slipCapBps : null
2448
+ }
2449
+ ],
2450
+ queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
2451
+ return client.getSmartRoute(
2452
+ __spreadProps(__spreadValues({
2453
+ venueMarketOutcomeId,
2454
+ tradeSide: "sell"
2455
+ }, mode ? { mode } : {}), {
2456
+ sellShares: request.sellShares,
2457
+ slipCapBps,
2458
+ allowedVenues: [request.venue]
2459
+ }),
2460
+ { signal }
2461
+ );
2462
+ }),
2463
+ enabled: queryEnabled,
2464
+ staleTime: staleTimeMs,
2465
+ refetchInterval: (queryState) => {
2466
+ var _a2, _b2, _c, _d;
2467
+ return resolveSmartRouteRefetchInterval({
2468
+ data: queryState.state.data,
2469
+ defaultIntervalMs: staleTimeMs,
2470
+ isDocumentVisible: getIsDocumentVisible2(),
2471
+ isEditing: (_a2 = refreshContext == null ? void 0 : refreshContext.isEditing) != null ? _a2 : false,
2472
+ isInputValid: hasValidInput,
2473
+ isMarketOpen: (_b2 = refreshContext == null ? void 0 : refreshContext.isMarketOpen) != null ? _b2 : true,
2474
+ isPanelActive: (_c = refreshContext == null ? void 0 : refreshContext.isPanelActive) != null ? _c : true,
2475
+ isSubmitting: (_d = refreshContext == null ? void 0 : refreshContext.isSubmitting) != null ? _d : false,
2476
+ queryEnabled
2477
+ });
2478
+ },
2479
+ gcTime: 6e4,
2480
+ refetchOnWindowFocus: false,
2481
+ refetchIntervalInBackground: false,
2482
+ retry: 1
2483
+ };
2484
+ })
2485
+ });
2486
+ const quotes = queries.map((query, index) => {
2487
+ var _a2;
2488
+ const queryError = query.error;
2489
+ return {
2490
+ request: uniqueRequests[index],
2491
+ data: (_a2 = query.data) != null ? _a2 : null,
2492
+ isLoading: query.isLoading,
2493
+ isFetching: query.isFetching,
2494
+ error: queryError instanceof Error ? queryError : queryError ? new Error(String(queryError)) : null,
2495
+ refetch: query.refetch
2496
+ };
2497
+ });
2498
+ return {
2499
+ quotes,
2500
+ isLoading: quotes.some((quote) => quote.isLoading),
2501
+ isFetching: quotes.some((quote) => quote.isFetching),
2502
+ error: (_b = (_a = quotes.find((quote) => quote.error)) == null ? void 0 : _a.error) != null ? _b : null,
2503
+ refetch: () => Promise.all(quotes.map((quote) => quote.refetch()))
2504
+ };
2505
+ };
2506
+
2373
2507
  // src/use-user-holdings.ts
2374
2508
  import { useInfiniteQuery as useInfiniteQuery6 } from "@tanstack/react-query";
2375
2509
  function useUserHoldings(options) {
@@ -2405,7 +2539,7 @@ function useUserHoldings(options) {
2405
2539
  import { useMemo as useMemo10 } from "react";
2406
2540
 
2407
2541
  // src/use-venue-event.ts
2408
- import { useQuery as useQuery7 } from "@tanstack/react-query";
2542
+ import { useQuery as useQuery8 } from "@tanstack/react-query";
2409
2543
  var RESOLUTION_POLL_MS = 15e3;
2410
2544
  var RESOLUTION_POLL_MAX_PAST_END_MS = 60 * 6e4;
2411
2545
  function resolutionPollInterval(event) {
@@ -2423,7 +2557,7 @@ function useVenueEvent(options) {
2423
2557
  var _a;
2424
2558
  const client = useAggClient();
2425
2559
  const { eventId, enabled = true } = options;
2426
- const query = useQuery7({
2560
+ const query = useQuery8({
2427
2561
  queryKey: ["venue-event", eventId],
2428
2562
  queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
2429
2563
  return client.getVenueEventById(eventId, { signal });
@@ -2714,7 +2848,7 @@ function useVenueEvents(options) {
2714
2848
  }
2715
2849
 
2716
2850
  // src/use-venue-market-midpoints.ts
2717
- import { keepPreviousData as keepPreviousData8, useQuery as useQuery8 } from "@tanstack/react-query";
2851
+ import { keepPreviousData as keepPreviousData8, useQuery as useQuery9 } from "@tanstack/react-query";
2718
2852
  var normalizeVenueMarketIds2 = (venueMarketIds) => {
2719
2853
  return [
2720
2854
  ...new Set(venueMarketIds.map((venueMarketId) => venueMarketId.trim()).filter(Boolean))
@@ -2753,7 +2887,7 @@ function useVenueMarketMidpoints(options) {
2753
2887
  const enabled = (_a = options.enabled) != null ? _a : true;
2754
2888
  const requestedVenueMarketIds = normalizeVenueMarketIds2(options.venueMarketIds);
2755
2889
  const maxMidpointIdsPerRequest = (_b = options.maxMidpointIdsPerRequest) != null ? _b : configuredMaxMidpointIdsPerRequest;
2756
- const query = useQuery8({
2890
+ const query = useQuery9({
2757
2891
  queryKey: requestedVenueMarketIds.length ? ["venue-market-midpoints", requestedVenueMarketIds, maxMidpointIdsPerRequest] : ["venue-market-midpoints", "__disabled__"],
2758
2892
  queryFn: (_0) => __async(null, [_0], function* ({ signal }) {
2759
2893
  if (requestedVenueMarketIds.length === 0) {
@@ -3020,12 +3154,12 @@ function useVisibleIds(options = {}) {
3020
3154
  }
3021
3155
 
3022
3156
  // src/use-app-config.ts
3023
- import { useQuery as useQuery9, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
3157
+ import { useQuery as useQuery10, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
3024
3158
  var FIVE_MINUTES = 5 * 60 * 1e3;
3025
3159
  var APP_CONFIG_QUERY_KEY = ["agg", "app-config"];
3026
3160
  function useAppConfig() {
3027
3161
  const client = useAggClient();
3028
- const query = useQuery9({
3162
+ const query = useQuery10({
3029
3163
  queryKey: APP_CONFIG_QUERY_KEY,
3030
3164
  queryFn: () => client.getAppConfig(),
3031
3165
  staleTime: FIVE_MINUTES
@@ -3038,7 +3172,7 @@ function useAppConfig() {
3038
3172
  }
3039
3173
  function useCachedAppConfig() {
3040
3174
  const queryClient = useQueryClient2();
3041
- const query = useQuery9({
3175
+ const query = useQuery10({
3042
3176
  queryKey: APP_CONFIG_QUERY_KEY,
3043
3177
  enabled: false,
3044
3178
  initialData: () => queryClient.getQueryData(APP_CONFIG_QUERY_KEY),
@@ -3194,8 +3328,10 @@ export {
3194
3328
  useUserHoldings,
3195
3329
  useVenueEvent,
3196
3330
  useVenueEvents,
3331
+ useVenueKeyStatus,
3197
3332
  useVenueMarketMidpoints,
3198
3333
  useVenueMarkets,
3334
+ useVenueSellQuotes,
3199
3335
  useViewportMidpoints,
3200
3336
  useVisibleIds,
3201
3337
  useWithdrawEstimate,
@@ -3203,5 +3339,6 @@ export {
3203
3339
  useWithdrawManaged,
3204
3340
  useWithdrawPreview,
3205
3341
  useWithdrawalLifecycle,
3206
- userActivityQueryKeys
3342
+ userActivityQueryKeys,
3343
+ venueKeyQueryKeys
3207
3344
  };
package/dist/withdraw.js CHANGED
@@ -338,6 +338,8 @@ var enUsLabels = {
338
338
  balance: {
339
339
  availableBalance: "Available Balance",
340
340
  reservedForOpenOrders: (amount) => `${amount} reserved for open orders`,
341
+ positionsValue: "Positions Value",
342
+ kalshiBalance: "Kalshi Balance",
341
343
  balanceByNetwork: "Balance by network",
342
344
  paperModeNetwork: "Paper",
343
345
  paperModeWarning: "Paper mode is enabled. These are simulated funds for paper trading.",
@@ -672,6 +674,24 @@ var enUsLabels = {
672
674
  noBidsAboveMinPrice: "No venue bids above the minimum price.",
673
675
  signInToTrade: "Sign in to trade",
674
676
  deposit: "Deposit",
677
+ addFundsToKalshi: "Add funds to Kalshi",
678
+ fundKalshiModal: {
679
+ ariaLabel: "Fund your Kalshi account",
680
+ title: "Fund Your Kalshi Account",
681
+ description: "Kalshi manages its own account balances, so funds can't be deposited through agg.market. Add funds directly in Kalshi, then return here to trade with your updated balance.",
682
+ howItWorks: "How it works",
683
+ kalshiLinkLabel: "Kalshi",
684
+ kalshiUrl: "https://kalshi.com",
685
+ firstStepPrefix: "Go to",
686
+ firstStepSuffix: "and sign in to your account.",
687
+ remainingSteps: [
688
+ "Click Add Funds.",
689
+ "Complete your deposit using your preferred payment method.",
690
+ "Return here - your Kalshi balance will be available automatically."
691
+ ],
692
+ doItLater: "I'll do it later",
693
+ done: "Done"
694
+ },
675
695
  kycRequired: "Verify to trade Kalshi",
676
696
  kycNotVerifiedTooltip: "You have not been verified yet",
677
697
  kycVerify: "Verify Identity",
@@ -682,6 +702,10 @@ var enUsLabels = {
682
702
  kycSuccessTitle: "Verification successful",
683
703
  kycSuccessDescription: "Your identity has been confirmed and you now have full access to trade on Kalshi markets.",
684
704
  kycSuccessDone: "Done",
705
+ connectKalshi: "Connect to trade Kalshi",
706
+ tradingAccessVenues: "Venues",
707
+ tradingAccessAvailable: "Available",
708
+ tradingAccessAddKalshiAccount: "Add Kalshi Account",
685
709
  outcome: (label) => `Outcome: ${label}`,
686
710
  smartRouting: "Smart Routing",
687
711
  orderTypeMarket: "Market",
@@ -873,6 +897,11 @@ var enUsLabels = {
873
897
  cancel: "Cancel",
874
898
  verifyConnection: "Verify Connection"
875
899
  },
900
+ success: {
901
+ title: "Kalshi Account Connected",
902
+ description: "Your Kalshi account is now connected to AGG. You can start trading Kalshi markets.",
903
+ done: "Done"
904
+ },
876
905
  fallbackError: "Verification failed. Please check your credentials and try again."
877
906
  }
878
907
  },
@@ -922,6 +951,9 @@ var enUsLabels = {
922
951
  moreMarketsTitle: "More markets",
923
952
  gameLinesTab: "Game Lines",
924
953
  halvesTab: "Halves",
954
+ quartersTab: "Quarters",
955
+ setsTab: "Sets",
956
+ playerPropsTab: "Player Props",
925
957
  exactScoreTab: "Exact Score",
926
958
  cornersTab: "Corners",
927
959
  goalsTab: "Goals",
package/dist/withdraw.mjs CHANGED
@@ -3,12 +3,12 @@ import {
3
3
  useWithdrawFlow,
4
4
  useWithdrawPreview,
5
5
  useWithdrawalLifecycle
6
- } from "./chunk-PK2JGXQV.mjs";
6
+ } from "./chunk-DP6VYGAX.mjs";
7
7
  import {
8
8
  useDepositAddresses,
9
9
  useManagedBalances,
10
10
  useWithdrawManaged
11
- } from "./chunk-5NJBAP42.mjs";
11
+ } from "./chunk-TJRQ55UC.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": "2.5.1",
3
+ "version": "2.6.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",