@pollar/react 0.11.1 → 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,18 +650,28 @@ 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;
657
+ /** Networks the user holds a wallet on; the first one is the default. */
658
+ chains: WalletChain[];
659
+ selectedChain: WalletChain | null;
660
+ /** Address of the wallet on {@link selectedChain}. */
661
+ walletAddress: string;
662
+ onSelectChain: (chain: WalletChain) => void;
538
663
  onRefresh: () => void;
539
664
  onPrev: () => void;
540
665
  onNext: () => void;
541
666
  onClose: () => void;
542
667
  }
543
- declare function TxHistoryModalTemplate({ theme, accentColor, txHistory, offset, 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;
544
669
 
545
670
  interface WalletBalanceModalTemplateProps {
546
671
  theme: string;
547
672
  accentColor: string;
673
+ /** Per-app modal chrome overrides (background, card + button radius). */
674
+ styleOverrides?: ModalStyleOverrides;
548
675
  walletBalance: WalletBalanceState;
549
676
  /** Address of the wallet on {@link selectedChain}. */
550
677
  walletAddress: string;
@@ -557,11 +684,13 @@ interface WalletBalanceModalTemplateProps {
557
684
  onRefresh: () => void;
558
685
  onClose: () => void;
559
686
  }
560
- 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;
561
688
 
562
689
  interface EnabledAssetsModalTemplateProps {
563
690
  theme: string;
564
691
  accentColor: string;
692
+ /** Per-app modal chrome overrides (background, card + button radius). */
693
+ styleOverrides?: ModalStyleOverrides;
565
694
  enabledAssets: EnabledAssetsState;
566
695
  /** Address of the wallet on {@link selectedChain}. */
567
696
  walletAddress: string;
@@ -577,10 +706,12 @@ interface EnabledAssetsModalTemplateProps {
577
706
  onToggleTrustline: (record: EnabledAssetRecord) => void;
578
707
  onAddCustom: () => void;
579
708
  }
580
- 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;
581
710
  interface CustomTrustlineModalTemplateProps {
582
711
  theme: string;
583
712
  accentColor: string;
713
+ /** Per-app modal chrome overrides (background, card + button radius). */
714
+ styleOverrides?: ModalStyleOverrides;
584
715
  busy: boolean;
585
716
  actionError: string | null;
586
717
  onBack: () => void;
@@ -595,6 +726,8 @@ interface CustomTrustlineModalTemplateProps {
595
726
  interface SendModalTemplateProps {
596
727
  theme: string;
597
728
  accentColor: string;
729
+ /** Per-app modal chrome overrides (background, card + button radius). */
730
+ styleOverrides?: ModalStyleOverrides;
598
731
  step: 'form' | 'tx';
599
732
  txTitle: string;
600
733
  assets: WalletBalanceRecord[];
@@ -631,7 +764,7 @@ interface SendModalTemplateProps {
631
764
  onRetry: () => void;
632
765
  onDone: () => void;
633
766
  }
634
- 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;
635
768
 
636
769
  /** A selectable asset in the sell/buy pickers, normalized across balance/enabled records. */
637
770
  interface SwapAssetOption {
@@ -644,6 +777,8 @@ interface SwapAssetOption {
644
777
  interface SwapModalTemplateProps {
645
778
  theme: string;
646
779
  accentColor: string;
780
+ /** Per-app modal chrome overrides (background, card + button radius). */
781
+ styleOverrides?: ModalStyleOverrides;
647
782
  step: 'form' | 'tx';
648
783
  txTitle: string;
649
784
  sellOptions: SwapAssetOption[];
@@ -687,11 +822,13 @@ interface SwapModalTemplateProps {
687
822
  onRetry: () => void;
688
823
  onDone: () => void;
689
824
  }
690
- 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;
691
826
 
692
827
  interface ReceiveModalTemplateProps {
693
828
  theme: string;
694
829
  accentColor: string;
830
+ /** Per-app modal chrome overrides (background, card + button radius). */
831
+ styleOverrides?: ModalStyleOverrides;
695
832
  /** Address of the wallet on {@link selectedChain}. */
696
833
  walletAddress: string;
697
834
  /** Networks the user holds a wallet on; the first one is the default. */
@@ -702,11 +839,13 @@ interface ReceiveModalTemplateProps {
702
839
  onCopy: () => void;
703
840
  onClose: () => void;
704
841
  }
705
- 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;
706
843
 
707
844
  interface SessionsModalTemplateProps {
708
845
  theme: string;
709
846
  accentColor: string;
847
+ /** Per-app modal chrome overrides (background, card + button radius). */
848
+ styleOverrides?: ModalStyleOverrides;
710
849
  state: SessionsState;
711
850
  revokingFamilyId: string | null;
712
851
  signingOutEverywhere: boolean;
@@ -715,11 +854,13 @@ interface SessionsModalTemplateProps {
715
854
  onLogoutEverywhere: () => void;
716
855
  onClose: () => void;
717
856
  }
718
- 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;
719
858
 
720
859
  interface DistributionRulesModalTemplateProps {
721
860
  theme: string;
722
861
  accentColor: string;
862
+ /** Per-app modal chrome overrides (background, card + button radius). */
863
+ styleOverrides?: ModalStyleOverrides;
723
864
  state: DistributionRulesState;
724
865
  claimingId: string | null;
725
866
  claimErrors: Record<string, string>;
@@ -728,6 +869,6 @@ interface DistributionRulesModalTemplateProps {
728
869
  onClaim: (rule: DistributionRule) => void;
729
870
  onClose: () => void;
730
871
  }
731
- 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;
732
873
 
733
- 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 };