@coinlist-co/react 0.12.1-rc.c2b6ba5 → 0.12.1-rc.e183ffd

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 (31) hide show
  1. package/dist/{chunk-F6WGUKZC.js → chunk-DCW7NQXH.js} +129 -3
  2. package/dist/chunk-DCW7NQXH.js.map +1 -0
  3. package/dist/{chunk-6CQHDASY.js → chunk-MOE5S6CE.js} +1354 -257
  4. package/dist/chunk-MOE5S6CE.js.map +1 -0
  5. package/dist/{chunk-ZFBEI3BW.js → chunk-ONLH57LF.js} +20 -330
  6. package/dist/chunk-ONLH57LF.js.map +1 -0
  7. package/dist/client/index.cjs +8779 -7816
  8. package/dist/client/index.cjs.map +1 -1
  9. package/dist/client/index.d.cts +143 -69
  10. package/dist/client/index.d.ts +143 -69
  11. package/dist/client/index.js +4177 -4109
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/{collections-aCv-Wr2a.d.ts → collections-Biy3pQQL.d.cts} +1 -1
  14. package/dist/{collections-DOm9VKVm.d.cts → collections-JfNDG8Tc.d.ts} +1 -1
  15. package/dist/server/index.cjs +1463 -260
  16. package/dist/server/index.cjs.map +1 -1
  17. package/dist/server/index.d.cts +1 -1
  18. package/dist/server/index.d.ts +1 -1
  19. package/dist/server/index.js +5 -3
  20. package/dist/server/index.js.map +1 -1
  21. package/dist/{config-DIaFzrMW.d.cts → tokens-namespace-CIWBtgt2.d.cts} +529 -230
  22. package/dist/{config-DIaFzrMW.d.ts → tokens-namespace-CIWBtgt2.d.ts} +529 -230
  23. package/dist/universal/index.cjs +1258 -478
  24. package/dist/universal/index.cjs.map +1 -1
  25. package/dist/universal/index.d.cts +427 -45
  26. package/dist/universal/index.d.ts +427 -45
  27. package/dist/universal/index.js +20 -14
  28. package/package.json +1 -1
  29. package/dist/chunk-6CQHDASY.js.map +0 -1
  30. package/dist/chunk-F6WGUKZC.js.map +0 -1
  31. package/dist/chunk-ZFBEI3BW.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ButtonHTMLAttributes } from 'react';
