@funkit/connect 9.13.0 → 9.15.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 (75) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/__generated__/default_configs.d.ts +8 -11
  3. package/dist/__generated__/default_feature_gates.d.ts +3 -2
  4. package/dist/clients/aave.d.ts +92 -0
  5. package/dist/clients/aave.js +156 -0
  6. package/dist/clients/{chunk-LMEQD56M.js → chunk-PLDXBAAH.js} +2 -1
  7. package/dist/clients/fanatics.js +1 -1
  8. package/dist/clients/lighter.d.ts +33 -2
  9. package/dist/clients/lighter.js +124 -2
  10. package/dist/clients/polymarket.d.ts +30 -1
  11. package/dist/clients/polymarket.js +153 -4
  12. package/dist/components/CopyAddress/CopyInputDisplayedAddress.css.d.ts +1 -0
  13. package/dist/components/CopyAddress/CopyInputDisplayedAddress.d.ts +6 -0
  14. package/dist/components/FreeUsdcBanner/FreeUsdcBanner.d.ts +5 -0
  15. package/dist/components/FunPayments/FunPaymentMethods.d.ts +16 -0
  16. package/dist/components/Icons/CashAppIcon.d.ts +4 -0
  17. package/dist/consts/customers.d.ts +8 -0
  18. package/dist/consts/polymarket.d.ts +7 -0
  19. package/dist/domains/paymentMethods.d.ts +9 -1
  20. package/dist/domains/quote.d.ts +11 -0
  21. package/dist/hooks/usePaymentSources.d.ts +1 -0
  22. package/dist/index.css +22 -15
  23. package/dist/index.js +3017 -2395
  24. package/dist/modals/CheckoutModal/InputAmount/InputAmount.d.ts +4 -0
  25. package/dist/modals/CheckoutModal/InputAmount/aaveClient.d.ts +20 -0
  26. package/dist/modals/CheckoutModal/InputAmount/useAaveNativeSupply.d.ts +44 -0
  27. package/dist/modals/CheckoutModal/SourceChange/SourceChange.d.ts +8 -0
  28. package/dist/modals/CheckoutModal/SourceChange/SourceList.d.ts +7 -1
  29. package/dist/modals/CheckoutModal/SourceChange/buildSourceGroups.d.ts +31 -8
  30. package/dist/modals/WithdrawalModal/WithdrawAmountInput.d.ts +10 -4
  31. package/dist/modals/WithdrawalModal/WithdrawalContent.d.ts +32 -1
  32. package/dist/modals/WithdrawalModal/WithdrawalSuccess.d.ts +0 -1
  33. package/dist/modals/WithdrawalModal/useWithdrawal.d.ts +1 -2
  34. package/dist/providers/FunkitCheckoutContext/index.d.ts +8 -0
  35. package/dist/providers/FunkitCheckoutContext/types.d.ts +6 -0
  36. package/dist/providers/FunkitConfigContext.d.ts +2 -0
  37. package/dist/wagmi/actions.d.ts +1 -1
  38. package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
  39. package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
  40. package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
  41. package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
  42. package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
  43. package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
  44. package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
  45. package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
  46. package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
  47. package/dist/wallets/walletConnectors/index.js +40 -40
  48. package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
  49. package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
  50. package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
  51. package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
  52. package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
  53. package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
  54. package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
  55. package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
  56. package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
  57. package/package.json +10 -5
  58. package/dist/wallets/walletConnectors/{chunk-VMMROPXK.js → chunk-34HACM5U.js} +3 -3
  59. package/dist/wallets/walletConnectors/{chunk-3ZJN3PXP.js → chunk-5TN5Z2WY.js} +3 -3
  60. package/dist/wallets/walletConnectors/{chunk-OD6B2ISG.js → chunk-6DRCY52E.js} +3 -3
  61. package/dist/wallets/walletConnectors/{chunk-IRHK6SOW.js → chunk-7V33VJAL.js} +3 -3
  62. package/dist/wallets/walletConnectors/{chunk-ZJJWGKB6.js → chunk-APHCF4DT.js} +3 -3
  63. package/dist/wallets/walletConnectors/{chunk-7IEUTLHY.js → chunk-DEFRRPXB.js} +3 -3
  64. package/dist/wallets/walletConnectors/{chunk-OSOB6QYX.js → chunk-FG2LDVXL.js} +3 -3
  65. package/dist/wallets/walletConnectors/{chunk-ZL6XCMV5.js → chunk-HRDPUW3V.js} +3 -3
  66. package/dist/wallets/walletConnectors/{chunk-UYW6MV74.js → chunk-HXWUH73P.js} +3 -3
  67. package/dist/wallets/walletConnectors/{chunk-UFYNHHDU.js → chunk-KWX2SYU2.js} +3 -3
  68. package/dist/wallets/walletConnectors/{chunk-AZYMJ4C6.js → chunk-LCIPVVH5.js} +3 -3
  69. package/dist/wallets/walletConnectors/{chunk-FWM4KTOV.js → chunk-T4ROGPMF.js} +3 -3
  70. package/dist/wallets/walletConnectors/{chunk-J3PJOMO7.js → chunk-UDTBQV4Q.js} +3 -3
  71. package/dist/wallets/walletConnectors/{chunk-55VS2NKG.js → chunk-V6UOWTEZ.js} +3 -3
  72. package/dist/wallets/walletConnectors/{chunk-LEAZMT5Y.js → chunk-VJZWNQOF.js} +3 -3
  73. package/dist/wallets/walletConnectors/{chunk-RZQ4B4Z7.js → chunk-XVBSJCW5.js} +3 -3
  74. package/dist/wallets/walletConnectors/{chunk-IMNI4AGV.js → chunk-YIEASHLS.js} +3 -3
  75. package/dist/wallets/walletConnectors/{chunk-YGMU5VWD.js → chunk-ZPSPK6LH.js} +3 -3
