@funkit/connect 8.3.1-next.0 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/dist/{chunk-5JRQC2VM.js → chunk-4WY7FNYP.js} +14 -0
  3. package/dist/{chunk-CUWQELX3.js → chunk-UUHLEWAL.js} +4 -2
  4. package/dist/{chunk-VWSYBHAK.js → chunk-Z4QDKBBG.js} +4 -2
  5. package/dist/clients/fanatics.css +4064 -3651
  6. package/dist/clients/fanatics.d.ts +6 -0
  7. package/dist/clients/fanatics.js +118 -43
  8. package/dist/components/Box/Box.d.ts +45 -45
  9. package/dist/components/FunCheckoutHistory/FunDirectExecutionHistoryBottomBar.d.ts +1 -0
  10. package/dist/components/FunCheckoutHistory/FunTxSummarySections.d.ts +7 -0
  11. package/dist/components/FunCheckoutHistory/TotalTimeItem.d.ts +6 -0
  12. package/dist/components/FunCheckoutHistory/YouSendItem.d.ts +6 -0
  13. package/dist/components/FunCheckoutHistory/useCustomStatusAnimationAboveTopbar.d.ts +1 -3
  14. package/dist/components/FunCheckoutModalHeightAnimationWrapper/FunCheckoutModalHeightAnimationWrapper.d.ts +3 -1
  15. package/dist/components/FunInfoBanner/InfoBanner.d.ts +1 -1
  16. package/dist/components/FunPaymentMethodItem/FunPaymentMethodItem.d.ts +1 -0
  17. package/dist/components/FunPayments/FunPaymentMethods.d.ts +7 -0
  18. package/dist/components/Icons/New/CircleBitcoinIcon.d.ts +4 -0
  19. package/dist/components/Icons/New/DollarIcon.d.ts +3 -1
  20. package/dist/components/Tabs/Tabs.d.ts +1 -0
  21. package/dist/consts/customers.d.ts +1 -1
  22. package/dist/consts/layout.d.ts +0 -1
  23. package/dist/css/sprinkles.css.d.ts +91 -45
  24. package/dist/domains/asset.d.ts +1 -1
  25. package/dist/domains/meld.d.ts +0 -6
  26. package/dist/hooks/queries/useFops.d.ts +4 -2
  27. package/dist/hooks/queries/useSwappedDefaultCurrency.d.ts +5 -0
  28. package/dist/hooks/track/CheckoutModalEvent.d.ts +7 -0
  29. package/dist/hooks/useCheckoutDirectExecutionHistory.d.ts +1 -0
  30. package/dist/hooks/useStepQueryReadiness.d.ts +32 -0
  31. package/dist/index.css +4090 -3671
  32. package/dist/index.js +3894 -3058
  33. package/dist/modals/CheckoutModal/ConfirmationStep/useCheckoutConfirmation.d.ts +1 -0
  34. package/dist/modals/CheckoutModal/FunCheckoutStep.d.ts +2 -1
  35. package/dist/modals/CheckoutModal/LoadingAccount.d.ts +1 -1
  36. package/dist/modals/CheckoutModal/MeldQuotes/MeldQuotes.d.ts +1 -1
  37. package/dist/modals/CheckoutModal/SourceChange/CryptoCashToggle.d.ts +5 -1
  38. package/dist/modals/CheckoutModal/SourceChange/FormOfPaymentsList.d.ts +10 -0
  39. package/dist/modals/CheckoutModal/SourceChange/SourceChange.d.ts +10 -0
  40. package/dist/modals/CheckoutModal/SourceChange/SourceChangeLoading.d.ts +4 -0
  41. package/dist/modals/CheckoutModal/SourceChange/{DefaultSourceList.d.ts → SourceList.d.ts} +3 -3
  42. package/dist/modals/CheckoutModal/SourceChange/sourceChange.css.d.ts +2 -1
  43. package/dist/modals/CheckoutModal/stepTransition.d.ts +7 -0
  44. package/dist/providers/FunkitCheckoutContext/index.d.ts +1 -0
  45. package/dist/providers/FunkitConfigContext.d.ts +14 -0
  46. package/dist/providers/FunkitProvider.d.ts +1 -0
  47. package/dist/providers/FunkitThemeProvider.d.ts +69 -0
  48. package/dist/themes/baseTheme.js +1 -1
  49. package/dist/themes/darkTheme.js +2 -2
  50. package/dist/themes/lightTheme.js +2 -2
  51. package/dist/utils/across.d.ts +5 -0
  52. package/dist/utils/depositCutoff.d.ts +9 -0
  53. package/dist/utils/directExecution.d.ts +16 -0
  54. package/dist/utils/flags/config.d.ts +2 -2
  55. package/dist/utils/lighter.d.ts +1 -1
  56. package/dist/utils/sanitizeHtml.d.ts +7 -0
  57. package/dist/utils/sanitizeUrl.d.ts +10 -0
  58. package/dist/utils/tokenIconUrl.d.ts +1 -1
  59. package/dist/utils/transfer.d.ts +2 -1
  60. package/dist/wallets/walletConnectors/index.js +24 -24
  61. package/package.json +4 -4
  62. package/dist/atoms/activeCheckout.d.ts +0 -183
  63. package/dist/atoms/activeWithdrawal.d.ts +0 -21
  64. package/dist/atoms/bridgeProviders/acrossAdapter.d.ts +0 -109
  65. package/dist/atoms/bridgeProviders/index.d.ts +0 -25
  66. package/dist/atoms/bridgeProviders/registry.d.ts +0 -12
  67. package/dist/atoms/bridgeProviders/relayAdapter.d.ts +0 -60
  68. package/dist/atoms/bridgeProviders/types.d.ts +0 -182
  69. package/dist/atoms/checkoutProgress.d.ts +0 -22
  70. package/dist/atoms/directExecution.d.ts +0 -70
  71. package/dist/atoms/funkitCheckout.d.ts +0 -18
  72. package/dist/atoms/funkitProvider/index.d.ts +0 -24
  73. package/dist/atoms/generalWallet.d.ts +0 -45
  74. package/dist/atoms/i18n.d.ts +0 -6
  75. package/dist/atoms/modalState.d.ts +0 -30
  76. package/dist/atoms/quote.d.ts +0 -98
  77. package/dist/atoms/stepTransition.d.ts +0 -6
  78. package/dist/atoms/store.d.ts +0 -1
  79. package/dist/atoms/track/index.d.ts +0 -10
  80. package/dist/atoms/utils.d.ts +0 -2
  81. package/dist/atoms/wagmi.d.ts +0 -4
  82. package/dist/atoms/walletClient.d.ts +0 -15391
  83. package/dist/chunk-A24XIU2M.js +0 -299
  84. package/dist/chunk-CMS4F5PL.js +0 -209
  85. package/dist/chunk-FBCU3TQA.js +0 -204
  86. package/dist/chunk-GRQP5R23.js +0 -209
  87. package/dist/chunk-MGQZMUZ2.js +0 -288
  88. package/dist/chunk-OTMBU2BL.js +0 -204
  89. package/dist/domains/across.d.ts +0 -29
  90. package/dist/domains/track.d.ts +0 -14
  91. package/dist/hooks/useUsableWalletAssetsForCheckout.d.ts +0 -2
  92. package/dist/modals/CheckoutModal/SelectAsset.d.ts +0 -14
  93. package/dist/modals/CheckoutModal/SourceChange/FanaticsSourceList.d.ts +0 -15
  94. package/dist/wallets/walletConnectors/chunk-3ZWIUCOI.js +0 -96
  95. package/dist/wallets/walletConnectors/chunk-4SC3PZVM.js +0 -70
  96. package/dist/wallets/walletConnectors/chunk-5AV2NSL3.js +0 -98
  97. package/dist/wallets/walletConnectors/chunk-5FWURLPF.js +0 -218
  98. package/dist/wallets/walletConnectors/chunk-6677RKVT.js +0 -69
  99. package/dist/wallets/walletConnectors/chunk-75A4Q5E5.js +0 -92
  100. package/dist/wallets/walletConnectors/chunk-ENLR4LXN.js +0 -94
  101. package/dist/wallets/walletConnectors/chunk-FT5BX7TL.js +0 -103
  102. package/dist/wallets/walletConnectors/chunk-GEMN6DM5.js +0 -106
  103. package/dist/wallets/walletConnectors/chunk-GXTI2PZD.js +0 -100
  104. package/dist/wallets/walletConnectors/chunk-LGT6IAXI.js +0 -93
  105. package/dist/wallets/walletConnectors/chunk-N7475PGA.js +0 -110
  106. package/dist/wallets/walletConnectors/chunk-O6YFVGVQ.js +0 -99
  107. package/dist/wallets/walletConnectors/chunk-OCM5YHT5.js +0 -92
  108. package/dist/wallets/walletConnectors/chunk-PRGCIJ7Y.js +0 -87
  109. package/dist/wallets/walletConnectors/chunk-RNIMZDHW.js +0 -95
  110. package/dist/wallets/walletConnectors/chunk-TLOROKED.js +0 -96
  111. package/dist/wallets/walletConnectors/chunk-WNQ3NPHX.js +0 -66