3
- import { A as AuthorizationCode, C as CodeVerifier, L as Logger, W as WalletError, E as Erc20Namespace, a as EthereumChain, b as EvmContractAddress, B as BlockchainAmount, c as CoinListTokenSaleNamespace, O as OfferId, d as OfferOptionId, e as AssetId, P as Participation, f as CoinListTokenSaleNamespaceImpl, U as UniversalNamespaceContext, g as OndoNamespace, h as AssetSymbol, i as OfferSwapContract, j as OndoBuyTransaction, k as OndoSellTransaction, l as OndoSwapTransactionCore, m as OrderBookSide, n as OndoNamespaceImpl, S as SuperstateSwapNamespace, o as WalletsNamespace, p as Bps, q as EvmWalletAddress, r as SuperstateSwapNamespaceImpl, R as RequirementsNamespace, s as Requirement, t as RequirementsNamespaceImpl, u as Config, v as OAuthAccessToken, w as OffersNamespace, T as TokensNamespace, x as StablecoinSymbol, y as Erc20Asset, z as OfferDetail, D as TokenMetadata, F as OfferType, G as Offer, H as RequirementStatusInfo, I as RequirementType, J as RequirementStatusValue, K as OfferOptionAddress, M as RequirementId, N as KycLevelName, Q as DocumentSubmission, V as WalletChallengeType, X as PinoLoggerOptions, Y as OndoTradingStatus, Z as AssetDecimals, _ as BuildOndoBuyParams, $ as BuildOndoSellParams, a0 as OndoQuote, a1 as OndoQuoteSize, a2 as TokenIdentifier, a3 as OfferOptionAddressId, a4 as TokenLogo } from '../config-DIaFzrMW.js';
4
- export { a5 as DebugEvent, a6 as FrontlineEventId, a7 as HttpError, a8 as HttpResponse, a9 as KycToken, aa as LogBinding, ab as LogBindings, ac as LogCause, ad as LogLevel, ae as LogScope, af as LogValue, ag as ProductionLogLevel, ah as RedactedWalletError, ai as RequestId, aj as SafeEvent, ak as SafeFields, al as UnredactedFields } from '../config-DIaFzrMW.js';
5
- import { P as PKCEConfig, E as EvmWallet, S as SwapQuote, A as AssetIconUrl, a as ShortenedWalletAddress, F as FormattedAmountAssetUi, b as FormattedPercentUi, T as TxExplorerUrl, C as ConnectWallet, N as NonEmptyArray } from '../collections-aCv-Wr2a.js';
6
- export { B as BroadcastTxParams, c as EvmSigner, W as WriteContractParams } from '../collections-aCv-Wr2a.js';
3
+ import { A as AuthorizationCode, C as CodeVerifier, L as Logger, W as WalletError, E as Erc20Namespace, a as EthereumChain, b as EvmContractAddress, B as BlockchainAmount, c as CoinListTokenSaleNamespace, O as OfferId, d as OfferOptionId, e as AssetId, P as Participation, f as CoinListTokenSaleNamespaceImpl, U as UniversalNamespaceContext, g as OndoNamespace, h as AssetSymbol, i as OfferSwapContract, j as OndoBuyTransaction, k as OndoSellTransaction, l as OndoSwapTransactionCore, m as OrderBookSide, n as OndoNamespaceImpl, S as SuperstateSwapNamespace, o as WalletsNamespace, p as Bps, q as EvmWalletAddress, r as SuperstateSwapNamespaceImpl, R as RequirementsNamespace, s as Requirement, t as RequirementsNamespaceImpl, u as Config, v as OAuthAccessToken, w as OffersNamespace, T as TokensNamespace, x as StablecoinSymbol, y as Erc20Asset, z as OfferDetail, D as TokenMetadata, F as OfferType, G as OndoSwapOfferDetail, H as CoinListTokenSaleOfferDetail, I as SuperstateSwapOfferDetail, J as Offer, K as RequirementStatusInfo, M as RequirementType, N as RequirementStatusValue, Q as OfferOptionAddress, V as RequirementId, X as KycLevelName, Y as DocumentSubmission, Z as WalletChallengeType, _ as PinoLoggerOptions, $ as OndoTradingStatus, a0 as AssetDecimals, a1 as BuildOndoBuyParams, a2 as BuildOndoSellParams, a3 as OndoQuote, a4 as OndoQuoteSize, a5 as TokenIdentifier, a6 as OfferOptionAddressId, a7 as TokenLogo } from '../tokens-namespace-CIWBtgt2.js';
4
+ export { a8 as DebugEvent, a9 as FrontlineEventId, aa as HttpError, ab as HttpResponse, ac as KycToken, ad as LogBinding, ae as LogBindings, af as LogCause, ag as LogLevel, ah as LogScope, ai as LogValue, aj as ProductionLogLevel, ak as RedactedWalletError, al as RequestId, am as RpcFailureReason, an as SafeEvent, ao as SafeFields, ap as UnredactedFields } from '../tokens-namespace-CIWBtgt2.js';
5
+ import { P as PKCEConfig, E as EvmWallet, S as SwapQuote, A as AssetIconUrl, a as ShortenedWalletAddress, F as FormattedAmountAssetUi, b as FormattedPercentUi, T as TxExplorerUrl, C as ConnectWallet, N as NonEmptyArray } from '../collections-JfNDG8Tc.js';
6
+ export { B as BroadcastTxParams, c as EvmSigner, W as WriteContractParams } from '../collections-JfNDG8Tc.js';
7
7
  import { Hash } from 'viem';
8
8
  import * as class_variance_authority_types from 'class-variance-authority/types';
9
9
  import { VariantProps } from 'class-variance-authority';
@@ -508,6 +508,14 @@ type SwapExecutionPhase = 'checking-status' | 'checking-allowance' | 'resetting-
508
508
  /** A step-tagged reason {@link executeSwap} failed. */