@@ -16,7 +16,7 @@
16
16
  * {@link WalletWithdrawalConfig}.
17
17
  */
18
18
  import { type Address, type PublicClient, type TransactionReceipt } from 'viem';
19
- import type { CustomWithdrawalConfig, FunkitWithdrawalConfig, WalletWithdrawalConfig } from '../providers/FunkitCheckoutContext/types';
19
+ import type { CustomWithdrawalConfig, FunkitCheckoutActionParams, FunkitWithdrawalConfig, WalletWithdrawalConfig } from '../providers/FunkitCheckoutContext/types';
20
20
  import type { WithdrawalTransaction } from '../wallets/Wallet';
21
21
  export interface PolymarketWithdrawalCallbackConfig {
22
22
  userId: string;
@@ -130,3 +130,32 @@ export declare function createPolymarketWithdrawalConfig(config: PolymarketWithd
130
130
  * ```
131
131
  */
132
132
  export declare function createPolymarketWithdrawalConfig(config: PolymarketWalletUnwrapWithdrawalConfig): WalletWithdrawalConfig;
133
+ export interface PolymarketPerpsDepositConfig {
134
+ /**
135
+ * Polymarket Perps account credited with the deposit
136
+ */
137
+ recipientAddress: Address;
138
+ }
139
+ /**
140
+ * Builds the `generateActionsParams` callback for a Polymarket Perps deposit.
141
+ *
142
+ * Both legs run inside a single Relay Router V3 `cleanupErc20sViaCall` sweep,
143
+ * each mediated by the VaultDepositor proxy so the flow composes with
144
+ * EXACT_INPUT quoting — the VaultDepositor pulls msg.sender's full balance and
145
+ * substitutes AMOUNT_PLACEHOLDER at exec time, so arrival amounts don't need to
146
+ * be known at quote time:
147
+ * 1. USDC.e → pUSD via `CollateralOnramp.wrap`, attributing pUSD to Relay
148
+ * Router V3.
149
+ * 2. pUSD → `POLYMARKET_PERPS_ADDRESS.deposit`, crediting `recipientAddress`.
150
+ *
151
+ * Usage:
152
+ * ```ts
153
+ * const checkoutConfig: FunkitCheckoutConfig = {
154
+ * // ...
155
+ * generateActionsParams: createPerpsGenerateActionParams({
156
+ * recipientAddress: proxyAddress,
157
+ * }),
158
+ * }
159
+ * ```
160
+ */
161
+ export declare function createPerpsGenerateActionParams(config: PolymarketPerpsDepositConfig): () => Promise<FunkitCheckoutActionParams[]>;
@@ -11,10 +11,16 @@ import {
11
11
  import {
12
12
  encodeFunctionData,
13
13
  erc20Abi,
14
- getAddress
14
+ getAddress as getAddress2
15
15
  } from "viem";
16
16
  import { polygon } from "viem/chains";
17
17
 
18
+ // src/consts/polymarket.ts
19
+ import { getAddress } from "viem";
20
+ var POLYMARKET_PUSD_ADDRESS = getAddress(
21
+ "0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB"
22
+ );
23
+
18
24
  // src/domains/paymentMethods.ts
19
25
  import { exhaustiveCheck, formatAddress } from "@funkit/utils";
20
26
 
@@ -286,6 +292,12 @@ function createPaymentMethodInfo(params) {
286
292
  title: "QR Code Transfer",
287
293
  description: ""
288
294
  };
295
+ case "bitcoin_lightning" /* BITCOIN_LIGHTNING */:
296
+ return {
297
+ paymentMethod: "bitcoin_lightning" /* BITCOIN_LIGHTNING */,
298
+ title: "Bitcoin on Cash App",
299
+ description: ""
300
+ };
289
301
  case "virtual_bank" /* VIRTUAL_BANK */:
290
302
  return {
291
303
  paymentMethod: "virtual_bank" /* VIRTUAL_BANK */,
@@ -346,7 +358,9 @@ var STATSIG_CLIENT_KEY = "client-UmFd8WIJljA7cLmZuDqs3X25M8sKd5WIQP4BSC2bRbM";
346
358
  var default_feature_gates_default = {
347
359
  "compliance-review-blocker": false,
348
360
  "enable-across-wallet-flow": false,
361
+ "enable-add-token-to-wallet": false,
349
362
  "enable-empty-withdrawal-selection": false,
363
+ "enable-free-usdc-banner": false,
350
364
  "enable-permit-toggle": false,
351
365
  "enable-polymarket-wallet-withdrawal": false,
352
366
  "enable-swapped-exchanges": false,
@@ -354,9 +368,8 @@ var default_feature_gates_default = {
354
368
  "faster-notifications": false,
355
369
  "new-token-transfer-config": false,
356
370
  "new-withdrawal-config": false,
357
- "polymarket-pusd-migration": false,
358
371
  "saved-card-defaults-to-fiat-tab": false,
359
- "test-testing-gate": false,
372
+ "test-feature-gate": false,
360
373
  "wallet-flow-enable-exact-input-with-actions": false,
361
374
  "you-receive-remove-swap-impact": false
362
375
  };
@@ -375,7 +388,7 @@ function checkFeatureGate(name) {
375
388
  var PMCT_WITHDRAW_ACTION_TYPE = "PMCT_WITHDRAW";
376
389
  var POLYGON_USDCE = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174";
377
390
  var PUSD_TOKEN = {
378
- address: getAddress("0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB"),
391
+ address: POLYMARKET_PUSD_ADDRESS,
379
392
  symbol: "pUSD",
380
393
  iconSrc: "https://sdk-cdn.fun.xyz/images/pusd.svg"
381
394
  };
@@ -552,6 +565,142 @@ function createPolymarketWithdrawalConfig(config) {
552
565
  }
553
566
  return "sendPmctTransfer" in config ? buildUdaWithdrawalConfig(config) : buildWalletUnwrapWithdrawalConfig(config);
554
567
  }
568
+ var COLLATERAL_ONRAMP_ADDRESS = "0x93070a847efEf7F70739046A929D47a521F5B8ee";
569
+ var COLLATERAL_ONRAMP_ABI = [
570
+ {
571
+ name: "wrap",
572
+ type: "function",
573
+ inputs: [
574
+ { name: "_asset", type: "address" },
575
+ { name: "_to", type: "address" },
576
+ { name: "_amount", type: "uint256" }
577
+ ],
578
+ outputs: [],
579
+ stateMutability: "nonpayable"
580
+ }
581
+ ];
582
+ var POLYMARKET_PERPS_ADDRESS = "0xdca4af75705dbb50f62437045aff9921947917d2";
583
+ var POLYMARKET_PERPS_ABI = [
584
+ {
585
+ name: "deposit",
586
+ type: "function",
587
+ stateMutability: "nonpayable",
588
+ inputs: [
589
+ { internalType: "address", name: "token", type: "address" },
590
+ { internalType: "uint256", name: "amount", type: "uint256" },
591
+ { internalType: "address", name: "to", type: "address" }
592
+ ],
593
+ outputs: []
594
+ }
595
+ ];
596
+ var VAULT_DEPOSITOR_POLYGON = getAddress2(
597
+ "0xC8A6871D4eC4DaE64f605db0f8a0B3D9ef928D64"
598
+ );
599
+ var VAULT_DEPOSITOR_ABI = [
600
+ {
601
+ name: "deposit",
602
+ type: "function",
603
+ stateMutability: "nonpayable",
604
+ inputs: [
605
+ { name: "token", type: "address" },
606
+ { name: "vault", type: "address" },
607
+ { name: "callData", type: "bytes" },
608
+ { name: "minAmountOut", type: "uint256" }
609
+ ],
610
+ outputs: [{ name: "returnData", type: "bytes" }]
611
+ }
612
+ ];
613
+ var RELAY_ROUTER_V3_ADDRESS = getAddress2(
614
+ "0xb92fe925DC43a0ECdE6c8b1a2709c170Ec4fFf4f"
615
+ );
616
+ var RELAY_ROUTER_V3_ABI = [
617
+ {
618
+ inputs: [
619
+ { internalType: "address[]", name: "tokens", type: "address[]" },
620
+ { internalType: "address[]", name: "tos", type: "address[]" },
621
+ { internalType: "bytes[]", name: "datas", type: "bytes[]" },
622
+ { internalType: "uint256[]", name: "amounts", type: "uint256[]" }
623
+ ],
624
+ name: "cleanupErc20sViaCall",
625
+ outputs: [],
626
+ stateMutability: "nonpayable",
627
+ type: "function"
628
+ }
629
+ ];
630
+ var AMOUNT_PLACEHOLDER = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeadbeefn;
631
+ function createPerpsGenerateActionParams(config) {
632
+ const { recipientAddress } = config;
633
+ return async () => {
634
+ const wrapUsdceToPusd = encodeFunctionData({
635
+ abi: COLLATERAL_ONRAMP_ABI,
636
+ functionName: "wrap",
637
+ args: [POLYGON_USDCE, RELAY_ROUTER_V3_ADDRESS, AMOUNT_PLACEHOLDER]
638
+ });
639
+ const wrapUsdceToPusdViaVaultDepositor = encodeFunctionData({
640
+ abi: VAULT_DEPOSITOR_ABI,
641
+ functionName: "deposit",
642
+ args: [POLYGON_USDCE, COLLATERAL_ONRAMP_ADDRESS, wrapUsdceToPusd, 0n]
643
+ });
644
+ const depositPusdToPerps = encodeFunctionData({
645
+ abi: POLYMARKET_PERPS_ABI,
646
+ functionName: "deposit",
647
+ args: [PUSD_TOKEN.address, AMOUNT_PLACEHOLDER, recipientAddress]
648
+ });
649
+ const depositPusdToPerpsViaVaultDepositor = encodeFunctionData({
650
+ abi: VAULT_DEPOSITOR_ABI,
651
+ functionName: "deposit",
652
+ args: [
653
+ PUSD_TOKEN.address,
654
+ POLYMARKET_PERPS_ADDRESS,
655
+ depositPusdToPerps,
656
+ 0n
657
+ ]
658
+ });
659
+ const legs = [
660
+ // Leg 1 — sweep the bridged USDC.e and wrap it into pUSD.
661
+ {
662
+ token: POLYGON_USDCE,
663
+ to: VAULT_DEPOSITOR_POLYGON,
664
+ data: wrapUsdceToPusdViaVaultDepositor,
665
+ // relay replaces this with the actual amount of tokens available at execution time https://github.com/relayprotocol/relay-periphery/blob/0e4aabb750efb1f807d7f12b83b090b51b9ee736/src/v3/RelayRouterV3.sol#L177-L180
666
+ amount: 0n
667
+ },
668
+ // Leg 2 — sweep the resulting pUSD and deposit it into Polymarket Perps
669
+ // for the recipient.
670
+ {
671
+ token: PUSD_TOKEN.address,
672
+ to: VAULT_DEPOSITOR_POLYGON,
673
+ data: depositPusdToPerpsViaVaultDepositor,
674
+ // relay replaces this with the actual amount of tokens available at execution time https://github.com/relayprotocol/relay-periphery/blob/0e4aabb750efb1f807d7f12b83b090b51b9ee736/src/v3/RelayRouterV3.sol#L177-L180
675
+ amount: 0n
676
+ }
677
+ ];
678
+ return [
679
+ // RelayRouterV3 calls its function `cleanupErc20sViaCall`
680
+ // that iterates over the legs and does the following for each leg:
681
+ // 1. Substitutes 0n with the actual amount of tokens available at execution time (https://github.com/relayprotocol/relay-periphery/blob/0e4aabb750efb1f807d7f12b83b090b51b9ee736/src/v3/RelayRouterV3.sol#L177-L180):
682
+ // `IERC20(token).balanceOf(address(this))`
683
+ // 2. Approves the token to the target address (https://github.com/relayprotocol/relay-periphery/blob/0e4aabb750efb1f807d7f12b83b090b51b9ee736/src/v3/RelayRouterV3.sol#L183-L184):
684
+ // `IERC20(token).approve(to, amount)`
685
+ // 3. Makes the call to the target address and bubles up the revert if it fails (https://github.com/relayprotocol/relay-periphery/blob/0e4aabb750efb1f807d7f12b83b090b51b9ee736/src/v3/RelayRouterV3.sol#L186-L190):
686
+ // `(bool success, ) = to.call(data);
687
+ // `if (!success) { revert CallFailed(); }`
688
+ {
689
+ contractAbi: RELAY_ROUTER_V3_ABI,
690
+ contractAddress: RELAY_ROUTER_V3_ADDRESS,
691
+ functionName: "cleanupErc20sViaCall",
692
+ // cleanupErc20sViaCall takes parallel arrays — transpose the per-leg rows.
693
+ functionArgs: [
694
+ legs.map((leg) => leg.token),
695
+ legs.map((leg) => leg.to),
696
+ legs.map((leg) => leg.data),
697
+ legs.map((leg) => leg.amount)
698
+ ]
699
+ }
700
+ ];
701
+ };
702
+ }
555
703
  export {
704
+ createPerpsGenerateActionParams,
556
705
  createPolymarketWithdrawalConfig
557
706
  };
