@agg-build/ui 4.2.0 → 4.4.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.
Files changed (64) hide show
  1. package/README.md +21 -16
  2. package/dist/{chunk-DNPDXL2D.mjs → chunk-64BBTXFE.mjs} +333 -102
  3. package/dist/{chunk-WDCH4RRS.mjs → chunk-6STRIKUA.mjs} +1 -1
  4. package/dist/{chunk-FTL25XKE.mjs → chunk-734VTGCV.mjs} +1 -1
  5. package/dist/{chunk-QW7VFURU.mjs → chunk-N7UPPT5J.mjs} +53 -3
  6. package/dist/{chunk-6X6Y4INU.mjs → chunk-UCU2XCV5.mjs} +2 -2
  7. package/dist/{chunk-GNEFI4SO.mjs → chunk-V5CRUO6S.mjs} +637 -380
  8. package/dist/{chunk-UDBHAZJJ.mjs → chunk-WW5QKNIM.mjs} +270 -123
  9. package/dist/events.js +1061 -645
  10. package/dist/events.mjs +6 -4
  11. package/dist/index.js +2923 -2251
  12. package/dist/index.mjs +12 -8
  13. package/dist/modals.js +9 -2
  14. package/dist/modals.mjs +3 -3
  15. package/dist/pages.js +2391 -1721
  16. package/dist/pages.mjs +8 -6
  17. package/dist/primitives.js +30 -3
  18. package/dist/primitives.mjs +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/tailwind.css +1 -1
  21. package/dist/trading.js +330 -99
  22. package/dist/trading.mjs +4 -4
  23. package/dist/types/events/index.d.mts +1 -0
  24. package/dist/types/events/index.d.ts +1 -0
  25. package/dist/types/events/item-details/event-list-item-details-market-selector.d.mts +4 -1
  26. package/dist/types/events/item-details/event-list-item-details-market-selector.d.ts +4 -1
  27. package/dist/types/events/item-details/event-list-item-details.types.d.mts +25 -1
  28. package/dist/types/events/item-details/event-list-item-details.types.d.ts +25 -1
  29. package/dist/types/events/item-details/index.d.mts +1 -1
  30. package/dist/types/events/item-details/index.d.ts +1 -1
  31. package/dist/types/events/market-details/index.d.mts +1 -1
  32. package/dist/types/events/market-details/index.d.ts +1 -1
  33. package/dist/types/events/market-details/market-details.types.d.mts +4 -0
  34. package/dist/types/events/market-details/market-details.types.d.ts +4 -0
  35. package/dist/types/events/shared/format-event-title.d.mts +9 -1
  36. package/dist/types/events/shared/format-event-title.d.ts +9 -1
  37. package/dist/types/events/shared/format-sports-event-time.d.mts +2 -0
  38. package/dist/types/events/shared/format-sports-event-time.d.ts +2 -0
  39. package/dist/types/events/shared/sports-live-score.d.mts +10 -0
  40. package/dist/types/events/shared/sports-live-score.d.ts +10 -0
  41. package/dist/types/pages/event-market/event-market.types.d.mts +4 -0
  42. package/dist/types/pages/event-market/event-market.types.d.ts +4 -0
  43. package/dist/types/pages/event-market/index.d.mts +1 -0
  44. package/dist/types/pages/event-market/index.d.ts +1 -0
  45. package/dist/types/pages/user-profile/components/available-balance-card.d.mts +5 -0
  46. package/dist/types/pages/user-profile/components/available-balance-card.d.ts +5 -0
  47. package/dist/types/pages/user-profile/components/open-order-row.d.mts +1 -0
  48. package/dist/types/pages/user-profile/components/open-order-row.d.ts +1 -0
  49. package/dist/types/pages/user-profile/components/positions-activity.d.mts +1 -1
  50. package/dist/types/pages/user-profile/components/positions-activity.d.ts +1 -1
  51. package/dist/types/pages/user-profile/user-profile.types.d.mts +1 -1
  52. package/dist/types/pages/user-profile/user-profile.types.d.ts +1 -1
  53. package/dist/types/trading/place-order/index.d.mts +1 -1
  54. package/dist/types/trading/place-order/index.d.ts +1 -1
  55. package/dist/types/trading/place-order/index.place-order.execution-steps.d.mts +13 -1
  56. package/dist/types/trading/place-order/index.place-order.execution-steps.d.ts +13 -1
  57. package/dist/types/trading/place-order/index.place-order.execution-view.d.mts +2 -1
  58. package/dist/types/trading/place-order/index.place-order.execution-view.d.ts +2 -1
  59. package/dist/types/trading/place-order/index.place-order.types.d.mts +9 -0
  60. package/dist/types/trading/place-order/index.place-order.types.d.ts +9 -0
  61. package/dist/types/trading/place-order/index.place-order.utils.d.mts +6 -0
  62. package/dist/types/trading/place-order/index.place-order.utils.d.ts +6 -0
  63. package/package.json +3 -3
  64. /package/dist/{chunk-KHHFHXXD.mjs → chunk-JH4B3ZHQ.mjs} +0 -0
package/dist/trading.mjs CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  parseVenue,
13
13
  useClaimWinnings,
14
14
  useResolvedMarketClaim
