@coinlist-co/react 0.12.1-rc.14ac67e → 0.12.1-rc.73e7e17

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 (33) hide show
  1. package/dist/{chunk-SOMNMOBU.js → chunk-3ZZCK4IT.js} +9 -9
  2. package/dist/chunk-3ZZCK4IT.js.map +1 -0
  3. package/dist/{chunk-3ATIDGVR.js → chunk-D42IQHQZ.js} +661 -638
  4. package/dist/chunk-D42IQHQZ.js.map +1 -0
  5. package/dist/{chunk-2XBPKC4C.js → chunk-ZUVVNZJJ.js} +126 -126
  6. package/dist/chunk-ZUVVNZJJ.js.map +1 -0
  7. package/dist/client/index.cjs +1560 -1405
  8. package/dist/client/index.cjs.map +1 -1
  9. package/dist/client/index.d.cts +375 -237
  10. package/dist/client/index.d.ts +375 -237
  11. package/dist/client/index.js +850 -723
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/{collections-DVCh4jUp.d.ts → collections-CMoojQ9M.d.ts} +1 -1
  14. package/dist/{collections-DNbBE6Pk.d.cts → collections-koI4cjYa.d.cts} +1 -1
  15. package/dist/{config-DFYAM0GD.d.cts → config-BmK0t-XO.d.cts} +100 -17
  16. package/dist/{config-DFYAM0GD.d.ts → config-BmK0t-XO.d.ts} +100 -17
  17. package/dist/server/index.cjs +259 -238
  18. package/dist/server/index.cjs.map +1 -1
  19. package/dist/server/index.d.cts +4 -4
  20. package/dist/server/index.d.ts +4 -4
  21. package/dist/server/index.js +3 -3
  22. package/dist/server/index.js.map +1 -1
  23. package/dist/{shared → universal}/index.cjs +870 -843
  24. package/dist/universal/index.cjs.map +1 -0
  25. package/dist/{shared → universal}/index.d.cts +557 -557
  26. package/dist/{shared → universal}/index.d.ts +557 -557
  27. package/dist/{shared → universal}/index.js +6 -2
  28. package/package.json +6 -5
  29. package/dist/chunk-2XBPKC4C.js.map +0 -1
  30. package/dist/chunk-3ATIDGVR.js.map +0 -1
  31. package/dist/chunk-SOMNMOBU.js.map +0 -1
  32. package/dist/shared/index.cjs.map +0 -1
  33. /package/dist/{shared → universal}/index.js.map +0 -0
@@ -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, S as SharedNamespaceContext, g as OndoNamespace, h as AssetSymbol, i as OfferSwapContract, j as OndoBuyTransaction, k as OndoSellTransaction, l as OndoSwapTransactionCore, m as OrderBookSide, n as OndoNamespaceImpl, o as SuperstateSwapNamespace, p as WalletsNamespace, q as Bps, r as EvmWalletAddress, s as SuperstateSwapNamespaceImpl, R as RequirementsNamespace, t as Requirement, u as RequirementsNamespaceImpl, v as Config, w as OAuthAccessToken, x as OffersNamespace, T as TokensNamespace, y as StablecoinSymbol, z as Erc20Asset, D as OfferDetail, 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, U as WalletChallengeType, V as PinoLoggerOptions, X as OndoTradingStatus, Y as AssetDecimals, Z as BuildOndoBuyParams, _ as BuildOndoSellParams, $ as OndoQuote, a0 as OndoQuoteSize, a1 as OfferOptionAddressId, a2 as TokenMetadata, a3 as TokenIdentifier } from '../config-DFYAM0GD.cjs';
4
- export { a4 as DebugEvent, a5 as FrontlineEventId, a6 as HttpError, a7 as HttpResponse, a8 as KycToken, a9 as LogBinding, aa as LogBindings, ab as LogCause, ac as LogLevel, ad as LogScope, ae as LogValue, af as ProductionLogLevel, ag as RedactedWalletError, ah as RequestId, ai as SafeEvent, aj as SafeFields, ak as UnredactedFields } from '../config-DFYAM0GD.cjs';
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-DNbBE6Pk.cjs';
6
- export { B as BroadcastTxParams, c as EvmSigner, W as WriteContractParams } from '../collections-DNbBE6Pk.cjs';
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-BmK0t-XO.cjs';
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-BmK0t-XO.cjs';
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-koI4cjYa.cjs';
6
+ export { B as BroadcastTxParams, c as EvmSigner, W as WriteContractParams } from '../collections-koI4cjYa.cjs';
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';
@@ -250,7 +250,7 @@ interface ClientCoinListTokenSaleNamespace extends CoinListTokenSaleNamespace {
250
250
  }
251
251
  declare class ClientCoinListTokenSaleNamespaceImpl extends CoinListTokenSaleNamespaceImpl implements ClientCoinListTokenSaleNamespace {
252
252
  private readonly erc20;
253
- constructor(ctx: SharedNamespaceContext, erc20: Erc20Namespace);
253
+ constructor(ctx: UniversalNamespaceContext, erc20: Erc20Namespace);
254
254
  execute(params: Omit<ExecuteTokenSaleParams, 'erc20' | 'tokenSale'>): Promise<TokenSaleExecutionResult>;
255
255
  }
256
256
 
@@ -492,7 +492,7 @@ interface ClientOndoNamespace extends OndoNamespace {
492
492
  }
