@pollar/react 0.11.2 → 0.11.3-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { pollarPaths, PollarClient, PollarClientConfig, PollarAdapters, OnStorageDegrade, WalletInfo, PollarLoginOptions, SessionsState, TransactionState, TxBuildBody, BuildOutcome, SubmitOutcome, SignOutcome, SendPaymentParams, StellarNetwork, WalletBalanceState, EnabledAssetsState, TrustlineOutcome, TxHistoryState, SwapVenue, SwapToken, SwapQuoteParams, SwapQuote, EarnProviderId, EarnOpportunity, EarnPositionParams, EarnPosition, EarnTxParams, PollarAdapter, WalletId, WalletChain, KycStatus as KycStatus$1, RampQuote, AuthState, KycProvider, KycStartResponse, RampDirection, RampCountry, RampTxStatus, EnabledAssetRecord, WalletBalanceRecord, SwapProvider, DistributionRulesState, DistributionRule } from '@pollar/core';
2
+ import { pollarPaths, PollarClient, PollarClientConfig, PollarAdapters, OnStorageDegrade, WalletInfo, PollarLoginOptions, SessionsState, TransactionState, TxBuildBody, BuildOutcome, SubmitOutcome, SignOutcome, SendPaymentParams, StellarNetwork, WalletBalanceState, EnabledAssetsState, TrustlineOutcome, TxHistoryState, SwapVenue, SwapToken, SwapQuoteParams, SwapQuote, EarnProviderId, EarnOpportunity, EarnPositionParams, EarnPosition, EarnTxParams, PollarAdapter, PasskeyCeremony, PasskeySigner, WalletId, WalletChain, KycStatus as KycStatus$1, RampQuote, AuthState, KycProvider, KycStartResponse, RampDirection, RampCountry, RampTxStatus, RampDepositInstructions, EnabledAssetRecord, WalletBalanceRecord, SwapProvider, DistributionRulesState, DistributionRule } from '@pollar/core';
3
3
  export { AuthProviderContext, PollarAuthProvider, SessionsState } from '@pollar/core';
4
- import { ReactNode } from 'react';
4
+ import { ReactNode, CSSProperties } from 'react';
5
5
 
6
6
  type ConfigResponse = pollarPaths['/applications/config']['get']['responses'][200]['content']['application/json'];
7
7
  type PollarConfig = ConfigResponse['content'];