15
- } from "./chunk-DNPDXL2D.mjs";
15
+ } from "./chunk-64BBTXFE.mjs";
16
16
  import {
17
17
  SETTLEMENT_SECTION_ID,
18
18
  Settlement,
@@ -30,9 +30,9 @@ import {
30
30
  prepareSettlementDifferences,
31
31
  resolveDifferenceIconClassName,
32
32
  useEventTradingContext
33
- } from "./chunk-WDCH4RRS.mjs";
34
- import "./chunk-FTL25XKE.mjs";
35
- import "./chunk-QW7VFURU.mjs";
33
+ } from "./chunk-6STRIKUA.mjs";
34
+ import "./chunk-734VTGCV.mjs";
35
+ import "./chunk-N7UPPT5J.mjs";
36
36
  export {
37
37
  FundKalshiModal,
38
38
  PlaceOrder,
@@ -1,5 +1,6 @@
1
1
  export * from "./item";
2
2
  export * from "./item-details";
3
+ export * from "./shared/sports-live-score";
3
4
  export * from "./market-details";
4
5
  export * from "./orderbook";
5
6
  export * from "./list";
@@ -1,5 +1,6 @@
1
1
  export * from "./item";
2
2
  export * from "./item-details";
3
+ export * from "./shared/sports-live-score";
3
4
  export * from "./market-details";
4
5
  export * from "./orderbook";
5
6
  export * from "./list";
@@ -2,9 +2,12 @@ export type MarketPillOption = {
2
2
  value: string;
3
3
  label: string;
4
4
  };
5
- export declare const EventListItemDetailsMarketSelector: ({ className, options, selectedValue, onChange, }: {
5
+ export declare const EventListItemDetailsMarketSelector: ({ className, options, browseOptions, selectedValue, liveValue, alwaysShowMore, onChange, }: {
6
6
  className?: string;
7
7
  options: MarketPillOption[];
8
+ browseOptions?: MarketPillOption[];
8
9
  selectedValue: string;
10
+ liveValue?: string;
11
+ alwaysShowMore?: boolean;
9
12
  onChange: (marketId: string) => void;
10
13
  }) => JSX.Element;
@@ -2,9 +2,12 @@ export type MarketPillOption = {
2
2
  value: string;
3
3
  label: string;
4
4
  };
5
- export declare const EventListItemDetailsMarketSelector: ({ className, options, selectedValue, onChange, }: {
5
+ export declare const EventListItemDetailsMarketSelector: ({ className, options, browseOptions, selectedValue, liveValue, alwaysShowMore, onChange, }: {
6
6
  className?: string;
7
7
  options: MarketPillOption[];
8
+ browseOptions?: MarketPillOption[];
8
9
  selectedValue: string;
10
+ liveValue?: string;
11
+ alwaysShowMore?: boolean;
9
12
  onChange: (marketId: string) => void;
10
13
  }) => JSX.Element;
@@ -1,4 +1,5 @@
1
- import type { ChartTimeRange, EventTradingState, UseMidpointsResult } from "@agg-build/hooks";
1
+ import type { ChartTimeRange, EventTradingState, SportsLiveState, UseMidpointsResult } from "@agg-build/hooks";
2
+ import type { RecurringCryptoDuration } from "@agg-build/sdk";
2
3
  import type { LineChartPoint, LineChartType } from "../../primitives/chart";
3
4
  import type { EventListItemVenueInfoMap, VenueEventWithMarkets } from "../item/event-list-item.types";
4
5
  import type { OutcomeByVenue } from "./event-list-item-details.utils";
@@ -11,12 +12,31 @@ export type EventListItemDetailsStat = {
11
12
  delta?: string;
12
13
  deltaTone?: "positive" | "negative" | "neutral";
13
14
  };
15
+ export type EventListItemDetailsRecurringMarketOption = {
16
+ value: string;
17
+ label: string;
18
+ };
19
+ export type EventListItemDetailsRecurringMarkets = {
20
+ visibleOptions: EventListItemDetailsRecurringMarketOption[];
21
+ browseOptions: EventListItemDetailsRecurringMarketOption[];
22
+ selectedValue: string;
23
+ liveValue?: string;
24
+ duration?: RecurringCryptoDuration;
25
+ windowLabel: string | null;
26
+ countdownLabel: string | null;
27
+ countdownAriaLabel: string | null;
28
+ isResolving: boolean;
29
+ canGoToLive: boolean;
30
+ onSelect: (eventId: string) => void;
31
+ onGoToLive: () => void;
32
+ };
14
33
  export type EventListItemDetailsClassNames = Partial<{
15
34
  root: string;
16
35
  header: string;
17
36
  title: string;
18
37
  headerPills: string;
19
38
  headerStats: string;
39
+ sportsLive: string;
20
40
  summary: string;
21
41
  outcomeBadges: string;
22
42
  segmentedControl: string;
@@ -47,6 +67,10 @@ export type EventListItemDetailsBaseProps = {
47
67
  onClick?: (event?: EventListItemDetailsEvent) => void;
48
68
  /** Pre-fetched midpoint data (best price included) passed from parent. Optional for backward compatibility. */
49
69
  midpointsResult?: UseMidpointsResult;
70
+ /** Recurring-market navigation and status presentation for the event header. */
71
+ recurringMarkets?: EventListItemDetailsRecurringMarkets;
72
+ /** Normalized live sports state supplied by the sports page query. */
73
+ sportsLiveState?: SportsLiveState | null;
50
74
  };
51
75
  export type EventListItemDetailsLoadingProps = EventListItemDetailsBaseProps & {
52
76
  /** Forces the details component into its loading state. */
@@ -1,4 +1,5 @@
1
- import type { ChartTimeRange, EventTradingState, UseMidpointsResult } from "@agg-build/hooks";
1
+ import type { ChartTimeRange, EventTradingState, SportsLiveState, UseMidpointsResult } from "@agg-build/hooks";
2
+ import type { RecurringCryptoDuration } from "@agg-build/sdk";
2
3
  import type { LineChartPoint, LineChartType } from "../../primitives/chart";
3
4
  import type { EventListItemVenueInfoMap, VenueEventWithMarkets } from "../item/event-list-item.types";
4
5
  import type { OutcomeByVenue } from "./event-list-item-details.utils";
@@ -11,12 +12,31 @@ export type EventListItemDetailsStat = {
11
12
  delta?: string;
12
13
  deltaTone?: "positive" | "negative" | "neutral";
13
14
  };
15
+ export type EventListItemDetailsRecurringMarketOption = {
16
+ value: string;
17
+ label: string;
18
+ };
19
+ export type EventListItemDetailsRecurringMarkets = {
20
+ visibleOptions: EventListItemDetailsRecurringMarketOption[];
21
+ browseOptions: EventListItemDetailsRecurringMarketOption[];
22
+ selectedValue: string;
23
+ liveValue?: string;
24
+ duration?: RecurringCryptoDuration;
25
+ windowLabel: string | null;
26
+ countdownLabel: string | null;
27
+ countdownAriaLabel: string | null;
28
+ isResolving: boolean;
29
+ canGoToLive: boolean;
30
+ onSelect: (eventId: string) => void;
31
+ onGoToLive: () => void;
32
+ };
14
33
  export type EventListItemDetailsClassNames = Partial<{
15
34
  root: string;
16
35
  header: string;
17
36
  title: string;
18
37
  headerPills: string;
19
38
  headerStats: string;
39
+ sportsLive: string;
20
40
  summary: string;
21
41
  outcomeBadges: string;
22
42
  segmentedControl: string;
@@ -47,6 +67,10 @@ export type EventListItemDetailsBaseProps = {
47
67
  onClick?: (event?: EventListItemDetailsEvent) => void;
48
68
  /** Pre-fetched midpoint data (best price included) passed from parent. Optional for backward compatibility. */
49
69
  midpointsResult?: UseMidpointsResult;
70
+ /** Recurring-market navigation and status presentation for the event header. */
71
+ recurringMarkets?: EventListItemDetailsRecurringMarkets;
72
+ /** Normalized live sports state supplied by the sports page query. */
73
+ sportsLiveState?: SportsLiveState | null;
50
74
  };
51
75
  export type EventListItemDetailsLoadingProps = EventListItemDetailsBaseProps & {
52
76
  /** Forces the details component into its loading state. */
@@ -1,5 +1,5 @@
1
1
  import type { EventListItemDetailsContentProps, EventListItemDetailsProps } from "./event-list-item-details.types";
2
- export type { EventListItemDetailsClassNames, EventListItemDetailsEvent, EventListItemDetailsProps, EventListItemDetailsStat, EventListItemDetailsTimeRange, EventListItemDetailsWithEventIdProps, } from "./event-list-item-details.types";
2
+ export type { EventListItemDetailsClassNames, EventListItemDetailsEvent, EventListItemDetailsProps, EventListItemDetailsRecurringMarketOption, EventListItemDetailsRecurringMarkets, EventListItemDetailsStat, EventListItemDetailsTimeRange, EventListItemDetailsWithEventIdProps, } from "./event-list-item-details.types";
3
3
  export { SettlementSummary } from "./settlement-summary";
4
4
  export type { SettlementSummaryProps } from "./settlement-summary";
5
5
  export declare const resolveEventDetailsSyncKey: (event: EventListItemDetailsContentProps["event"]) => string;
@@ -1,5 +1,5 @@
1
1
  import type { EventListItemDetailsContentProps, EventListItemDetailsProps } from "./event-list-item-details.types";
2
- export type { EventListItemDetailsClassNames, EventListItemDetailsEvent, EventListItemDetailsProps, EventListItemDetailsStat, EventListItemDetailsTimeRange, EventListItemDetailsWithEventIdProps, } from "./event-list-item-details.types";
2
+ export type { EventListItemDetailsClassNames, EventListItemDetailsEvent, EventListItemDetailsProps, EventListItemDetailsRecurringMarketOption, EventListItemDetailsRecurringMarkets, EventListItemDetailsStat, EventListItemDetailsTimeRange, EventListItemDetailsWithEventIdProps, } from "./event-list-item-details.types";
3
3
  export { SettlementSummary } from "./settlement-summary";
4
4
  export type { SettlementSummaryProps } from "./settlement-summary";
5
5
  export declare const resolveEventDetailsSyncKey: (event: EventListItemDetailsContentProps["event"]) => string;
@@ -7,6 +7,6 @@ export declare const MarketDetails: {
7
7
  displayName: string;
8
8
  };
9
9
  export declare const MarketDetailsList: {
10
- ({ eventId, markets: providedMarkets, eventTradingState, onClick, onOutcomeSelect, onExpandedMarketChange, autoSelectFallbackMarket, defaultTab, classNames, live, midpointsResult, }: MarketDetailsListProps): JSX.Element;
10
+ ({ eventId, markets: providedMarkets, eventTradingState, onClick, onOutcomeSelect, onExpandedMarketChange, autoSelectFallbackMarket, defaultTab, classNames, live, showResolvingState, midpointsResult, }: MarketDetailsListProps): JSX.Element;
11
11
  displayName: string;
12
12
  };
@@ -7,6 +7,6 @@ export declare const MarketDetails: {
7
7
  displayName: string;
8
8
  };
9
9
  export declare const MarketDetailsList: {
10
- ({ eventId, markets: providedMarkets, eventTradingState, onClick, onOutcomeSelect, onExpandedMarketChange, autoSelectFallbackMarket, defaultTab, classNames, live, midpointsResult, }: MarketDetailsListProps): JSX.Element;
10
+ ({ eventId, markets: providedMarkets, eventTradingState, onClick, onOutcomeSelect, onExpandedMarketChange, autoSelectFallbackMarket, defaultTab, classNames, live, showResolvingState, midpointsResult, }: MarketDetailsListProps): JSX.Element;
11
11
  displayName: string;
12
12
  };
@@ -84,6 +84,8 @@ export type MarketDetailsBaseProps = {
84
84
  * (e.g. useEventOrderbookData on the event page).
85
85
  * Defaults to the global `enableLiveUpdates` feature flag. */
86
86
  live?: boolean;
87
+ /** Replace closed-market actions with the recurring settlement-pending state. */
88
+ showResolvingState?: boolean;
87
89
  };
88
90
  export type MarketDetailsLoadingProps = MarketDetailsBaseProps & {
89
91
  /** Forces the market details component into its loading state. */
@@ -167,6 +169,8 @@ export type MarketDetailsListProps = {
167
169
  /** Override live WS subscriptions for child MarketDetails.
168
170
  * Set to `false` when a parent manages subscriptions centrally. */
169
171
  live?: boolean;
172
+ /** Include the closed recurring market and render it as settlement pending. */
173
+ showResolvingState?: boolean;
170
174
  /**
171
175
  * Pre-fetched midpoint data (best price included) passed from parent.
172
176
  * Optional for backward compatibility. When provided, reduces unnecessary
@@ -84,6 +84,8 @@ export type MarketDetailsBaseProps = {
84
84
  * (e.g. useEventOrderbookData on the event page).
85
85
  * Defaults to the global `enableLiveUpdates` feature flag. */
86
86
  live?: boolean;
87
+ /** Replace closed-market actions with the recurring settlement-pending state. */
88
+ showResolvingState?: boolean;
87
89
  };
88
90
  export type MarketDetailsLoadingProps = MarketDetailsBaseProps & {
89
91
  /** Forces the market details component into its loading state. */
@@ -167,6 +169,8 @@ export type MarketDetailsListProps = {
167
169
  /** Override live WS subscriptions for child MarketDetails.
168
170
  * Set to `false` when a parent manages subscriptions centrally. */
169
171
  live?: boolean;
172
+ /** Include the closed recurring market and render it as settlement pending. */
173
+ showResolvingState?: boolean;
170
174
  /**
171
175
  * Pre-fetched midpoint data (best price included) passed from parent.
172
176
  * Optional for backward compatibility. When provided, reduces unnecessary
@@ -1,3 +1,4 @@
1
+ import type { RecurringCryptoDuration } from "@agg-build/sdk";
1
2
  type EventCategoryLike = {
2
3
  id?: string | null;
3
4
  category?: {
@@ -18,6 +19,13 @@ type ResolveEventHeadingParams = {
18
19
  gameStartTime?: string | null;
19
20
  endDate?: string | null;
20
21
  venueMarkets?: readonly EventMarketLike[] | null;
22
+ /**
23
+ * Explicit recurring crypto window start. Passing `null` still marks the
24
+ * heading as recurring (and strips its embedded date) when the timestamp is
25
+ * temporarily unavailable.
26
+ */
27
+ recurringCryptoWindowStart?: number | null;
28
+ recurringCryptoDuration?: RecurringCryptoDuration;
21
29
  };
22
30
  type EventHeading = {
23
31
  title: string;
@@ -35,5 +43,5 @@ export declare const isSportEvent: (categories: readonly EventCategoryLike[] | n
35
43
  export declare const shouldDisplaySportsEventTimestamp: ({ categories, structureType, venueMarkets, }: Pick<ResolveEventHeadingParams, "categories" | "structureType" | "venueMarkets">) => boolean;
36
44
  export declare const resolveSportsEventTimestamp: ({ gameStartTime, endDate, }: Pick<ResolveEventHeadingParams, "gameStartTime" | "endDate">) => string | null;
37
45
  export declare const resolveEventTimestampLabel: ({ categories, structureType, gameStartTime, endDate, venueMarkets, }: ResolveEventHeadingParams) => string | null;
38
- export declare const resolveEventHeading: ({ title, categories, structureType, gameStartTime, endDate, venueMarkets, }: ResolveEventHeadingParams) => EventHeading;
46
+ export declare const resolveEventHeading: ({ title, categories, structureType, gameStartTime, endDate, venueMarkets, recurringCryptoWindowStart, recurringCryptoDuration, }: ResolveEventHeadingParams) => EventHeading;
39
47
  export {};
@@ -1,3 +1,4 @@
1
+ import type { RecurringCryptoDuration } from "@agg-build/sdk";
1
2
  type EventCategoryLike = {
2
3
  id?: string | null;
3
4
  category?: {
@@ -18,6 +19,13 @@ type ResolveEventHeadingParams = {
18
19
  gameStartTime?: string | null;
19
20
  endDate?: string | null;
20
21
  venueMarkets?: readonly EventMarketLike[] | null;
22
+ /**
23
+ * Explicit recurring crypto window start. Passing `null` still marks the
24
+ * heading as recurring (and strips its embedded date) when the timestamp is
25
+ * temporarily unavailable.
26
+ */
27
+ recurringCryptoWindowStart?: number | null;
28
+ recurringCryptoDuration?: RecurringCryptoDuration;
21
29
  };
22
30
  type EventHeading = {
23
31
  title: string;
@@ -35,5 +43,5 @@ export declare const isSportEvent: (categories: readonly EventCategoryLike[] | n
35
43
  export declare const shouldDisplaySportsEventTimestamp: ({ categories, structureType, venueMarkets, }: Pick<ResolveEventHeadingParams, "categories" | "structureType" | "venueMarkets">) => boolean;
36
44
  export declare const resolveSportsEventTimestamp: ({ gameStartTime, endDate, }: Pick<ResolveEventHeadingParams, "gameStartTime" | "endDate">) => string | null;
37
45
  export declare const resolveEventTimestampLabel: ({ categories, structureType, gameStartTime, endDate, venueMarkets, }: ResolveEventHeadingParams) => string | null;
38
- export declare const resolveEventHeading: ({ title, categories, structureType, gameStartTime, endDate, venueMarkets, }: ResolveEventHeadingParams) => EventHeading;
46
+ export declare const resolveEventHeading: ({ title, categories, structureType, gameStartTime, endDate, venueMarkets, recurringCryptoWindowStart, recurringCryptoDuration, }: ResolveEventHeadingParams) => EventHeading;
39
47
  export {};
@@ -1,2 +1,4 @@
1
1
  export declare const SPORTS_EVENT_TIMEZONE = "America/New_York";
2
2
  export declare const formatSportsEventTimeEt: (value: string) => string | null;
3
+ export declare const formatRecurringMarketPillTimeEt: (value: string) => string | null;
4
+ export declare const formatRecurringMarketWindowTimeEt: (windowStart: string, windowEnd: string) => string | null;
@@ -1,2 +1,4 @@
1
1
  export declare const SPORTS_EVENT_TIMEZONE = "America/New_York";
2
2
  export declare const formatSportsEventTimeEt: (value: string) => string | null;
3
+ export declare const formatRecurringMarketPillTimeEt: (value: string) => string | null;
4
+ export declare const formatRecurringMarketWindowTimeEt: (windowStart: string, windowEnd: string) => string | null;
@@ -0,0 +1,10 @@
1
+ import { type SportsLiveState } from "@agg-build/hooks";
2
+ export type SportsLiveScoreProps = {
3
+ state?: SportsLiveState | null;
4
+ variant?: "card" | "detail";
5
+ className?: string;
6
+ };
7
+ export declare const SportsLiveScore: {
8
+ ({ state, variant, className, }: SportsLiveScoreProps): JSX.Element | null;
9
+ displayName: string;
10
+ };
@@ -0,0 +1,10 @@
1
+ import { type SportsLiveState } from "@agg-build/hooks";
2
+ export type SportsLiveScoreProps = {
3
+ state?: SportsLiveState | null;
4
+ variant?: "card" | "detail";
5
+ className?: string;
6
+ };
7
+ export declare const SportsLiveScore: {
8
+ ({ state, variant, className, }: SportsLiveScoreProps): JSX.Element | null;
9
+ displayName: string;
10
+ };
@@ -62,6 +62,10 @@ export type EventMarketPageBaseProps = {
62
62
  ariaLabel?: string;
63
63
  /** Whether the page should render its loading state. */
64
64
  isLoading?: boolean;
65
+ /** Navigate between recurring event instances. Automatic transitions replace history. */
66
+ onRecurringMarketNavigate?: (eventId: string, options: {
67
+ replace: boolean;
68
+ }) => void;
65
69
  };
66
70
  export type EventMarketPageLoadingProps = EventMarketPageBaseProps & {
67
71
  /** Forces the page into its loading state. */
@@ -62,6 +62,10 @@ export type EventMarketPageBaseProps = {
62
62
  ariaLabel?: string;
63
63
  /** Whether the page should render its loading state. */
64
64
  isLoading?: boolean;
65
+ /** Navigate between recurring event instances. Automatic transitions replace history. */
66
+ onRecurringMarketNavigate?: (eventId: string, options: {
67
+ replace: boolean;
68
+ }) => void;
65
69
  };
66
70
  export type EventMarketPageLoadingProps = EventMarketPageBaseProps & {
67
71
  /** Forces the page into its loading state. */
@@ -1,5 +1,6 @@
1
1
  import type { EventMarketPageProps } from "./event-market.types";
2
2
  export type { EventMarketPageClassNames, EventMarketPageProps } from "./event-market.types";
3
+ export declare const formatRecurringCountdown: (remainingMs: number) => string | null;
3
4
  export declare const EventMarketPage: {
4
5
  (props: EventMarketPageProps & {
5
6
  onError?: (error: Error) => void;
@@ -1,5 +1,6 @@
1
1
  import type { EventMarketPageProps } from "./event-market.types";
2
2
  export type { EventMarketPageClassNames, EventMarketPageProps } from "./event-market.types";
3
+ export declare const formatRecurringCountdown: (remainingMs: number) => string | null;
3
4
  export declare const EventMarketPage: {
4
5
  (props: EventMarketPageProps & {
5
6
  onError?: (error: Error) => void;
@@ -1,4 +1,5 @@
1
1
  import type { Ref } from "react";
2
+ import type { VenueLogoName } from "../../../primitives/venue-logo/venue-logo.types";
2
3
  type ChainRow = {
3
4
  key: string;
4
5
  label: string;
@@ -15,6 +16,10 @@ type AvailableBalanceCardProps = {
15
16
  onManage?: () => void;
16
17
  manageButtonRef?: Ref<HTMLButtonElement>;
17
18
  };
19
+ /** Active managed-funding venues shown on a chain's balance row. */
20
+ export declare const venueLogosForChain: (chainId: string | number) => VenueLogoName[];
21
+ /** Whether the chain participates in venue funding or settlement, including historical support. */
22
+ export declare const isVenueBalanceChain: (chainId: string | number) => boolean;
18
23
  export declare const chainIconUrl: (label: string, key?: string) => string | undefined;
19
24
  export declare const AvailableBalanceCard: {
20
25
  ({ label, valueLabel, reservedValueLabel, chains, isLoading, className, onManage, manageButtonRef, }: AvailableBalanceCardProps): JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import type { Ref } from "react";
2
+ import type { VenueLogoName } from "../../../primitives/venue-logo/venue-logo.types";
2
3
  type ChainRow = {
3
4
  key: string;
4
5
  label: string;
@@ -15,6 +16,10 @@ type AvailableBalanceCardProps = {
15
16
  onManage?: () => void;
16
17
  manageButtonRef?: Ref<HTMLButtonElement>;
17
18
  };
19
+ /** Active managed-funding venues shown on a chain's balance row. */
20
+ export declare const venueLogosForChain: (chainId: string | number) => VenueLogoName[];
21
+ /** Whether the chain participates in venue funding or settlement, including historical support. */
22
+ export declare const isVenueBalanceChain: (chainId: string | number) => boolean;
18
23
  export declare const chainIconUrl: (label: string, key?: string) => string | undefined;
19
24
  export declare const AvailableBalanceCard: {
20
25
  ({ label, valueLabel, reservedValueLabel, chains, isLoading, className, onManage, manageButtonRef, }: AvailableBalanceCardProps): JSX.Element;
@@ -15,6 +15,7 @@ type OpenOrderRowProps = {
15
15
  expirationHeader?: string;
16
16
  };
17
17
  export declare const canCancelOpenOrder: (order: UserProfileOpenOrder) => boolean;
18
+ export declare const isPendingOpenOrder: (order: UserProfileOpenOrder) => boolean;
18
19
  export declare const OpenOrderRow: {
19
20
  ({ order, href, onClick, onCancel, isCancelling, cancelLabel, cancelAriaLabel, limitPriceHeader, filledHeader, totalHeader, expirationHeader, }: OpenOrderRowProps): JSX.Element;
20
21
  displayName: string;
@@ -15,6 +15,7 @@ type OpenOrderRowProps = {
15
15
  expirationHeader?: string;
16
16
  };
17
17
  export declare const canCancelOpenOrder: (order: UserProfileOpenOrder) => boolean;
18
+ export declare const isPendingOpenOrder: (order: UserProfileOpenOrder) => boolean;
18
19
  export declare const OpenOrderRow: {
19
20
  ({ order, href, onClick, onCancel, isCancelling, cancelLabel, cancelAriaLabel, limitPriceHeader, filledHeader, totalHeader, expirationHeader, }: OpenOrderRowProps): JSX.Element;
20
21
  displayName: string;
@@ -34,7 +34,7 @@ type PositionsActivityProps = {
34
34
  hasMoreOpenOrders?: boolean;
35
35
  isLoadingMoreOpenOrders?: boolean;
36
36
  onLoadMoreOpenOrders?: () => void;
37
- /** Whether the Open orders tab and its content are available. */
37
+ /** Whether the Open limit orders tab and its content are available. */
38
38
  showOpenOrders?: boolean;
39
39
  /**
40
40
  * Active tab. When provided, the component is controlled — `onTabChange` is
@@ -34,7 +34,7 @@ type PositionsActivityProps = {
34
34
  hasMoreOpenOrders?: boolean;
35
35
  isLoadingMoreOpenOrders?: boolean;
36
36
  onLoadMoreOpenOrders?: () => void;
37
- /** Whether the Open orders tab and its content are available. */
37
+ /** Whether the Open limit orders tab and its content are available. */
38
38
  showOpenOrders?: boolean;
39
39
  /**
40
40
  * Active tab. When provided, the component is controlled — `onTabChange` is
@@ -312,7 +312,7 @@ export interface UserProfilePageProps {
312
312
  tab?: UserProfileTabValue;
313
313
  /** Fires when the user clicks a tab. Use to reflect the change in your URL. */
314
314
  onTabChange?: (tab: UserProfileTabValue) => void;
315
- /** Open orders (resting / partially filled) */
315
+ /** Open limit orders (pending / resting / partially filled) */
316
316
  openOrders?: UserProfileOpenOrder[];
317
317
  /** Activity items */
318
318
  activities?: UserProfileActivity[];
@@ -312,7 +312,7 @@ export interface UserProfilePageProps {
312
312
  tab?: UserProfileTabValue;
313
313
  /** Fires when the user clicks a tab. Use to reflect the change in your URL. */
314
314
  onTabChange?: (tab: UserProfileTabValue) => void;
315
- /** Open orders (resting / partially filled) */
315
+ /** Open limit orders (pending / resting / partially filled) */
316
316
  openOrders?: UserProfileOpenOrder[];
317
317
  /** Activity items */
318
318
  activities?: UserProfileActivity[];
@@ -8,6 +8,6 @@ export type { PlaceOrderExecutionViewProps } from "./index.place-order.execution
8
8
  export type { ExecutionOrderGroup, ExecutionStep, ExecutionStepKind, ExecutionStepStatus, } from "./index.place-order.execution-steps";
9
9
  export type { PlaceOrderClassNames, PlaceOrderExecutionSummary, PlaceOrderResolvedClaimSummary, PlaceOrderTradingLabels, } from "./index.place-order.types";
10
10
  export declare const PlaceOrder: {
11
- ({ className, classNames, eventTradingState, executionMode, isLoading, isPrimaryActionDisabled, isPrimaryActionLoading, isQuotePanelActive, chainBalancesOverride, onAmountChange, onClose, onConnectKalshi, onOutcomeChange, onPrimaryAction, onBeforePrimaryAction, onTabChange, onSuccess, onError, onExecutionStateChange, resolvedClaim, midpointsResult, }: PlaceOrderProps): JSX.Element;
11
+ ({ className, classNames, eventTradingState, executionMode, isLoading, isPrimaryActionDisabled, isPrimaryActionLoading, isQuotePanelActive, chainBalancesOverride, onAmountChange, onClose, onConnectKalshi, onOutcomeChange, onPrimaryAction, onBeforePrimaryAction, onTabChange, onSuccess, onError, onExecutionStateChange, resolvedClaim, showResolvingState, midpointsResult, }: PlaceOrderProps): JSX.Element;
12
12
  displayName: string;
13
13
  };
@@ -8,6 +8,6 @@ export type { PlaceOrderExecutionViewProps } from "./index.place-order.execution
8
8
  export type { ExecutionOrderGroup, ExecutionStep, ExecutionStepKind, ExecutionStepStatus, } from "./index.place-order.execution-steps";
9
9
  export type { PlaceOrderClassNames, PlaceOrderExecutionSummary, PlaceOrderResolvedClaimSummary, PlaceOrderTradingLabels, } from "./index.place-order.types";
10
10
  export declare const PlaceOrder: {
11
- ({ className, classNames, eventTradingState, executionMode, isLoading, isPrimaryActionDisabled, isPrimaryActionLoading, isQuotePanelActive, chainBalancesOverride, onAmountChange, onClose, onConnectKalshi, onOutcomeChange, onPrimaryAction, onBeforePrimaryAction, onTabChange, onSuccess, onError, onExecutionStateChange, resolvedClaim, midpointsResult, }: PlaceOrderProps): JSX.Element;
11
+ ({ className, classNames, eventTradingState, executionMode, isLoading, isPrimaryActionDisabled, isPrimaryActionLoading, isQuotePanelActive, chainBalancesOverride, onAmountChange, onClose, onConnectKalshi, onOutcomeChange, onPrimaryAction, onBeforePrimaryAction, onTabChange, onSuccess, onError, onExecutionStateChange, resolvedClaim, showResolvingState, midpointsResult, }: PlaceOrderProps): JSX.Element;
12
12
  displayName: string;
13
13
  };
@@ -2,7 +2,7 @@ import type { ExecutionRawStepProgress, ExecutionTerminalOrderEvent } from "@agg
2
2
  import type { ExecutionStatusOrder, ExecutionStatusStep, SmartRouteResponse } from "@agg-build/sdk";
3
3
  import { type PlaceOrderTab, type TradingVenue } from "../types";
4
4
  import type { PlaceOrderTradingLabels } from "./index.place-order.types";
5
- export type ExecutionStepStatus = "not-started" | "loading" | "done";
5
+ export type ExecutionStepStatus = "not-started" | "loading" | "done" | "warning" | "failed";
6
6
  export type ExecutionStepKind = "submit" | "setup" | "bridge" | "fill";
7
7
  export type ExecutionStep = {
8
8
  id: string;
@@ -32,3 +32,15 @@ export type DeriveExecutionOrderGroupsArgs = {
32
32
  };
33
33
  export declare const deriveExecutionOrderGroups: ({ quoteData, labels, tradeSide, hasSubmissionResponse, executionSteps, executionOrders, rawExecutionSteps, terminalOrderEvents, forceCompleted, }: DeriveExecutionOrderGroupsArgs) => ExecutionOrderGroup[];
34
34
  export declare const flattenExecutionSteps: (groups: ExecutionOrderGroup[]) => ExecutionStep[];
35
+ export type CalculateExecutionProgressArgs = {
36
+ orderIds: string[];
37
+ submittedOrderIds?: string[];
38
+ executionSteps?: ExecutionStatusStep[];
39
+ executionOrders?: ExecutionStatusOrder[];
40
+ minimumProgress?: number;
41
+ };
42
+ /**
43
+ * Fixed-weight execution progress from canonical backend milestones.
44
+ * Display-only substeps can grow without changing the 20/20/20/40 denominator.
45
+ */
46
+ export declare const calculateExecutionProgress: ({ orderIds, submittedOrderIds, executionSteps, executionOrders, minimumProgress, }: CalculateExecutionProgressArgs) => number;
@@ -2,7 +2,7 @@ import type { ExecutionRawStepProgress, ExecutionTerminalOrderEvent } from "@agg
2
2
  import type { ExecutionStatusOrder, ExecutionStatusStep, SmartRouteResponse } from "@agg-build/sdk";
3
3
  import { type PlaceOrderTab, type TradingVenue } from "../types";
4
4
  import type { PlaceOrderTradingLabels } from "./index.place-order.types";
5
- export type ExecutionStepStatus = "not-started" | "loading" | "done";
5
+ export type ExecutionStepStatus = "not-started" | "loading" | "done" | "warning" | "failed";
6
6
  export type ExecutionStepKind = "submit" | "setup" | "bridge" | "fill";
7
7
  export type ExecutionStep = {
8
8
  id: string;
@@ -32,3 +32,15 @@ export type DeriveExecutionOrderGroupsArgs = {
32
32
  };
33
33
  export declare const deriveExecutionOrderGroups: ({ quoteData, labels, tradeSide, hasSubmissionResponse, executionSteps, executionOrders, rawExecutionSteps, terminalOrderEvents, forceCompleted, }: DeriveExecutionOrderGroupsArgs) => ExecutionOrderGroup[];
34
34
  export declare const flattenExecutionSteps: (groups: ExecutionOrderGroup[]) => ExecutionStep[];
35
+ export type CalculateExecutionProgressArgs = {
36
+ orderIds: string[];
37
+ submittedOrderIds?: string[];
38
+ executionSteps?: ExecutionStatusStep[];
39
+ executionOrders?: ExecutionStatusOrder[];
40
+ minimumProgress?: number;
41
+ };
42
+ /**
43
+ * Fixed-weight execution progress from canonical backend milestones.
44
+ * Display-only substeps can grow without changing the 20/20/20/40 denominator.
45
+ */
46
+ export declare const calculateExecutionProgress: ({ orderIds, submittedOrderIds, executionSteps, executionOrders, minimumProgress, }: CalculateExecutionProgressArgs) => number;
@@ -18,8 +18,9 @@ export type PlaceOrderExecutionViewProps = PlaceOrderExecutionHeaderProps & {
18
18
  enableAnimations: boolean;
19
19
  groups: ExecutionOrderGroup[];
20
20
  labels: PlaceOrderTradingLabels;
21
+ progress: number;
21
22
  };
22
23
  export declare const PlaceOrderExecutionView: {
23
- ({ className, classNames, enableAnimations, eventDateLabel, eventImage, eventTitle, groups, labels, }: PlaceOrderExecutionViewProps): JSX.Element;
24
+ ({ className, classNames, enableAnimations, eventDateLabel, eventImage, eventTitle, groups, labels, progress, }: PlaceOrderExecutionViewProps): JSX.Element;
24
25
  displayName: string;
25
26
  };
@@ -18,8 +18,9 @@ export type PlaceOrderExecutionViewProps = PlaceOrderExecutionHeaderProps & {
18
18
  enableAnimations: boolean;
19
19
  groups: ExecutionOrderGroup[];
20
20
  labels: PlaceOrderTradingLabels;
21
+ progress: number;
21
22
  };
22
23
  export declare const PlaceOrderExecutionView: {
23
- ({ className, classNames, enableAnimations, eventDateLabel, eventImage, eventTitle, groups, labels, }: PlaceOrderExecutionViewProps): JSX.Element;
24
+ ({ className, classNames, enableAnimations, eventDateLabel, eventImage, eventTitle, groups, labels, progress, }: PlaceOrderExecutionViewProps): JSX.Element;
24
25
  displayName: string;
25
26
  };
@@ -81,6 +81,8 @@ export type PlaceOrderProps = {
81
81
  onExecutionStateChange?: (state: PlaceOrderSubmissionProgressState) => void;
82
82
  /** Optional resolved-event claim summary shown in read-only state. */
83
83
  resolvedClaim?: PlaceOrderResolvedClaimSummary;
84
+ /** Render the settlement-pending state for a closed recurring market. */
85
+ showResolvingState?: boolean;
84
86
  /** Pre-fetched midpoint data (best price included) passed from parent. Optional for backward compatibility. */
85
87
  midpointsResult?: UseMidpointsResult;
86
88
  };
@@ -212,6 +214,12 @@ export type PlaceOrderFailureSummary = {
212
214
  kind: PlaceOrderFailureKind;
213
215
  /** Failed venue to pin when retrying the unfilled remainder of a split route. */
214
216
  retryVenue?: TradingVenue;
217
+ executionGroups?: ExecutionOrderGroup[];
218
+ result?: {
219
+ averagePriceLabel: string;
220
+ filledAmountLabel: string;
221
+ payoutLabel: string;
222
+ };
215
223
  steps: PlaceOrderFailureStep[];
216
224
  };
217
225
  export type ResolvePlaceOrderQuoteResultParams = {
@@ -239,6 +247,7 @@ export type ResolvePlaceOrderTabKeyParams = {
239
247
  export type PlaceOrderQuoteStatus = PlaceOrderStatus | undefined;
240
248
  export type PlaceOrderSubmissionProgressPhase = "finding-route" | "submitting" | "executing" | "success" | "failed";
241
249
  export type PlaceOrderExecutionSummary = {
250
+ resultState?: "success" | "partial";
242
251
  tradeSide?: PlaceOrderTab;
243
252
  shares: string;
244
253
  avgPrice: string;
@@ -81,6 +81,8 @@ export type PlaceOrderProps = {
81
81
  onExecutionStateChange?: (state: PlaceOrderSubmissionProgressState) => void;
82
82
  /** Optional resolved-event claim summary shown in read-only state. */
83
83
  resolvedClaim?: PlaceOrderResolvedClaimSummary;
84
+ /** Render the settlement-pending state for a closed recurring market. */
85
+ showResolvingState?: boolean;
84
86
  /** Pre-fetched midpoint data (best price included) passed from parent. Optional for backward compatibility. */
85
87
  midpointsResult?: UseMidpointsResult;
86
88
  };
@@ -212,6 +214,12 @@ export type PlaceOrderFailureSummary = {
212
214
  kind: PlaceOrderFailureKind;
213
215
  /** Failed venue to pin when retrying the unfilled remainder of a split route. */
214
216
  retryVenue?: TradingVenue;
217
+ executionGroups?: ExecutionOrderGroup[];
218
+ result?: {
219
+ averagePriceLabel: string;
220
+ filledAmountLabel: string;
221
+ payoutLabel: string;
222
+ };
215
223
  steps: PlaceOrderFailureStep[];
216
224
  };
217
225
  export type ResolvePlaceOrderQuoteResultParams = {
@@ -239,6 +247,7 @@ export type ResolvePlaceOrderTabKeyParams = {
239
247
  export type PlaceOrderQuoteStatus = PlaceOrderStatus | undefined;
240
248
  export type PlaceOrderSubmissionProgressPhase = "finding-route" | "submitting" | "executing" | "success" | "failed";
241
249
  export type PlaceOrderExecutionSummary = {
250
+ resultState?: "success" | "partial";
242
251
  tradeSide?: PlaceOrderTab;
243
252
  shares: string;
244
253
  avgPrice: string;