493
493
  declare class ClientOndoNamespaceImpl extends OndoNamespaceImpl implements ClientOndoNamespace {
494
494
  private readonly erc20;
495
- constructor(ctx: SharedNamespaceContext, erc20: Erc20Namespace);
495
+ constructor(ctx: UniversalNamespaceContext, erc20: Erc20Namespace);
496
496
  prepareBuy(params: Omit<PrepareOndoBuyParams, 'ondo' | 'erc20'>): Promise<OndoBuyPreparationResult>;
497
497
  prepareSell(params: Omit<PrepareOndoSellParams, 'ondo' | 'erc20'>): Promise<OndoSellPreparationResult>;
498
498
  executeSwap<T extends OndoSwapTransactionCore & {
@@ -640,7 +640,7 @@ interface ClientSuperstateSwapNamespace extends SuperstateSwapNamespace {
640
640
  declare class ClientSuperstateSwapNamespaceImpl extends SuperstateSwapNamespaceImpl implements ClientSuperstateSwapNamespace {
641
641
  private readonly erc20;
642
642
  private readonly wallets;
643
- constructor(ctx: SharedNamespaceContext, erc20: Erc20Namespace, wallets: WalletsNamespace);
643
+ constructor(ctx: UniversalNamespaceContext, erc20: Erc20Namespace, wallets: WalletsNamespace);
644
644
  execute(params: Omit<ExecuteSwapParams, 'swap' | 'erc20'>): Promise<SwapExecutionResult>;
645
645
  authorizeWallet(params: Omit<AuthorizeWalletParams, 'swap' | 'wallets'>): Promise<WalletAuthorizationResult>;
646
646
  }
@@ -665,7 +665,7 @@ interface ClientRequirementsNamespace extends RequirementsNamespace {
665
665
  }
666
666
  declare class ClientRequirementsNamespaceImpl extends RequirementsNamespaceImpl implements ClientRequirementsNamespace {
667
667
  private readonly coinlistBaseUrl;
668
- constructor(ctx: SharedNamespaceContext, coinlistBaseUrl: string | undefined);
668
+ constructor(ctx: UniversalNamespaceContext, coinlistBaseUrl: string | undefined);
669
669
  handle(requirement: Requirement): void;
670
670
  }
671
671
 
@@ -1117,10 +1117,8 @@ type CheckoutAssetUi = {
1117
1117
  name: string;
1118
1118
  symbol: AssetSymbol;
1119
1119
  /**
1120
- * `null` when no icon is known for this asset. The SDK ships no icon
1121
- * registry — `TOKEN_REGISTRY` carries none and only `Offer.logoUrl` supplies
1122
- * one — so absence is the common case, not an edge case, and `AssetIcon`
1123
- * renders a neutral placeholder for it.
1120
+ * `null` when no icon is known for this asset: no registry metadata, and no
1121
+ * logo on the offer. `AssetIcon` renders a neutral placeholder for it.
1124
1122
  */
1125
1123
  iconUrl: AssetIconUrl | null;
1126
1124
  network: CheckoutNetworkUi;
@@ -1131,10 +1129,10 @@ declare const CheckoutAssetUi: {
1131
1129
  * name and symbol, the caller supplies the chain it is being traded on and
1132
1130
  * whatever icon it has for it.
1133
1131
  *
1134
- * `iconUrl` is a caller's parameter rather than the token's own because a
1135
- * token does not carry one - the SDK ships no icon registry, and the only
1136
- * source is the offer being bought. Which is also why it defaults to `null`:
1137
- * the input asset a user pays with has no offer behind it.
1132
+ * `iconUrl` is a caller's parameter rather than the token's own because an
1133
+ * `Erc20Asset` does not carry one, and which source supplies it is the
1134
+ * caller's to decide. Which is also why it defaults to `null`: the input
1135
+ * asset a user pays with has no offer behind it.
1138
1136
  *
1139
1137
  * An asset sourced from the offer rather than from a token has its own
1140
1138
  * companion, {@link fromOffer}. One companion per source, not one per call
@@ -1146,7 +1144,7 @@ declare const CheckoutAssetUi: {
1146
1144
  }) => CheckoutAssetUi;
1147
1145
  /**
1148
1146
  * The view of the asset an offer sells: the offer supplies its name and the
1149
- * only icon the SDK has, the caller supplies the symbol and the chain.
1147
+ * fallback artwork, the caller supplies the symbol and the chain.
1150
1148
  *
1151
1149
  * `symbol` is a parameter rather than `offer.asset.code` because the symbol a
1152
1150
  * provider trades under is the provider's, not the catalogue's - Ondo's
@@ -1154,13 +1152,22 @@ declare const CheckoutAssetUi: {
1154
1152
  * asset stands in. Keeping it out here is what lets one companion serve every
1155
1153
  * provider instead of forking per provider.
1156
1154
  *
1155
+ * The icon is resolved from the public token registry when `tokenMetadata`
1156
+ * carries a listed token — `useCheckoutOfferTokenMetadata` fetches it,
1157
+ * keyed by the token `OfferDetail.tokens` lists for this chain — and falls
1158
+ * back to the offer's own logo otherwise. `null` covers every way the
1159
+ * registry answer can be absent (unlisted, not settled, lookup failed);
1160
+ * which one it is stays the concern of the hook's state machine, not of
1161
+ * this model, because the icon is the same either way.
1162
+ *
1157
1163
  * Deliberately no decimals. An offer names an asset; it does not answer for
1158
1164
  * the scale of any particular quantity, and every amount a checkout renders
1159
1165
  * arrives as a `BlockchainAmount` carrying its own.
1160
1166
  */
1161
- fromOffer: (offer: OfferDetail, { symbol, networkName }: {
1167
+ fromOffer: (offer: OfferDetail, { symbol, networkName, tokenMetadata, }: {
1162
1168
  symbol: AssetSymbol;
1163
1169
  networkName: string;
1170
+ tokenMetadata: TokenMetadata | null;
1164
1171
  }) => CheckoutAssetUi;
1165
1172
  };
1166
1173
  /** The chain an asset lives on, as a checkout screen renders it. */
@@ -1382,7 +1389,10 @@ interface UseSuperstateReviewViewModelOptions {
1382
1389
  contractAddress: EvmContractAddress;
1383
1390
  /** The chain the order executes on: the approval and the swap. */
1384
1391
  chain: EthereumChain;
1385
- /** The offer's logo, which is the only icon the output asset has. */
1392
+ /**
1393
+ * The output asset's icon, resolved registry-first by the flow above:
1394
+ * the offer's logo covers an unlisted token.
1395
+ */
1386
1396
  assetIconUrl: AssetIconUrl | null;
1387
1397
  /** Called once the swap has mined. */
1388
1398
  onComplete: (order: SuperstateOrderPlaced) => void;
@@ -1891,19 +1901,30 @@ type OndoCheckoutErrorReason =
1891
1901
  type OndoSidebarUiState = {
1892
1902
  asset: CheckoutAssetUi;
1893
1903
  /**
1894
- * Who issues the asset, e.g. `Ondo Global Markets`.
1895
- *
1896
- * `null` hides the row. No frontline endpoint carries an issuer today, so
1897
- * absence is the normal case rather than an edge one — the same reasoning as
1898
- * `coinlistFee` on the review step.
1904
+ * Who issues the *token*, e.g. `Ondo Global Markets` — not the issuer of the
1905
+ * security it tracks, which is the asset's own name. `null` hides the row.
1899
1906
  */
1900
1907
  issuer: string | null;
1901
1908
  /** The underlying's ticker, e.g. `AAPL` — not the token symbol. `null` hides the row. */
1902
1909
  tickerSymbol: string | null;
1903
- /** The underlying's ISIN, e.g. `US0378331005`. `null` hides the row. */
1910
+ /**
1911
+ * The underlying's ISIN, e.g. `US0378331005`. `null` hides the row, and is
1912
+ * the normal case for the few securities the supplier publishes none for.
1913
+ */
1904
1914
  isin: string | null;
1905
- /** What kind of instrument it is, e.g. `Common Stock`. `null` hides the row. */
1915
+ /**
1916
+ * What kind of instrument it is, in the supplier's own vocabulary — a common
1917
+ * stock arrives as `Stock`, not `Common Stock`. Rendered as given, never
1918
+ * branched on, because the vocabulary can grow. `null` hides the row.
1919
+ */
1906
1920
  assetType: string | null;
1921
+ /**
1922
+ * The venue the underlying lists on, e.g. `NASDAQ`. Unlike the rows above it
1923
+ * is recorded by hand rather than served by the supplier, so `null` — which
1924
+ * hides the row — is the normal state until someone records it, and says
1925
+ * nothing about whether the offer tokenizes a security.
1926
+ */
1927
+ listingVenue: string | null;
1907
1928
  /** Display name of the chain the token lives on, e.g. `Ethereum`. */
1908
1929
  networkName: string;
1909
1930
  price: OndoSidebarPriceUi;
@@ -3497,6 +3518,82 @@ interface ConnectedWalletListProps {
3497
3518
  */
3498
3519
  declare function ConnectedWalletList(props: ConnectedWalletListProps): ReactNode;
3499
3520
 
3521
+ interface IdentityVerificationContainerProps {
3522
+ /**
3523
+ * Sumsub verification level to start. Determines which screens the Sumsub
3524
+ * WebSDK shows. Defaults to the backend's standard identity level.
3525
+ */
3526
+ levelName?: KycLevelName;
3527
+ /**
3528
+ * Reset the Sumsub applicant before starting the flow, so an
3529
+ * already-approved level can be executed again (e.g. to update stale PII).
3530
+ * Pass the `kycReset` value from the requirement status. Applies only to
3531
+ * the initial token: mid-flow token refreshes never repeat the reset.
3532
+ */
3533
+ reset?: boolean;
3534
+ /** BCP-47 language tag for the Sumsub UI, e.g. `'en'`. */
3535
+ locale?: string;
3536
+ /**
3537
+ * Called when the user submits their data in the Sumsub flow. Verification
3538
+ * continues asynchronously on the backend, so the requirement typically moves
3539
+ * to a pending state first - refetch requirement statuses to observe it.
3540
+ */
3541
+ onSubmitted?: () => void;
3542
+ /** Called when the Sumsub flow reports an error. */
3543
+ onError?: (error: Error) => void;
3544
+ className?: string;
3545
+ }
3546
+ /**
3547
+ * Inline Sumsub identity verification flow, backed by
3548
+ * {@link useIdentityVerificationViewModel}, which fetches the Sumsub WebSDK
3549
+ * access token via {@link useKycToken}. Used by
3550
+ * `RequirementsChecklistContainer` for KYC-backed requirements, and can also
3551
+ * be rendered standalone.
3552
+ */
3553
+ declare function IdentityVerificationContainer({ levelName, reset, locale, onSubmitted, onError, className, }: IdentityVerificationContainerProps): ReactNode;
3554
+
3555
+ type IdentityVerificationUiState = {
3556
+ type: 'loading';
3557
+ } | {
3558
+ type: 'error';
3559
+ message: string;
3560
+ retryable: boolean;
3561
+ } | {
3562
+ type: 'ready';
3563
+ accessToken: string;
3564
+ /** BCP-47 language tag for the Sumsub UI, or `undefined` for its default. */
3565
+ locale: string | undefined;
3566
+ /**
3567
+ * Handed straight to the Sumsub WebSDK, which refreshes an expired token
3568
+ * by calling it and awaiting the new one. It has to be a callback rather
3569
+ * than an event, because the third-party SDK expects a promise back.
3570
+ */
3571
+ refreshToken: () => Promise<string>;
3572
+ };
3573
+ type IdentityVerificationUiEvent = {
3574
+ type: 'ON_RETRY';
3575
+ } | {
3576
+ type: 'ON_SUBMITTED';
3577
+ } | {
3578
+ type: 'ON_ERROR';
3579
+ error: Error;
3580
+ };
3581
+
3582
+ interface IdentityVerificationViewProps {
3583
+ state: IdentityVerificationUiState;
3584
+ onEvent: (event: IdentityVerificationUiEvent) => void;
3585
+ className?: string;
3586
+ }
3587
+ /**
3588
+ * Renders the inline Sumsub identity verification flow: its loading state, its
3589
+ * failure states, and the Sumsub iframe itself. Pure: the access token arrives
3590
+ * in `state`, and flow outcomes leave through `onEvent`.
3591
+ *
3592
+ * Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
3593
+ * needed.
3594
+ */
3595
+ declare function IdentityVerificationView(props: IdentityVerificationViewProps): ReactNode;
3596
+
3500
3597
  interface RequirementItemProps {
3501
3598
  ui: RequirementItemUi;
3502
3599
  expanded?: boolean;
@@ -3687,99 +3784,6 @@ interface RequirementsChecklistViewProps {
3687
3784
  */
3688
3785
  declare function RequirementsChecklistView(props: RequirementsChecklistViewProps): ReactNode;
3689
3786
 
3690
- interface VerificationOverlayProps {
3691
- onClose: () => void;
3692
- children: ReactNode;
3693
- }
3694
- /**
3695
- * Full-screen overlay hosting the identity verification flow. Mirrors
3696
- * frontline-web, where verification runs on a dedicated full page rather than
3697
- * inside the requirement row.
3698
- *
3699
- * Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
3700
- * needed. It has to be, because the checklist renders it as a sibling of
3701
- * `RequirementsChecklistView` rather than inside it, and its backdrop
3702
- * (`bg-overlay`) is token-backed: outside `.clco-sdk-root` the token is
3703
- * undefined and the scrim disappears entirely.
3704
- */
3705
- declare function VerificationOverlay({ onClose, children, }: VerificationOverlayProps): ReactNode;
3706
-
3707
- interface IdentityVerificationContainerProps {
3708
- /**
3709
- * Sumsub verification level to start. Determines which screens the Sumsub
3710
- * WebSDK shows. Defaults to the backend's standard identity level.
3711
- */
3712
- levelName?: KycLevelName;
3713
- /**
3714
- * Reset the Sumsub applicant before starting the flow, so an
3715
- * already-approved level can be executed again (e.g. to update stale PII).
3716
- * Pass the `kycReset` value from the requirement status. Applies only to
3717
- * the initial token: mid-flow token refreshes never repeat the reset.
3718
- */
3719
- reset?: boolean;
3720
- /** BCP-47 language tag for the Sumsub UI, e.g. `'en'`. */
3721
- locale?: string;
3722
- /**
3723
- * Called when the user submits their data in the Sumsub flow. Verification
3724
- * continues asynchronously on the backend, so the requirement typically moves
3725
- * to a pending state first - refetch requirement statuses to observe it.
3726
- */
3727
- onSubmitted?: () => void;
3728
- /** Called when the Sumsub flow reports an error. */
3729
- onError?: (error: Error) => void;
3730
- className?: string;
3731
- }
3732
- /**
3733
- * Inline Sumsub identity verification flow, backed by
3734
- * {@link useIdentityVerificationViewModel}, which fetches the Sumsub WebSDK
3735
- * access token via {@link useKycToken}. Used by
3736
- * `RequirementsChecklistContainer` for KYC-backed requirements, and can also
3737
- * be rendered standalone.
3738
- */
3739
- declare function IdentityVerificationContainer({ levelName, reset, locale, onSubmitted, onError, className, }: IdentityVerificationContainerProps): ReactNode;
3740
-
3741
- type IdentityVerificationUiState = {
3742
- type: 'loading';
3743
- } | {
3744
- type: 'error';
3745
- message: string;
3746
- retryable: boolean;
3747
- } | {
3748
- type: 'ready';
3749
- accessToken: string;
3750
- /** BCP-47 language tag for the Sumsub UI, or `undefined` for its default. */
3751
- locale: string | undefined;
3752
- /**
3753
- * Handed straight to the Sumsub WebSDK, which refreshes an expired token
3754
- * by calling it and awaiting the new one. It has to be a callback rather
3755
- * than an event, because the third-party SDK expects a promise back.
3756
- */
3757
- refreshToken: () => Promise<string>;
3758
- };
3759
- type IdentityVerificationUiEvent = {
3760
- type: 'ON_RETRY';
3761
- } | {
3762
- type: 'ON_SUBMITTED';
3763
- } | {
3764
- type: 'ON_ERROR';
3765
- error: Error;
3766
- };
3767
-
3768
- interface IdentityVerificationViewProps {
3769
- state: IdentityVerificationUiState;
3770
- onEvent: (event: IdentityVerificationUiEvent) => void;
3771
- className?: string;
3772
- }
3773
- /**
3774
- * Renders the inline Sumsub identity verification flow: its loading state, its
3775
- * failure states, and the Sumsub iframe itself. Pure: the access token arrives
3776
- * in `state`, and flow outcomes leave through `onEvent`.
3777
- *
3778
- * Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
3779
- * needed.
3780
- */
3781
- declare function IdentityVerificationView(props: IdentityVerificationViewProps): ReactNode;
3782
-
3783
3787
  interface TaxDocumentModalContainerProps {
3784
3788
  isOpen: boolean;
3785
3789
  onClose: () => void;
@@ -3890,6 +3894,23 @@ interface TaxDocumentModalViewProps {
3890
3894
  */
3891
3895
  declare function TaxDocumentModalView({ state, onEvent, className, }: TaxDocumentModalViewProps): ReactNode;
3892
3896
 
3897
+ interface VerificationOverlayProps {
3898
+ onClose: () => void;
3899
+ children: ReactNode;
3900
+ }
3901
+ /**
3902
+ * Full-screen overlay hosting the identity verification flow. Mirrors
3903
+ * frontline-web, where verification runs on a dedicated full page rather than
3904
+ * inside the requirement row.
3905
+ *
3906
+ * Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
3907
+ * needed. It has to be, because the checklist renders it as a sibling of
3908
+ * `RequirementsChecklistView` rather than inside it, and its backdrop
3909
+ * (`bg-overlay`) is token-backed: outside `.clco-sdk-root` the token is
3910
+ * undefined and the scrim disappears entirely.
3911
+ */
3912
+ declare function VerificationOverlay({ onClose, children, }: VerificationOverlayProps): ReactNode;
3913
+
3893
3914
  interface ConnectWalletModalContainerProps {
3894
3915
  isOpen: boolean;
3895
3916
  onClose: () => void;
@@ -4414,13 +4435,18 @@ interface UseOndoBuyReviewViewModelOptions {
4414
4435
  /** The chain the order executes on. */
4415
4436
  chain: EthereumChain;
4416
4437
  /**
4417
- * The offer being bought: the asset's name and its only icon.
4438
+ * The offer being bought: the asset's name and its fallback artwork.
4418
4439
  *
4419
4440
  * The identity comes from here rather than from the price poll, so the card
4420
4441
  * agrees with the reference panel beside it and a dropped poll cannot leave
4421
4442
  * the review unable to say what was bought.
4422
4443
  */
4423
4444
  offer: OfferDetail;
4445
+ /**
4446
+ * Registry metadata for the bought asset; `null` falls back to the offer's
4447
+ * logo.
4448
+ */
4449
+ outputTokenMetadata: TokenMetadata | null;
4424
4450
  /**
4425
4451
  * When false, the step neither builds a transaction nor counts down, and
4426
4452
  * neither refreshing the quote nor placing an order does anything. Defaults
@@ -4453,7 +4479,7 @@ interface UseOndoBuyReviewViewModelResult {
4453
4479
  * Refreshing is always something the user asks for. Each refresh builds a new
4454
4480
  * transaction, which spends an attestation, so nothing here is on a timer.
4455
4481
  */
4456
- declare function useOndoBuyReviewViewModel({ stepInput, ondoSymbol, chain, offer, enabled, onComplete, }: UseOndoBuyReviewViewModelOptions): UseOndoBuyReviewViewModelResult;
4482
+ declare function useOndoBuyReviewViewModel({ stepInput, ondoSymbol, chain, offer, outputTokenMetadata, enabled, onComplete, }: UseOndoBuyReviewViewModelOptions): UseOndoBuyReviewViewModelResult;
4457
4483
 
4458
4484
  /**
4459
4485
  * Which step is being filled in, carrying everything the ones before it
@@ -4614,8 +4640,16 @@ interface UseOndoSellAmountViewModelOptions {
4614
4640
  ondoSymbol: AssetSymbol;
4615
4641
  /** The chain the order executes on: the balance read, the approval and the broadcast. */
4616
4642
  chain: EthereumChain;
4617
- /** The offer being sold: supplies the asset's display name and its only icon. */
4643
+ /**
4644
+ * The offer being sold: supplies the asset's display name and its fallback
4645
+ * artwork.
4646
+ */
4618
4647
  offer: OfferDetail;
4648
+ /**
4649
+ * Registry metadata for the sold asset; `null` falls back to the offer's
4650
+ * logo.
4651
+ */
4652
+ inputTokenMetadata: TokenMetadata | null;
4619
4653
  /**
4620
4654
  * When false, the step neither fetches nor polls. Defaults to true.
4621
4655
  *
@@ -4654,7 +4688,7 @@ interface UseOndoSellAmountViewModelResult {
4654
4688
  * because doing it through a price that moves between the check and the build
4655
4689
  * would reject fillable orders and pass unfillable ones.
4656
4690
  */
4657
- declare function useOndoSellAmountViewModel({ stepInput, ondoSymbol, chain, offer, enabled, onComplete, onEdit, }: UseOndoSellAmountViewModelOptions): UseOndoSellAmountViewModelResult;
4691
+ declare function useOndoSellAmountViewModel({ stepInput, ondoSymbol, chain, offer, inputTokenMetadata, enabled, onComplete, onEdit, }: UseOndoSellAmountViewModelOptions): UseOndoSellAmountViewModelResult;
4658
4692
  type OndoSellAmountValidation = {
4659
4693
  valid: true;
4660
4694
  amount: BlockchainAmount;
@@ -5079,6 +5113,12 @@ interface UseOndoSidebarViewModelOptions {
5079
5113
  ondoSymbol: AssetSymbol;
5080
5114
  /** The chain the order executes on, and so the network shown. */
5081
5115
  chain: EthereumChain;
5116
+ /**
5117
+ * Registry metadata for the offered token, from the checkout flow above.
5118
+ * `null` covers every way the answer can be absent (unlisted, not settled,
5119
+ * lookup failed); the panel falls back to the offer's own logo for it.
5120
+ */
5121
+ tokenMetadata: TokenMetadata | null;
5082
5122
  /** The indicative price poll. */
5083
5123
  priceState: LoadOndoPriceState;
5084
5124
  /** The market-status poll. */
@@ -5099,7 +5139,7 @@ interface UseOndoSidebarViewModelResult {
5099
5139
  * the offer and is on screen from the first render, so a failed or in-flight
5100
5140
  * poll never blanks it.
5101
5141
  */
5102
- declare function useOndoSidebarViewModel({ offer, ondoSymbol, chain, priceState, tradingStatusState, }: UseOndoSidebarViewModelOptions): UseOndoSidebarViewModelResult;
5142
+ declare function useOndoSidebarViewModel({ offer, ondoSymbol, chain, tokenMetadata, priceState, tradingStatusState, }: UseOndoSidebarViewModelOptions): UseOndoSidebarViewModelResult;
5103
5143
 
5104
5144
  /**
5105
5145
  * Whether step 1 is being filled in or already answered.
@@ -5144,6 +5184,128 @@ interface UseOndoWalletSelectViewModelResult {
5144
5184
  */
5145
5185
  declare function useOndoWalletSelectViewModel({ stepInput, wallets, chain, onComplete, onEdit, }: UseOndoWalletSelectViewModelOptions): UseOndoWalletSelectViewModelResult;
5146
5186
 
5187
+ /**
5188
+ * The state of a token-metadata lookup.
5189
+ *
5190
+ * `CONTENT` with `null` means the registry answered and does not list the
5191
+ * token — a real domain answer callers render on (fall back to your own
5192
+ * display defaults). `ERROR` means the answer is unknown; the two must not be
5193
+ * conflated. `DISABLED` means the hook was switched off before an answer
5194
+ * arrived, so there is nothing to render a loading UI for. No
5195
+ * `not-authenticated` reason: the registry is public.
5196
+ */
5197
+ type LoadTokenMetadataState = {
5198
+ type: 'DISABLED';
5199
+ } | {
5200
+ type: 'LOADING';
5201
+ } | {
5202
+ type: 'ERROR';
5203
+ reason: 'generic-error';
5204
+ } | {
5205
+ type: 'CONTENT';
5206
+ tokenMetadata: TokenMetadata | null;
5207
+ };
5208
+ interface UseTokenMetadataOptions extends TokenIdentifier {
5209
+ /**
5210
+ * Metadata pre-fetched on the server (via `CoinListServer#tokens.get`).
5211
+ * When provided, the hook uses it as-is and skips the initial client-side
5212
+ * fetch; {@link UseTokenMetadataResult.refetch} still fetches. `null` is a
5213
+ * valid seed — it means "not in the registry" — and is distinct from
5214
+ * leaving `data` undefined.
5215
+ */
5216
+ data?: TokenMetadata | null;
5217
+ /** When false: no request; see {@link LoadTokenMetadataState}. Default true. */
5218
+ enabled?: boolean;
5219
+ }
5220
+ interface UseTokenMetadataResult {
5221
+ state: LoadTokenMetadataState;
5222
+ /**
5223
+ * Fetches again: the recovery path after a transient `ERROR`, and the way
5224
+ * past a server seed (`data`), which only the first fetch honours. No-op
5225
+ * while disabled.
5226
+ */
5227
+ refetch: () => void;
5228
+ }
5229
+ /**
5230
+ * Loads one token's display metadata (name, symbol, decimals, logos) from
5231
+ * CoinList's public token registry — the lookup `OfferDetail.tokens` entries
5232
+ * are keyed for. To display a whole catalogue, prefer one
5233
+ * `CoinListClient#tokens.list(chain)` over mounting this hook per token.
5234
+ *
5235
+ * No polling: registry content is immutable per version, so a
5236
+ * `(chain, address)` answer does not change under the page. `refetch` exists
5237
+ * for error recovery and for bypassing a server seed, not for freshness.
5238
+ *
5239
+ * Disabled without an answer in hand it reports `DISABLED` rather than
5240
+ * `LOADING` (nothing is in flight, so a spinner would wait forever) and
5241
+ * rather than an empty `CONTENT` (`CONTENT: null` asserts "not in the
5242
+ * registry" — an answer this hook would not actually have). A seeded or
5243
+ * already-fetched `CONTENT` survives disabling.
5244
+ */
5245
+ declare function useTokenMetadata(options: UseTokenMetadataOptions): UseTokenMetadataResult;
5246
+
5247
+ interface UseCheckoutOfferTokenMetadataOptions {
5248
+ /**
5249
+ * The offer being checked out: its `tokens` list supplies the
5250
+ * `(chain, address)` key the registry lookup is made with.
5251
+ */
5252
+ offer: OfferDetail;
5253
+ /** The chain the checkout executes on, which selects the token entry. */
5254
+ chain: EthereumChain;
5255
+ /**
5256
+ * Metadata pre-fetched on the server (via `CoinListServer#tokens.get`).
5257
+ * When provided, the hook uses it as-is and skips the client-side fetch.
5258
+ * `null` is a valid seed — it means "not in the registry" — and is distinct
5259
+ * from leaving `data` undefined.
5260
+ */
5261
+ data?: TokenMetadata | null;
5262
+ /**
5263
+ * When false: no request; see {@link LoadTokenMetadataState}. Default true.
5264
+ */
5265
+ enabled?: boolean;
5266
+ }
5267
+ interface UseCheckoutOfferTokenMetadataResult {
5268
+ state: LoadTokenMetadataState;
5269
+ }
5270
+ /**
5271
+ * The `(chain, address)` the public token registry keys the offer's asset by,
5272
+ * or `null` when the offer lists no token on this chain.
5273
+ *
5274
+ * The checkout renders the asset an offer sells, which is the `swap` entry on
5275
+ * its chain; a `distribution` entry names the same token for a sale product,
5276
+ * so it is accepted as the fallback. `funding` entries name what a swap is
5277
+ * paid with, never what it sells, so they are skipped — the funding row has
5278
+ * its own icon source in `stablecoinIconUrl`.
5279
+ */
5280
+ declare function offerTokenIdentifier(offer: OfferDetail, chain: EthereumChain): TokenIdentifier | null;
5281
+ /**
5282
+ * The metadata value `CheckoutAssetUi.fromOffer` wants, from the shared
5283
+ * lookup's state: `null` while the answer is unknown (loading, error,
5284
+ * disabled), which is the signal that renders the offer's own logo.
5285
+ *
5286
+ * Exported because every checkout god viewmodel projects its state exactly
5287
+ * once for the same reason — the steps below them render a value, not a
5288
+ * state machine — and three hand-written copies of the load-bearing
5289
+ * fallback rule would drift the first time the state union grows an arm.
5290
+ */
5291
+ declare function tokenMetadataOf(state: LoadTokenMetadataState): TokenMetadata | null;
5292
+ /**
5293
+ * Loads the public token registry's display metadata for the asset an offer
5294
+ * sells, keyed by the token `OfferDetail.tokens` lists for the checkout's
5295
+ * chain. Checkout screens feed the result into `CheckoutAssetUi.fromOffer`,
5296
+ * which prefers the registry logo and falls back to the offer's own.
5297
+ *
5298
+ * A composition rather than a re-implementation: `useTokenMetadata` already
5299
+ * owns the `(chain, address)` lookup and its state machine, so this hook
5300
+ * contributes only the offer step — which token entry is the asset being
5301
+ * sold — and delegates the rest. An offer that lists no token on this chain
5302
+ * is seeded with "not listed", which is a settled answer rather than a
5303
+ * spinner. There is deliberately no `refetch`: the offer and chain are fixed
5304
+ * for the lifetime of the checkout, and a failed lookup renders the offer
5305
+ * logo — there is no user-visible recovery to hang a retry on.
5306
+ */
5307
+ declare function useCheckoutOfferTokenMetadata({ offer, chain, data, enabled, }: UseCheckoutOfferTokenMetadataOptions): UseCheckoutOfferTokenMetadataResult;
5308
+
5147
5309
  /** How much the user is spending, and what they are spending it in. */
5148
5310
  type SuperstateAmountConfirmed = {
5149
5311
  amount: BlockchainAmount;
@@ -5315,7 +5477,10 @@ interface UseSuperstateSidebarViewModelOptions {
5315
5477
  offer: OfferDetail;
5316
5478
  /** The chain the token lives on, which names the network row. */
5317
5479
  chain: EthereumChain;
5318
- /** The offer's logo — the only icon the output asset has. */
5480
+ /**
5481
+ * The output asset's icon, resolved by the flow above: registry-first,
5482
+ * with the offer's logo as the fallback.
5483
+ */
5319
5484
  assetIconUrl: AssetIconUrl | null;
5320
5485
  /**
5321
5486
  * The swap's output token, or `null` while it is still being read. It names
@@ -5566,53 +5731,6 @@ interface UseOffersGridViewModelResult {
5566
5731
  */
5567
5732
  declare function useOffersGridViewModel(options?: UseOffersGridViewModelOptions): UseOffersGridViewModelResult;
5568
5733
 
5569
- interface UseRequirementsChecklistViewModelOptions {
5570
- offerId: OfferId;
5571
- optionId: OfferOptionId;
5572
- title: string;
5573
- description: string;
5574
- onContinue?: () => void;
5575
- /**
5576
- * Called when the user clicks a requirement's action button. Defaults to
5577
- * `CoinListClient#requirements.handle`, except for `document` requirements,
5578
- * which open the built-in tax document modal, and wallet requirements with a
5579
- * host wallet, which open the built-in connect flow. Pass `null` to disable
5580
- * the action button entirely.
5581
- */
5582
- onRequirementActionOverride?: ((requirement: Requirement) => void) | null;
5583
- /**
5584
- * Called when the user clicks "Contact support" on a rejected requirement.
5585
- * Defaults to `CoinListClient#support.contact`. Pass `null` to disable the
5586
- * button entirely.
5587
- */
5588
- onContactSupportOverride?: ((requirement: Requirement) => void) | null;
5589
- /** Host-provided connected wallet, or `null` while none is connected. */
5590
- wallet?: ConnectWallet | null;
5591
- /** Called when the user asks to connect a wallet and none is connected yet. */
5592
- onRequestConnect?: () => void;
5593
- /** Override the default label for a requirement type. */
5594
- getLabel?: (requirement: Requirement) => string;
5595
- /** Override the default description for a requirement type. */
5596
- getDescription?: (requirement: Requirement) => string | null;
5597
- /** Requirements pre-fetched on the server. */
5598
- data?: RequirementsData;
5599
- /** Options for the inline Sumsub verification flow. */
5600
- identityVerificationOptions?: {
5601
- levelName?: KycLevelName;
5602
- locale?: string;
5603
- };
5604
- }
5605
- interface UseRequirementsChecklistViewModelResult {
5606
- state: RequirementsChecklistUiState;
5607
- onEvent: (event: RequirementsChecklistUiEvent) => void;
5608
- }
5609
- /**
5610
- * Drives {@link RequirementsChecklistView}: loads the requirements and their
5611
- * statuses for one offer option, shapes each row, and owns the three flows the
5612
- * checklist can open (tax document, wallet connect, identity verification).
5613
- */
5614
- declare function useRequirementsChecklistViewModel(options: UseRequirementsChecklistViewModelOptions): UseRequirementsChecklistViewModelResult;
5615
-
5616
5734
  /**
5617
5735
  * A display-ready connect-wallet error: the core flow's machine-readable code
5618
5736
  * and `retryable` flag, plus copy for the UI.
@@ -5874,6 +5992,53 @@ interface UseTaxDocumentModalViewModelResult {
5874
5992
  */
5875
5993
  declare function useTaxDocumentModalViewModel({ isOpen, onClose, onSubmitted, }: UseTaxDocumentModalViewModelOptions): UseTaxDocumentModalViewModelResult;
5876
5994
 
5995
+ interface UseRequirementsChecklistViewModelOptions {
5996
+ offerId: OfferId;
5997
+ optionId: OfferOptionId;
5998
+ title: string;
5999
+ description: string;
6000
+ onContinue?: () => void;
6001
+ /**
6002
+ * Called when the user clicks a requirement's action button. Defaults to
6003
+ * `CoinListClient#requirements.handle`, except for `document` requirements,
6004
+ * which open the built-in tax document modal, and wallet requirements with a
6005
+ * host wallet, which open the built-in connect flow. Pass `null` to disable
6006
+ * the action button entirely.
6007
+ */
6008
+ onRequirementActionOverride?: ((requirement: Requirement) => void) | null;
6009
+ /**
6010
+ * Called when the user clicks "Contact support" on a rejected requirement.
6011
+ * Defaults to `CoinListClient#support.contact`. Pass `null` to disable the
6012
+ * button entirely.
6013
+ */
6014
+ onContactSupportOverride?: ((requirement: Requirement) => void) | null;
6015
+ /** Host-provided connected wallet, or `null` while none is connected. */
6016
+ wallet?: ConnectWallet | null;
6017
+ /** Called when the user asks to connect a wallet and none is connected yet. */
6018
+ onRequestConnect?: () => void;
6019
+ /** Override the default label for a requirement type. */
6020
+ getLabel?: (requirement: Requirement) => string;
6021
+ /** Override the default description for a requirement type. */
6022
+ getDescription?: (requirement: Requirement) => string | null;
6023
+ /** Requirements pre-fetched on the server. */
6024
+ data?: RequirementsData;
6025
+ /** Options for the inline Sumsub verification flow. */
6026
+ identityVerificationOptions?: {
6027
+ levelName?: KycLevelName;
6028
+ locale?: string;
6029
+ };
6030
+ }
6031
+ interface UseRequirementsChecklistViewModelResult {
6032
+ state: RequirementsChecklistUiState;
6033
+ onEvent: (event: RequirementsChecklistUiEvent) => void;
6034
+ }
6035
+ /**
6036
+ * Drives {@link RequirementsChecklistView}: loads the requirements and their
6037
+ * statuses for one offer option, shapes each row, and owns the three flows the
6038
+ * checklist can open (tax document, wallet connect, identity verification).
6039
+ */
6040
+ declare function useRequirementsChecklistViewModel(options: UseRequirementsChecklistViewModelOptions): UseRequirementsChecklistViewModelResult;
6041
+
5877
6042
  interface UseConnectWalletModalViewModelOptions {
5878
6043
  isOpen: boolean;
5879
6044
  onClose: () => void;
@@ -6000,66 +6165,6 @@ interface UseErc20TokenBalancesResult {
6000
6165
  */
6001
6166
  declare function useErc20TokenBalances(options: UseErc20TokenBalancesOptions): UseErc20TokenBalancesResult;
6002
6167
 
6003
- /**
6004
- * The state of a token-metadata lookup.
6005
- *
6006
- * `CONTENT` with `null` means the registry answered and does not list the
6007
- * token — a real domain answer callers render on (fall back to your own
6008
- * display defaults). `ERROR` means the answer is unknown; the two must not be
6009
- * conflated. `DISABLED` means the hook was switched off before an answer
6010
- * arrived, so there is nothing to render a loading UI for. No
6011
- * `not-authenticated` reason: the registry is public.
6012
- */
6013
- type LoadTokenMetadataState = {
6014
- type: 'DISABLED';
6015
- } | {
6016
- type: 'LOADING';
6017
- } | {
6018
- type: 'ERROR';
6019
- reason: 'generic-error';
6020
- } | {
6021
- type: 'CONTENT';
6022
- tokenMetadata: TokenMetadata | null;
6023
- };
6024
- interface UseTokenMetadataOptions extends TokenIdentifier {
6025
- /**
6026
- * Metadata pre-fetched on the server (via `CoinListServer#tokens.get`).
6027
- * When provided, the hook uses it as-is and skips the initial client-side
6028
- * fetch; {@link UseTokenMetadataResult.refetch} still fetches. `null` is a
6029
- * valid seed — it means "not in the registry" — and is distinct from
6030
- * leaving `data` undefined.
6031
- */
6032
- data?: TokenMetadata | null;
6033
- /** When false: no request; see {@link LoadTokenMetadataState}. Default true. */
6034
- enabled?: boolean;
6035
- }
6036
- interface UseTokenMetadataResult {
6037
- state: LoadTokenMetadataState;
6038
- /**
6039
- * Fetches again: the recovery path after a transient `ERROR`, and the way
6040
- * past a server seed (`data`), which only the first fetch honours. No-op
6041
- * while disabled.
6042
- */
6043
- refetch: () => void;
6044
- }
6045
- /**
6046
- * Loads one token's display metadata (name, symbol, decimals, logos) from
6047
- * CoinList's public token registry — the lookup `OfferDetail.tokens` entries
6048
- * are keyed for. To display a whole catalogue, prefer one
6049
- * `CoinListClient#tokens.list(chain)` over mounting this hook per token.
6050
- *
6051
- * No polling: registry content is immutable per version, so a
6052
- * `(chain, address)` answer does not change under the page. `refetch` exists
6053
- * for error recovery and for bypassing a server seed, not for freshness.
6054
- *
6055
- * Disabled without an answer in hand it reports `DISABLED` rather than
6056
- * `LOADING` (nothing is in flight, so a spinner would wait forever) and
6057
- * rather than an empty `CONTENT` (`CONTENT: null` asserts "not in the
6058
- * registry" — an answer this hook would not actually have). A seeded or
6059
- * already-fetched `CONTENT` survives disabling.
6060
- */
6061
- declare function useTokenMetadata(options: UseTokenMetadataOptions): UseTokenMetadataResult;
6062
-
6063
6168
  interface UseCoinListResult {
6064
6169
  /**
6065
6170
  * Indicates whether the CoinList client has been initialized and ready to use.
@@ -6094,9 +6199,10 @@ declare const USDT_ICON_URL: AssetIconUrl;
6094
6199
  *
6095
6200
  * `StablecoinSymbol` is a closed union of the two coins the swap flows accept,
6096
6201
  * so the lookup is total and stays total: adding a third funding coin is a
6097
- * compile error here. Every other asset a checkout renders comes from an offer
6098
- * and carries its own artwork, which is why `CheckoutAssetUi.fromErc20` still
6099
- * takes `iconUrl` from its caller and still defaults to `null`.
6202
+ * compile error here. Every other asset a checkout renders is an offer's,
6203
+ * whose artwork `offerAssetIconUrl` resolves registry-first; the funding
6204
+ * asset has no offer behind it, which is why `CheckoutAssetUi.fromErc20`
6205
+ * still takes `iconUrl` from its caller and still defaults to `null`.
6100
6206
  *
6101
6207
  * It lives in the SDK rather than in each host because the alternative was
6102
6208
  * every partner mapping the same two symbols to the same two URLs - which is
@@ -6121,12 +6227,44 @@ declare function stablecoinIconUrl(symbol: StablecoinSymbol): AssetIconUrl;
6121
6227
  * for `null`, which is what the offers grid already does.
6122
6228
  */
6123
6229
  declare function offerIconUrl(offer: OfferDetail): AssetIconUrl | null;
6230
+ /**
6231
+ * The URL of a token-registry logo, or `null` when the logo carries no usable
6232
+ * image (unrepresentable for a registry logo today, but a consumer must not
6233
+ * crash on it).
6234
+ *
6235
+ * A vector logo is a single SVG and needs no picking. A raster logo ships
6236
+ * webp variants at 32/64/128/256/512px plus an original, and `minWidth` picks
6237
+ * the smallest variant that covers it — a 64px webp for a 40px render beats
6238
+ * the 250px original, and beats an upscaled 32px. When no variant covers
6239
+ * `minWidth`, the original is used rather than the largest variant: the
6240
+ * registry never upscales past it, and a render that wide is the one case an
6241
+ * original-sized image is right for. The smallest qualifying variant is
6242
+ * chosen by width rather than by position, so a registry that serves its
6243
+ * variants out of order still resolves the same answer. Defaults to 40, the
6244
+ * edge length `AssetIcon` renders a checkout asset at.
6245
+ */
6246
+ declare function tokenLogoUrl(logo: TokenLogo, minWidth?: number): AssetIconUrl | null;
6247
+ /**
6248
+ * The artwork a checkout shows for the asset an offer sells.
6249
+ *
6250
+ * Resolved from the public token registry when the caller has metadata for
6251
+ * the offered token — `(chain, address)` entries of `OfferDetail.tokens`
6252
+ * key a `coinlist.tokens.get` lookup, which `useCheckoutOfferTokenMetadata`
6253
+ * performs for checkout screens — and from the offer's own logo otherwise.
6254
+ * The registry logo wins when both exist, because it is the token's real
6255
+ * artwork where `Offer.logoUrl` is catalogue artwork; the offer logo stays
6256
+ * as the fallback for `tokenMetadata: null`, which covers every way the
6257
+ * registry answer can be absent: the token is unlisted, the lookup has not
6258
+ * settled, or it failed. `null` is returned only when neither source
6259
+ * carries one.
6260
+ */
6261
+ declare function offerAssetIconUrl(offer: OfferDetail, tokenMetadata: TokenMetadata | null): AssetIconUrl | null;
6124
6262
 
6125
6263
  /**
6126
6264
  * Date presentation helpers.
6127
6265
  *
6128
6266
  * Every function takes an explicit `locale`, the way
6129
- * `@/shared/core/blockchain/formatters` does: the UI layer never reads the
6267
+ * `@/universal/core/shared/blockchain/formatters` does: the UI layer never reads the
6130
6268
  * locale from React context, so it stays pure and testable. Callers get the
6131
6269
  * locale from `useLocale()` in a viewmodel and pass it down.
6132
6270
  */
@@ -6219,4 +6357,4 @@ interface UseCountdownOptions {
6219
6357
  */
6220
6358
  declare function useCountdown({ until, tickMs, enabled, }: UseCountdownOptions): number | null;
6221
6359
 
6222
- export { type AuthState, type AuthorizeWalletParams, ChecklistStatus, CheckoutAssetUi, type CheckoutConfig, type CheckoutConfirmedWalletUi, CheckoutContainer, type CheckoutContainerProps, type CheckoutCtaUi, type CheckoutEmbeddedWalletUi, type CheckoutNetworkUi, type CheckoutSelectableInputAssetUi, type CheckoutStatusUi, type CheckoutWalletSelection, type CheckoutWalletTypeUi, type CheckoutWalletUi, type ClientAuthConfig, type ClientAuthNamespace, ClientAuthNamespaceImpl, type ClientAuthSession, type ClientCoinListTokenSaleNamespace, ClientCoinListTokenSaleNamespaceImpl, type ClientConfig, type ClientOndoNamespace, ClientOndoNamespaceImpl, type ClientRequirementsNamespace, ClientRequirementsNamespaceImpl, type ClientSuperstateSwapNamespace, ClientSuperstateSwapNamespaceImpl, type ClientSupportNamespace, ClientSupportNamespaceImpl, type CoinListClient, CoinListClientInitializationError, CoinListContext, CoinListContextProvider, type CoinListContextValue, CoinListProvider, type CoinListProviderProps, CoinListSignInButton, CoinListSignInCardContainer, type CoinListSignInCardContainerProps, type CoinListSignInCardUiEvent, type CoinListSignInCardUiState, CoinListSignInCardView, type CoinListSignInCardViewProps, CoinListStyleScope, type CoinListStyleScopeProps, type CoinListTokenSaleCheckoutConfig, type CompleteOAuthFailureReason, ConnectWallet, type ConnectWalletError, type ConnectWalletErrorCode, type ConnectWalletFlowError, type ConnectWalletFlowParams, type ConnectWalletFlowResult, ConnectWalletModalContainer, type ConnectWalletModalContainerProps, type ConnectWalletModalUiEvent, type ConnectWalletModalUiState, ConnectWalletModalView, type ConnectWalletModalViewProps, type ConnectWalletPhase, type ConnectWalletScreenUi, type ConnectWalletSignState, type ConnectWalletState, ConnectedWalletList, type ConnectedWalletListProps, type ConnectedWalletUi, ERC20_BALANCE_POLL_INTERVAL_MS, type Erc20AllowanceError, type Erc20AllowancePhase, type Erc20AllowanceResult, type Erc20ApprovalError, EvmWallet, type ExecuteOndoSwapParams, type ExecuteSwapParams, type ExecuteTokenSaleParams, IdentityVerificationContainer, type IdentityVerificationContainerProps, type IdentityVerificationUiEvent, type IdentityVerificationUiState, IdentityVerificationView, type IdentityVerificationViewProps, KycLevelName, type KycTokenErrorReason, type KycTokenState, type LoadOfferDetailsReason, type LoadOfferDetailsState, type LoadOffersReason, type LoadOffersState, type LoadOndoBuyTransactionState, type LoadOndoPriceState, type LoadOndoSellTransactionState, type LoadOndoTradingStatusState, type LoadOptionAddressesReason, type LoadOptionAddressesState, type LoadParticipationsReason, type LoadParticipationsState, type LoadRequirementsReason, type LoadRequirementsState, type LoadTokenMetadataState, Logger, OAUTH_CODE_VERIFIER_KEY, OAUTH_STATE_KEY, type OauthClientErrorReason, type OauthClientResult, OfferAssetCard, type OfferAssetCardProps, OfferAssetCardUi, OfferSaleCard, type OfferSaleCardProps, OfferSaleCardUi, OffersAssetGrid, type OffersAssetGridProps, OffersGridContainer, type OffersGridContainerProps, type OffersGridUiEvent, type OffersGridUiState, OffersGridView, type OffersGridViewProps, type OndoBuyAmountConfirmed, type OndoBuyAmountStepInput, type OndoBuyAmountUiEvent, type OndoBuyAmountUiState, type OndoBuyAmountValidation, OndoBuyAmountView, type OndoBuyAmountViewProps, OndoBuyCheckoutContainer, type OndoBuyCheckoutContainerProps, type OndoBuyCheckoutUiEvent, type OndoBuyCheckoutUiState, OndoBuyCheckoutView, type OndoBuyCheckoutViewProps, type OndoBuyExecutionResult, OndoBuyOrderConfirmed, type OndoBuyOrderPlaced, type OndoBuyOrderTerms, type OndoBuyPreparationResult, type OndoBuyQuoteStatusUi, type OndoBuyReviewStepInput, type OndoBuyReviewUiEvent, type OndoBuyReviewUiState, OndoBuyReviewView, type OndoBuyReviewViewProps, type OndoBuyStep, type OndoCheckoutConfig, OndoCheckoutError, type OndoCheckoutErrorProps, type OndoCheckoutErrorReason, type OndoLoadErrorReason, type OndoOrderConfirmedProps, type OndoOrderConfirmedUiEvent, type OndoOrderConfirmedUiState, type OndoOrderPlaced, type OndoOrderPlacedCore, type OndoSellAmountConfirmed, type OndoSellAmountStepInput, type OndoSellAmountUiEvent, type OndoSellAmountUiState, type OndoSellAmountValidation, OndoSellAmountView, type OndoSellAmountViewProps, type OndoSellAsset, type OndoSellBalanceUi, OndoSellCheckoutContainer, type OndoSellCheckoutContainerProps, type OndoSellCheckoutUiEvent, type OndoSellCheckoutUiState, OndoSellCheckoutView, type OndoSellCheckoutViewProps, type OndoSellExecutionResult, OndoSellOrderConfirmed, type OndoSellOrderConfirmedProps, type OndoSellOrderConfirmedUiEvent, type OndoSellOrderConfirmedUiState, type OndoSellOrderPlaced, type OndoSellOrderTerms, type OndoSellOutcomeUi, type OndoSellPreparationResult, type OndoSellQuoteStatusUi, type OndoSellReviewStepInput, type OndoSellReviewUiEvent, type OndoSellReviewUiState, OndoSellReviewView, type OndoSellReviewViewProps, type OndoSellSourceWalletUi, type OndoSellStep, type OndoSidebarPriceUi, type OndoSidebarUiState, OndoSidebarView, type OndoSidebarViewProps, type OndoSwapExecutionError, type OndoSwapExecutionPhase, type OndoSwapExecutionResult, type OndoSwapPreparationError, type OndoSwapPreparationPhase, type OndoSwapPreparationResult, type OndoWalletSelectStepInput, type OndoWalletSelectUiEvent, type OndoWalletSelectUiState, OndoWalletSelectView, type OndoWalletSelectViewProps, PinoLoggerOptions, type PrepareOndoBuyParams, type PrepareOndoSellParams, type PrepareOndoSwapParamsCore, type RequiredCheckoutConfig, RequirementItem, type RequirementItemProps, RequirementItemUi, RequirementStatus, RequirementVariant, RequirementsChecklistContainer, type RequirementsChecklistContainerProps, type RequirementsChecklistItemUi, type RequirementsChecklistUiEvent, type RequirementsChecklistUiState, RequirementsChecklistView, type RequirementsChecklistViewProps, type RequirementsData, type RequirementsVerificationUi, type SignState, SlippagePicker, type SlippagePickerProps, type SubmitErc20ApprovalResult, type SuperstateAmountConfirmed, type SuperstateAmountStepInput, type SuperstateAmountUiEvent, type SuperstateAmountUiState, type SuperstateAmountValidation, SuperstateAmountView, type SuperstateAmountViewProps, type SuperstateCheckoutConfig, SuperstateOrderConfirmed, type SuperstateOrderConfirmedProps, type SuperstateOrderConfirmedUiEvent, type SuperstateOrderConfirmedUiState, type SuperstateOrderPlaced, type SuperstateReviewStepInput, type SuperstateReviewUiEvent, type SuperstateReviewUiState, SuperstateReviewView, type SuperstateReviewViewProps, type SuperstateSidebarPriceUi, type SuperstateSidebarUiState, SuperstateSidebarView, type SuperstateSidebarViewProps, type SuperstateSlippageOptionUi, type SuperstateSlippageUi, SuperstateSwapCheckoutContainer, type SuperstateSwapCheckoutContainerProps, type SuperstateSwapCheckoutRetryUiEvent, type SuperstateSwapCheckoutUiEvent, type SuperstateSwapCheckoutUiState, SuperstateSwapCheckoutView, type SuperstateSwapCheckoutViewProps, type SuperstateSwapLoadErrorReason, type SuperstateSwapStep, type SuperstateWalletStepInput, type SuperstateWalletUiEvent, type SuperstateWalletUiState, SuperstateWalletView, type SuperstateWalletViewProps, type SwapExecutionError, type SwapExecutionPhase, type SwapExecutionResult, type SwapOutputTokenState, type TaxDocumentAddressParts, type TaxDocumentFieldUi, type TaxDocumentFields, TaxDocumentModalContainer, type TaxDocumentModalContainerProps, type TaxDocumentModalUiEvent, type TaxDocumentModalUiState, TaxDocumentModalView, type TaxDocumentModalViewProps, type TaxDocumentScreenUi, type TaxDocumentState, type TokenSaleExecutionError, type TokenSaleExecutionPhase, type TokenSaleExecutionResult, USDC_ICON_URL, USDT_ICON_URL, type UseCoinListResult, type UseCoinListSignInCardViewModelOptions, type UseCoinListSignInCardViewModelResult, type UseCompleteOAuthOptions, type UseConnectWalletModalViewModelOptions, type UseConnectWalletModalViewModelResult, type UseConnectWalletOptions, type UseConnectWalletResult, type UseCountdownOptions, type UseErc20BalanceOptions, type UseErc20BalanceResult, type UseErc20TokenBalancesOptions, type UseErc20TokenBalancesResult, type UseIdentityVerificationViewModelOptions, type UseIdentityVerificationViewModelResult, type UseKycTokenResult, type UseOfferDetailsOptions, type UseOfferDetailsResult, type UseOffersGridViewModelOptions, type UseOffersGridViewModelResult, type UseOffersOptions, type UseOffersResult, type UseOndoBuyAmountViewModelOptions, type UseOndoBuyAmountViewModelResult, type UseOndoBuyCheckoutViewModelOptions, type UseOndoBuyCheckoutViewModelResult, type UseOndoBuyReviewViewModelOptions, type UseOndoBuyReviewViewModelResult, type UseOndoBuyTransactionOptions, type UseOndoBuyTransactionResult, type UseOndoPriceOptions, type UseOndoPriceResult, type UseOndoSellAmountViewModelOptions, type UseOndoSellAmountViewModelResult, type UseOndoSellCheckoutViewModelOptions, type UseOndoSellCheckoutViewModelResult, type UseOndoSellReviewViewModelOptions, type UseOndoSellReviewViewModelResult, type UseOndoSellTransactionOptions, type UseOndoSellTransactionResult, type UseOndoSidebarViewModelOptions, type UseOndoSidebarViewModelResult, type UseOndoTradingStatusOptions, type UseOndoTradingStatusResult, type UseOndoWalletSelectViewModelOptions, type UseOndoWalletSelectViewModelResult, type UseOptionAddressesOptions, type UseOptionAddressesResult, type UseParticipationsOptions, type UseParticipationsResult, type UseRequirementsChecklistViewModelOptions, type UseRequirementsChecklistViewModelResult, type UseRequirementsOptions, type UseRequirementsResult, type UseSuperstateAmountViewModelOptions, type UseSuperstateAmountViewModelResult, type UseSuperstateReviewViewModelOptions, type UseSuperstateReviewViewModelResult, type UseSuperstateSidebarViewModelOptions, type UseSuperstateSidebarViewModelResult, type UseSuperstateSwapCheckoutViewModelOptions, type UseSuperstateSwapCheckoutViewModelResult, type UseSuperstateWalletViewModelOptions, type UseSuperstateWalletViewModelResult, type UseSwapOutputTokenOptions, type UseSwapOutputTokenResult, type UseSwapQuoteOptions, type UseSwapQuoteResult, type UseTaxDocumentModalViewModelOptions, type UseTaxDocumentModalViewModelResult, type UseTaxDocumentOptions, type UseTaxDocumentResult, type UseTokenMetadataOptions, type UseTokenMetadataResult, VerificationOverlay, type VerificationOverlayProps, type WalletAuthorizationError, type WalletAuthorizationPhase, type WalletAuthorizationResult, WalletError, type WalletsStatus, authorizeWallet, classifyWalletError, connectExternalWalletFlow, createCoinListClient, defaultCheckoutConfig, ensureErc20Allowance, executeOndoSwap, executeSwap, executeTokenSale, formatCountdown, formatMonthYear, formatSaleCardCountdown, offerIconUrl, ondoLoadErrorReason, pinoClientLogger, prepareOndoBuy, prepareOndoSell, quoteIsStale, quoteOverAsks, stablecoinIconUrl, submitErc20Approval, useCoinList, useCoinListSignInCardViewModel, useCompleteOAuth, useConnectWallet, useConnectWalletModalViewModel, useCountdown, useErc20Balance, useErc20TokenBalances, useIdentityVerificationViewModel, useKycToken, useOfferDetails, useOffers, useOffersGridViewModel, useOndoBuyAmountViewModel, useOndoBuyCheckoutViewModel, useOndoBuyReviewViewModel, useOndoBuyTransaction, useOndoPrice, useOndoSellAmountViewModel, useOndoSellCheckoutViewModel, useOndoSellReviewViewModel, useOndoSellTransaction, useOndoSidebarViewModel, useOndoTradingStatus, useOndoWalletSelectViewModel, useOptionAddresses, useParticipations, useRequirements, useRequirementsChecklistViewModel, useSuperstateAmountViewModel, useSuperstateReviewViewModel, useSuperstateSidebarViewModel, useSuperstateSwapCheckoutViewModel, useSuperstateWalletViewModel, useSwapOutputToken, useSwapQuote, useTaxDocument, useTaxDocumentModalViewModel, useTokenMetadata, validateAmount, validateSellAmount, validateSuperstateAmount };
6360
+ export { type AuthState, type AuthorizeWalletParams, ChecklistStatus, CheckoutAssetUi, type CheckoutConfig, type CheckoutConfirmedWalletUi, CheckoutContainer, type CheckoutContainerProps, type CheckoutCtaUi, type CheckoutEmbeddedWalletUi, type CheckoutNetworkUi, type CheckoutSelectableInputAssetUi, type CheckoutStatusUi, type CheckoutWalletSelection, type CheckoutWalletTypeUi, type CheckoutWalletUi, type ClientAuthConfig, type ClientAuthNamespace, ClientAuthNamespaceImpl, type ClientAuthSession, type ClientCoinListTokenSaleNamespace, ClientCoinListTokenSaleNamespaceImpl, type ClientConfig, type ClientOndoNamespace, ClientOndoNamespaceImpl, type ClientRequirementsNamespace, ClientRequirementsNamespaceImpl, type ClientSuperstateSwapNamespace, ClientSuperstateSwapNamespaceImpl, type ClientSupportNamespace, ClientSupportNamespaceImpl, type CoinListClient, CoinListClientInitializationError, CoinListContext, CoinListContextProvider, type CoinListContextValue, CoinListProvider, type CoinListProviderProps, CoinListSignInButton, CoinListSignInCardContainer, type CoinListSignInCardContainerProps, type CoinListSignInCardUiEvent, type CoinListSignInCardUiState, CoinListSignInCardView, type CoinListSignInCardViewProps, CoinListStyleScope, type CoinListStyleScopeProps, type CoinListTokenSaleCheckoutConfig, type CompleteOAuthFailureReason, ConnectWallet, type ConnectWalletError, type ConnectWalletErrorCode, type ConnectWalletFlowError, type ConnectWalletFlowParams, type ConnectWalletFlowResult, ConnectWalletModalContainer, type ConnectWalletModalContainerProps, type ConnectWalletModalUiEvent, type ConnectWalletModalUiState, ConnectWalletModalView, type ConnectWalletModalViewProps, type ConnectWalletPhase, type ConnectWalletScreenUi, type ConnectWalletSignState, type ConnectWalletState, ConnectedWalletList, type ConnectedWalletListProps, type ConnectedWalletUi, ERC20_BALANCE_POLL_INTERVAL_MS, type Erc20AllowanceError, type Erc20AllowancePhase, type Erc20AllowanceResult, type Erc20ApprovalError, EvmWallet, type ExecuteOndoSwapParams, type ExecuteSwapParams, type ExecuteTokenSaleParams, IdentityVerificationContainer, type IdentityVerificationContainerProps, type IdentityVerificationUiEvent, type IdentityVerificationUiState, IdentityVerificationView, type IdentityVerificationViewProps, KycLevelName, type KycTokenErrorReason, type KycTokenState, type LoadOfferDetailsReason, type LoadOfferDetailsState, type LoadOffersReason, type LoadOffersState, type LoadOndoBuyTransactionState, type LoadOndoPriceState, type LoadOndoSellTransactionState, type LoadOndoTradingStatusState, type LoadOptionAddressesReason, type LoadOptionAddressesState, type LoadParticipationsReason, type LoadParticipationsState, type LoadRequirementsReason, type LoadRequirementsState, type LoadTokenMetadataState, Logger, OAUTH_CODE_VERIFIER_KEY, OAUTH_STATE_KEY, type OauthClientErrorReason, type OauthClientResult, OfferAssetCard, type OfferAssetCardProps, OfferAssetCardUi, OfferSaleCard, type OfferSaleCardProps, OfferSaleCardUi, OffersAssetGrid, type OffersAssetGridProps, OffersGridContainer, type OffersGridContainerProps, type OffersGridUiEvent, type OffersGridUiState, OffersGridView, type OffersGridViewProps, type OndoBuyAmountConfirmed, type OndoBuyAmountStepInput, type OndoBuyAmountUiEvent, type OndoBuyAmountUiState, type OndoBuyAmountValidation, OndoBuyAmountView, type OndoBuyAmountViewProps, OndoBuyCheckoutContainer, type OndoBuyCheckoutContainerProps, type OndoBuyCheckoutUiEvent, type OndoBuyCheckoutUiState, OndoBuyCheckoutView, type OndoBuyCheckoutViewProps, type OndoBuyExecutionResult, OndoBuyOrderConfirmed, type OndoBuyOrderPlaced, type OndoBuyOrderTerms, type OndoBuyPreparationResult, type OndoBuyQuoteStatusUi, type OndoBuyReviewStepInput, type OndoBuyReviewUiEvent, type OndoBuyReviewUiState, OndoBuyReviewView, type OndoBuyReviewViewProps, type OndoBuyStep, type OndoCheckoutConfig, OndoCheckoutError, type OndoCheckoutErrorProps, type OndoCheckoutErrorReason, type OndoLoadErrorReason, type OndoOrderConfirmedProps, type OndoOrderConfirmedUiEvent, type OndoOrderConfirmedUiState, type OndoOrderPlaced, type OndoOrderPlacedCore, type OndoSellAmountConfirmed, type OndoSellAmountStepInput, type OndoSellAmountUiEvent, type OndoSellAmountUiState, type OndoSellAmountValidation, OndoSellAmountView, type OndoSellAmountViewProps, type OndoSellAsset, type OndoSellBalanceUi, OndoSellCheckoutContainer, type OndoSellCheckoutContainerProps, type OndoSellCheckoutUiEvent, type OndoSellCheckoutUiState, OndoSellCheckoutView, type OndoSellCheckoutViewProps, type OndoSellExecutionResult, OndoSellOrderConfirmed, type OndoSellOrderConfirmedProps, type OndoSellOrderConfirmedUiEvent, type OndoSellOrderConfirmedUiState, type OndoSellOrderPlaced, type OndoSellOrderTerms, type OndoSellOutcomeUi, type OndoSellPreparationResult, type OndoSellQuoteStatusUi, type OndoSellReviewStepInput, type OndoSellReviewUiEvent, type OndoSellReviewUiState, OndoSellReviewView, type OndoSellReviewViewProps, type OndoSellSourceWalletUi, type OndoSellStep, type OndoSidebarPriceUi, type OndoSidebarUiState, OndoSidebarView, type OndoSidebarViewProps, type OndoSwapExecutionError, type OndoSwapExecutionPhase, type OndoSwapExecutionResult, type OndoSwapPreparationError, type OndoSwapPreparationPhase, type OndoSwapPreparationResult, type OndoWalletSelectStepInput, type OndoWalletSelectUiEvent, type OndoWalletSelectUiState, OndoWalletSelectView, type OndoWalletSelectViewProps, PinoLoggerOptions, type PrepareOndoBuyParams, type PrepareOndoSellParams, type PrepareOndoSwapParamsCore, type RequiredCheckoutConfig, RequirementItem, type RequirementItemProps, RequirementItemUi, RequirementStatus, RequirementVariant, RequirementsChecklistContainer, type RequirementsChecklistContainerProps, type RequirementsChecklistItemUi, type RequirementsChecklistUiEvent, type RequirementsChecklistUiState, RequirementsChecklistView, type RequirementsChecklistViewProps, type RequirementsData, type RequirementsVerificationUi, type SignState, SlippagePicker, type SlippagePickerProps, type SubmitErc20ApprovalResult, type SuperstateAmountConfirmed, type SuperstateAmountStepInput, type SuperstateAmountUiEvent, type SuperstateAmountUiState, type SuperstateAmountValidation, SuperstateAmountView, type SuperstateAmountViewProps, type SuperstateCheckoutConfig, SuperstateOrderConfirmed, type SuperstateOrderConfirmedProps, type SuperstateOrderConfirmedUiEvent, type SuperstateOrderConfirmedUiState, type SuperstateOrderPlaced, type SuperstateReviewStepInput, type SuperstateReviewUiEvent, type SuperstateReviewUiState, SuperstateReviewView, type SuperstateReviewViewProps, type SuperstateSidebarPriceUi, type SuperstateSidebarUiState, SuperstateSidebarView, type SuperstateSidebarViewProps, type SuperstateSlippageOptionUi, type SuperstateSlippageUi, SuperstateSwapCheckoutContainer, type SuperstateSwapCheckoutContainerProps, type SuperstateSwapCheckoutRetryUiEvent, type SuperstateSwapCheckoutUiEvent, type SuperstateSwapCheckoutUiState, SuperstateSwapCheckoutView, type SuperstateSwapCheckoutViewProps, type SuperstateSwapLoadErrorReason, type SuperstateSwapStep, type SuperstateWalletStepInput, type SuperstateWalletUiEvent, type SuperstateWalletUiState, SuperstateWalletView, type SuperstateWalletViewProps, type SwapExecutionError, type SwapExecutionPhase, type SwapExecutionResult, type SwapOutputTokenState, type TaxDocumentAddressParts, type TaxDocumentFieldUi, type TaxDocumentFields, TaxDocumentModalContainer, type TaxDocumentModalContainerProps, type TaxDocumentModalUiEvent, type TaxDocumentModalUiState, TaxDocumentModalView, type TaxDocumentModalViewProps, type TaxDocumentScreenUi, type TaxDocumentState, type TokenSaleExecutionError, type TokenSaleExecutionPhase, type TokenSaleExecutionResult, USDC_ICON_URL, USDT_ICON_URL, type UseCheckoutOfferTokenMetadataOptions, type UseCheckoutOfferTokenMetadataResult, type UseCoinListResult, type UseCoinListSignInCardViewModelOptions, type UseCoinListSignInCardViewModelResult, type UseCompleteOAuthOptions, type UseConnectWalletModalViewModelOptions, type UseConnectWalletModalViewModelResult, type UseConnectWalletOptions, type UseConnectWalletResult, type UseCountdownOptions, type UseErc20BalanceOptions, type UseErc20BalanceResult, type UseErc20TokenBalancesOptions, type UseErc20TokenBalancesResult, type UseIdentityVerificationViewModelOptions, type UseIdentityVerificationViewModelResult, type UseKycTokenResult, type UseOfferDetailsOptions, type UseOfferDetailsResult, type UseOffersGridViewModelOptions, type UseOffersGridViewModelResult, type UseOffersOptions, type UseOffersResult, type UseOndoBuyAmountViewModelOptions, type UseOndoBuyAmountViewModelResult, type UseOndoBuyCheckoutViewModelOptions, type UseOndoBuyCheckoutViewModelResult, type UseOndoBuyReviewViewModelOptions, type UseOndoBuyReviewViewModelResult, type UseOndoBuyTransactionOptions, type UseOndoBuyTransactionResult, type UseOndoPriceOptions, type UseOndoPriceResult, type UseOndoSellAmountViewModelOptions, type UseOndoSellAmountViewModelResult, type UseOndoSellCheckoutViewModelOptions, type UseOndoSellCheckoutViewModelResult, type UseOndoSellReviewViewModelOptions, type UseOndoSellReviewViewModelResult, type UseOndoSellTransactionOptions, type UseOndoSellTransactionResult, type UseOndoSidebarViewModelOptions, type UseOndoSidebarViewModelResult, type UseOndoTradingStatusOptions, type UseOndoTradingStatusResult, type UseOndoWalletSelectViewModelOptions, type UseOndoWalletSelectViewModelResult, type UseOptionAddressesOptions, type UseOptionAddressesResult, type UseParticipationsOptions, type UseParticipationsResult, type UseRequirementsChecklistViewModelOptions, type UseRequirementsChecklistViewModelResult, type UseRequirementsOptions, type UseRequirementsResult, type UseSuperstateAmountViewModelOptions, type UseSuperstateAmountViewModelResult, type UseSuperstateReviewViewModelOptions, type UseSuperstateReviewViewModelResult, type UseSuperstateSidebarViewModelOptions, type UseSuperstateSidebarViewModelResult, type UseSuperstateSwapCheckoutViewModelOptions, type UseSuperstateSwapCheckoutViewModelResult, type UseSuperstateWalletViewModelOptions, type UseSuperstateWalletViewModelResult, type UseSwapOutputTokenOptions, type UseSwapOutputTokenResult, type UseSwapQuoteOptions, type UseSwapQuoteResult, type UseTaxDocumentModalViewModelOptions, type UseTaxDocumentModalViewModelResult, type UseTaxDocumentOptions, type UseTaxDocumentResult, type UseTokenMetadataOptions, type UseTokenMetadataResult, VerificationOverlay, type VerificationOverlayProps, type WalletAuthorizationError, type WalletAuthorizationPhase, type WalletAuthorizationResult, WalletError, type WalletsStatus, authorizeWallet, classifyWalletError, connectExternalWalletFlow, createCoinListClient, defaultCheckoutConfig, ensureErc20Allowance, executeOndoSwap, executeSwap, executeTokenSale, formatCountdown, formatMonthYear, formatSaleCardCountdown, offerAssetIconUrl, offerIconUrl, offerTokenIdentifier, ondoLoadErrorReason, pinoClientLogger, prepareOndoBuy, prepareOndoSell, quoteIsStale, quoteOverAsks, stablecoinIconUrl, submitErc20Approval, tokenLogoUrl, tokenMetadataOf, useCheckoutOfferTokenMetadata, useCoinList, useCoinListSignInCardViewModel, useCompleteOAuth, useConnectWallet, useConnectWalletModalViewModel, useCountdown, useErc20Balance, useErc20TokenBalances, useIdentityVerificationViewModel, useKycToken, useOfferDetails, useOffers, useOffersGridViewModel, useOndoBuyAmountViewModel, useOndoBuyCheckoutViewModel, useOndoBuyReviewViewModel, useOndoBuyTransaction, useOndoPrice, useOndoSellAmountViewModel, useOndoSellCheckoutViewModel, useOndoSellReviewViewModel, useOndoSellTransaction, useOndoSidebarViewModel, useOndoTradingStatus, useOndoWalletSelectViewModel, useOptionAddresses, useParticipations, useRequirements, useRequirementsChecklistViewModel, useSuperstateAmountViewModel, useSuperstateReviewViewModel, useSuperstateSidebarViewModel, useSuperstateSwapCheckoutViewModel, useSuperstateWalletViewModel, useSwapOutputToken, useSwapQuote, useTaxDocument, useTaxDocumentModalViewModel, useTokenMetadata, validateAmount, validateSellAmount, validateSuperstateAmount };