@@ -6,6 +6,7 @@ export declare const copyButtonIconActive: string;
6
6
  export declare const copyInputTextBox: string;
7
7
  export declare const copyInputTextBoxActive: string;
8
8
  export declare const copyInputText: string;
9
+ export declare const displayedAddressText: string;
9
10
  export declare const copyInputTextWrapper: string;
10
11
  export declare const copyInputTextDefault: string;
11
12
  export declare const copyInputTextActive: string;
@@ -1,8 +1,14 @@
1
1
  import React from 'react';
2
+ type CopyLabel = 'address' | 'invoice';
2
3
  interface CopyInputDisplayedAddressProps {
3
4
  address: string;
4
5
  onAddressCopied?: () => void;
5
6
  truncateAddress?: boolean;
7
+ /**
8
+ * Word rendered after "Copy" in the button label. EN variant char-animates
9
+ * the raw word; i18n variant maps to `common.copyAddress` / `common.copyInvoice`.
10
+ */
11
+ label?: CopyLabel;
6
12
  }
7
13
  /**
8
14
  * Main exported component that conditionally renders English or i18n version
@@ -0,0 +1,5 @@
1
+ interface FreeUsdcBannerProps {
2
+ type: 'deposit' | 'withdrawal';
3
+ }
4
+ export declare function FreeUsdcBanner(_props: FreeUsdcBannerProps): null;
5
+ export {};
@@ -2,6 +2,7 @@ import { type SwappedFormOfPayment } from '@funkit/api-base';
2
2
  import React, { type ReactNode } from 'react';
3
3
  import { type FunkitPaymentMethodIconsConfig } from '../../providers/FunkitConfigContext';
4
4
  import { PaymentMethod, type PaymentMethodBrokerageInfo, type PaymentMethodVirtualBankInfo } from '../../domains/paymentMethods';
5
+ import type { AssetHoldingsItem } from '../../domains/wallet';
5
6
  /**
6
7
  * Get a custom icon passed in from UI customization config
7
8
  * These icons are passed in from client to support enhanced branding+design
@@ -38,6 +39,7 @@ interface ConnectedPaymentMethodItemProps {
38
39
  disabled?: boolean;
39
40
  }
40
41
  export declare const AccountBalancePaymentMethodItem: ({ isSelected, showSelectedCheckmark, onSelect, targetChainId, testId, disabled, }: ConnectedPaymentMethodItemProps) => React.JSX.Element;
42
+ export declare const BitcoinLightningPaymentMethodItem: ({ isActive, onClick, isClickable, customValueIcon, paymentIcon, }: PaymentMethodItemProps) => React.JSX.Element;
41
43
  export declare const ActiveFiatAccountPaymentMethodItem: ({ isActive, onClick, paymentMethodInfo, customValueIcon, testId, disabled, }: BasePaymentMethodItemProps & {
42
44
  paymentMethodInfo: PaymentMethodVirtualBankInfo;
43
45
  testId?: string;
@@ -50,10 +52,24 @@ type BasePaymentMethodItemProps = {
50
52
  customValueIcon?: ReactNode;
51
53
  testId?: string;
52
54
  };
55
+ type PaymentMethodItemProps = BasePaymentMethodItemProps & {
56
+ paymentIcon: ReactNode;
57
+ };
53
58
  export declare function AddPaymentMethodItem({ paymentMethod, isClickable, isActive, onClick, customValueIcon, testId, }: BasePaymentMethodItemProps & {
54
59
  paymentMethod: PaymentMethod;
55
60
  dynamicLimit?: string;
56
61
  }): React.JSX.Element | undefined;
62
+ /**
63
+ * Source-list row for the underlying asset a customer is supplying
64
+ * (e.g. USDT for an Aave aUSDT checkout) when the user already holds
65
+ * it. Click pre-selects the asset as the source and skips
66
+ * asset-select via SourceChange's `skipAssetSelect` routing.
67
+ */
68
+ export declare function NativeAssetItem({ asset, label, onClick, }: {
69
+ asset: AssetHoldingsItem;
70
+ label: string;
71
+ onClick: () => void;
72
+ }): React.JSX.Element;
57
73
  export declare function PayPalPaymentMethodItem({ isActive, isClickable, onClick, isLoading, }: BasePaymentMethodItemProps & {
58
74
  isLoading: boolean;
59
75
  }): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const CashAppIcon: ({ size }: {
3
+ size?: number;
4
+ }) => React.JSX.Element;
@@ -12,5 +12,13 @@ export declare function isAvantisCustomer(apiKey: string): apiKey is "6TUi99Tq3O
12
12
  export declare function isPerplCustomer(apiKey: string): apiKey is "wQDLu86Qab61vbtru7thf8Yj0xaeqVUH4ohoXESu";