@@ -176,6 +176,11 @@ interface PollarProviderProps {
176
176
  *
177
177
  * The client is locked at first render: changing this prop afterwards is
178
178
  * ignored. To swap clients, unmount and remount the provider.
179
+ *
180
+ * Either form gets the web passkey ceremony installed (a pre-built instance
181
+ * is filled in via `setPasskeyDefaults`), so the "Smart Wallet" login works
182
+ * without the consumer wiring WebAuthn. A ceremony you configured yourself is
183
+ * always kept.
179
184
  */
180
185
  client: PollarClient | PollarClientConfig;
181
186
  /**
@@ -225,6 +230,32 @@ type WrappedAdapter<T extends PollarAdapter> = {
225
230
  };
226
231
  declare function createPollarAdapterHook<T extends PollarAdapter>(key: string): () => WrappedAdapter<T>;
227
232
 
233
+ /**
234
+ * Browser passkey ceremony for the smart-wallet flow.
235
+ *
236
+ * `mode` is set explicitly by the caller's button, so there's no ambiguous
237
+ * autodetect:
238
+ * - `'login'` → `get()` only (returning user — the OS shows the account
239
+ * picker for discoverable credentials on this domain). A
240
+ * failure here is surfaced as-is; it never falls through to
241
+ * registration, so cancelling the prompt can't accidentally
242
+ * create a second wallet.
243
+ * - `'register'` → `create()` only (new user → the server deploys the
244
+ * C-address).
245
+ *
246
+ * rpId = the current page's hostname (the customer app's domain), which is what
247
+ * the passkey is bound to — the anti-phishing guarantee.
248
+ */
249
+ declare const browserPasskeyCeremony: PasskeyCeremony;
250
+ /**
251
+ * Browser passkey signer for smart-wallet transactions. Runs a WebAuthn `get()`
252
+ * whose challenge is the raw auth digest (the on-chain verifier checks
253
+ * clientDataJSON.challenge === base64url(digest)), and returns the public
254
+ * assertion fields (base64url) for the server to assemble into the Soroban auth
255
+ * entry. The secp256r1 key never leaves the device.
256
+ */
257
+ declare const browserPasskeySigner: PasskeySigner;
258
+
228
259
  declare function WalletButton(): react_jsx_runtime.JSX.Element;
229
260
 
230
261
  interface WalletButtonTemplateProps {
@@ -339,9 +370,13 @@ declare function RampWidget({ onClose }: RampWidgetProps): react_jsx_runtime.JSX
339
370
 
340
371
  interface RouteDisplayProps {
341
372
  quote: RampQuote;
373
+ /** This route is the one being started — it owns the in-flight request. */
374
+ busy?: boolean;
375
+ /** Another route is starting, so this one is not selectable meanwhile. */
376
+ disabled?: boolean;
342
377
  onSelect: (quote: RampQuote) => void;
343
378
  }
344
- declare function RouteDisplay({ quote, onSelect }: RouteDisplayProps): react_jsx_runtime.JSX.Element;
379
+ declare function RouteDisplay({ quote, busy, disabled, onSelect }: RouteDisplayProps): react_jsx_runtime.JSX.Element;
345
380
 
346
381
  interface WalletBalanceModalProps {
347
382
  onClose: () => void;
@@ -383,6 +418,52 @@ interface DistributionRulesModalProps {
383
418
  }
384
419
  declare function DistributionRulesModal({ onClose }: DistributionRulesModalProps): react_jsx_runtime.JSX.Element;
385
420
 
421
+ /** Per-app overrides for the modal chrome, configured in the dashboard's
422
+ * Branding screen. Every field is optional: absent means "use the value the
423
+ * theme derives", which is what every modal rendered before these existed. */
424
+ interface ModalStyleOverrides {
425
+ /** Card background. Overrides the theme's white / #1a1a1a. */
426
+ backgroundColor?: string | null | undefined;
427
+ /** Body text. Overrides the theme's #111827 / white. Secondary ("muted") text
428
+ * keeps its theme color, so the two stay distinguishable. */
429
+ textColor?: string | null | undefined;
430
+ /** Fill of the SECONDARY buttons (the wallet / social / provider entries, the
431
+ * retry button). The primary button is the accent's job. Unset ⇒ the theme's
432
+ * own surface color, which is what these buttons always used. */
433
+ buttonColor?: string | null | undefined;
434
+ /** Radius of the modal card itself, in px. */
435
+ modalBorderRadius?: number | null | undefined;
436
+ /** Radius of the buttons inside the modal, in px. Independent of the card's. */
437
+ buttonBorderRadius?: number | null | undefined;
438
+ }
439
+ /** Text color that stays legible on `background`. The primary button's label was
440
+ * hardcoded white, which a light fill (the Amber accent preset, say) turns
441
+ * invisible — so it follows the fill's luminance instead. Unparseable colors
442
+ * keep white, the pre-existing behavior. */
443
+ declare function readableTextOn(background: string): string;
444
+ /** How much room a modal gives its header. 'hero' is the identity-forward set
445
+ * (login, KYC, ramp, the Privy sub-modal): roomier padding and a larger
446
+ * centered heading. 'compact' is every utility modal (send, balance, history,
447
+ * …), which keeps the card's own 1.75rem padding. */
448
+ type ModalVariant = 'hero' | 'compact';
449
+ /** Theme-derived CSS custom properties shared by every Pollar modal, plus the
450
+ * per-app overrides on top. One definition so the whole modal family stays
451
+ * visually in lockstep — a var added here reaches all of them at once. */
452
+ declare function buildModalCssVars(theme: string, accentColor: string, overrides?: ModalStyleOverrides, variant?: ModalVariant): CSSProperties;
453
+ /** Everything a modal wrapper needs to dress itself from the app's branding:
454
+ * the theme pair its template already took, the overrides to forward to that
455
+ * template, and the inline style for the fixed overlay behind it. */
456
+ interface ModalChrome {
457
+ theme: string;
458
+ accentColor: string;
459
+ styleOverrides: ModalStyleOverrides;
460
+ overlayStyle: CSSProperties;
461
+ }
462
+ /** Resolve the branding config into the props/styles a modal wrapper applies.
463
+ * Called by every `.pollar-overlay` renderer so the z-index and the card
464
+ * overrides can't drift apart between modals. */
465
+ declare function modalChrome(styles: PollarStyles): ModalChrome;
466
+
386
467
  type WalletAdapterEntry = {
387
468
  id: WalletId;
388
469
  meta: {
@@ -394,6 +475,8 @@ type WalletAdapterEntry = {
394
475
  interface LoginModalTemplateProps {
395
476
  theme: string;
396
477
  accentColor: string;
478
+ /** Per-app modal chrome overrides (background, card + button radius). */
479
+ styleOverrides?: ModalStyleOverrides;
397
480
  logoUrl: string | null;
398
481
  emailEnabled: boolean;
399
482
  embeddedWallets: boolean;
@@ -426,12 +509,14 @@ interface LoginModalTemplateProps {
426
509
  onCancel: () => void;
427
510
  onRetry: () => void;
428
511
  }
429
- declare function LoginModalTemplate({ theme, accentColor, logoUrl, emailEnabled, embeddedWallets, smartWallet, providers, walletAdapters, appName, email, onEmailChange, onEmailSubmit, onSocialLogin, onWalletConnect, onLoginSmartWallet, onCreateSmartWallet, authState, codeInputKey, onCodeSubmit, onBack, onCancel, onRetry, }: LoginModalTemplateProps): react_jsx_runtime.JSX.Element;
512
+ declare function LoginModalTemplate({ theme, accentColor, styleOverrides, logoUrl, emailEnabled, embeddedWallets, smartWallet, providers, walletAdapters, appName, email, onEmailChange, onEmailSubmit, onSocialLogin, onWalletConnect, onLoginSmartWallet, onCreateSmartWallet, authState, codeInputKey, onCodeSubmit, onBack, onCancel, onRetry, }: LoginModalTemplateProps): react_jsx_runtime.JSX.Element;
430
513
 
431
514
  type KycStep = 'select_provider' | 'verifying' | 'polling' | 'done';
432
515
  interface KycModalTemplateProps {
433
516
  theme: string;
434
517
  accentColor: string;
518
+ /** Per-app modal chrome overrides (background, card + button radius). */
519
+ styleOverrides?: ModalStyleOverrides;
435
520
  step: KycStep;
436
521
  providers: KycProvider[];
437
522
  selectedProvider: KycProvider | null;
@@ -443,7 +528,7 @@ interface KycModalTemplateProps {
443
528
  onRefresh: () => void;
444
529
  onClose: () => void;
445
530
  }
446
- declare function KycModalTemplate({ theme, accentColor, step, providers, selectedProvider, session, kycStatus, isLoading, onSelectProvider, onDoneVerifying, onRefresh, onClose, }: KycModalTemplateProps): react_jsx_runtime.JSX.Element;
531
+ declare function KycModalTemplate({ theme, accentColor, styleOverrides, step, providers, selectedProvider, session, kycStatus, isLoading, onSelectProvider, onDoneVerifying, onRefresh, onClose, }: KycModalTemplateProps): react_jsx_runtime.JSX.Element;
447
532
 
448
533
  type RampStep = 'input' | 'loading_quote' | 'select_route' | 'contact' | 'status' | 'error';
449
534
  /** A field a provider declares (via the quote) that the client must collect. */
@@ -456,12 +541,35 @@ interface RampFieldSpec {
456
541
  options?: {
457
542
  value: string;
458
543
  label: string;
544
+ placeholder?: string;
459
545
  }[];
546
+ /** Declared but not mandatory (Abroad's tax id). Blank must not block Continue. */
547
+ optional?: boolean;
548
+ /** Example of the expected shape, for formats a user cannot guess. */
549
+ placeholder?: string;
550
+ /**
551
+ * Key of a sibling `select` whose chosen option supplies the placeholder. One
552
+ * Pix field can then show a CPF mask, an email or a +55 number as the user
553
+ * switches kind, without this component knowing what a Pix key is.
554
+ */
555
+ placeholderFrom?: string;
556
+ /** Secondary line under the field, for a rule the label has no room for. */
557
+ hint?: string;
460
558
  }
461
559
  interface RampWidgetTemplateProps {
462
560
  theme: string;
463
561
  accentColor: string;
562
+ /** Per-app modal chrome overrides (background, card + button radius). */
563
+ styleOverrides?: ModalStyleOverrides;
464
564
  step: RampStep;
565
+ /** Labels of the steps this run goes through. Length varies by route: only
566
+ * providers that collect fields add a 'Details' step. */
567
+ flowSteps: string[];
568
+ /** Index into `flowSteps`, or -1 when the current step is outside the flow
569
+ * (the error step) and the progress bar should be hidden. */
570
+ flowStepIndex: number;
571
+ /** Quote whose start request is in flight, so its row can show it. */
572
+ startingQuoteId: string | null;
465
573
  direction: RampDirection;
466
574
  amount: string;
467
575
  currency: string;
@@ -477,10 +585,14 @@ interface RampWidgetTemplateProps {
477
585
  txStatus: RampTxStatus | null;
478
586
  kycUrl: string | null;
479
587
  tosUrl: string | null;
588
+ /** Provider gated the flow on KYC and published no link; nothing was signed. */
589
+ kycBlocking: boolean;
590
+ /** The gate has since cleared — the user needs a fresh quote to continue. */
591
+ kycJustApproved: boolean;
480
592
  stellarTxHash: string | null;
481
593
  /** Stellar Expert URL for `stellarTxHash` (network-aware); null when unknown. */
482
594
  explorerUrl: string | null;
483
- depositInstructions: Record<string, unknown> | null;
595
+ depositInstructions: RampDepositInstructions | null;
484
596
  canComplete: boolean;
485
597
  completing: boolean;
486
598
  errorMsg: string | null;
@@ -494,15 +606,20 @@ interface RampWidgetTemplateProps {
494
606
  onOpenKyc: () => void;
495
607
  onOpenTos: () => void;
496
608
  onCompleteWithdraw: () => void;
609
+ /** Step back to the amount, keeping what was entered. Distinct from `onRetry`
610
+ * (which restarts a failed flow) so a "Back" button reads as navigation. */
611
+ onBack: () => void;
497
612
  onRetry: () => void;
498
613
  onRefresh: () => void;
499
614
  onClose: () => void;
500
615
  }
501
- declare function RampWidgetTemplate({ theme, accentColor, step, direction, amount, currency, country, requiredFields, fieldValues, countries, countriesLoading, refreshing, quotes, isLoading, provider, txStatus, kycUrl, tosUrl, stellarTxHash, explorerUrl, depositInstructions, canComplete, completing, errorMsg, onDirectionChange, onAmountChange, onFieldChange, onCountryChange, onFindRoute, onSelectQuote, onContactContinue, onOpenKyc, onOpenTos, onCompleteWithdraw, onRetry, onRefresh, onClose, }: RampWidgetTemplateProps): react_jsx_runtime.JSX.Element;
616
+ declare function RampWidgetTemplate({ theme, accentColor, styleOverrides, step, flowSteps, flowStepIndex, startingQuoteId, direction, amount, currency, country, requiredFields, fieldValues, countries, countriesLoading, refreshing, quotes, isLoading, provider, txStatus, kycUrl, tosUrl, kycBlocking, kycJustApproved, stellarTxHash, explorerUrl, depositInstructions, canComplete, completing, errorMsg, onDirectionChange, onAmountChange, onFieldChange, onCountryChange, onFindRoute, onSelectQuote, onContactContinue, onOpenKyc, onOpenTos, onCompleteWithdraw, onBack, onRetry, onRefresh, onClose, }: RampWidgetTemplateProps): react_jsx_runtime.JSX.Element;
502
617
 
503
618
  interface TransactionModalTemplateProps {
504
619
  theme: string;
505
620
  accentColor: string;
621
+ /** Per-app modal chrome overrides (background, card + button radius). */
622
+ styleOverrides?: ModalStyleOverrides;
506
623
  transaction: TransactionState;
507
624
  showXdr: boolean;
508
625
  copied: boolean;
@@ -514,7 +631,7 @@ interface TransactionModalTemplateProps {
514
631
  onCopyHash: () => void;
515
632
  onRetry?: () => void;
516
633
  }
517
- declare function TransactionModalTemplate({ theme, accentColor, transaction, showXdr, copied, explorerUrl, walletType, onClose, onSignAndSend, onToggleXdr, onCopyHash, onRetry, }: TransactionModalTemplateProps): react_jsx_runtime.JSX.Element;
634
+ declare function TransactionModalTemplate({ theme, accentColor, styleOverrides, transaction, showXdr, copied, explorerUrl, walletType, onClose, onSignAndSend, onToggleXdr, onCopyHash, onRetry, }: TransactionModalTemplateProps): react_jsx_runtime.JSX.Element;
518
635
 
519
636
  interface TxStatusViewProps {
520
637
  transaction: TransactionState;
@@ -533,6 +650,8 @@ declare function TxStatusView({ transaction, showXdr, copied, explorerUrl, walle
533
650
  interface TxHistoryModalTemplateProps {
534
651
  theme: string;
535
652
  accentColor: string;
653
+ /** Per-app modal chrome overrides (background, card + button radius). */
654
+ styleOverrides?: ModalStyleOverrides;
536
655
  txHistory: TxHistoryState;
537
656
  offset: number;
538
657
  /** Networks the user holds a wallet on; the first one is the default. */
@@ -546,11 +665,13 @@ interface TxHistoryModalTemplateProps {
546
665
  onNext: () => void;
547
666
  onClose: () => void;
548
667
  }
549
- declare function TxHistoryModalTemplate({ theme, accentColor, txHistory, offset, chains, selectedChain, walletAddress, onSelectChain, onRefresh, onPrev, onNext, onClose, }: TxHistoryModalTemplateProps): react_jsx_runtime.JSX.Element;
668
+ declare function TxHistoryModalTemplate({ theme, accentColor, styleOverrides, txHistory, offset, chains, selectedChain, walletAddress, onSelectChain, onRefresh, onPrev, onNext, onClose, }: TxHistoryModalTemplateProps): react_jsx_runtime.JSX.Element;
550
669
 
551
670
  interface WalletBalanceModalTemplateProps {
552
671
  theme: string;
553
672
  accentColor: string;
673
+ /** Per-app modal chrome overrides (background, card + button radius). */
674
+ styleOverrides?: ModalStyleOverrides;
554
675
  walletBalance: WalletBalanceState;
555
676
  /** Address of the wallet on {@link selectedChain}. */
556
677
  walletAddress: string;
@@ -563,11 +684,13 @@ interface WalletBalanceModalTemplateProps {
563
684
  onRefresh: () => void;
564
685
  onClose: () => void;
565
686
  }
566
- declare function WalletBalanceModalTemplate({ theme, accentColor, walletBalance, walletAddress, chains, selectedChain, network, onSelectChain, onRefresh, onClose, }: WalletBalanceModalTemplateProps): react_jsx_runtime.JSX.Element;
687
+ declare function WalletBalanceModalTemplate({ theme, accentColor, styleOverrides, walletBalance, walletAddress, chains, selectedChain, network, onSelectChain, onRefresh, onClose, }: WalletBalanceModalTemplateProps): react_jsx_runtime.JSX.Element;
567
688
 
568
689
  interface EnabledAssetsModalTemplateProps {
569
690
  theme: string;
570
691
  accentColor: string;
692
+ /** Per-app modal chrome overrides (background, card + button radius). */
693
+ styleOverrides?: ModalStyleOverrides;
571
694
  enabledAssets: EnabledAssetsState;
572
695
  /** Address of the wallet on {@link selectedChain}. */
573
696
  walletAddress: string;
@@ -583,10 +706,12 @@ interface EnabledAssetsModalTemplateProps {
583
706
  onToggleTrustline: (record: EnabledAssetRecord) => void;
584
707
  onAddCustom: () => void;
585
708
  }
586
- declare function EnabledAssetsModalTemplate({ theme, accentColor, enabledAssets, walletAddress, chains, selectedChain, onSelectChain, busyKey, actionError, onRefresh, onClose, onToggleTrustline, onAddCustom, }: EnabledAssetsModalTemplateProps): react_jsx_runtime.JSX.Element;
709
+ declare function EnabledAssetsModalTemplate({ theme, accentColor, styleOverrides, enabledAssets, walletAddress, chains, selectedChain, onSelectChain, busyKey, actionError, onRefresh, onClose, onToggleTrustline, onAddCustom, }: EnabledAssetsModalTemplateProps): react_jsx_runtime.JSX.Element;
587
710
  interface CustomTrustlineModalTemplateProps {
588
711
  theme: string;
589
712
  accentColor: string;
713
+ /** Per-app modal chrome overrides (background, card + button radius). */
714
+ styleOverrides?: ModalStyleOverrides;
590
715
  busy: boolean;
591
716
  actionError: string | null;
592
717
  onBack: () => void;
@@ -601,6 +726,8 @@ interface CustomTrustlineModalTemplateProps {
601
726
  interface SendModalTemplateProps {
602
727
  theme: string;
603
728
  accentColor: string;
729
+ /** Per-app modal chrome overrides (background, card + button radius). */
730
+ styleOverrides?: ModalStyleOverrides;
604
731
  step: 'form' | 'tx';
605
732
  txTitle: string;
606
733
  assets: WalletBalanceRecord[];
@@ -637,7 +764,7 @@ interface SendModalTemplateProps {
637
764
  onRetry: () => void;
638
765
  onDone: () => void;
639
766
  }
640
- declare function SendModalTemplate({ theme, accentColor, step, txTitle, assets, selectedAsset, chains, selectedChain, walletAddress, canSendOnChain, onSelectChain, amount, destination, formError, isLoadingBalance, transaction, showXdr, copied, explorerUrl, walletType, showBack, isInProgress, onClose, onBack, onRefresh, onSelectAsset, onAmountChange, onDestinationChange, onSubmit, onSignAndSend, onToggleXdr, onCopyHash, onRetry, onDone, }: SendModalTemplateProps): react_jsx_runtime.JSX.Element;
767
+ declare function SendModalTemplate({ theme, accentColor, styleOverrides, step, txTitle, assets, selectedAsset, chains, selectedChain, walletAddress, canSendOnChain, onSelectChain, amount, destination, formError, isLoadingBalance, transaction, showXdr, copied, explorerUrl, walletType, showBack, isInProgress, onClose, onBack, onRefresh, onSelectAsset, onAmountChange, onDestinationChange, onSubmit, onSignAndSend, onToggleXdr, onCopyHash, onRetry, onDone, }: SendModalTemplateProps): react_jsx_runtime.JSX.Element;
641
768
 
642
769
  /** A selectable asset in the sell/buy pickers, normalized across balance/enabled records. */
643
770
  interface SwapAssetOption {
@@ -650,6 +777,8 @@ interface SwapAssetOption {
650
777
  interface SwapModalTemplateProps {
651
778
  theme: string;
652
779
  accentColor: string;
780
+ /** Per-app modal chrome overrides (background, card + button radius). */
781
+ styleOverrides?: ModalStyleOverrides;
653
782
  step: 'form' | 'tx';
654
783
  txTitle: string;
655
784
  sellOptions: SwapAssetOption[];
@@ -693,11 +822,13 @@ interface SwapModalTemplateProps {
693
822
  onRetry: () => void;
694
823
  onDone: () => void;
695
824
  }
696
- declare function SwapModalTemplate({ theme, accentColor, step, txTitle, sellOptions, buyOptions, selectedSell, selectedBuy, amount, provider, providers, quote, quoteLoading, quoteError, formError, isLoadingData, smartUnsupported, configLoading, swapUnavailable, buyNeedsTrustline, transaction, showXdr, copied, explorerUrl, walletType, showBack, isInProgress, onClose, onBack, onRefresh, onSelectSell, onSelectBuy, onAddCustomToken, onAmountChange, onProviderChange, onSwap, onToggleXdr, onCopyHash, onRetry, onDone, }: SwapModalTemplateProps): react_jsx_runtime.JSX.Element;
825
+ declare function SwapModalTemplate({ theme, accentColor, styleOverrides, step, txTitle, sellOptions, buyOptions, selectedSell, selectedBuy, amount, provider, providers, quote, quoteLoading, quoteError, formError, isLoadingData, smartUnsupported, configLoading, swapUnavailable, buyNeedsTrustline, transaction, showXdr, copied, explorerUrl, walletType, showBack, isInProgress, onClose, onBack, onRefresh, onSelectSell, onSelectBuy, onAddCustomToken, onAmountChange, onProviderChange, onSwap, onToggleXdr, onCopyHash, onRetry, onDone, }: SwapModalTemplateProps): react_jsx_runtime.JSX.Element;
697
826
 
698
827
  interface ReceiveModalTemplateProps {
699
828
  theme: string;
700
829
  accentColor: string;
830
+ /** Per-app modal chrome overrides (background, card + button radius). */
831
+ styleOverrides?: ModalStyleOverrides;
701
832
  /** Address of the wallet on {@link selectedChain}. */
702
833
  walletAddress: string;
703
834
  /** Networks the user holds a wallet on; the first one is the default. */
@@ -708,11 +839,13 @@ interface ReceiveModalTemplateProps {
708
839
  onCopy: () => void;
709
840
  onClose: () => void;
710
841
  }
711
- declare function ReceiveModalTemplate({ theme, accentColor, walletAddress, chains, selectedChain, onSelectChain, copied, onCopy, onClose, }: ReceiveModalTemplateProps): react_jsx_runtime.JSX.Element;
842
+ declare function ReceiveModalTemplate({ theme, accentColor, styleOverrides, walletAddress, chains, selectedChain, onSelectChain, copied, onCopy, onClose, }: ReceiveModalTemplateProps): react_jsx_runtime.JSX.Element;
712
843
 
713
844
  interface SessionsModalTemplateProps {
714
845
  theme: string;
715
846
  accentColor: string;
847
+ /** Per-app modal chrome overrides (background, card + button radius). */
848
+ styleOverrides?: ModalStyleOverrides;
716
849
  state: SessionsState;
717
850
  revokingFamilyId: string | null;
718
851
  signingOutEverywhere: boolean;
@@ -721,11 +854,13 @@ interface SessionsModalTemplateProps {
721
854
  onLogoutEverywhere: () => void;
722
855
  onClose: () => void;
723
856
  }
724
- declare function SessionsModalTemplate({ theme, accentColor, state, revokingFamilyId, signingOutEverywhere, onRefresh, onRevoke, onLogoutEverywhere, onClose, }: SessionsModalTemplateProps): react_jsx_runtime.JSX.Element;
857
+ declare function SessionsModalTemplate({ theme, accentColor, styleOverrides, state, revokingFamilyId, signingOutEverywhere, onRefresh, onRevoke, onLogoutEverywhere, onClose, }: SessionsModalTemplateProps): react_jsx_runtime.JSX.Element;
725
858
 
726
859
  interface DistributionRulesModalTemplateProps {
727
860
  theme: string;
728
861
  accentColor: string;
862
+ /** Per-app modal chrome overrides (background, card + button radius). */
863
+ styleOverrides?: ModalStyleOverrides;
729
864
  state: DistributionRulesState;
730
865
  claimingId: string | null;
731
866
  claimErrors: Record<string, string>;
@@ -734,6 +869,6 @@ interface DistributionRulesModalTemplateProps {
734
869
  onClaim: (rule: DistributionRule) => void;
735
870
  onClose: () => void;
736
871
  }
737
- declare function DistributionRulesModalTemplate({ theme, accentColor, state, claimingId, claimErrors, claimedIds, onRefresh, onClaim, onClose, }: DistributionRulesModalTemplateProps): react_jsx_runtime.JSX.Element;
872
+ declare function DistributionRulesModalTemplate({ theme, accentColor, styleOverrides, state, claimingId, claimErrors, claimedIds, onRefresh, onClaim, onClose, }: DistributionRulesModalTemplateProps): react_jsx_runtime.JSX.Element;
738
873
 
739
- export { type AuthModalProps, ChainSelect, type ChainSelectProps, type CustomTrustlineModalTemplateProps, DistributionRulesModal, DistributionRulesModalTemplate, EarnModal, EnabledAssetsModal, EnabledAssetsModalTemplate, type EnabledAssetsModalTemplateProps, KycModal, KycModalTemplate, KycStatus, type KycStep, type LoginButtonProps, LoginModalTemplate, type PollarConfig, PollarProvider, type PollarStyles, type RampStep, RampWidget, RampWidgetTemplate, ReceiveModal, ReceiveModalTemplate, type ReceiveModalTemplateProps, RouteDisplay, SendModal, SendModalTemplate, type SendModalTemplateProps, SessionsModal, SessionsModalTemplate, type SessionsModalTemplateProps, type SwapAssetOption, SwapModal, SwapModalTemplate, type SwapModalTemplateProps, TransactionModalTemplate, type TransactionModalTemplateProps, TxHistoryModalTemplate, TxStatusView, type TxStatusViewProps, type UseChainsResult, WalletBalanceModal, WalletBalanceModalTemplate, type WalletBalanceModalTemplateProps, WalletButton, WalletButtonTemplate, type WalletButtonTemplateProps, addressForChain, chainsOf, createPollarAdapterHook, resolveChain, useChains, usePollar };
874
+ export { type AuthModalProps, ChainSelect, type ChainSelectProps, type CustomTrustlineModalTemplateProps, DistributionRulesModal, DistributionRulesModalTemplate, EarnModal, EnabledAssetsModal, EnabledAssetsModalTemplate, type EnabledAssetsModalTemplateProps, KycModal, KycModalTemplate, KycStatus, type KycStep, type LoginButtonProps, LoginModalTemplate, type ModalChrome, type ModalStyleOverrides, type ModalVariant, type PollarConfig, PollarProvider, type PollarStyles, type RampStep, RampWidget, RampWidgetTemplate, ReceiveModal, ReceiveModalTemplate, type ReceiveModalTemplateProps, RouteDisplay, SendModal, SendModalTemplate, type SendModalTemplateProps, SessionsModal, SessionsModalTemplate, type SessionsModalTemplateProps, type SwapAssetOption, SwapModal, SwapModalTemplate, type SwapModalTemplateProps, TransactionModalTemplate, type TransactionModalTemplateProps, TxHistoryModalTemplate, TxStatusView, type TxStatusViewProps, type UseChainsResult, WalletBalanceModal, WalletBalanceModalTemplate, type WalletBalanceModalTemplateProps, WalletButton, WalletButtonTemplate, type WalletButtonTemplateProps, addressForChain, browserPasskeyCeremony, browserPasskeySigner, buildModalCssVars, chainsOf, createPollarAdapterHook, modalChrome, readableTextOn, resolveChain, useChains, usePollar };