509
509
  type SwapExecutionError = {
510
510
  step: 'status-check';
511
+ }
512
+ /**
513
+ * The contract has suspended swapping and may resume. Distinct from
514
+ * `swap-stopped`, which is permanent, so a host can say "try again shortly"
515
+ * to one and "this swap has closed" to the other.
516
+ */
517
+ | {
518
+ step: 'swap-paused';
511
519
  } | {
512
520
  step: 'swap-stopped';
513
521
  } | Erc20AllowanceError | {
@@ -1507,13 +1515,10 @@ type OndoCheckoutConfig = {
1507
1515
  * catalogue does agree can return `AssetSymbol(offer.asset.code)`; one whose
1508
1516
  * does not maps the exceptions.
1509
1517
  *
1510
- * Must be total. Ondo's viewmodel is called for every offer - React hooks
1511
- * cannot be called conditionally - so this runs for Superstate and
1512
- * token-sale offers too, where its result is passed to a viewmodel that is
1513
- * `enabled: false` and never reads it. Throwing on an offer you do not
1514
- * recognise would take down a checkout Ondo has no part in; return anything.
1518
+ * Called only for an `ondo::swap` offer, when that branch is mounted. A
1519
+ * Superstate or token-sale checkout never runs it.
1515
1520
  */
1516
- symbol: (offer: OfferDetail) => AssetSymbol;
1521
+ symbol: (offer: OndoSwapOfferDetail) => AssetSymbol;
1517
1522
  /**
1518
1523
  * Which way the trade runs: `buy` invests in the asset, `sell` liquidates a
1519
1524
  * holding of it.
@@ -1524,10 +1529,8 @@ type OndoCheckoutConfig = {
1524
1529
  * page rather than of the catalogue. A host closes over whatever selects the
1525
1530
  * direction - a route, a tab - and returns it.
1526
1531
  *
1527
- * Still called for every offer, Superstate's and the token sale's included,
1528
- * because both Ondo viewmodels are called unconditionally; on those its
1529
- * answer is handed to a viewmodel that is `enabled: false` and never reads
1530
- * it. Nothing to be total over, so nothing to get wrong.
1532
+ * Called only for an `ondo::swap` offer, when that branch is mounted. A
1533
+ * Superstate or token-sale checkout never runs it.
1531
1534
  *
1532
1535
  * Required, with no default. The wire parameter behind it defaults to `buy`
1533
1536
  * silently, and the day sell ships an unstated direction should be a compile
@@ -1561,7 +1564,7 @@ type SuperstateCheckoutConfig = {
1561
1564
  * offers returns `null`.
1562
1565
  */
1563
1566
  type CoinListTokenSaleCheckoutConfig = {
1564
- render: (offer: OfferDetail) => ReactNode;
1567
+ render: (offer: CoinListTokenSaleOfferDetail) => ReactNode;
1565
1568
  };
1566
1569
  /**
1567
1570
  * The parts of {@link CheckoutConfig} only the host can know.
@@ -1613,8 +1616,8 @@ interface CheckoutContainerProps {
1613
1616
  /** What each offer type needs beyond the offer itself. */
1614
1617
  config: CheckoutConfig;
1615
1618
  /**
1616
- * Default `true`. `false` turns off every request and timer in every
1617
- * provider, for a checkout that is mounted but not on screen yet.
1619
+ * Default `true`. `false` turns off every request and timer in the mounted
1620
+ * provider, for a checkout that is on the tree but not on screen yet.
1618
1621
  */
1619
1622
  enabled?: boolean;
1620
1623
  className?: string;
@@ -1623,11 +1626,10 @@ interface CheckoutContainerProps {
1623
1626
  * The plug-and-play checkout: hand it an offer and it renders the right
1624
1627
  * provider's flow.
1625
1628
  *
1626
- * Every provider's viewmodel is called on every render, because React hooks
1627
- * cannot be called conditionally — and both Ondo products, since `side` picks
1628
- * between them at the same level. Only the one matching `offer.type` and
1629
- * `side` is `enabled`, so the rest fetch nothing and run no timers — that
1630
- * `enabled` flag is why every checkout viewmodel has one.
1629
+ * Only the matching provider's container is mounted, so its viewmodel is the
1630
+ * only one that runs. `enabled` is forwarded as-is — a pause for a checkout
1631
+ * that is mounted but not on screen yet, not a stand-in for the offer-type
1632
+ * switch.
1631
1633
  *
1632
1634
  * The `switch` is exhaustive against `OfferType`, and the `default` branch
1633
1635
  * assigns to `const exhaustive: never`, so a new offer type is a compile error
@@ -1901,19 +1903,30 @@ type OndoCheckoutErrorReason =
1901
1903
  type OndoSidebarUiState = {
1902
1904
  asset: CheckoutAssetUi;
1903
1905
  /**
1904
- * Who issues the asset, e.g. `Ondo Global Markets`.
1905
- *
1906
- * `null` hides the row. No frontline endpoint carries an issuer today, so
1907
- * absence is the normal case rather than an edge one — the same reasoning as
1908
- * `coinlistFee` on the review step.
1906
+ * Who issues the *token*, e.g. `Ondo Global Markets` — not the issuer of the
1907
+ * security it tracks, which is the asset's own name. `null` hides the row.
1909
1908
  */
1910
1909
  issuer: string | null;
1911
1910
  /** The underlying's ticker, e.g. `AAPL` — not the token symbol. `null` hides the row. */
1912
1911
  tickerSymbol: string | null;
1913
- /** The underlying's ISIN, e.g. `US0378331005`. `null` hides the row. */
1912
+ /**
1913
+ * The underlying's ISIN, e.g. `US0378331005`. `null` hides the row, and is
1914
+ * the normal case for the few securities the supplier publishes none for.
1915
+ */
1914
1916
  isin: string | null;
1915
- /** What kind of instrument it is, e.g. `Common Stock`. `null` hides the row. */
1917
+ /**
1918
+ * What kind of instrument it is, in the supplier's own vocabulary — a common
1919
+ * stock arrives as `Stock`, not `Common Stock`. Rendered as given, never
1920
+ * branched on, because the vocabulary can grow. `null` hides the row.
1921
+ */
1916
1922
  assetType: string | null;
1923
+ /**
1924
+ * The venue the underlying lists on, e.g. `NASDAQ`. Unlike the rows above it
1925
+ * is recorded by hand rather than served by the supplier, so `null` — which
1926
+ * hides the row — is the normal state until someone records it, and says
1927
+ * nothing about whether the offer tokenizes a security.
1928
+ */
1929
+ listingVenue: string | null;
1917
1930
  /** Display name of the chain the token lives on, e.g. `Ethereum`. */
1918
1931
  networkName: string;
1919
1932
  price: OndoSidebarPriceUi;
@@ -2096,7 +2109,7 @@ declare function OndoBuyOrderConfirmed({ state, onEvent, className, }: OndoOrder
2096
2109
 
2097
2110
  interface OndoBuyCheckoutContainerProps {
2098
2111
  /** The offer being bought: names the asset and supplies its logo. */
2099
- offer: OfferDetail;
2112
+ offer: OndoSwapOfferDetail;
2100
2113
  /**
2101
2114
  * Ondo's API symbol for the asset, e.g. `AAPLon`.
2102
2115
  *
@@ -2118,8 +2131,8 @@ interface OndoBuyCheckoutContainerProps {
2118
2131
  */
2119
2132
  wallets: CheckoutWalletSelection;
2120
2133
  /**
2121
- * Default `true`. `false` turns off every request and timer, which is what
2122
- * `CheckoutContainer` uses to call each provider's checkout unconditionally.
2134
+ * Default `true`. `false` turns off every request and timer, for a checkout
2135
+ * that is mounted but not on screen yet.
2123
2136
  */
2124
2137
  enabled?: boolean;
2125
2138
  /** Fired once the swap has mined. The dialog shows either way. */
@@ -2528,7 +2541,7 @@ declare function OndoSellOrderConfirmed({ state, onEvent, className, }: OndoSell
2528
2541
 
2529
2542
  interface OndoSellCheckoutContainerProps {
2530
2543
  /** The offer being sold: names the asset and supplies its logo. */
2531
- offer: OfferDetail;
2544
+ offer: OndoSwapOfferDetail;
2532
2545
  /**
2533
2546
  * Ondo's API symbol for the asset, e.g. `TSLAon`.
2534
2547
  *
@@ -2555,8 +2568,8 @@ interface OndoSellCheckoutContainerProps {
2555
2568
  */
2556
2569
  wallets: CheckoutWalletSelection;
2557
2570
  /**
2558
- * Default `true`. `false` turns off every request and timer, which is what
2559
- * `CheckoutContainer` uses to call each provider's checkout unconditionally.
2571
+ * Default `true`. `false` turns off every request and timer, for a checkout
2572
+ * that is mounted but not on screen yet.
2560
2573
  */
2561
2574
  enabled?: boolean;
2562
2575
  /** Fired once the swap has mined. The dialog shows either way. */
@@ -3081,7 +3094,7 @@ declare function SuperstateReviewView(props: SuperstateReviewViewProps): ReactNo
3081
3094
 
3082
3095
  interface SuperstateSwapCheckoutContainerProps {
3083
3096
  /** The offer being bought: names the asset, the window and the minimum. */
3084
- offer: OfferDetail;
3097
+ offer: SuperstateSwapOfferDetail;
3085
3098
  /**
3086
3099
  * The chain the order executes on: the balance reads, the approval and the
3087
3100
  * swap. The swap contract is looked up from it, so a chain with none
@@ -3095,8 +3108,8 @@ interface SuperstateSwapCheckoutContainerProps {
3095
3108
  */
3096
3109
  wallets: CheckoutWalletSelection;
3097
3110
  /**
3098
- * Default `true`. `false` turns off every request and timer, which is what
3099
- * `CheckoutContainer` uses to call each provider's checkout unconditionally.
3111
+ * Default `true`. `false` turns off every request and timer, for a checkout
3112
+ * that is mounted but not on screen yet.
3100
3113
  */
3101
3114
  enabled?: boolean;
3102
3115
  /** Fired once the swap has mined. The dialog shows either way. */
@@ -3188,7 +3201,8 @@ type OfferAssetCardUi = {
3188
3201
  name?: string;
3189
3202
  /** Absent when the list payload has no asset. Display form of `asset.code`. */
3190
3203
  symbol?: string;
3191
- logoUrl: string;
3204
+ /** Null when the offer carries no artwork; the card then omits the icon. */
3205
+ logoUrl: string | null;
3192
3206
  };
3193
3207
  declare const OfferAssetCardUi: {
3194
3208
  fromOffer: (offer: Offer) => OfferAssetCardUi;
@@ -3238,6 +3252,11 @@ interface OffersGridContainerProps {
3238
3252
  * fetch entirely.
3239
3253
  */
3240
3254
  data?: Offer[];
3255
+ /**
3256
+ * Default `true`. When `false` nothing is fetched, so the container can be
3257
+ * mounted while the grid is not needed yet.
3258
+ */
3259
+ enabled?: boolean;
3241
3260
  }
3242
3261
  /**
3243
3262
  * Displays a responsive live-sale grid of {@link OfferSaleCard}, backed by
@@ -3246,14 +3265,16 @@ interface OffersGridContainerProps {
3246
3265
  * past-sales browse rows, compose {@link OffersAssetGrid} instead.
3247
3266
  *
3248
3267
  * Pass `data` (pre-fetched server-side) to use that data as-is and skip the
3249
- * client-side fetch entirely. Uses the `loading` / `error` / `emptyState` slots
3250
- * when provided; otherwise renders the standard fallbacks. Cards are
3251
- * interactive only when `onOfferClick` is provided.
3268
+ * client-side fetch entirely. Pass `enabled={false}` to skip the fetch when
3269
+ * the container is mounted but the grid is not needed yet. Uses the
3270
+ * `loading` / `error` / `emptyState` slots when provided; otherwise renders
3271
+ * the standard fallbacks. Cards are interactive only when `onOfferClick` is
3272
+ * provided.
3252
3273
  *
3253
3274
  * Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
3254
3275
  * needed.
3255
3276
  */
3256
- declare function OffersGridContainer({ data, onOfferClick, ...viewProps }?: OffersGridContainerProps): ReactNode;
3277
+ declare function OffersGridContainer({ data, onOfferClick, enabled, ...viewProps }?: OffersGridContainerProps): ReactNode;
3257
3278
 
3258
3279
  /**
3259
3280
  * An offer as {@link OfferSaleCard} renders it. Countdown copy is derived in
@@ -3264,14 +3285,18 @@ declare function OffersGridContainer({ data, onOfferClick, ...viewProps }?: Offe
3264
3285
  * `name` as an h2 and renders the h2 only when the field is present. Prefer
3265
3286
  * {@link OfferSaleCardUi.fromDetail} when the host has a name. Missing logo
3266
3287
  * omits the icon — name and tagline only.
3288
+ *
3289
+ * `tagline` and `startsAt` are null for an offer that runs no sale window, an
3290
+ * Ondo swap: the card then omits the tagline and, with nothing to count down
3291
+ * to, reads as live.
3267
3292
  */
3268
3293
  type OfferSaleCardUi = {
3269
3294
  id: OfferId;
3270
3295
  /** Absent when the list payload has no display name; only `fromDetail` sets it. */
3271
3296
  name?: string;
3272
- tagline: string;
3273
- logoUrl: string;
3274
- startsAt: Date;
3297
+ tagline: string | null;
3298
+ logoUrl: string | null;
3299
+ startsAt: Date | null;
3275
3300
  endsAt: Date | null;
3276
3301
  };
3277
3302
  declare const OfferSaleCardUi: {
@@ -3630,6 +3655,12 @@ interface UseRequirementsOptions {
3630
3655
  * Calling `refetch()` will still trigger a fresh fetch.
3631
3656
  */
3632
3657
  data?: RequirementsData;
3658
+ /**
3659
+ * When `false`, the hook sends no request. A seeded or already-fetched
3660
+ * `CONTENT` survives; otherwise the hook stays `LOADING`. Defaults to `true`.
3661
+ * `refetch()` is a no-op while disabled.
3662
+ */
3663
+ enabled?: boolean;
3633
3664
  }
3634
3665
  interface UseRequirementsResult {
3635
3666
  requirementsState: LoadRequirementsState;
@@ -3642,6 +3673,8 @@ interface UseRequirementsResult {
3642
3673
  *
3643
3674
  * Pass `data` (pre-fetched server-side) to use that data as-is and skip
3644
3675
  * the initial client-side fetch. Calling `refetch()` will still trigger a fresh fetch.
3676
+ * Pass `enabled: false` to skip the fetch when the hook must be called but
3677
+ * the data is not needed yet.
3645
3678
  *
3646
3679
  * Returns `LOADING` while CoinList is initializing or while data is being fetched.
3647
3680
  * Returns `CONTENT` with requirements and statuses on success.
@@ -3709,6 +3742,11 @@ interface RequirementsChecklistContainerProps {
3709
3742
  * not part of `RequirementsData` and are always fetched client-side.
3710
3743
  */
3711
3744
  data?: RequirementsData;
3745
+ /**
3746
+ * Default `true`. When `false` nothing is fetched, so the container can be
3747
+ * mounted while the checklist is not needed yet.
3748
+ */
3749
+ enabled?: boolean;
3712
3750
  /**
3713
3751
  * Options for the inline Sumsub verification flow, shown when
3714
3752
  * `onRequirementActionOverride` is not provided. The flow starts whenever
@@ -3729,7 +3767,8 @@ interface RequirementsChecklistContainerProps {
3729
3767
  * specified option.
3730
3768
  *
3731
3769
  * Pass `data` (pre-fetched server-side) to use that data as-is and skip the
3732
- * initial client-side fetch.
3770
+ * initial client-side fetch. Pass `enabled={false}` to skip fetches when the
3771
+ * container is mounted but the checklist is not needed yet.
3733
3772
  *
3734
3773
  * When the user is not authenticated, renders a sign-in card instead of the
3735
3774
  * checklist - without fetching. Pass `unauthenticatedState` to customize that
@@ -3743,7 +3782,7 @@ interface RequirementsChecklistContainerProps {
3743
3782
  *
3744
3783
  * Self-scoped: renders fully styled on its own, with no `CoinListStyleScope` needed.
3745
3784
  */
3746
- declare function RequirementsChecklistContainer({ loading, error, unauthenticatedState, className, ...options }: RequirementsChecklistContainerProps): ReactNode;
3785
+ declare function RequirementsChecklistContainer({ loading, error, unauthenticatedState, className, enabled, ...options }: RequirementsChecklistContainerProps): ReactNode;
3747
3786
 
3748
3787
  interface RequirementsChecklistViewProps {
3749
3788
  state: RequirementsChecklistUiState;
@@ -4196,6 +4235,11 @@ interface UseParticipationsOptions {
4196
4235
  * When provided, the hook uses this data as-is and skips the client-side fetch entirely.
4197
4236
  */
4198
4237
  data?: Participation[];
4238
+ /**
4239
+ * When `false`, the hook sends no request. A seeded or already-fetched
4240
+ * `CONTENT` survives; otherwise the hook stays `LOADING`. Defaults to `true`.
4241
+ */
4242
+ enabled?: boolean;
4199
4243
  }
4200
4244
  interface UseParticipationsResult {
4201
4245
  participationsState: LoadParticipationsState;
@@ -4205,7 +4249,8 @@ interface UseParticipationsResult {
4205
4249
  * Optionally filters by offer when `offerId` is provided.
4206
4250
  *
4207
4251
  * Pass `data` (pre-fetched server-side) to use that data as-is and skip
4208
- * the client-side fetch entirely.
4252
+ * the client-side fetch entirely. Pass `enabled: false` to skip the fetch
4253
+ * when the hook must be called but the data is not needed yet.
4209
4254
  *
4210
4255
  * Returns `LOADING` while CoinList is initializing or while participations are being fetched.
4211
4256
  * Returns `CONTENT` with all participations when `fetchParticipations()` succeeds.
@@ -4430,7 +4475,7 @@ interface UseOndoBuyReviewViewModelOptions {
4430
4475
  * agrees with the reference panel beside it and a dropped poll cannot leave
4431
4476
  * the review unable to say what was bought.
4432
4477
  */
4433
- offer: OfferDetail;
4478
+ offer: OndoSwapOfferDetail;
4434
4479
  /**
4435
4480
  * Registry metadata for the bought asset; `null` falls back to the offer's
4436
4481
  * logo.
@@ -4498,7 +4543,7 @@ interface UseOndoBuyCheckoutViewModelOptions {
4498
4543
  * Fixed for the lifetime of the hook — see the note on
4499
4544
  * {@link useOndoBuyCheckoutViewModel} about switching offers.
4500
4545
  */
4501
- offer: OfferDetail;
4546
+ offer: OndoSwapOfferDetail;
4502
4547
  /**
4503
4548
  * Ondo's API symbol for the asset, e.g. `AAPLon`.
4504
4549
  *
@@ -4519,8 +4564,8 @@ interface UseOndoBuyCheckoutViewModelOptions {
4519
4564
  /** The host's wallets, and the lambdas that connect and disconnect one. */
4520
4565
  wallets: CheckoutWalletSelection;
4521
4566
  /**
4522
- * Default `true`. When `false` nothing is fetched and no timer runs, so the
4523
- * hook can be called unconditionally beside other providers' viewmodels.
4567
+ * Default `true`. When `false` nothing is fetched and no timer runs, for a
4568
+ * checkout that is mounted but not on screen yet.
4524
4569
  */
4525
4570
  enabled?: boolean;
4526
4571
  /**
@@ -4633,7 +4678,7 @@ interface UseOndoSellAmountViewModelOptions {
4633
4678
  * The offer being sold: supplies the asset's display name and its fallback
4634
4679
  * artwork.
4635
4680
  */
4636
- offer: OfferDetail;
4681
+ offer: OndoSwapOfferDetail;
4637
4682
  /**
4638
4683
  * Registry metadata for the sold asset; `null` falls back to the offer's
4639
4684
  * logo.
@@ -4872,7 +4917,7 @@ interface UseOndoSellCheckoutViewModelOptions {
4872
4917
  * Fixed for the lifetime of the hook — see the note on
4873
4918
  * {@link useOndoSellCheckoutViewModel} about switching offers.
4874
4919
  */
4875
- offer: OfferDetail;
4920
+ offer: OndoSwapOfferDetail;
4876
4921
  /**
4877
4922
  * Ondo's API symbol for the asset, e.g. `TSLAon`.
4878
4923
  *
@@ -4902,8 +4947,8 @@ interface UseOndoSellCheckoutViewModelOptions {
4902
4947
  */
4903
4948
  wallets: CheckoutWalletSelection;
4904
4949
  /**
4905
- * Default `true`. When `false` nothing is fetched and no timer runs, so the
4906
- * hook can be called unconditionally beside other providers' viewmodels.
4950
+ * Default `true`. When `false` nothing is fetched and no timer runs, for a
4951
+ * checkout that is mounted but not on screen yet.
4907
4952
  */
4908
4953
  enabled?: boolean;
4909
4954
  /**
@@ -5097,7 +5142,7 @@ declare function useOndoTradingStatus(options: UseOndoTradingStatusOptions): Use
5097
5142
 
5098
5143
  interface UseOndoSidebarViewModelOptions {
5099
5144
  /** Where the asset's identity comes from: name and logo. */
5100
- offer: OfferDetail;
5145
+ offer: OndoSwapOfferDetail;
5101
5146
  /** Ondo's API symbol, e.g. `AAPLon`. */
5102
5147
  ondoSymbol: AssetSymbol;
5103
5148
  /** The chain the order executes on, and so the network shown. */
@@ -5463,7 +5508,7 @@ declare function useSwapQuote(options: UseSwapQuoteOptions): UseSwapQuoteResult;
5463
5508
 
5464
5509
  interface UseSuperstateSidebarViewModelOptions {
5465
5510
  /** The offer being bought: names the asset, the window and the minimum. */
5466
- offer: OfferDetail;
5511
+ offer: SuperstateSwapOfferDetail;
5467
5512
  /** The chain the token lives on, which names the network row. */
5468
5513
  chain: EthereumChain;
5469
5514
  /**
@@ -5527,7 +5572,7 @@ interface UseSuperstateSwapCheckoutViewModelOptions {
5527
5572
  * Fixed for the lifetime of the hook — see the note on
5528
5573
  * {@link useSuperstateSwapCheckoutViewModel} about switching offers.
5529
5574
  */
5530
- offer: OfferDetail;
5575
+ offer: SuperstateSwapOfferDetail;
5531
5576
  /**
5532
5577
  * The chain the order executes on: the balance reads, the approval and the
5533
5578
  * swap. The swap contract is looked up from it; a chain with none deployed
@@ -5539,8 +5584,8 @@ interface UseSuperstateSwapCheckoutViewModelOptions {
5539
5584
  /** The host's wallets, and the lambdas that connect and disconnect one. */
5540
5585
  wallets: CheckoutWalletSelection;
5541
5586
  /**
5542
- * Default `true`. When `false` nothing is fetched and no timer runs, so the
5543
- * hook can be called unconditionally beside other providers' viewmodels.
5587
+ * Default `true`. When `false` nothing is fetched and no timer runs, for a
5588
+ * checkout that is mounted but not on screen yet.
5544
5589
  */
5545
5590
  enabled?: boolean;
5546
5591
  /**
@@ -5649,6 +5694,11 @@ interface UseOfferDetailsOptions {
5649
5694
  * When provided, the hook uses this data as-is and skips the client-side fetch entirely.
5650
5695
  */
5651
5696
  data?: OfferDetail;
5697
+ /**
5698
+ * When `false`, the hook sends no request. A seeded or already-fetched
5699
+ * `CONTENT` survives; otherwise the hook stays `LOADING`. Defaults to `true`.
5700
+ */
5701
+ enabled?: boolean;
5652
5702
  }
5653
5703
  interface UseOfferDetailsResult {
5654
5704
  offerDetailsState: LoadOfferDetailsState;
@@ -5657,7 +5707,8 @@ interface UseOfferDetailsResult {
5657
5707
  * Loads CoinList offer details for a given offer id and exposes a UI-friendly state.
5658
5708
  *
5659
5709
  * Pass `data` (pre-fetched server-side) to use that data as-is and skip
5660
- * the client-side fetch entirely.
5710
+ * the client-side fetch entirely. Pass `enabled: false` to skip the fetch
5711
+ * when the hook must be called but the data is not needed yet.
5661
5712
  *
5662
5713
  * Returns `LOADING` while CoinList is initializing or while details are being fetched.
5663
5714
  * Returns `CONTENT` with the offer when `offers.get()` succeeds.
@@ -5683,6 +5734,11 @@ interface UseOffersOptions {
5683
5734
  * When provided, the hook uses this data as-is and skips the client-side fetch entirely.
5684
5735
  */
5685
5736
  data?: Offer[];
5737
+ /**
5738
+ * When `false`, the hook sends no request. A seeded or already-fetched
5739
+ * `CONTENT` survives; otherwise the hook stays `LOADING`. Defaults to `true`.
5740
+ */
5741
+ enabled?: boolean;
5686
5742
  }
5687
5743
  interface UseOffersResult {
5688
5744
  offersState: LoadOffersState;
@@ -5691,7 +5747,8 @@ interface UseOffersResult {
5691
5747
  * Loads all CoinList offers for the current user and exposes a UI-friendly state.
5692
5748
  *
5693
5749
  * Pass `data` (pre-fetched server-side) to use that data as-is and skip
5694
- * the client-side fetch entirely.
5750
+ * the client-side fetch entirely. Pass `enabled: false` to skip the fetch
5751
+ * when the hook must be called but the data is not needed yet.
5695
5752
  *
5696
5753
  * Returns `LOADING` while CoinList is initializing or while offers are being fetched.
5697
5754
  * Returns `CONTENT` with all offers when `fetchOffers()` succeeds.
@@ -5707,6 +5764,11 @@ interface UseOffersGridViewModelOptions {
5707
5764
  * When provided, the client-side fetch is skipped entirely.
5708
5765
  */
5709
5766
  data?: Offer[];
5767
+ /**
5768
+ * Default `true`. When `false` nothing is fetched, so the hook can be called
5769
+ * unconditionally while the grid is not needed yet.
5770
+ */
5771
+ enabled?: boolean;
5710
5772
  /** Called with the domain offer behind the card the user clicked. */
5711
5773
  onOfferClick?: (offer: Offer) => void;
5712
5774
  }
@@ -5717,6 +5779,9 @@ interface UseOffersGridViewModelResult {
5717
5779
  /**
5718
5780
  * Drives {@link OffersGridView}: loads the offers, formats them for the cards,
5719
5781
  * and resolves a clicked card back to its domain offer for the host callback.
5782
+ *
5783
+ * Pass `enabled: false` to skip the fetch when the hook must be called but
5784
+ * the grid is not needed yet.
5720
5785
  */
5721
5786
  declare function useOffersGridViewModel(options?: UseOffersGridViewModelOptions): UseOffersGridViewModelResult;
5722
5787
 
@@ -6011,6 +6076,11 @@ interface UseRequirementsChecklistViewModelOptions {
6011
6076
  getDescription?: (requirement: Requirement) => string | null;
6012
6077
  /** Requirements pre-fetched on the server. */
6013
6078
  data?: RequirementsData;
6079
+ /**
6080
+ * Default `true`. When `false` nothing is fetched, so the hook can be called
6081
+ * unconditionally while the checklist is not needed yet.
6082
+ */
6083
+ enabled?: boolean;
6014
6084
  /** Options for the inline Sumsub verification flow. */
6015
6085
  identityVerificationOptions?: {
6016
6086
  levelName?: KycLevelName;
@@ -6025,6 +6095,9 @@ interface UseRequirementsChecklistViewModelResult {
6025
6095
  * Drives {@link RequirementsChecklistView}: loads the requirements and their
6026
6096
  * statuses for one offer option, shapes each row, and owns the three flows the
6027
6097
  * checklist can open (tax document, wallet connect, identity verification).
6098
+ *
6099
+ * Pass `enabled: false` to skip fetches when the hook must be called but
6100
+ * the checklist is not needed yet.
6028
6101
  */
6029
6102
  declare function useRequirementsChecklistViewModel(options: UseRequirementsChecklistViewModelOptions): UseRequirementsChecklistViewModelResult;
6030
6103
 
@@ -6206,11 +6279,12 @@ declare function stablecoinIconUrl(symbol: StablecoinSymbol): AssetIconUrl;
6206
6279
  * The artwork an offer carries for the asset it sells, or `null` where it
6207
6280
  * carries none.
6208
6281
  *
6209
- * Frontline publishes a missing logo as an empty string rather than omitting
6210
- * the field, so the absent case has to be recognised rather than merely
6211
- * falsy-checked into a `""` that renders as a broken image. Every consumer
6212
- * wants the same answer, and writing the convention out at each of them is how
6213
- * one of them ends up disagreeing.
6282
+ * A swap publishes without artwork, which `OfferDetail.fromDto` maps to
6283
+ * `null`. The empty string frontline has sent in its place is recognised here
6284
+ * too, because an `OfferDetail` need not have come through `fromDto` - a host
6285
+ * may build one - and a `""` that reaches an `<img>` renders as a broken
6286
+ * image. Every consumer wants the same answer, and writing the convention out
6287
+ * at each of them is how one of them ends up disagreeing.
6214
6288
  *
6215
6289
  * Absence is ordinary, not an error: `AssetIcon` renders a neutral placeholder
6216
6290
  * for `null`, which is what the offers grid already does.