13
13
  export declare function isLighterxyzCustomer(apiKey: string): apiKey is "i6e1I8cfX625TTwRJlD2DshKyAoaUtO8aeoaR4i2";
14
14
  export declare function isFanaticsCustomer(apiKey: string): apiKey is "lI7amueGK94QtGa7sGGVf8n0XhIcn4sHFAZRu5Jj";
15
+ export declare function isAaveCustomer(apiKey: string): apiKey is "EWzSv8tWnQ7UcZ2IsDqFw1dYo3Df56FX6KBJ5ztS";
16
+ /**
17
+ * Gates the source-select "Native" fast-path: when the connected wallet
18
+ * already holds `checkoutConfig.targetAsset`, surface a one-click row
19
+ * that skips asset-select and lands on InputAmount. Currently Aave-only;
20
+ * extend by OR-ing additional `is<Customer>Customer` predicates.
21
+ */
22
+ export declare function isCustomerNativeFastPathEnabled(apiKey: string): apiKey is "EWzSv8tWnQ7UcZ2IsDqFw1dYo3Df56FX6KBJ5ztS";
15
23
  export declare function isLighterEthSpot(apiKey: string, checkoutConfig: FunkitCheckoutConfig | undefined): boolean | undefined;
16
24
  export declare function isLighterSlowDeposit(apiKey: string, checkoutConfig: Pick<FunkitCheckoutConfig, 'targetChain'> | undefined): boolean;