@@ -9,6 +9,7 @@ export interface CheckoutConfirmationError extends ErrorNotification {
9
9
  export declare enum ConfirmationErrorCode {
10
10
  QUOTE_EXPIRED = "QUOTE_EXPIRED",
11
11
  GENERIC_ERROR = "GENERIC_ERROR",
12
+ WITHDRAWAL_RATE_LIMIT_EXCEEDED = "WITHDRAWAL_RATE_LIMIT_EXCEEDED",
12
13
  RISK_ERROR = "RISK_ERROR",
13
14
  SIGNATURE_DENIED = "SIGNATURE_DENIED",
14
15
  SWITCH_CHAIN_ERROR = "SWITCH_CHAIN_ERROR",
@@ -20,5 +20,6 @@ export declare enum FunCheckoutStep {
20
20
  SELECT_BROKERAGE = "select_brokerage",
21
21
  CONNECT_EXCHANGE = "connect_exchange",
22
22
  BROKERAGE_TWO_FA = "brokerage_two_fa",
23
- BROKERAGE_SUCCESS = "brokerage_success"
23
+ BROKERAGE_SUCCESS = "brokerage_success",
24
+ SWAPPED_IFRAME = "swapped_iframe"
24
25
  }
@@ -18,4 +18,4 @@ export type LoadingAccountNext = {
18
18
  };
19
19
  export declare const LoadingAccountInfo: ModalStepInfo<FunCheckoutStep.LOADING_ACCOUNT>;
20
20
  /** A placeholder component to handle redirecting to the checkout history page */
21
- export declare function LoadingAccount({ modalState, onNext, }: ModalStepComponentProps<FunCheckoutStep.LOADING_ACCOUNT>): React.JSX.Element;
21
+ export declare function LoadingAccount({ modalState, onClose, onNext, }: ModalStepComponentProps<FunCheckoutStep.LOADING_ACCOUNT>): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- import { type MeldQuote, MeldServiceProvider } from '@funkit/api-base';
1
+ import type { MeldQuote, MeldServiceProvider } from '@funkit/api-base';
2
2
  import React from 'react';
3
3
  import type { PaymentMethodCardInfo } from '../../../domains/paymentMethods';
4
4
  import { type CheckoutModalCommonState, FunCheckoutStep, type ModalStepComponentProps, type ModalStepInfo } from '../stepTransition';
@@ -1,9 +1,13 @@
1
1
  import React from 'react';
2
+ import { type BoxProps } from '../../../components/Box/Box';
2
3
  import type { PaymentMethodType } from '../../../hooks/usePaymentSources';
3
4
  interface CryptoCashToggleProps {
4
5
  activeTab: PaymentMethodType;
6
+ disabled?: boolean;
5
7
  onTabChange: (tab: PaymentMethodType) => void;
8
+ marginTop?: BoxProps['marginTop'];
9
+ marginBottom?: BoxProps['marginBottom'];
6
10
  style?: React.CSSProperties;
7
11
  }
8
- export declare const CryptoCashToggle: ({ activeTab, onTabChange, style, }: CryptoCashToggleProps) => React.JSX.Element;
12
+ export declare const CryptoCashToggle: ({ activeTab, disabled, onTabChange, marginTop, marginBottom, style, }: CryptoCashToggleProps) => React.JSX.Element;
9
13
  export {};
@@ -0,0 +1,10 @@
1
+ import { type FormOfPayment } from '@funkit/api-base';
2
+ import React from 'react';
3
+ interface FormOfPaymentsListProps {
4
+ fops?: FormOfPayment[];
5
+ isLoading: boolean;
6
+ selectedFop?: FormOfPayment | null;
7
+ onFopSelect: (fop: FormOfPayment) => void;
8
+ }
9
+ export declare function FormOfPaymentsList({ fops, isLoading, selectedFop, onFopSelect, }: FormOfPaymentsListProps): React.JSX.Element;
10
+ export {};
@@ -1,8 +1,12 @@
1
+ import { type FormOfPayment } from '@funkit/api-base';
1
2
  import React from 'react';
2
3
  import { type ConnectablePaymentMethodInfo, PaymentMethod, type PaymentMethodCardInfo, type PaymentMethodVirtualBankIncompleteInfo } from '../../../domains/paymentMethods';
4
+ import { type PaymentMethodType } from '../../../hooks/usePaymentSources';
3
5
  import { type CheckoutModalCommonState, FunCheckoutStep, type ModalStepComponentProps, type ModalStepInfo } from '../stepTransition';
4
6
  export type SourceChangeState = CheckoutModalCommonState & {
5
7
  paymentMethodInfo: ConnectablePaymentMethodInfo | null;
8
+ /** Persisted payment method type filter (crypto/fiat tab) */
9
+ paymentMethodTypeFilter?: PaymentMethodType;
6
10
  };
7
11
  export type SourceChangeNext = {
8
12
  connectNew: false;
@@ -25,6 +29,12 @@ export type SourceChangeNext = {
25
29
  } | {
26
30
  brokerageFailed: true;
27
31
  paymentMethodInfo: ConnectablePaymentMethodInfo;
32
+ } | {
33
+ /** Navigate to Swapped iframe with a selected payment option */
34
+ swappedIframe: true;
35
+ selectedPaymentOption: FormOfPayment;
36
+ /** Payment method type filter to restore when returning */
37
+ paymentMethodTypeFilter: PaymentMethodType;
28
38
  };
29
39
  export declare const SourceChangeInfo: ModalStepInfo<FunCheckoutStep.SOURCE_CHANGE>;
30
40
  export declare function SourceChange({ modalState, onClose, onNext, setModalState, }: ModalStepComponentProps<FunCheckoutStep.SOURCE_CHANGE>): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare function SourceChangeLoading({ onClose, }: {
3
+ onClose: () => void;
4
+ }): React.JSX.Element;
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import type { ConnectablePaymentMethodInfo, PaymentMethod } from '../../../domains/paymentMethods';
3
- interface DefaultSourceListProps {
3
+ interface SourceListProps {
4
4
  preferred: (ConnectablePaymentMethodInfo | PaymentMethod)[];
5
5
  moreSources: (ConnectablePaymentMethodInfo | PaymentMethod)[];
6
6
  comingSoon: PaymentMethod[];
7
- hasMoreSources: boolean;
7
+ isFallback: boolean;
8
8
  renderSource: (source: ConnectablePaymentMethodInfo | PaymentMethod) => React.ReactNode;
9
9
  renderComingSoon: (source: PaymentMethod) => React.ReactNode;
10
10
  }
11
- export declare function DefaultSourceList({ preferred, moreSources, comingSoon, hasMoreSources, renderSource, renderComingSoon, }: DefaultSourceListProps): React.JSX.Element;
11
+ export declare function SourceList({ preferred, moreSources, comingSoon, isFallback, renderSource, renderComingSoon, }: SourceListProps): React.JSX.Element;
12
12
  export {};
@@ -1,3 +1,4 @@
1
1
  export declare const WITH_EMPTY_STATE_DATA_ATTRIBUTE = "data-with-empty-state";
2
2
  export declare const emptyStateStyles: string;
3
- export declare const fanaticsSourceChangeContainer: string;
3
+ export declare const sourceListBoxStyles: string;
4
+ export declare const sourceListCompactBoxStyles: string;
@@ -21,6 +21,7 @@ import { type MeldQuotesNext, type MeldQuotesState } from './MeldQuotes/MeldQuot
21
21
  import { type MeldRedirectNext, type MeldRedirectState } from './MeldRedirect/MeldRedirect';
22
22
  import { type SelectAssetNext, type SelectAssetState } from './SelectAsset/SelectAsset';
23
23
  import { type SourceChangeNext, type SourceChangeState } from './SourceChange/SourceChange';
24
+ import { type SwappedIframeNext, type SwappedIframeState } from './SwappedIframe';
24
25
  import { type TransferTokenNext, type TransferTokenState } from './TransferToken/TransferToken';
25
26
  import { type FiatAccountDetailNext, type FiatAccountDetailState } from './VirtualFiatAccount/FiatAccountDetail';
26
27
  import { type KycIframeNext, type KycIframeState } from './VirtualFiatAccount/KycIframe';
@@ -60,6 +61,8 @@ export type ModalStepInfo<S extends FunCheckoutStep> = {
60
61
  disableBack?: (info: ModalStepInput<S>) => boolean;
61
62
  /** Hides the close button in the Dialog Title element */
62
63
  hideClose?: (startingStep?: FunCheckoutStartingStep) => boolean;
64
+ /** Hides the entire topbar including back button, close button, and title */
65
+ hideTopbar?: () => boolean;
63
66
  onBack?(state: CheckoutModalState<S>, prevState: CheckoutModalState): CheckoutModalState;
64
67
  onNext(state: CheckoutModalState<S>, payload: NextPayload<S>): CheckoutModalState;
65
68
  showFullHeight?: boolean;
@@ -95,6 +98,7 @@ export type CheckoutModalState<S extends FunCheckoutStep = FunCheckoutStep> = {
95
98
  [FunCheckoutStep.CONNECT_EXCHANGE]: ConnectExchangeState;
96
99
  [FunCheckoutStep.BROKERAGE_TWO_FA]: BrokerageTwoFAState;
97
100
  [FunCheckoutStep.BROKERAGE_SUCCESS]: BrokerageSuccessState;
101
+ [FunCheckoutStep.SWAPPED_IFRAME]: SwappedIframeState;
98
102
  }[T] & {
99
103
  step: T;
100
104
  previousStep?: FunCheckoutStep | null;
@@ -123,6 +127,7 @@ export type NextPayload<S extends FunCheckoutStep = FunCheckoutStep> = {
123
127
  [FunCheckoutStep.CONNECT_EXCHANGE]: ConnectExchangeNext;
124
128
  [FunCheckoutStep.BROKERAGE_TWO_FA]: BrokerageTwoFANext;
125
129
  [FunCheckoutStep.BROKERAGE_SUCCESS]: null;
130
+ [FunCheckoutStep.SWAPPED_IFRAME]: SwappedIframeNext;
126
131
  }[S] & {
127
132
  /** Whether screen transition should change direction to simulate back transition. Only applies if there is a history entry in the stack*/
128
133
  reverseAnimation?: boolean;
@@ -145,10 +150,12 @@ export declare function useCheckoutModalTransition(checkoutItem: FunkitActiveChe
145
150
  onStepChange: (nextState: CheckoutModalState) => void;
146
151
  setModalState: import("react").Dispatch<SetStateAction<CheckoutModalState<FunCheckoutStep>>>;
147
152
  hasHistoryEntry: boolean;
153
+ isStepReady: boolean;
148
154
  };
149
155
  export declare function useTitleConfig<S extends FunCheckoutStep>(checkoutItem: FunkitActiveCheckoutItem, state: CheckoutModalState<S>): {
150
156
  disableBack: boolean;
151
157
  hideClose: boolean;
158
+ hideTopbar: boolean;
152
159
  showFullHeight: boolean;
153
160
  title: string;
154
161
  };
@@ -33,6 +33,7 @@ interface FunkitCheckoutContextInterface {
33
33
  withdrawalItem: FunkitActiveWithdrawalItem | null;
34
34
  initNewWithdrawal(initSettings: Partial<UseFunkitCheckoutPropsWithFullConfig>, config: UseFunkitCheckoutPropsWithFullConfig): string;
35
35
  updateWithdrawalSourceAssetAmount(newSourceAmount: number): void;
36
+ resetForNewWithdrawal(): void;
36
37
  applyDynamicRouting(path: Omit<DynamicRoutePath, 'getCustomRecipient' | 'generateActionsParams'> & {
37
38
  customRecipient?: FunkitCheckoutConfig['customRecipient'];
38
39
  generateActionsParams?: FunkitCheckoutConfig['generateActionsParams'];
@@ -177,6 +177,8 @@ export interface FunkitUiCustomizationsConfig {
177
177
  /** Translation key for label - defaults to `'common.close'` */
178
178
  labelKey?: 'sourceChange.exploreMarketsFirst' | 'common.close';
179
179
  };
180
+ /** Whether to show the crypto/cash toggle - defaults to false */
181
+ showCryptoCashToggle?: boolean;
180
182
  /** Whether to show target asset selection menu if dynamicTargetAssetCandidates exist - defaults to false */
181
183
  showTargetAssetSelection?: boolean;
182
184
  /** Whether to show wallet option when balance is insufficient - defaults to false (hides wallet) */
@@ -195,6 +197,18 @@ export interface FunkitUiCustomizationsConfig {
195
197
  timeEstimate?: ComponentType;
196
198
  youReceive?: ComponentType;
197
199
  youSend?: ComponentType;
200
+ fiatTabIcon?: ComponentType<{
201
+ size?: number;
202
+ }>;
203
+ cryptoTabIcon?: ComponentType<{
204
+ size?: number;
205
+ }>;
206
+ };
207
+ /** Font family names to pass to embedded widgets */
208
+ customFontFamily?: {
209
+ primary?: string;
210
+ secondary?: string;
211
+ tertiary?: string;
198
212
  };
199
213
  }
200
214
  /**
@@ -21,6 +21,7 @@ interface FunkitProviderInnerProps {
21
21
  debug?: boolean | undefined;
22
22
  sandbox?: boolean | undefined;
23
23
  modalSize?: ModalSizes;
24
+ useStyleRefForTheme?: boolean;
24
25
  }
25
26
  export type FunkitWagmiConfig = Omit<CreateFunkitWagmiConfigParameters, 'funkitApiKey' | 'initialChainId' | 'appName'> & {
26
27
  projectId: string;
@@ -140,9 +140,12 @@ export declare const useActiveTheme: () => {
140
140
  txSummaryBoxBackground: string;
141
141
  txSummaryBoxBorder: string;
142
142
  counterRingColor: string;
143
+ cryptoCashToggleContainerBorderColor: string;
144
+ cryptoCashToggleBackground: string;
143
145
  };
144
146
  dimensions: {
145
147
  connectExchangeIconSize: string;
148
+ cryptoCashToggleIconSize: string;
146
149
  dollarValueSkeletonHeight: string;
147
150
  dollarValueSkeletonWidth: string;
148
151
  inputAmountQuickOptionButtonHeight: string;
@@ -153,6 +156,7 @@ export declare const useActiveTheme: () => {
153
156
  paymentAmountSkeletonBlockHeight: string;
154
157
  paymentAmountSkeletonBlockWidth: string;
155
158
  paymentAmountSkeletonCircleSize: string;
159
+ paymentMethodItemIconSize: string;
156
160
  selectAssetItemIconSize: string;
157
161
  txBreakdownSkeletonWidth: string;
158
162
  txSummaryLineSkeletonHeight: string;
@@ -175,6 +179,7 @@ export declare const useActiveTheme: () => {
175
179
  semibold: string;
176
180
  bold: string;
177
181
  heavy: string;
182
+ cryptoCashToggle: string;
178
183
  inputAmount: string;
179
184
  modalTopbarTitle: string;
180
185
  modalBottomBarButtonText: string;
@@ -188,6 +193,7 @@ export declare const useActiveTheme: () => {
188
193
  txStatusTitle: string;
189
194
  txSummaryLabel: string;
190
195
  txSummaryValue: string;
196
+ sourceListSectionLabelFontWeight: string;
191
197
  };
192
198
  fontSize: {
193
199
  '10': {
@@ -234,6 +240,10 @@ export declare const useActiveTheme: () => {
234
240
  fontSize: string;
235
241
  lineHeight: string;
236
242
  };
243
+ cryptoCashToggle: {
244
+ fontSize: string;
245
+ lineHeight: string;
246
+ };
237
247
  'header-14': {
238
248
  fontSize: string;
239
249
  lineHeight: string;
@@ -334,6 +344,10 @@ export declare const useActiveTheme: () => {
334
344
  fontSize: string;
335
345
  lineHeight: string;
336
346
  };
347
+ sourceListSectionLabelFontSize: {
348
+ fontSize: string;
349
+ lineHeight: string;
350
+ };
337
351
  };
338
352
  radii: {
339
353
  actionButton: string;
@@ -357,6 +371,7 @@ export declare const useActiveTheme: () => {
357
371
  borderWidths: {
358
372
  activeOptionBorderWidth: string;
359
373
  buttonTertiaryBorderWidth: string;
374
+ cryptoCashToggleContainerBorderWidth: string;
360
375
  txSummaryBoxBorderWidth: string;
361
376
  };
362
377
  shadows: {
@@ -388,11 +403,16 @@ export declare const useActiveTheme: () => {
388
403
  spacing: {
389
404
  confirmationStepMarginTop: string;
390
405
  confirmationStepVerticalGap: string;
406
+ cryptoCashToggleContainerPadding: string;
407
+ cryptoCashToggleMarginBottom: string;
408
+ cryptoCashToggleMarginTop: string;
409
+ cryptoCashToggleTabPaddingY: string;
391
410
  modalBaseHorizontalPadding: string;
392
411
  modalBottomHorizontalPadding: string;
393
412
  modalPaddingBottomUpper: string;
394
413
  modalPaddingBottomLower: string;
395
414
  modalTopBarVerticalTextSpacing: string;
415
+ modalBottomBarButtonPaddingY: string;
396
416
  selectAssetItemPaddingX: string;
397
417
  selectAssetItemPaddingY: string;
398
418
  selectAssetItemTextGap: string;
@@ -405,6 +425,9 @@ export declare const useActiveTheme: () => {
405
425
  txSummaryLineItemPadding: string;
406
426
  txSummaryDividerMarginX: string;
407
427
  txSummaryDividerMarginY: string;
428
+ verticalSectionGap: string;
429
+ youPayYouReceivePaddingLeft: string;
430
+ youPayYouReceivePaddingRight: string;
408
431
  youPayYouReceivePaddingY: string;
409
432
  };
410
433
  textTransforms: {
@@ -545,9 +568,12 @@ export declare const useActiveTheme: () => {
545
568
  txSummaryBoxBackground: string;
546
569
  txSummaryBoxBorder: string;
547
570
  counterRingColor: string;
571
+ cryptoCashToggleContainerBorderColor: string;
572
+ cryptoCashToggleBackground: string;
548
573
  };
549
574
  dimensions: {
550
575
  connectExchangeIconSize: string;
576
+ cryptoCashToggleIconSize: string;
551
577
  dollarValueSkeletonHeight: string;
552
578
  dollarValueSkeletonWidth: string;
553
579
  inputAmountQuickOptionButtonHeight: string;
@@ -558,6 +584,7 @@ export declare const useActiveTheme: () => {
558
584
  paymentAmountSkeletonBlockHeight: string;
559
585
  paymentAmountSkeletonBlockWidth: string;
560
586
  paymentAmountSkeletonCircleSize: string;
587
+ paymentMethodItemIconSize: string;
561
588
  selectAssetItemIconSize: string;
562
589
  txBreakdownSkeletonWidth: string;
563
590
  txSummaryLineSkeletonHeight: string;
@@ -580,6 +607,7 @@ export declare const useActiveTheme: () => {
580
607
  semibold: string;
581
608
  bold: string;
582
609
  heavy: string;
610
+ cryptoCashToggle: string;
583
611
  inputAmount: string;
584
612
  modalTopbarTitle: string;
585
613
  modalBottomBarButtonText: string;
@@ -593,6 +621,7 @@ export declare const useActiveTheme: () => {
593
621
  txStatusTitle: string;
594
622
  txSummaryLabel: string;
595
623
  txSummaryValue: string;
624
+ sourceListSectionLabelFontWeight: string;
596
625
  };
597
626
  fontSize: {
598
627
  '10': {
@@ -639,6 +668,10 @@ export declare const useActiveTheme: () => {
639
668
  fontSize: string;
640
669
  lineHeight: string;
641
670
  };
671
+ cryptoCashToggle: {
672
+ fontSize: string;
673
+ lineHeight: string;
674
+ };
642
675
  'header-14': {
643
676
  fontSize: string;
644
677
  lineHeight: string;
@@ -739,6 +772,10 @@ export declare const useActiveTheme: () => {
739
772
  fontSize: string;
740
773
  lineHeight: string;
741
774
  };
775
+ sourceListSectionLabelFontSize: {
776
+ fontSize: string;
777
+ lineHeight: string;
778
+ };
742
779
  };
743
780
  radii: {
744
781
  actionButton: string;
@@ -762,6 +799,7 @@ export declare const useActiveTheme: () => {
762
799
  borderWidths: {
763
800
  activeOptionBorderWidth: string;
764
801
  buttonTertiaryBorderWidth: string;
802
+ cryptoCashToggleContainerBorderWidth: string;
765
803
  txSummaryBoxBorderWidth: string;
766
804
  };
767
805
  shadows: {
@@ -793,11 +831,16 @@ export declare const useActiveTheme: () => {
793
831
  spacing: {
794
832
  confirmationStepMarginTop: string;
795
833
  confirmationStepVerticalGap: string;
834
+ cryptoCashToggleContainerPadding: string;
835
+ cryptoCashToggleMarginBottom: string;
836
+ cryptoCashToggleMarginTop: string;
837
+ cryptoCashToggleTabPaddingY: string;
796
838
  modalBaseHorizontalPadding: string;
797
839
  modalBottomHorizontalPadding: string;
798
840
  modalPaddingBottomUpper: string;
799
841
  modalPaddingBottomLower: string;
800
842
  modalTopBarVerticalTextSpacing: string;
843
+ modalBottomBarButtonPaddingY: string;
801
844
  selectAssetItemPaddingX: string;
802
845
  selectAssetItemPaddingY: string;
803
846
  selectAssetItemTextGap: string;
@@ -810,6 +853,9 @@ export declare const useActiveTheme: () => {
810
853
  txSummaryLineItemPadding: string;
811
854
  txSummaryDividerMarginX: string;
812
855
  txSummaryDividerMarginY: string;
856
+ verticalSectionGap: string;
857
+ youPayYouReceivePaddingLeft: string;
858
+ youPayYouReceivePaddingRight: string;
813
859
  youPayYouReceivePaddingY: string;
814
860
  };
815
861
  textTransforms: {
@@ -948,9 +994,12 @@ export declare const useActiveTheme: () => {
948
994
  txSummaryBoxBackground: string;
949
995
  txSummaryBoxBorder: string;
950
996
  counterRingColor: string;
997
+ cryptoCashToggleContainerBorderColor: string;
998
+ cryptoCashToggleBackground: string;
951
999
  };
952
1000
  dimensions: {
953
1001
  connectExchangeIconSize: string;
1002
+ cryptoCashToggleIconSize: string;
954
1003
  dollarValueSkeletonHeight: string;
955
1004
  dollarValueSkeletonWidth: string;
956
1005
  inputAmountQuickOptionButtonHeight: string;
@@ -961,6 +1010,7 @@ export declare const useActiveTheme: () => {
961
1010
  paymentAmountSkeletonBlockHeight: string;
962
1011
  paymentAmountSkeletonBlockWidth: string;
963
1012
  paymentAmountSkeletonCircleSize: string;
1013
+ paymentMethodItemIconSize: string;
964
1014
  selectAssetItemIconSize: string;
965
1015
  txBreakdownSkeletonWidth: string;
966
1016
  txSummaryLineSkeletonHeight: string;
@@ -983,6 +1033,7 @@ export declare const useActiveTheme: () => {
983
1033
  semibold: string;
984
1034
  bold: string;
985
1035
  heavy: string;
1036
+ cryptoCashToggle: string;
986
1037
  inputAmount: string;
987
1038
  modalTopbarTitle: string;
988
1039
  modalBottomBarButtonText: string;
@@ -996,6 +1047,7 @@ export declare const useActiveTheme: () => {
996
1047
  txStatusTitle: string;
997
1048
  txSummaryLabel: string;
998
1049
  txSummaryValue: string;
1050
+ sourceListSectionLabelFontWeight: string;
999
1051
  };
1000
1052
  fontSize: {
1001
1053
  '10': {
@@ -1042,6 +1094,10 @@ export declare const useActiveTheme: () => {
1042
1094
  fontSize: string;
1043
1095
  lineHeight: string;
1044
1096
  };
1097
+ cryptoCashToggle: {
1098
+ fontSize: string;
1099
+ lineHeight: string;
1100
+ };
1045
1101
  'header-14': {
1046
1102
  fontSize: string;
1047
1103
  lineHeight: string;
@@ -1142,6 +1198,10 @@ export declare const useActiveTheme: () => {
1142
1198
  fontSize: string;
1143
1199
  lineHeight: string;
1144
1200
  };
1201
+ sourceListSectionLabelFontSize: {
1202
+ fontSize: string;
1203
+ lineHeight: string;
1204
+ };
1145
1205
  };
1146
1206
  radii: {
1147
1207
  actionButton: string;
@@ -1165,6 +1225,7 @@ export declare const useActiveTheme: () => {
1165
1225
  borderWidths: {
1166
1226
  activeOptionBorderWidth: string;
1167
1227
  buttonTertiaryBorderWidth: string;
1228
+ cryptoCashToggleContainerBorderWidth: string;
1168
1229
  txSummaryBoxBorderWidth: string;
1169
1230
  };
1170
1231
  shadows: {
@@ -1196,11 +1257,16 @@ export declare const useActiveTheme: () => {
1196
1257
  spacing: {
1197
1258
  confirmationStepMarginTop: string;
1198
1259
  confirmationStepVerticalGap: string;
1260
+ cryptoCashToggleContainerPadding: string;
1261
+ cryptoCashToggleMarginBottom: string;
1262
+ cryptoCashToggleMarginTop: string;
1263
+ cryptoCashToggleTabPaddingY: string;
1199
1264
  modalBaseHorizontalPadding: string;
1200
1265
  modalBottomHorizontalPadding: string;
1201
1266
  modalPaddingBottomUpper: string;
1202
1267
  modalPaddingBottomLower: string;
1203
1268
  modalTopBarVerticalTextSpacing: string;
1269
+ modalBottomBarButtonPaddingY: string;
1204
1270
  selectAssetItemPaddingX: string;
1205
1271
  selectAssetItemPaddingY: string;
1206
1272
  selectAssetItemTextGap: string;
@@ -1213,6 +1279,9 @@ export declare const useActiveTheme: () => {
1213
1279
  txSummaryLineItemPadding: string;
1214
1280
  txSummaryDividerMarginX: string;
1215
1281
  txSummaryDividerMarginY: string;
1282
+ verticalSectionGap: string;
1283
+ youPayYouReceivePaddingLeft: string;
1284
+ youPayYouReceivePaddingRight: string;
1216
1285
  youPayYouReceivePaddingY: string;
1217
1286
  };
1218
1287
  textTransforms: {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  baseTheme,
4
4
  systemFontStack
5
- } from "../chunk-A24XIU2M.js";
5
+ } from "../chunk-4WY7FNYP.js";
6
6
  export {
7
7
  baseTheme,
8
8
  systemFontStack
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import {
3
3
  darkTheme
4
- } from "../chunk-GRQP5R23.js";
5
- import "../chunk-A24XIU2M.js";
4
+ } from "../chunk-Z4QDKBBG.js";
5
+ import "../chunk-4WY7FNYP.js";
6
6
  export {
7
7
  darkTheme
8
8
  };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import {
3
3
  lightTheme
4
- } from "../chunk-CMS4F5PL.js";
5
- import "../chunk-A24XIU2M.js";
4
+ } from "../chunk-UUHLEWAL.js";
5
+ import "../chunk-4WY7FNYP.js";
6
6
  export {
7
7
  lightTheme
8
8
  };
@@ -0,0 +1,5 @@
1
+ import type { CheckoutQuoteResponse } from '@funkit/utils';
2
+ export declare const ACROSS_TIME_ESTIMATE_SECONDS = 180;
3
+ export declare const ACROSS_DELAYED_AUTO_TRIGGER_CUTOFF: number;
4
+ /** Whether the quote was routed through the Across bridge (e.g. CCTP) */
5
+ export declare function isAcrossRoute(metadata: CheckoutQuoteResponse['metadata'] | undefined): boolean;
@@ -0,0 +1,9 @@
1
+ import type { CheckoutQuoteResponse } from '@funkit/utils';
2
+ import type { FunkitCheckoutConfig } from '../providers/FunkitCheckoutContext';
3
+ export declare const DEFAULT_TX_DELAYED_CUTOFF = 60;
4
+ /**
5
+ * Returns the delayed auto trigger cutoff (in seconds) for slow deposits.
6
+ * Handles Lighter L1, LayerZero OFT, and Across (CCTP) routes.
7
+ * Falls back to {@link DEFAULT_TX_DELAYED_CUTOFF} for standard deposits.
8
+ */
9
+ export declare function getSlowDepositDelayedCutoff(apiKey: string, checkoutConfig: Pick<FunkitCheckoutConfig, 'targetChain'> | undefined, metadata?: CheckoutQuoteResponse['metadata']): number;
@@ -3,6 +3,22 @@ import type { WalletClient } from 'viem';
3
3
  export declare function getDirectExecutionCreatedTimeMs(directExecution: DirectExecution): number;
4
4
  export declare function getDirectExecutionUpdatedTimeMs(directExecution: DirectExecution): number;
5
5
  export declare function getDirectExecutionRunTimeSeconds(directExecution: DirectExecution): number;
6
+ /**
7
+ * Resolves the completion transaction chain, hash, and explorer URL for a direct execution.
8
+ *
9
+ * Chain resolution: if LayerZero OFT data is present, use the LZ destination chain;
10
+ * otherwise fall back to the DE's toChainId.
11
+ *
12
+ * Hash resolution: for Lighter L1 deposits (new user flow where toChainId is NOT Lighter),
13
+ * the completion explorer should point to Lighter using lighterExecutionStatusResponse.hash.
14
+ * For the existing user flow (toChainId IS Lighter), relay already puts the correct
15
+ * Lighter hash into listenerInfo.txHashes, so the default path works.
16
+ */
17
+ export declare function getCompletionTxInfo(directExecution: DirectExecution): {
18
+ chainId: string;
19
+ txHash: string | undefined;
20
+ customRedirectUrl: string | undefined;
21
+ };
6
22
  export declare function supportsAtomicBatch(wallet: WalletClient, chainId: number): Promise<boolean>;
7
23
  /**
8
24
  * Returns a proxied wallet with getCapabilities patched to disable atomic batch support.
@@ -205,7 +205,7 @@ export declare const flagConfig: {
205
205
  readonly if_any: [{
206
206
  readonly key: "apiKey";
207
207
  readonly type: "isAnyOf";
208
- readonly values: ["6TUi99Tq3O9MWj1IFX8Pv6spmPXzcvhy9NvBoeW2", "clDebbfo9edXq1GydZ0CahSAfSimPj616lFa9p8e", "57G91zNoew4nYxIoqSCpS1vWr8JT3gGVasNqMwgG", "M3uox3cw0u8YCPV9cIREA6AugUMvPFTk6qOpm4um", "lI7amueGK94QtGa7sGGVf8n0XhIcn4sHFAZRu5Jj", "cGlmpTmNh657m8TiV5RFdwna6FG5pxM6ajiNHvw3", "USyZhcp7kB2mMsbRsaHDs3i52cE6srZw8KD8jZd0", "ODW4jUppoG3H87YcY9GZhoGj4hX5W0w9mr24LEU8", "pLQBJsA6zS9tg990rbdBD6UdABkWRv5O60vlrVcW", "lUzTaIRxs95iin3pCAafB1ChA5akBiuQ1tjhXnau", "di9ZSqn1Ya68Y2XpBPUV1rCtNGXh8Xe5MGWzb1Xe", "53OWivH0fK2VIAuMZTycr52EnSEnPWj97Jy3Dpiz", "AH7lRIhbsL167nptv6eub9xDJXVHnYUm2vL7FLjK", "1cRIX8XoWP801OILra02i13IJ08IARBP5B6ydcnp", "i6e1I8cfX625TTwRJlD2DshKyAoaUtO8aeoaR4i2", "2hicPxo2vy2NMHcg2cEU9crOeKtDpc14NEfMCthc", "SMbBD7DS9b3EPcyBVg4a8az1rRWR9xB068chHoUN", "wQDLu86Qab61vbtru7thf8Yj0xaeqVUH4ohoXESu", "Y53dikxXdT4E3afI1l8BMBSWgyhKvf65k6Dut1k6", "iMTsSsgDdI2FC0FjeEejS9LMxuJgDhFO3OHlwVjT", "HKHvPSPDezaxsTohFgDuG4WpKW6hB4SFYyztm9vc", "5UzOrcAE2F3rcuMX2EeIlaYv5VUcDe6Lyh0PeZX2"];
208
+ readonly values: ["6TUi99Tq3O9MWj1IFX8Pv6spmPXzcvhy9NvBoeW2", "clDebbfo9edXq1GydZ0CahSAfSimPj616lFa9p8e", "57G91zNoew4nYxIoqSCpS1vWr8JT3gGVasNqMwgG", "M3uox3cw0u8YCPV9cIREA6AugUMvPFTk6qOpm4um", "lI7amueGK94QtGa7sGGVf8n0XhIcn4sHFAZRu5Jj", "cGlmpTmNh657m8TiV5RFdwna6FG5pxM6ajiNHvw3", "USyZhcp7kB2mMsbRsaHDs3i52cE6srZw8KD8jZd0", "vte0gvTFGH7hPyPED46oV8TyJlyE8p6D7Q73TSx0", "ODW4jUppoG3H87YcY9GZhoGj4hX5W0w9mr24LEU8", "pLQBJsA6zS9tg990rbdBD6UdABkWRv5O60vlrVcW", "lUzTaIRxs95iin3pCAafB1ChA5akBiuQ1tjhXnau", "di9ZSqn1Ya68Y2XpBPUV1rCtNGXh8Xe5MGWzb1Xe", "53OWivH0fK2VIAuMZTycr52EnSEnPWj97Jy3Dpiz", "AH7lRIhbsL167nptv6eub9xDJXVHnYUm2vL7FLjK", "1cRIX8XoWP801OILra02i13IJ08IARBP5B6ydcnp", "i6e1I8cfX625TTwRJlD2DshKyAoaUtO8aeoaR4i2", "2hicPxo2vy2NMHcg2cEU9crOeKtDpc14NEfMCthc", "SMbBD7DS9b3EPcyBVg4a8az1rRWR9xB068chHoUN", "wQDLu86Qab61vbtru7thf8Yj0xaeqVUH4ohoXESu", "Y53dikxXdT4E3afI1l8BMBSWgyhKvf65k6Dut1k6", "iMTsSsgDdI2FC0FjeEejS9LMxuJgDhFO3OHlwVjT", "HKHvPSPDezaxsTohFgDuG4WpKW6hB4SFYyztm9vc", "5UzOrcAE2F3rcuMX2EeIlaYv5VUcDe6Lyh0PeZX2"];
209
209
  }];
210
210
  readonly value: true;
211
211
  }];
@@ -224,7 +224,7 @@ export declare const flagConfig: {
224
224
  readonly if_any: [{
225
225
  readonly key: "apiKey";
226
226
  readonly type: "isAnyOf";
227
- readonly values: ["6TUi99Tq3O9MWj1IFX8Pv6spmPXzcvhy9NvBoeW2", "clDebbfo9edXq1GydZ0CahSAfSimPj616lFa9p8e", "Tkp90bAf246UQXfou5uHY9UHN7AUV6xK1tgEWKke", "57G91zNoew4nYxIoqSCpS1vWr8JT3gGVasNqMwgG", "M3uox3cw0u8YCPV9cIREA6AugUMvPFTk6qOpm4um", "cGlmpTmNh657m8TiV5RFdwna6FG5pxM6ajiNHvw3", "USyZhcp7kB2mMsbRsaHDs3i52cE6srZw8KD8jZd0", "ODW4jUppoG3H87YcY9GZhoGj4hX5W0w9mr24LEU8", "pLQBJsA6zS9tg990rbdBD6UdABkWRv5O60vlrVcW", "lUzTaIRxs95iin3pCAafB1ChA5akBiuQ1tjhXnau", "53OWivH0fK2VIAuMZTycr52EnSEnPWj97Jy3Dpiz", "AH7lRIhbsL167nptv6eub9xDJXVHnYUm2vL7FLjK", "TY2G63jFfd7H29aHiJIzg5RqdXNdog2Q5jgb8tr7", "i6e1I8cfX625TTwRJlD2DshKyAoaUtO8aeoaR4i2", "1cRIX8XoWP801OILra02i13IJ08IARBP5B6ydcnp", "2hicPxo2vy2NMHcg2cEU9crOeKtDpc14NEfMCthc", "SMbBD7DS9b3EPcyBVg4a8az1rRWR9xB068chHoUN", "Y53dikxXdT4E3afI1l8BMBSWgyhKvf65k6Dut1k6", "wQDLu86Qab61vbtru7thf8Yj0xaeqVUH4ohoXESu", "iMTsSsgDdI2FC0FjeEejS9LMxuJgDhFO3OHlwVjT", "HKHvPSPDezaxsTohFgDuG4WpKW6hB4SFYyztm9vc", "5UzOrcAE2F3rcuMX2EeIlaYv5VUcDe6Lyh0PeZX2"];
227
+ readonly values: ["6TUi99Tq3O9MWj1IFX8Pv6spmPXzcvhy9NvBoeW2", "clDebbfo9edXq1GydZ0CahSAfSimPj616lFa9p8e", "Tkp90bAf246UQXfou5uHY9UHN7AUV6xK1tgEWKke", "57G91zNoew4nYxIoqSCpS1vWr8JT3gGVasNqMwgG", "M3uox3cw0u8YCPV9cIREA6AugUMvPFTk6qOpm4um", "cGlmpTmNh657m8TiV5RFdwna6FG5pxM6ajiNHvw3", "USyZhcp7kB2mMsbRsaHDs3i52cE6srZw8KD8jZd0", "vte0gvTFGH7hPyPED46oV8TyJlyE8p6D7Q73TSx0", "ODW4jUppoG3H87YcY9GZhoGj4hX5W0w9mr24LEU8", "pLQBJsA6zS9tg990rbdBD6UdABkWRv5O60vlrVcW", "lUzTaIRxs95iin3pCAafB1ChA5akBiuQ1tjhXnau", "53OWivH0fK2VIAuMZTycr52EnSEnPWj97Jy3Dpiz", "AH7lRIhbsL167nptv6eub9xDJXVHnYUm2vL7FLjK", "TY2G63jFfd7H29aHiJIzg5RqdXNdog2Q5jgb8tr7", "i6e1I8cfX625TTwRJlD2DshKyAoaUtO8aeoaR4i2", "1cRIX8XoWP801OILra02i13IJ08IARBP5B6ydcnp", "2hicPxo2vy2NMHcg2cEU9crOeKtDpc14NEfMCthc", "SMbBD7DS9b3EPcyBVg4a8az1rRWR9xB068chHoUN", "Y53dikxXdT4E3afI1l8BMBSWgyhKvf65k6Dut1k6", "wQDLu86Qab61vbtru7thf8Yj0xaeqVUH4ohoXESu", "iMTsSsgDdI2FC0FjeEejS9LMxuJgDhFO3OHlwVjT", "HKHvPSPDezaxsTohFgDuG4WpKW6hB4SFYyztm9vc", "5UzOrcAE2F3rcuMX2EeIlaYv5VUcDe6Lyh0PeZX2"];
228
228
  }];
229
229
  readonly value: true;
230
230
  }, {
@@ -1,6 +1,6 @@
1
1
  import { type Address } from 'viem';
2
2
  export declare const LIGHTER_DEPOSIT_ADDRESS: Address;
3
- export declare const LIGHTER_NATIVE_FLOW_TIME_ESTIMATE_SECONDS: number;
3
+ export declare const LIGHTER_SLOW_DEPOSIT_TIME_ESTIMATE_SECONDS: number;
4
4
  export declare const LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF: number;
5
5
  export declare const LIGHTER_DYNAMIC_ROUTING_ID: {
6
6
  ETH_SPOT: string;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sanitizes a CSS string for injection into a `<style>` tag.
3
+ * Prevents breakout from the style element via `</style>` injection.
4
+ * This is defense-in-depth — cssStringFromTheme already strips
5
+ * `<`, `>`, `/` from theme values.
6
+ */
7
+ export declare function sanitizeCssStyleContent(css: string): string;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Validates that a URL uses a safe protocol (http: or https:) and
3
+ * returns it, or returns undefined if the URL is invalid/unsafe.
4
+ */
5
+ export declare function sanitizeUrl(url: string | undefined | null): string | undefined;
6
+ /**
7
+ * Sanitizes a URL for use in CSS url() context by validating the protocol
8
+ * and percent-encoding characters that could break out of url('...').
9
+ */
10
+ export declare function sanitizeCssUrl(url: string | undefined | null): string | undefined;
@@ -1,2 +1,2 @@
1
1
  import type { DynamicTargetAssetCandidate } from '../providers/FunkitCheckoutContext';
2
- export declare const getTokenIconUrl: (symbol: string, tokens?: DynamicTargetAssetCandidate[]) => string | undefined;
2
+ export declare const getTokenIconUrl: (symbol: string, tokens?: DynamicTargetAssetCandidate[]) => string;
@@ -1,4 +1,5 @@
1
- import type { FunAddress } from '@funkit/api-base';
1
+ import type { CheckoutInitTokenTransferResponse, FunAddress } from '@funkit/api-base';
2
+ export declare function getDepositAddressForChain(chainId: number, transferInit: CheckoutInitTokenTransferResponse | undefined): FunAddress | undefined;
2
3
  export type TransferTokenQrCodeType = 'ethereum' | 'solana' | 'bitcoin' | 'tron';
3
4
  interface TransferTokenQrCodeUriParams {
4
5
  depositAddress: FunAddress;