@@ -0,0 +1,7 @@
1
+ /** Action type signalling a Polymarket Perps deposit (USDC.e → pUSD → Perps). */
2
+ export declare const POLYMARKET_PERPS_DEPOSIT_ACTION_TYPE = "POLYMARKET_PERPS_DEPOSIT";
3
+ /**
4
+ * Polymarket pUSD on Polygon. Perps deposits must land in pUSD on-chain, so
5
+ * QR/UDA transfers for the deposit action target this address.
6
+ */
7
+ export declare const POLYMARKET_PUSD_ADDRESS: `0x${string}`;
@@ -9,6 +9,7 @@ export declare enum PaymentMethod {
9
9
  /** Bluvo - Exchange / Brokerage **/
10
10
  BROKERAGE = "brokerage",
11
11
  TOKEN_TRANSFER = "token_transfer",
12
+ BITCOIN_LIGHTNING = "bitcoin_lightning",
12
13
  VIRTUAL_BANK = "virtual_bank",
13
14
  SWAPPED_CARD = "swapped_card",
14
15
  SEPA = "sepa",
@@ -38,6 +39,9 @@ export interface PaymentMethodAccountInfo extends PaymentMethodInfoBase {
38
39
  export interface PaymentMethodTokenTransferInfo extends PaymentMethodInfoBase {
39
40
  paymentMethod: PaymentMethod.TOKEN_TRANSFER;
40
41
  }
42
+ export interface PaymentMethodBitcoinLightningInfo extends PaymentMethodInfoBase {
43
+ paymentMethod: PaymentMethod.BITCOIN_LIGHTNING;
44
+ }
41
45
  export interface PaymentMethodVirtualBankIncompleteInfo extends PaymentMethodInfoBase {
42
46
  paymentMethod: PaymentMethod.VIRTUAL_BANK;
43
47
  matchingFiatAccount: BridgeVirtualBankAccount | undefined;
@@ -48,7 +52,7 @@ export interface PaymentMethodVirtualBankInfo extends PaymentMethodVirtualBankIn
48
52
  }
49
53
  export type ConnectablePaymentMethodInfo = PaymentMethodAccountInfo | PaymentMethodBrokerageInfo | PaymentMethodVirtualBankInfo;
50
54
  export declare function isConnectablePaymentMethodInfo(value: unknown): value is ConnectablePaymentMethodInfo;
51
- export type PaymentMethodInfo = PaymentMethodCardInfo | PaymentMethodBrokerageInfo | PaymentMethodAccountInfo | PaymentMethodTokenTransferInfo | PaymentMethodVirtualBankIncompleteInfo;
55
+ export type PaymentMethodInfo = PaymentMethodCardInfo | PaymentMethodBrokerageInfo | PaymentMethodAccountInfo | PaymentMethodTokenTransferInfo | PaymentMethodBitcoinLightningInfo | PaymentMethodVirtualBankIncompleteInfo;
52
56
  interface CardPaymentMethodParams {
53
57
  paymentMethod: PaymentMethod.CARD;
54
58
  /** We also store client's customization in our database :( */
@@ -66,6 +70,9 @@ interface BrokeragePaymentMethodParams {
66
70
  interface TokenTransferPaymentMethodParams {
67
71
  paymentMethod: PaymentMethod.TOKEN_TRANSFER;
68
72
  }
73
+ interface BitcoinLightningPaymentMethodParams {
74
+ paymentMethod: PaymentMethod.BITCOIN_LIGHTNING;
75
+ }
69
76
  interface VirtualBankPaymentMethodIncompleteParams {
70
77
  paymentMethod: PaymentMethod.VIRTUAL_BANK;
71
78
  matchingFiatAccount: undefined;
@@ -79,6 +86,7 @@ interface VirtualBankPaymentMethodParams {
79
86
  export declare function createPaymentMethodInfo(params: CardPaymentMethodParams): PaymentMethodCardInfo;
80
87
  export declare function createPaymentMethodInfo(params: AccountPaymentMethodParams): PaymentMethodAccountInfo;
81
88
  export declare function createPaymentMethodInfo(params: TokenTransferPaymentMethodParams): PaymentMethodTokenTransferInfo;
89
+ export declare function createPaymentMethodInfo(params: BitcoinLightningPaymentMethodParams): PaymentMethodBitcoinLightningInfo;
82
90
  export declare function createPaymentMethodInfo(params: VirtualBankPaymentMethodIncompleteParams): PaymentMethodVirtualBankIncompleteInfo;
83
91
  export declare function createPaymentMethodInfo(params: VirtualBankPaymentMethodParams): PaymentMethodVirtualBankInfo;
84
92
  export declare function createPaymentMethodInfo(params: BrokeragePaymentMethodParams): PaymentMethodBrokerageInfo;
@@ -22,6 +22,17 @@ export declare function getCheckoutBaseQuote(checkoutItem: FunkitActiveCheckoutI
22
22
  * scoped to Wallet (Relay direct-execution) only.
23
23
  */
24
24
  usePermit?: boolean): Promise<CheckoutQuoteResponse>;
25
+ /**
26
+ * In EXACT_IN/ONE_TO_ONE mode, the user's input is the source (from) amount.
27
+ * When a canonical bigint is available, use formatUnits to produce the precise
28
+ * human-readable string, avoiding precision loss from bigint->Number->string.
29
+ */
30
+ export declare function resolveFromTokenAmount(checkoutItem: FunkitActiveCheckoutItem, isExactInViaBuilder: boolean, userInputAmount: number, fromTokenDecimals: number): string;
31
+ /**
32
+ * Derives estSubtotalToAmount from metadata.toAmountBaseUnit for EXACT_IN quotes.
33
+ * Returns null when derivation isn't needed or isn't possible.
34
+ **/
35
+ export declare function deriveEstSubtotalToAmountIfNeeded(baseQuote: CheckoutQuoteResponse, isExactIn: boolean, toTokenDecimals: number): string | null;
25
36
  export declare function getQuoteFinalEstimation(baseQuote: CheckoutQuoteResponse, checkoutItem: FunkitActiveCheckoutItem, newPaymentMethodInfo: PaymentMethodInfo, wagmiConfig: Config, apiKey: string, loginType: LoginType, isWithdrawal?: boolean, brokerageQuote?: BluvoBrokerageQuote): Promise<{
26
37
  finalEstimation: FunkitCheckoutQuoteResult;
27
38
  brokerage?: BrokerageDetails;
@@ -5,6 +5,7 @@ export declare function usePaymentMethodEnablement(): {
5
5
  isTokenTransferEnabled: boolean;
6
6
  isMeldEnabled: boolean;
7
7
  isBrokerageEnabled: boolean;
8
+ isLightningEnabled: boolean;
8
9
  };
9
10
  export type PaymentMethodType = 'crypto' | 'fiat';
10
11
  export type UnavailablePaymentSource = {
package/dist/index.css CHANGED
@@ -15203,6 +15203,14 @@
15203
15203
  opacity: 0;
15204
15204
  }
15205
15205
 
15206
+ /* vanilla-extract-css-ns:src/components/FunAssetAvatar/FunAssetAvatar.css.ts.vanilla.css?source=LnV3cmRjMjAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudXdyZGMyMiB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9 */
15207
+ [data-rk] .uwrdc20 {
15208
+ position: relative;
15209
+ }
15210
+ [data-rk] .uwrdc22 {
15211
+ position: absolute;
15212
+ }
15213
+
15206
15214
  /* vanilla-extract-css-ns:src/components/FunBadge/FunBadge.css.ts.vanilla.css?source=QGtleWZyYW1lcyBiYzJ1enkwIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpOwogIH0KICAzNSUsIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpOwogIH0KfQouYmMydXp5MSB7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHdpZHRoOiBmaXQtY29udGVudDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5iYzJ1enkyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouYmMydXp5Mjo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaW5zZXQ6IDA7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQgMzAlLCB3aGl0ZSA0NSUsIHdoaXRlIDU1JSwgdHJhbnNwYXJlbnQgNzAlKSBuby1yZXBlYXQ7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAlKTsKICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTsKICBvcGFjaXR5OiAwLjk7CiAgZmlsdGVyOiBibHVyKDJweCk7CiAgYW5pbWF0aW9uOiBiYzJ1enkwIDVzIGxpbmVhciBpbmZpbml0ZSAxczsKICBtaXgtYmxlbmQtbW9kZTogc29mdC1saWdodDsKfQ== */
15207
15215
  @keyframes bc2uzy0 {
15208
15216
  0% {
@@ -15501,14 +15509,6 @@
15501
15509
  flex: 1;
15502
15510
  }
15503
15511
 
15504
- /* vanilla-extract-css-ns:src/components/FunAssetAvatar/FunAssetAvatar.css.ts.vanilla.css?source=LnV3cmRjMjAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudXdyZGMyMiB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9 */
15505
- [data-rk] .uwrdc20 {
15506
- position: relative;
15507
- }
15508
- [data-rk] .uwrdc22 {
15509
- position: absolute;
15510
- }
15511
-
15512
15512
  /* vanilla-extract-css-ns:src/components/FunCountdown/FunCountdown.css.ts.vanilla.css?source=Ll8xdDBiYzExMSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwp9Ci5fMXQwYmMxMTMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKfQ== */
15513
15513
  [data-rk] ._1t0bc111 {
15514
15514
  position: absolute;
@@ -15620,8 +15620,8 @@
15620
15620
  inset: 0;
15621
15621
  }
15622
15622
 
15623
- /* vanilla-extract-css-ns:src/components/CopyAddress/CopyInputDisplayedAddress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81WXavbOBB9v79iKFxIwDJyUqe97ktp90e0+7LI8jgRkSUjKfcmXe5/L5LtxLLTNN2FUgKx9TEzZ2aOj/Rxj6fasAYt/JPty28onhD+fQCgj+EB4AxTttamIdqIrVAF5PQR6OOHeLXoXiVz+HVBl2C0Yw6/LGiF2yVYziQusmVnpFvGhTsVkPnx6wNAlg/h5msbOluj6dvOUy2kQ1NAKQ9msWqPy7ND+r8S2NDHSwpkPU4i3UyzoFewbM5YXh8+zmtc9zVORplfx+kTuYWURFDvQerL835e0+zu0v0M0i92//UhHcqyDnH1wUmhkHAttSngmZkFIWbfjS1h3AmtPvvBX8KyUmIVPJfaVGhIqZ3TDZFYO2JYJQ525MJPCMK1Usjdp4NzWl2xNWK7+wXjkLrwoApgUkKW08YCP5SCkxK/CTQLmq4ToAnQlG4S8JUYZf02ZE0I3yHfE8G1IhVKdiogzXL7YbbG7I7ourboCt+L2YZubfBBg4dWDwgNSubEM/rZF1G5XQHZpj364Q594pdxJWwbfGyNqIIXyTgS4bCxBXBUDk2cSVGUWGvTSQjXyqFyBbx5E0NgpdXy4AIEp9sCVl0837PzoMf2FEPrh32/hhathtkjsTtW6ZcChLLogIZflubtEfjBGFQuEGfatjORIV3lNumC9+9d6H4QBQ5zsauh6h1pph2d0IU40Qi1JfVB8Q7HhDSrPFAmECenCWQppctpxVnt0NxfcNMV8lwyz/jfV3QuRUta5oO0Wp62Wnmp9J9GkJ3h6f8S76R/btpj4v9g0NW5Mp3tftbbXn/+gObloWsjER3pdrTNFyzstc7oPQYJGBRgDvaiD6GaAffIkBnjk8xoV+xk0JB+S0+BVZpPCzkLDul6pnM/yPquMo+FKy7B5opEjmVwdUUGI/27IZDpysaxIhEbJHLt6RyJ5Hlm8l2862avnY0Lkr7LPZW753Ia9/Ipz0jRFXF8ko9M319srpJ+dhiNmkRnTZqA/nsxoe3TFOF565fFirbH5Q1bFmyvn0bn40aocP7XEo+RcXnDuEVjW+R+GLg9aQKx7iSxgNagRfOMZF1FrnlwPUVQSs333g9TomGBu4o1OFA3nk1AaYXLeHtE9cl0AtROtx8M63KjgzxdFv+j4Ixd1EJK0ugKC6i1eWGmshGtpjj7hdmVpfohBe65kd6+Vt64J9DLLYHehzvQ7zsc4XsT5QwAAA== */
15624
- @keyframes _1kbzei9e {
15623
+ /* vanilla-extract-css-ns:src/components/CopyAddress/CopyInputDisplayedAddress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81W247bNhB9368YBFjABkSBsiMnq7wEST8i7UtBUSObME0KJL22U+y/F6QuFiXHcVOgKAyY4m3mzJnhIT/v8VIbdkALf2b78juKlxr+egKgz6EBcIYpW2tzINqIrVAF5PQZ6POneLZoPyVz+PuCLsFoxxx+W9AKt0uwnElcZMt2k24YF+5SQOb7b08AWd67m89t6GyOpu9bS7WQDk0BpTyaxao5LweD9F8FsKHP1xDIehxEuplGQW9g2QxY3p4+zznedhwno8hv4/SB3ENKIqiPIPX0fJxzmj1M3c8g/cPsvz2lPS3r4FcfnRQKCddSmwJemVkQYvZt3xLGndDqq+/8JiwrJVbBcqlNhYaU2jl9IBJrRwyrxNEWwJnki8GOHxWEa6WQuy9H57RaAoGsS1lsx4jt7hcNBUqEB1sAkxKynB4s8GMpOCnxu0CzoOk6AZoATekmAc/QiI33gQ1C+A75ngiuFalQsksBaZbbT7M5ZndE17VFV/gczRa0c70NGiw0ukdoUDInXtGPnkTldgVkm+bsuzv0JFz7lbBNsLE1ogpWJONIhMOD5wiVQxNHUhQl1tpgiIhr5VC5At69iyGw0mp5dAGC000Bq9afz+XQ6bC9xNC6bpe7Pl2rfvRM7I5V+lSAUBYd0PDL0rw5Az8ag8qFgpqmbShwSFe5TVrn3XfruutEjsNYbKpnva2daUYn5UKcOAi1JfVR8RbHpGhWeSiZUDg5TSBLKV1OGWe1Q/M44aYlcqDMV/9/RzqXoiEN804aLS9brbyE+qMR5Khv/V/ijXTtpjkn/g824zMXKdaw72e57XTpf5C8PGRtJK4jPY+WecLCWuuM3mOQgF4B5mCv+hDYDLhHG5kxPsiMtmQnvYZ0S7oSWKX5lMiZc0jXM537QdQP0TwWrpiCzQ2JHMvg6oYMRvp3RyDTlY19RSLWS+Tal3MkksPI5Fx8aEdv3ZkLkn7IfSm37XLq93qUZ0XRkji+4UdbP1733Cz62WU0ShKdJWkC+o/FpGxfpgiHpd8WK9qcl3f2srD39m00XDdChXdBLfEcbS7D5mFZKTXfj6+x7vCfdsIhsQ3jWIDSJ8OawN0rmlp6mdqJqkIV4sWzI9cJlFI0VsT1wO9AbtDYBrnvBv+T1BPrLhILaAxaNK9I1lVkuooD6uIe4mJKHFg4MYodsD8w8WgCSitcxsujAzYZToDa6fKjYW1stBfF6+QvytzYRC2kJAddYQG1NidmKhsV8xRnNzF7KOEPC++R9/H9R+6d1wm9vk3oY7hD0f8NJKC0rHMNAAA= */
15624
+ @keyframes _1kbzei9f {
15625
15625
  0% {
15626
15626
  transform-origin: 50% 0%;
15627
15627
  transform: translateY(0) rotateX(0deg) scale(1);
@@ -15641,7 +15641,7 @@
15641
15641
  filter: blur(6px);
15642
15642
  }
15643
15643
  }
15644
- @keyframes _1kbzei9f {
15644
+ @keyframes _1kbzei9g {
15645
15645
  0%, 15% {
15646
15646
  transform-origin: 50% 100%;
15647
15647
  transform: translateY(-60%) rotateX(30deg) scale(.6);
@@ -15658,8 +15658,8 @@
15658
15658
  }
15659
15659
  [data-rk] ._1kbzei93 {
15660
15660
  outline-color: var(--rk-colors-actionColorDisabled);
15661
- border-bottom-left-radius: var(--rk-radii-connectButton);
15662
- border-bottom-right-radius: var(--rk-radii-connectButton);
15661
+ border-bottom-left-radius: calc(var(--rk-radii-connectButton) - 1px);
15662
+ border-bottom-right-radius: calc(var(--rk-radii-connectButton) - 1px);
15663
15663
  transition: all 150ms cubic-bezier(0.3, 0, 0.06, 1);
15664
15664
  }
15665
15665
  [data-rk] ._1kbzei94 {
@@ -15744,11 +15744,18 @@
15744
15744
  display: inline-flex;
15745
15745
  }
15746
15746
  [data-rk] ._1kbzei9b {
15747
+ display: block;
15748
+ width: 100%;
15749
+ white-space: nowrap;
15750
+ overflow: hidden;
15751
+ text-overflow: ellipsis;
15752
+ }
15753
+ [data-rk] ._1kbzei9c {
15747
15754
  position: relative;
15748
15755
  perspective: 100px;
15749
15756
  transform-style: preserve-3d;
15750
15757
  }
15751
- [data-rk] ._1kbzei9c {
15758
+ [data-rk] ._1kbzei9d {
15752
15759
  display: inline-block;
15753
15760
  animation-name: var(--animation-name, none);
15754
15761
  animation-delay: var(--animation-delay, 0s);
@@ -15757,7 +15764,7 @@
15757
15764
  animation-fill-mode: forwards;
15758
15765
  opacity: var(--animation-opacity, 1);
15759
15766
  }
15760
- [data-rk] ._1kbzei9d {
15767
+ [data-rk] ._1kbzei9e {
15761
15768
  transform: translateY(-60%) rotateX(30deg) scale(.6);
15762
15769
  transform-origin: 50% 100%;
15763
15770
  position: absolute;