@funkit/connect 7.0.2 → 7.0.3-next.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.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  darkTheme
4
- } from "./chunk-OVMNR35O.js";
4
+ } from "./chunk-IVO7KGHT.js";
5
5
  import {
6
6
  lightTheme
7
- } from "./chunk-DN7UTQK5.js";
7
+ } from "./chunk-5GV4UXWB.js";
8
8
  import {
9
9
  systemFontStack
10
10
  } from "./chunk-RJAD5CZH.js";
@@ -844,7 +844,7 @@ function useMainnetEnsName(address) {
844
844
  import {
845
845
  getAllWalletTokens
846
846
  } from "@funkit/api-base";
847
- import { keepPreviousData as keepPreviousData2, useQuery as useQuery21 } from "@tanstack/react-query";
847
+ import { keepPreviousData as keepPreviousData2, useQuery as useQuery22 } from "@tanstack/react-query";
848
848
  import { arbitrum as arbitrum6, polygon as polygon7 } from "viem/chains";
849
849
  import { useAccount as useAccount11 } from "wagmi";
850
850
 
@@ -859,7 +859,7 @@ import {
859
859
  isTokenEquivalent as isTokenEquivalent7,
860
860
  round as round4
861
861
  } from "@funkit/utils";
862
- import { arbitrum as arbitrum5, base as base7, mainnet as mainnet11, optimism, polygon as polygon6 } from "viem/chains";
862
+ import { arbitrum as arbitrum5, base as base7, mainnet as mainnet13, optimism, polygon as polygon6 } from "viem/chains";
863
863
 
864
864
  // src/modals/CheckoutModal/InputAmount/utils.ts
865
865
  import { formatCurrencyAndStringify } from "@funkit/utils";
@@ -1065,7 +1065,7 @@ import {
1065
1065
  initializeCheckout as postApiInitializeCheckout
1066
1066
  } from "@funkit/api-base";
1067
1067
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO12 } from "@funkit/chains";
1068
- import { FlagKey as FlagKey23, isNotNullish as isNotNullish8 } from "@funkit/utils";
1068
+ import { FlagKey as FlagKey21, isNotNullish as isNotNullish8 } from "@funkit/utils";
1069
1069
  import React234, {
1070
1070
  createContext as createContext17,
1071
1071
  useCallback as useCallback49,
@@ -1377,7 +1377,7 @@ function setFunkitConnectVersion({ version }) {
1377
1377
  localStorage.setItem(storageKey, version);
1378
1378
  }
1379
1379
  function getCurrentSdkVersion() {
1380
- return "7.0.2";
1380
+ return "7.0.3-next.1";
1381
1381
  }
1382
1382
  function useFingerprint() {
1383
1383
  const fingerprint = useCallback3(() => {
@@ -1410,6 +1410,7 @@ var FunLogger = class {
1410
1410
  this.userName = null;
1411
1411
  this.userLoginType = null;
1412
1412
  this.sdkVersion = null;
1413
+ this.l2Address = null;
1413
1414
  }
1414
1415
  getFunLogEnv() {
1415
1416
  if (!this.apiKey || FUN_DEV_API_KEYS.includes(this.apiKey)) {
@@ -1535,11 +1536,15 @@ var FunLogger = class {
1535
1536
  getUserLoginType() {
1536
1537
  return this.userLoginType;
1537
1538
  }
1538
- setUserInfo(userId, userAddress, userName, userLoginType) {
1539
+ getL2Address() {
1540
+ return this.l2Address;
1541
+ }
1542
+ setUserInfo(userId, userAddress, userName, userLoginType, l2Address) {
1539
1543
  this.userId = userId;
1540
1544
  this.userAddress = userAddress;
1541
1545
  this.userName = userName;
1542
1546
  this.userLoginType = userLoginType;
1547
+ this.l2Address = l2Address ?? null;
1543
1548
  }
1544
1549
  };
1545
1550
  datadogLogs.init({
@@ -1599,7 +1604,8 @@ var useTrack = () => {
1599
1604
  userAgent,
1600
1605
  appVersion,
1601
1606
  customIDs: {
1602
- apiKey
1607
+ apiKey,
1608
+ l2Address: userInfo.l2Address
1603
1609
  },
1604
1610
  custom: {
1605
1611
  name: userInfo.name,
@@ -1764,6 +1770,7 @@ import React17, {
1764
1770
  useContext as useContext6,
1765
1771
  useEffect as useEffect6,
1766
1772
  useMemo as useMemo6,
1773
+ useRef,
1767
1774
  useState as useState7
1768
1775
  } from "react";
1769
1776
  import {
@@ -1773,6 +1780,116 @@ import {
1773
1780
  useSwitchChain
1774
1781
  } from "wagmi";
1775
1782
 
1783
+ // src/utils/customer.ts
1784
+ import { useQuery } from "@tanstack/react-query";
1785
+
1786
+ // src/consts/customers.ts
1787
+ import {
1788
+ AVANTIS_API_KEY,
1789
+ BANKR_API_KEY,
1790
+ BASED_API_KEY,
1791
+ BSX_API_KEY,
1792
+ ETHEREAL_API_KEY as ETHEREAL_API_KEY2,
1793
+ HYENA_API_KEY,
1794
+ HYPERBEAT_API_KEY,
1795
+ HYPERDASH_API_KEY,
1796
+ KATANA_API_KEY,
1797
+ LIGHTERXYZ_API_KEY,
1798
+ MONAD_API_KEY,
1799
+ MONKEY_TILT_API_KEY,
1800
+ OSTIUM_API_KEY,
1801
+ PERPL_API_KEY,
1802
+ POLYMARKET_API_KEY
1803
+ } from "@funkit/api-base";
1804
+ import { mainnet as mainnet4 } from "viem/chains";
1805
+ function isPolymarketCustomer(apiKey) {
1806
+ return apiKey === POLYMARKET_API_KEY;
1807
+ }
1808
+ function isOstiumCustomer(apiKey) {
1809
+ return apiKey === OSTIUM_API_KEY;
1810
+ }
1811
+ function isBankrCustomer(apiKey) {
1812
+ return apiKey === BANKR_API_KEY;
1813
+ }
1814
+ function isEtherealCustomer(apiKey) {
1815
+ return apiKey === ETHEREAL_API_KEY2;
1816
+ }
1817
+ function isKatanaCustomer(apiKey) {
1818
+ return apiKey === KATANA_API_KEY;
1819
+ }
1820
+ function isMonadCustomer(apiKey) {
1821
+ return apiKey === MONAD_API_KEY;
1822
+ }
1823
+ function isBasedCustomer(apiKey) {
1824
+ return apiKey === BASED_API_KEY;
1825
+ }
1826
+ function isHyenaCustomer(apiKey) {
1827
+ return apiKey === HYENA_API_KEY;
1828
+ }
1829
+ function isLighterxyzCustomer(apiKey) {
1830
+ return apiKey === LIGHTERXYZ_API_KEY;
1831
+ }
1832
+ function isLighterEthSpot(apiKey, checkoutConfig) {
1833
+ return checkoutConfig && isLighterxyzCustomer(apiKey) && ["LIGHTER_ETH_SPOT_NEW_USER", "LIGHTER_ETH_SPOT"].includes(
1834
+ checkoutConfig.dynamicRoutingId || ""
1835
+ );
1836
+ }
1837
+ function isLighterNativeFlow(apiKey, checkoutConfig) {
1838
+ return !!checkoutConfig && isLighterxyzCustomer(apiKey) && checkoutConfig.targetChain === mainnet4.id.toString();
1839
+ }
1840
+
1841
+ // src/utils/customer.ts
1842
+ function isKatanaEarnFlow({
1843
+ apiKey,
1844
+ checkoutConfig
1845
+ }) {
1846
+ return isKatanaCustomer(apiKey) && !!checkoutConfig && isCheckoutPostActionRequired(checkoutConfig);
1847
+ }
1848
+ async function getLighterAccountsByL1Address(address) {
1849
+ const response = await fetch(
1850
+ `https://mainnet.zklighter.elliot.ai/api/v1/accountsByL1Address?l1_address=${address}`
1851
+ );
1852
+ if (!response.ok) {
1853
+ throw new Error(`Failed to fetch lighter accounts: ${response.statusText}`);
1854
+ }
1855
+ const data = await response.json();
1856
+ return data;
1857
+ }
1858
+ function useLighterAccounts({
1859
+ address,
1860
+ isEnabled = true
1861
+ }) {
1862
+ const enabled = !!address && address !== "0x" && isEnabled;
1863
+ const query = useQuery({
1864
+ queryKey: ["lighterAccounts", address],
1865
+ queryFn: () => getLighterAccountsByL1Address(address),
1866
+ enabled,
1867
+ staleTime: Number.POSITIVE_INFINITY,
1868
+ gcTime: Number.POSITIVE_INFINITY,
1869
+ retry: false,
1870
+ // allows us to always refetch the data but return the previous data until the new data is fetched
1871
+ refetchOnMount: "always"
1872
+ });
1873
+ return {
1874
+ ...query,
1875
+ mainAccountIndex: query.data?.sub_accounts?.[0]?.index?.toString(),
1876
+ subAccounts: query.data?.sub_accounts
1877
+ };
1878
+ }
1879
+ function useLighterNativeFlowNeeded(apiKey, checkoutConfig) {
1880
+ const { walletAddress } = useGeneralWallet();
1881
+ const isLighter = isLighterxyzCustomer(apiKey);
1882
+ const { mainAccountIndex, isLoading } = useLighterAccounts({
1883
+ address: walletAddress || "0x",
1884
+ isEnabled: isLighter && !!walletAddress && walletAddress !== "0x"
1885
+ });
1886
+ const lighterNativeNeeded = checkoutConfig && isLighter && mainAccountIndex === void 0 && checkoutConfig.qrcodeActionType === "LIGHTER_ETH_SPOT_DEPOSIT";
1887
+ return {
1888
+ isLoading,
1889
+ lighterNativeNeeded
1890
+ };
1891
+ }
1892
+
1776
1893
  // src/utils/funkitProvider.ts
1777
1894
  function getInitialChainIdFromFunkitProviderProps(props) {
1778
1895
  if (!props.wagmiConfig) {
@@ -1924,6 +2041,7 @@ function GeneralWalletProvider({ children }) {
1924
2041
  const ensAvatar = useMainnetEnsAvatar(ensName);
1925
2042
  const { externalUserId, apiKey } = useFunkitConfig();
1926
2043
  const { updateUserAsync } = useTrack();
2044
+ const prevApiKeyRef = useRef(apiKey);
1927
2045
  const loginType = !connector ? "guest" /* Guest */ : "web3" /* Web3 */;
1928
2046
  const isUserLoggedIn = loginType !== "guest" /* Guest */ || !!externalUserId;
1929
2047
  const userInfo = useMemo6(() => {
@@ -1956,20 +2074,28 @@ function GeneralWalletProvider({ children }) {
1956
2074
  apiKey,
1957
2075
  externalUserId
1958
2076
  ]);
2077
+ const { mainAccountIndex: l2Address } = useLighterAccounts({
2078
+ address
2079
+ });
1959
2080
  useEffect6(() => {
1960
- if (userInfo.id !== logger.getUserId() || userInfo.address !== logger.getUserAddress() || userInfo.name !== logger.getUserName() || userInfo.type !== logger.getUserLoginType()) {
1961
- logger.log("settingUserInfo", userInfo);
1962
- updateUserAsync(userInfo, apiKey).catch(
2081
+ const apiKeyChanged = prevApiKeyRef.current !== apiKey;
2082
+ const userInfoChanged = userInfo.id !== logger.getUserId() || userInfo.address !== logger.getUserAddress() || userInfo.name !== logger.getUserName() || userInfo.type !== logger.getUserLoginType() || l2Address !== logger.getL2Address();
2083
+ if (apiKeyChanged || userInfoChanged) {
2084
+ const userInfoWithL2Address = { ...userInfo, l2Address };
2085
+ logger.log("settingUserInfo", userInfoWithL2Address);
2086
+ updateUserAsync(userInfoWithL2Address, apiKey).catch(
1963
2087
  (error) => logger.error("updateUserAsync:error", error)
1964
2088
  );
1965
2089
  logger.setUserInfo(
1966
2090
  userInfo.id,
1967
2091
  userInfo.address,
1968
2092
  userInfo.name,
1969
- userInfo.type
2093
+ userInfo.type,
2094
+ userInfoWithL2Address.l2Address
1970
2095
  );
2096
+ prevApiKeyRef.current = apiKey;
1971
2097
  }
1972
- }, [userInfo, updateUserAsync, apiKey]);
2098
+ }, [userInfo, updateUserAsync, apiKey, l2Address]);
1973
2099
  const [logoutSymbol, triggerLogoutSymbol] = useSymbolRefresh_default();
1974
2100
  const handleLogout = useCallback5(async () => {
1975
2101
  logger.log("handleLogout_called");
@@ -2122,55 +2248,9 @@ async function disableAtomicBatchIfSupported(wallet, chainId) {
2122
2248
  import { FlagKey as FlagKey3, isTokenAddressEquivalent } from "@funkit/utils";
2123
2249
  import { useCallback as useCallback6, useMemo as useMemo10 } from "react";
2124
2250
 
2125
- // src/consts/customers.ts
2126
- import {
2127
- AVANTIS_API_KEY,
2128
- BANKR_API_KEY,
2129
- BASED_API_KEY,
2130
- BSX_API_KEY,
2131
- ETHEREAL_API_KEY as ETHEREAL_API_KEY2,
2132
- HYENA_API_KEY,
2133
- HYPERBEAT_API_KEY,
2134
- HYPERDASH_API_KEY,
2135
- KATANA_API_KEY,
2136
- LIGHTERXYZ_API_KEY,
2137
- MONAD_API_KEY,
2138
- MONKEY_TILT_API_KEY,
2139
- OSTIUM_API_KEY,
2140
- PERPL_API_KEY,
2141
- POLYMARKET_API_KEY
2142
- } from "@funkit/api-base";
2143
- function isPolymarketCustomer(apiKey) {
2144
- return apiKey === POLYMARKET_API_KEY;
2145
- }
2146
- function isOstiumCustomer(apiKey) {
2147
- return apiKey === OSTIUM_API_KEY;
2148
- }
2149
- function isBankrCustomer(apiKey) {
2150
- return apiKey === BANKR_API_KEY;
2151
- }
2152
- function isEtherealCustomer(apiKey) {
2153
- return apiKey === ETHEREAL_API_KEY2;
2154
- }
2155
- function isKatanaCustomer(apiKey) {
2156
- return apiKey === KATANA_API_KEY;
2157
- }
2158
- function isMonadCustomer(apiKey) {
2159
- return apiKey === MONAD_API_KEY;
2160
- }
2161
- function isBasedCustomer(apiKey) {
2162
- return apiKey === BASED_API_KEY;
2163
- }
2164
- function isHyenaCustomer(apiKey) {
2165
- return apiKey === HYENA_API_KEY;
2166
- }
2167
- function isLighterxyzCustomer(apiKey) {
2168
- return apiKey === LIGHTERXYZ_API_KEY;
2169
- }
2170
-
2171
2251
  // src/providers/FunkitFlagsProvider.tsx
2172
2252
  import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
2173
- import { useQuery as useQuery2 } from "@tanstack/react-query";
2253
+ import { useQuery as useQuery3 } from "@tanstack/react-query";
2174
2254
  import React18, {
2175
2255
  createContext as createContext7,
2176
2256
  useContext as useContext7,
@@ -2184,20 +2264,16 @@ import {
2184
2264
  BANKR_API_KEY as BANKR_API_KEY2,
2185
2265
  BASED_API_KEY as BASED_API_KEY2,
2186
2266
  BULLPEN_API_KEY,
2187
- CAMBRIA_API_KEY,
2188
2267
  ETHEREAL_API_KEY as ETHEREAL_API_KEY3,
2189
2268
  FELIX_API_KEY,
2190
- GINZA_API_KEY,
2191
2269
  HYENA_API_KEY as HYENA_API_KEY2,
2192
2270
  HYPERBEAT_API_KEY as HYPERBEAT_API_KEY2,
2193
2271
  HYPERDASH_API_KEY as HYPERDASH_API_KEY2,
2194
2272
  HYPEREDGE_API_KEY,
2195
2273
  HYPERSWAP_API_KEY,
2196
2274
  KATANA_API_KEY as KATANA_API_KEY2,
2197
- LIGHTERXYZ_API_KEY as LIGHTERXYZ_API_KEY2,
2198
2275
  MEGAPOT_API_KEY,
2199
2276
  MONAD_API_KEY as MONAD_API_KEY2,
2200
- MONKEY_TILT_API_KEY as MONKEY_TILT_API_KEY2,
2201
2277
  OSTIUM_API_KEY as OSTIUM_API_KEY2,
2202
2278
  PERPL_API_KEY as PERPL_API_KEY2,
2203
2279
  POLYMARKET_API_KEY as POLYMARKET_API_KEY2,
@@ -2205,9 +2281,9 @@ import {
2205
2281
  SUSHI_API_KEY,
2206
2282
  VENTUALS_API_KEY
2207
2283
  } from "@funkit/api-base";
2208
- import { MONAD_CHAIN_ID, bitcoinChain } from "@funkit/chains";
2284
+ import { MONAD_CHAIN_ID } from "@funkit/chains";
2209
2285
  import { FlagKey } from "@funkit/utils";
2210
- import { arbitrum, base as base3, polygon } from "viem/chains";
2286
+ import { arbitrum, base as base3, mainnet as mainnet5, polygon } from "viem/chains";
2211
2287
  var FUN_INTERNAL_USERS = [
2212
2288
  "0x6ec0c2f25d323e7779925Cc20c3740101f990d9F",
2213
2289
  // Chloe
@@ -2307,8 +2383,9 @@ var QR_CODE_WITH_SOLANA = {
2307
2383
  1151111081099710: ["SOL", "USDC", "USDT", "TRUMP", "USDe"]
2308
2384
  };
2309
2385
  var QR_CODE_WITH_BITCOIN = {
2310
- ...QR_CODE_WITH_SOLANA,
2311
- [bitcoinChain.id]: ["BTC"]
2386
+ ...QR_CODE_WITH_SOLANA
2387
+ // uncomment to re-enable bitcoin
2388
+ // [bitcoinChain.id]: ['BTC'],
2312
2389
  };
2313
2390
  var QR_CODE_WITH_MONAD = {
2314
2391
  ...QR_CODE_WITH_BITCOIN,
@@ -2385,7 +2462,7 @@ var flagConfig = {
2385
2462
  },
2386
2463
  [FlagKey.EnableTokenTransfer]: {
2387
2464
  type: "boolean",
2388
- default_value: false,
2465
+ default_value: true,
2389
2466
  overrides: [
2390
2467
  {
2391
2468
  if_any: [
@@ -2397,58 +2474,12 @@ var flagConfig = {
2397
2474
  ],
2398
2475
  value: true
2399
2476
  },
2400
- {
2401
- if_any: [
2402
- {
2403
- key: "userId",
2404
- type: "isAnyOf",
2405
- values: FUN_INTERNAL_USERS
2406
- }
2407
- ],
2408
- value: true
2409
- },
2410
- disableFlagForCountries(US_COUNTRY_CODES),
2411
- {
2412
- if_any: [
2413
- {
2414
- key: "apiKey",
2415
- type: "isAnyOf",
2416
- values: [
2417
- AVANTIS_API_KEY2,
2418
- BANKR_API_KEY2,
2419
- BASED_API_KEY2,
2420
- BULLPEN_API_KEY,
2421
- CAMBRIA_API_KEY,
2422
- ETHEREAL_API_KEY3,
2423
- FELIX_API_KEY,
2424
- GINZA_API_KEY,
2425
- HYENA_API_KEY2,
2426
- HYPERBEAT_API_KEY2,
2427
- HYPERDASH_API_KEY2,
2428
- HYPEREDGE_API_KEY,
2429
- HYPERSWAP_API_KEY,
2430
- KATANA_API_KEY2,
2431
- LIGHTERXYZ_API_KEY2,
2432
- LIGHTERXYZ_API_KEY2,
2433
- MEGAPOT_API_KEY,
2434
- MONAD_API_KEY2,
2435
- MONKEY_TILT_API_KEY2,
2436
- OSTIUM_API_KEY2,
2437
- PERPL_API_KEY2,
2438
- POLYMARKET_API_KEY2,
2439
- RAREBETSPORTS_API_KEY,
2440
- SUSHI_API_KEY,
2441
- VENTUALS_API_KEY
2442
- ]
2443
- }
2444
- ],
2445
- value: true
2446
- }
2477
+ disableFlagForCountries(US_COUNTRY_CODES)
2447
2478
  ]
2448
2479
  },
2449
2480
  [FlagKey.EnableFiatDeposit]: {
2450
2481
  type: "boolean",
2451
- default_value: false,
2482
+ default_value: true,
2452
2483
  overrides: [
2453
2484
  {
2454
2485
  if_any: [
@@ -2460,17 +2491,7 @@ var flagConfig = {
2460
2491
  ],
2461
2492
  value: true
2462
2493
  },
2463
- disableFlagForCountries(US_COUNTRY_CODES),
2464
- {
2465
- if_any: [
2466
- {
2467
- key: "userId",
2468
- type: "pctRollout",
2469
- pct: 100
2470
- }
2471
- ],
2472
- value: true
2473
- }
2494
+ disableFlagForCountries(US_COUNTRY_CODES)
2474
2495
  ]
2475
2496
  },
2476
2497
  [FlagKey.TokenTransferSourceChainsAndAssets]: {
@@ -2496,6 +2517,24 @@ var flagConfig = {
2496
2517
  5064014: void 0
2497
2518
  })
2498
2519
  },
2520
+ {
2521
+ if_any: [
2522
+ {
2523
+ key: "apiKey",
2524
+ type: "isAnyOf",
2525
+ values: [KATANA_API_KEY2]
2526
+ }
2527
+ ],
2528
+ value: JSON.stringify({
2529
+ ...COMMON_SUPPORT_CHAINS_AND_ASSETS,
2530
+ // abstract
2531
+ 2741: ["USDC.e", "ETH", "WETH", "USDT"],
2532
+ // hyperevm.
2533
+ 999: ["USDC", "HYPE", "WETH", "USDT", "UBTC", "USDe"],
2534
+ // solana - only enable once customers are on v5.0.11, anything prior will break
2535
+ 1151111081099710: ["SOL", "USDC", "USDT", "TRUMP", "USDe"]
2536
+ })
2537
+ },
2499
2538
  // Omit MON as a source asset for Monad
2500
2539
  {
2501
2540
  if_any: [
@@ -2519,7 +2558,7 @@ var flagConfig = {
2519
2558
  {
2520
2559
  key: "apiKey",
2521
2560
  type: "isAnyOf",
2522
- values: [POLYMARKET_API_KEY2]
2561
+ values: [POLYMARKET_API_KEY2, BASED_API_KEY2, HYENA_API_KEY2]
2523
2562
  }
2524
2563
  ],
2525
2564
  value: JSON.stringify(QR_CODE_WITH_MONAD)
@@ -2590,6 +2629,17 @@ var flagConfig = {
2590
2629
  value: base3.id.toString()
2591
2630
  },
2592
2631
  // Oct 20 - Default to Bitcoin chain on transfer crypto for Polymarket
2632
+ // {
2633
+ // if_any: [
2634
+ // {
2635
+ // key: 'apiKey',
2636
+ // type: 'isAnyOf',
2637
+ // values: [POLYMARKET_API_KEY],
2638
+ // },
2639
+ // ],
2640
+ // value: bitcoinChain.id.toString(),
2641
+ // },
2642
+ // December 11 - Default to ethereum since bitcoin is disabled
2593
2643
  {
2594
2644
  if_any: [
2595
2645
  {
@@ -2598,7 +2648,7 @@ var flagConfig = {
2598
2648
  values: [POLYMARKET_API_KEY2]
2599
2649
  }
2600
2650
  ],
2601
- value: bitcoinChain.id.toString()
2651
+ value: mainnet5.id.toString()
2602
2652
  }
2603
2653
  ]
2604
2654
  },
@@ -2710,32 +2760,15 @@ var flagConfig = {
2710
2760
  ]
2711
2761
  })
2712
2762
  },
2713
- [FlagKey.HelpTutorialUrl]: {
2714
- type: "string",
2715
- default_value: ""
2716
- },
2717
2763
  [FlagKey.EnableCard]: {
2718
2764
  type: "boolean",
2719
- default_value: true,
2720
- overrides: [
2721
- disableFlagForCountries(US_COUNTRY_CODES),
2722
- {
2723
- if_any: [
2724
- {
2725
- key: "apiKey",
2726
- type: "isAnyOf",
2727
- values: [KATANA_API_KEY2]
2728
- }
2729
- ],
2730
- value: false
2731
- }
2732
- ]
2765
+ default_value: false,
2766
+ overrides: []
2733
2767
  },
2734
2768
  // cannot re-use this flag for brokerage flow or clients that are using older versions of the SDK will be impacted
2735
2769
  [FlagKey.EnableBrokerage]: {
2736
2770
  type: "boolean",
2737
- default_value: false,
2738
- overrides: [disableFlagForCountries(US_COUNTRY_CODES)]
2771
+ default_value: false
2739
2772
  },
2740
2773
  [FlagKey.EnableBluvoBrokerage]: {
2741
2774
  type: "boolean",
@@ -2909,7 +2942,8 @@ var flagConfig = {
2909
2942
  },
2910
2943
  [FlagKey.EnableBitcoin]: {
2911
2944
  type: "boolean",
2912
- default_value: true,
2945
+ // uncomment to re-enable bitcoin
2946
+ default_value: false,
2913
2947
  overrides: [
2914
2948
  // Actually disable bitcoin for Ethereal
2915
2949
  {
@@ -3088,7 +3122,7 @@ function evalCondition(flagKey, condition, context) {
3088
3122
  }
3089
3123
 
3090
3124
  // src/providers/FunkitMoonpayProvider.tsx
3091
- import { useQuery } from "@tanstack/react-query";
3125
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
3092
3126
  import { useMemo as useMemo7 } from "react";
3093
3127
  import { FlagKey as FlagKey2 } from "@funkit/utils";
3094
3128
  var MOONPAY_LIVE_API_KEY = "pk_live_IxayBRQuBC3RzpPZkbGPrwUsRWAaeO";
@@ -3135,7 +3169,7 @@ function useFunkitUserIp() {
3135
3169
  const { apiKey } = useFunkitConfig();
3136
3170
  const isPolymarket = isPolymarketCustomer(apiKey);
3137
3171
  const { isUserLoggedIn } = useGeneralWallet();
3138
- const { data: userIpInfo, isLoading: isLoadingGeoCheck } = useQuery({
3172
+ const { data: userIpInfo, isLoading: isLoadingGeoCheck } = useQuery2({
3139
3173
  queryKey: ["getUserIpInfo"],
3140
3174
  queryFn: async () => {
3141
3175
  try {
@@ -3199,7 +3233,7 @@ function FunkitFlagsProvider({ children }) {
3199
3233
  data: onlineConfig,
3200
3234
  error,
3201
3235
  isLoading
3202
- } = useQuery2({
3236
+ } = useQuery3({
3203
3237
  queryKey: ["flags"],
3204
3238
  queryFn: fetchConfigFromServer,
3205
3239
  refetchOnMount: false,
@@ -3404,16 +3438,20 @@ function useCheckoutDirectExecution() {
3404
3438
  if (params.isExactIn) {
3405
3439
  const { fromTokenDecimals, fromTokenAmount } = params;
3406
3440
  const multiplier2 = 10 ** fromTokenDecimals;
3441
+ const fromAmountBaseUnit = BigInt(
3442
+ Math.floor(fromTokenAmount * multiplier2)
3443
+ );
3407
3444
  return await getCheckoutQuoteV2({
3408
3445
  ...getCheckoutQuoteParams,
3409
- fromAmountBaseUnit: BigInt(Math.floor(fromTokenAmount * multiplier2))
3446
+ fromAmountBaseUnit
3410
3447
  });
3411
3448
  }
3412
3449
  const { toTokenAmount, toTokenDecimals } = params;
3413
3450
  const multiplier = 10 ** toTokenDecimals;
3451
+ const toAmountBaseUnit = BigInt(Math.floor(toTokenAmount * multiplier));
3414
3452
  return await getCheckoutQuoteV2({
3415
3453
  ...getCheckoutQuoteParams,
3416
- toAmountBaseUnit: BigInt(Math.floor(toTokenAmount * multiplier))
3454
+ toAmountBaseUnit
3417
3455
  });
3418
3456
  },
3419
3457
  [address, apiKey]
@@ -3592,8 +3630,301 @@ function useCheckoutDirectExecution() {
3592
3630
  import {
3593
3631
  initializeCheckoutTokenTransferAddress
3594
3632
  } from "@funkit/api-base";
3633
+ import { lighterChain } from "@funkit/chains";
3595
3634
  import { FlagKey as FlagKey4 } from "@funkit/utils";
3596
- import { useQuery as useQuery3 } from "@tanstack/react-query";
3635
+ import { useQuery as useQuery4 } from "@tanstack/react-query";
3636
+
3637
+ // src/hooks/useUDAParams.ts
3638
+ import { useMemo as useMemo12 } from "react";
3639
+
3640
+ // src/hooks/statsig/useDynamicConfig.ts
3641
+ import { useDynamicConfig as useStatsigDynamicConfig } from "@statsig/react-bindings";
3642
+ import { useMemo as useMemo11 } from "react";
3643
+
3644
+ // src/__generated__/default_configs.ts
3645
+ var default_configs_default = {
3646
+ addressblacklist: {
3647
+ value: [
3648
+ "0x7b97b46D35a28B561d47F50CFB9a2735E506e59d",
3649
+ "0x409ad08cc6CA757f69Fb80250a424B9eFeB99807",
3650
+ "0x02A86f51aA7B8b1c17c30364748d5Ae4a0727E23",
3651
+ "0x64131b60502C01362639CC5cfE1a1efB6Be1165A"
3652
+ ]
3653
+ },
3654
+ array_of_strings: {
3655
+ value: []
3656
+ },
3657
+ blockedcountries: {
3658
+ value: [
3659
+ "AF",
3660
+ "BY",
3661
+ "MM",
3662
+ "CF",
3663
+ "CU",
3664
+ "CD",
3665
+ "IR",
3666
+ "LB",
3667
+ "LY",
3668
+ "NI",
3669
+ "KP",
3670
+ "UA",
3671
+ "SO",
3672
+ "SS",
3673
+ "SY",
3674
+ "VE"
3675
+ ]
3676
+ },
3677
+ boolean: {
3678
+ value: false
3679
+ },
3680
+ brokerage_hide_you_receive: {
3681
+ value: false
3682
+ },
3683
+ chainidsortorder: {
3684
+ value: ["1", "1151111081099710", "8453", "56", "137", "42161", "10"]
3685
+ },
3686
+ checkoutnotificationsrefreshinterval: {
3687
+ value: {
3688
+ listRefresh: 5e3,
3689
+ itemRefresh: 2e3
3690
+ }
3691
+ },
3692
+ checkouttimeestimateoverrides: {
3693
+ value: {
3694
+ balance: 60,
3695
+ brokerage: 120,
3696
+ card: 300,
3697
+ token_transfer: 60
3698
+ }
3699
+ },
3700
+ dynamicrouting: {
3701
+ value: [
3702
+ {
3703
+ routeId: "LIGHTER_ETH_SPOT",
3704
+ rules: [
3705
+ {
3706
+ when: {
3707
+ chainId: "1",
3708
+ tokenAddress: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
3709
+ },
3710
+ use: {
3711
+ path: "FUN_MAINNET_DEPOSIT",
3712
+ badge: "NATIVE"
3713
+ }
3714
+ },
3715
+ {
3716
+ when: {
3717
+ chainId: "1",
3718
+ tokenAddress: "*"
3719
+ },
3720
+ use: {
3721
+ path: "FUN_MAINNET_DEPOSIT"
3722
+ }
3723
+ },
3724
+ {
3725
+ when: "*",
3726
+ use: {
3727
+ path: "RL_TRANSFER"
3728
+ }
3729
+ }
3730
+ ]
3731
+ },
3732
+ {
3733
+ routeId: "LIGHTER_USDC_PERPS",
3734
+ rules: [
3735
+ {
3736
+ when: {
3737
+ chainId: "1",
3738
+ tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3739
+ },
3740
+ use: {
3741
+ path: "FUN_MAINNET_DEPOSIT",
3742
+ badge: "NATIVE"
3743
+ }
3744
+ },
3745
+ {
3746
+ when: {
3747
+ chainId: "1",
3748
+ tokenAddress: "*"
3749
+ },
3750
+ use: {
3751
+ path: "FUN_MAINNET_DEPOSIT"
3752
+ }
3753
+ },
3754
+ {
3755
+ when: "*",
3756
+ use: {
3757
+ path: "RL_TRANSFER"
3758
+ }
3759
+ }
3760
+ ]
3761
+ },
3762
+ {
3763
+ routeId: "LIGHTER_USDC_PERPS_NEW_USER",
3764
+ rules: [
3765
+ {
3766
+ when: {
3767
+ chainId: "1",
3768
+ tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3769
+ },
3770
+ use: {
3771
+ path: "FUN_MAINNET_DEPOSIT",
3772
+ badge: "NATIVE"
3773
+ }
3774
+ },
3775
+ {
3776
+ when: "*",
3777
+ use: {
3778
+ path: "FUN_MAINNET_DEPOSIT"
3779
+ }
3780
+ }
3781
+ ]
3782
+ },
3783
+ {
3784
+ routeId: "LIGHTER_ETH_SPOT_NEW_USER",
3785
+ rules: [
3786
+ {
3787
+ when: {
3788
+ chainId: "1",
3789
+ tokenAddress: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
3790
+ },
3791
+ use: {
3792
+ path: "FUN_MAINNET_DEPOSIT",
3793
+ badge: "NATIVE"
3794
+ }
3795
+ },
3796
+ {
3797
+ when: "*",
3798
+ use: {
3799
+ path: "FUN_MAINNET_DEPOSIT"
3800
+ }
3801
+ }
3802
+ ]
3803
+ }
3804
+ ]
3805
+ },
3806
+ enablebitcoin: {
3807
+ value: true
3808
+ },
3809
+ enablebluvobrokerage: {
3810
+ value: false
3811
+ },
3812
+ enablefiatdeposit: {
3813
+ value: true
3814
+ },
3815
+ enablemeldpayment: {
3816
+ value: false
3817
+ },
3818
+ enabletokentransfer: {
3819
+ value: true
3820
+ },
3821
+ isrelaybypassenabled: {
3822
+ value: true
3823
+ },
3824
+ meldquickoptions: {
3825
+ value: {
3826
+ USD: [100, 500, 1e3],
3827
+ EUR: [90, 435, 870],
3828
+ JPY: [14500, 72500, 145e3],
3829
+ KRW: [137500, 69e4, 138e4],
3830
+ GBP: [75, 375, 745],
3831
+ CAD: [135, 685, 1365],
3832
+ AUD: [155, 770, 1540],
3833
+ CHF: [80, 410, 820],
3834
+ BRL: [550, 2750, 5500],
3835
+ INR: [8600, 43e3, 86e3],
3836
+ PHP: [5700, 28500, 57e3],
3837
+ TRY: [3950, 19800, 39500],
3838
+ RUB: [7850, 39300, 78600],
3839
+ PLN: [370, 1860, 3715],
3840
+ SGD: [130, 645, 1285]
3841
+ }
3842
+ },
3843
+ showinfobanner: {
3844
+ value: {
3845
+ message: "",
3846
+ expireAtMs: 0,
3847
+ type: "alert"
3848
+ }
3849
+ },
3850
+ showpoweredtagline: {
3851
+ value: false
3852
+ },
3853
+ supportedexchangesv2: {
3854
+ value: []
3855
+ },
3856
+ uda_params: {
3857
+ value: [
3858
+ {
3859
+ dynamicRoutingId: "LIGHTER_ETH_SPOT",
3860
+ params: {
3861
+ targetChain: "3586256",
3862
+ targetAsset: "0x0000000000000000000000000000000000000001",
3863
+ targetAssetTicker: "ETH (Spot)",
3864
+ iconSrc: "https://sdk-cdn.fun.xyz/images/eth.svg"
3865
+ }
3866
+ },
3867
+ {
3868
+ dynamicRoutingId: "LIGHTER_ETH_SPOT_NEW_USER",
3869
+ params: {
3870
+ targetChain: "1",
3871
+ targetAsset: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
3872
+ targetAssetTicker: "USDC (Perps)",
3873
+ iconSrc: "https://sdk-cdn.fun.xyz/images/usdc.svg",
3874
+ qrcodeActionType: "LIGHTER_USDC_DEPOSIT"
3875
+ }
3876
+ },
3877
+ {
3878
+ dynamicRoutingId: "LIGHTER_USDC_PERPS",
3879
+ params: {
3880
+ targetChain: "3586256",
3881
+ targetAsset: "0x0000000000000000000000000000000000000000",
3882
+ targetAssetTicker: "USDC (Perps)",
3883
+ iconSrc: "https://sdk-cdn.fun.xyz/images/usdc.svg"
3884
+ }
3885
+ },
3886
+ {
3887
+ dynamicRoutingId: "LIGHTER_USDC_PERPS_NEW_USER",
3888
+ params: {
3889
+ targetChain: "1",
3890
+ targetAsset: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
3891
+ targetAssetTicker: "USDC (Perps)",
3892
+ iconSrc: "https://sdk-cdn.fun.xyz/images/usdc.svg",
3893
+ qrcodeActionType: "LIGHTER_USDC_DEPOSIT"
3894
+ }
3895
+ }
3896
+ ]
3897
+ }
3898
+ };
3899
+
3900
+ // src/hooks/statsig/useDynamicConfig.ts
3901
+ var useDynamicConfig = (name) => {
3902
+ const config = useStatsigDynamicConfig(name);
3903
+ const fallback2 = useMemo11(() => default_configs_default[name], [name]);
3904
+ const value = useMemo11(
3905
+ () => config.get("value", fallback2.value),
3906
+ // confirmed that config is stable (https://cdn.jsdelivr.net/npm/@statsig/react-bindings@3.30.2/src/useDynamicConfig.js)
3907
+ // but .get might not be so we memoize it ourselves
3908
+ [config, fallback2]
3909
+ );
3910
+ return value;
3911
+ };
3912
+
3913
+ // src/hooks/useUDAParams.ts
3914
+ var useUDAParams = (_dynamicRoutingId) => {
3915
+ const { checkoutItem } = useCheckoutContext();
3916
+ const checkoutConfig = checkoutItem?.initSettings.config;
3917
+ const dynamicRoutingId = _dynamicRoutingId || checkoutConfig?.dynamicRoutingId;
3918
+ const udaParams = useDynamicConfig("uda_params");
3919
+ const currentParams = useMemo12(() => {
3920
+ return udaParams.find(
3921
+ (param) => param.dynamicRoutingId === dynamicRoutingId
3922
+ )?.params;
3923
+ }, [udaParams, dynamicRoutingId]);
3924
+ return currentParams;
3925
+ };
3926
+
3927
+ // src/hooks/useCheckoutTransferInit.ts
3597
3928
  var COMMON_CLIENT_METADATA = generateClientMetadataForTokenTransfer();
3598
3929
  async function checkoutTransferFetch(params) {
3599
3930
  return await initializeCheckoutTokenTransferAddress({
@@ -3606,7 +3937,8 @@ function getCheckoutTokenTransferParams({
3606
3937
  checkoutConfig,
3607
3938
  userId,
3608
3939
  recipientAddr,
3609
- apiKey
3940
+ apiKey,
3941
+ udaParams
3610
3942
  }) {
3611
3943
  if (!checkoutConfig) {
3612
3944
  return;
@@ -3620,6 +3952,14 @@ function getCheckoutTokenTransferParams({
3620
3952
  recipientAddr,
3621
3953
  actionType: checkoutConfig.qrcodeActionType
3622
3954
  };
3955
+ if (udaParams) {
3956
+ return {
3957
+ ...commonParams,
3958
+ toChainId: udaParams.targetChain,
3959
+ toTokenAddress: udaParams.targetAsset,
3960
+ actionType: udaParams.qrcodeActionType
3961
+ };
3962
+ }
3623
3963
  const dynamicTargetAssetCandidates = checkoutConfig.dynamicTargetAssetCandidates;
3624
3964
  if (dynamicTargetAssetCandidates?.[0]) {
3625
3965
  const defaultCandidate = dynamicTargetAssetCandidates.find((candidate) => candidate.isDefault) || dynamicTargetAssetCandidates[0];
@@ -3644,25 +3984,51 @@ function getCheckoutTokenTransferParams({
3644
3984
  toTokenAddress: checkoutConfig.targetAsset
3645
3985
  };
3646
3986
  }
3987
+ function useIsQRCodeTransferEnabled() {
3988
+ const { checkoutItem } = useCheckoutContext();
3989
+ const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
3990
+ const checkoutConfig = checkoutItem?.initSettings.config;
3991
+ const udaParams = useUDAParams();
3992
+ if (!isQrCodeEnabled) {
3993
+ return false;
3994
+ }
3995
+ const dynamicRoutingId = checkoutConfig?.dynamicRoutingId;
3996
+ if (dynamicRoutingId) {
3997
+ return !!udaParams;
3998
+ }
3999
+ return true;
4000
+ }
3647
4001
  var useCheckoutTransferInit = (enabled = true) => {
3648
4002
  const { checkoutItem } = useCheckoutContext();
3649
4003
  const checkoutConfig = checkoutItem?.initSettings.config;
4004
+ const isQrCodeEnabled = useIsQRCodeTransferEnabled();
3650
4005
  const { walletAddress, userInfo } = useGeneralWallet();
3651
4006
  const { apiKey } = useFunkitConfig();
3652
- const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
3653
- const recipientAddr = checkoutConfig?.customRecipient || walletAddress || "0x";
4007
+ const udaParams = useUDAParams();
4008
+ const isLighter = isLighterxyzCustomer(apiKey);
4009
+ const { mainAccountIndex } = useLighterAccounts({
4010
+ address: walletAddress || "0x",
4011
+ isEnabled: isLighter && !!walletAddress && walletAddress !== "0x"
4012
+ });
4013
+ const recipientAddr = (() => {
4014
+ if (udaParams && udaParams.targetChain === lighterChain.id.toString() && !!mainAccountIndex) {
4015
+ return mainAccountIndex;
4016
+ }
4017
+ return checkoutConfig?.customRecipient || walletAddress || "0x";
4018
+ })();
3654
4019
  const userId = userInfo.id || "";
3655
4020
  const queryKey = getCheckoutTokenTransferParams({
3656
4021
  checkoutConfig,
3657
4022
  userId,
3658
4023
  apiKey,
3659
- recipientAddr
4024
+ recipientAddr,
4025
+ udaParams
3660
4026
  });
3661
4027
  const postActionOverride = isHyenaCustomer(apiKey);
3662
4028
  const isQRCodeEnabledWithPostAction = !!checkoutConfig && // either no post action required
3663
4029
  (!isCheckoutPostActionRequired(checkoutConfig) || // or action type is set
3664
- !!checkoutConfig?.qrcodeActionType || postActionOverride);
3665
- const { data, isFetching } = useQuery3({
4030
+ !!checkoutConfig?.qrcodeActionType || postActionOverride || !!queryKey?.actionType);
4031
+ const { data, isFetching } = useQuery4({
3666
4032
  queryKey: ["initializeCheckoutTokenTransferAddress", queryKey],
3667
4033
  queryFn: ({ queryKey: [_, queryKey2] }) => queryKey2 ? checkoutTransferFetch(queryKey2) : void 0,
3668
4034
  refetchOnWindowFocus: false,
@@ -3678,9 +4044,9 @@ var useCheckoutTransferInit = (enabled = true) => {
3678
4044
  };
3679
4045
 
3680
4046
  // src/hooks/useEffectEvent.ts
3681
- import { useCallback as useCallback8, useInsertionEffect, useRef } from "react";
4047
+ import { useCallback as useCallback8, useInsertionEffect, useRef as useRef2 } from "react";
3682
4048
  function useEffectEvent(fn) {
3683
- const savedCallback = useRef(fn);
4049
+ const savedCallback = useRef2(fn);
3684
4050
  useInsertionEffect(() => {
3685
4051
  savedCallback.current = fn;
3686
4052
  }, [fn]);
@@ -3726,11 +4092,11 @@ import React19, {
3726
4092
  useCallback as useCallback9,
3727
4093
  useContext as useContext8,
3728
4094
  useEffect as useEffect8,
3729
- useRef as useRef2,
4095
+ useRef as useRef3,
3730
4096
  useState as useState8
3731
4097
  } from "react";
3732
4098
  import { isHex } from "viem";
3733
- import { useQuery as useQuery5 } from "@tanstack/react-query";
4099
+ import { useQuery as useQuery6 } from "@tanstack/react-query";
3734
4100
 
3735
4101
  // src/utils/purifyCheckoutHistoryItem.ts
3736
4102
  import {
@@ -3749,7 +4115,7 @@ import {
3749
4115
  getDirectExecutionByTxHash
3750
4116
  } from "@funkit/api-base";
3751
4117
  import { RELAY_TERMINAL_STATUSES } from "@funkit/fun-relay";
3752
- import { useQuery as useQuery4 } from "@tanstack/react-query";
4118
+ import { useQuery as useQuery5 } from "@tanstack/react-query";
3753
4119
  var RELAY_FETCH_INTERVAL = 1500;
3754
4120
  var logPrefix = "useDirectExecutionInfoPolling";
3755
4121
  function useDirectExecutionInfoPolling({
@@ -3757,7 +4123,7 @@ function useDirectExecutionInfoPolling({
3757
4123
  disabled = false
3758
4124
  }) {
3759
4125
  const { apiKey } = useFunkitConfig();
3760
- const { data: directExecution, isLoading } = useQuery4({
4126
+ const { data: directExecution, isLoading } = useQuery5({
3761
4127
  queryKey: [logPrefix, initDirectExecution?.txHash],
3762
4128
  queryFn: async () => {
3763
4129
  try {
@@ -3913,7 +4279,7 @@ function FunkitCheckoutHistoryProvider({
3913
4279
  const { logoutSymbol, isUserLoggedIn, userInfo } = useGeneralWallet();
3914
4280
  const funkitConfig = useFunkitConfig();
3915
4281
  const [checkoutHistoryList, setCheckoutHistoryList] = useState8([]);
3916
- const intervalRef = useRef2();
4282
+ const intervalRef = useRef3();
3917
4283
  const [refreshSymbol, triggerRefreshSymbol] = useSymbolRefresh_default();
3918
4284
  const [historyDepositAddress, setHistoryDepositAddress] = useState8();
3919
4285
  const [isInited, setIsInited] = useState8(false);
@@ -4039,7 +4405,7 @@ function useCheckoutHistoryContext() {
4039
4405
  }
4040
4406
  function useCheckoutsListenerByUserId(userId) {
4041
4407
  const { apiKey } = useFunkitConfig();
4042
- const { data, isLoading } = useQuery5({
4408
+ const { data, isLoading } = useQuery6({
4043
4409
  enabled: !!userId,
4044
4410
  queryKey: ["getPurifiedCheckoutsByUserId", userId],
4045
4411
  queryFn: async () => {
@@ -4068,7 +4434,7 @@ function useCheckoutsListenerByUserId(userId) {
4068
4434
  }
4069
4435
  function useCheckoutListenerByCheckoutId(checkoutId) {
4070
4436
  const { apiKey } = useFunkitConfig();
4071
- const { data, isLoading } = useQuery5({
4437
+ const { data, isLoading } = useQuery6({
4072
4438
  enabled: !!checkoutId,
4073
4439
  queryKey: ["getPurifiedCheckoutById", checkoutId],
4074
4440
  queryFn: async () => {
@@ -4166,7 +4532,7 @@ import React233, {
4166
4532
  useCallback as useCallback48,
4167
4533
  useContext as useContext16,
4168
4534
  useEffect as useEffect54,
4169
- useMemo as useMemo46,
4535
+ useMemo as useMemo49,
4170
4536
  useState as useState73
4171
4537
  } from "react";
4172
4538
  import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig5 } from "wagmi";
@@ -4189,7 +4555,7 @@ import React107, { useCallback as useCallback23, useState as useState34 } from "
4189
4555
 
4190
4556
  // src/components/FunCheckoutHistory/useCustomStatusAnimationAboveTopbar.tsx
4191
4557
  import { clamp } from "@funkit/utils";
4192
- import React29, { useRef as useRef4, useState as useState13 } from "react";
4558
+ import React29, { useRef as useRef5, useState as useState13 } from "react";
4193
4559
 
4194
4560
  // src/domains/checkout.ts
4195
4561
  import {
@@ -4245,8 +4611,16 @@ function getCheckoutStateBooleans(checkoutState, refundState) {
4245
4611
  };
4246
4612
  }
4247
4613
 
4614
+ // src/utils/lighter.ts
4615
+ import { getAddress } from "viem";
4616
+ var LIGHTER_DEPOSIT_ADDRESS = getAddress(
4617
+ "0x3b4d794a66304f130a4db8f2551b0070dfcf5ca7"
4618
+ );
4619
+ var LIGHTER_NATIVE_FLOW_TIME_ESTIMATE_SECONDS = 110;
4620
+ var LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF = 60 * 5;
4621
+
4248
4622
  // src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
4249
- import React27, { useEffect as useEffect11, useMemo as useMemo12, useState as useState11 } from "react";
4623
+ import React27, { useEffect as useEffect11, useMemo as useMemo14, useState as useState11 } from "react";
4250
4624
 
4251
4625
  // src/components/TransactionStatus/TransactionStatus.tsx
4252
4626
  import {
@@ -4257,8 +4631,8 @@ import {
4257
4631
  import React26, {
4258
4632
  useCallback as useCallback10,
4259
4633
  useEffect as useEffect10,
4260
- useMemo as useMemo11,
4261
- useRef as useRef3,
4634
+ useMemo as useMemo13,
4635
+ useRef as useRef4,
4262
4636
  useState as useState10
4263
4637
  } from "react";
4264
4638
  import { Trans } from "react-i18next";
@@ -4999,7 +5373,7 @@ function TransactionStatusLoading({
4999
5373
  )));
5000
5374
  }
5001
5375
  function TransactionStatus({
5002
- isLayerZero,
5376
+ isSlowTransaction,
5003
5377
  isWithdrawal,
5004
5378
  status,
5005
5379
  step,
@@ -5007,10 +5381,10 @@ function TransactionStatus({
5007
5381
  textConfigSteps
5008
5382
  }) {
5009
5383
  const { t } = useFunkitTranslation();
5010
- const finalTextConfigStatus = useMemo11(() => {
5384
+ const finalTextConfigStatus = useMemo13(() => {
5011
5385
  return textConfigStatus || getDefaultTextConfigStatus(t);
5012
5386
  }, [t, textConfigStatus]);
5013
- const finalTextConfigSteps = useMemo11(() => {
5387
+ const finalTextConfigSteps = useMemo13(() => {
5014
5388
  return textConfigSteps || getDefaultTextConfigSteps(t);
5015
5389
  }, [t, textConfigSteps]);
5016
5390
  const [initialStatus] = useState10(status);
@@ -5021,7 +5395,7 @@ function TransactionStatus({
5021
5395
  const [isDelayed2, setDelayed] = useState10(status === "delayed");
5022
5396
  const [transitioningToStatus, setTransitioningToStatus] = useState10(status);
5023
5397
  const [transitioningToStep, setTransitioningToStep] = useState10(step);
5024
- const spinAnimationRef = useRef3();
5398
+ const spinAnimationRef = useRef4();
5025
5399
  const stopSpinning = useCallback10(() => {
5026
5400
  spinAnimationRef.current?.cancel();
5027
5401
  spinAnimationRef.current = void 0;
@@ -5301,18 +5675,18 @@ function TransactionStatus({
5301
5675
  transitioningToStep
5302
5676
  ]);
5303
5677
  const textConfig = currentStatus === "progress" ? isDelayed2 ? finalTextConfigStatus.progress_delayed : finalTextConfigSteps[currentStep] : finalTextConfigStatus[currentStatus];
5304
- const { description, descriptionKey, title } = useMemo11(() => {
5305
- const translatedDurationUnits = isLayerZero ? t("transaction.minutes") : t("transaction.seconds");
5678
+ const { description, descriptionKey, title } = useMemo13(() => {
5679
+ const translatedDurationUnits = isSlowTransaction ? t("transaction.minutes") : t("transaction.seconds");
5306
5680
  const config = typeof textConfig === "function" ? textConfig({
5307
5681
  durationUnits: translatedDurationUnits,
5308
5682
  isWithdrawal,
5309
- finalizeVerb: isLayerZero ? t("transaction.credit") : t("transaction.finalize")
5683
+ finalizeVerb: isSlowTransaction ? t("transaction.credit") : t("transaction.finalize")
5310
5684
  }) : textConfig;
5311
5685
  return {
5312
5686
  ...config,
5313
5687
  descriptionKey: config.descriptionKey ?? config.description
5314
5688
  };
5315
- }, [isLayerZero, isWithdrawal, textConfig, t]);
5689
+ }, [isSlowTransaction, isWithdrawal, textConfig, t]);
5316
5690
  return /* @__PURE__ */ React26.createElement(
5317
5691
  Box,
5318
5692
  {
@@ -5450,7 +5824,7 @@ function FunCheckoutStatusLoaded({
5450
5824
  checkoutHistoryItem.state,
5451
5825
  checkoutHistoryItem.refundState
5452
5826
  );
5453
- const startTimeMs = useMemo12(
5827
+ const startTimeMs = useMemo14(
5454
5828
  () => extractStartTimeMs(
5455
5829
  checkoutHistoryItem.clientMetadata.id,
5456
5830
  activeCheckoutItem,
@@ -5477,7 +5851,7 @@ function FunCheckoutStatusLoaded({
5477
5851
  return /* @__PURE__ */ React27.createElement(
5478
5852
  TransactionStatus,
5479
5853
  {
5480
- isLayerZero: false,
5854
+ isSlowTransaction: false,
5481
5855
  isWithdrawal: false,
5482
5856
  key: checkoutHistoryItem.clientMetadata.id,
5483
5857
  onOrderDelayed,
@@ -5519,10 +5893,22 @@ function formatSecondsTranslated(seconds, t, specifyUnderMinute = false, omitSec
5519
5893
  var LAYERZEO_OFT_TIME_ESTIMATE_SECONDS = 180;
5520
5894
  function useCheckoutTimeEstimate(latestQuote, originalTimeEstimationMs, paymentMethod, bypassFlag) {
5521
5895
  const { t } = useFunkitTranslation();
5896
+ const { apiKey } = useFunkitConfig();
5897
+ const { checkoutItem } = useCheckoutContext();
5898
+ const checkoutConfig = checkoutItem?.initSettings.config;
5899
+ const lighterNativeFlow = isLighterNativeFlow(apiKey, checkoutConfig);
5522
5900
  const timeEstimatesJsonString = useFlag(FlagKey5.CheckoutTimeEstimateOverrides);
5523
5901
  const timeEstimates = safeJSONParse(
5524
5902
  timeEstimatesJsonString
5525
5903
  );
5904
+ if (lighterNativeFlow) {
5905
+ const estimatedTime2 = LIGHTER_NATIVE_FLOW_TIME_ESTIMATE_SECONDS;
5906
+ const estimatedTimeText2 = formatSecondsTranslated(estimatedTime2, t, true);
5907
+ return {
5908
+ estimatedTime: estimatedTime2,
5909
+ estimatedTimeText: estimatedTimeText2
5910
+ };
5911
+ }
5526
5912
  if (latestQuote?.baseQuote.metadata?.oftEnabled) {
5527
5913
  return {
5528
5914
  estimatedTime: LAYERZEO_OFT_TIME_ESTIMATE_SECONDS,
@@ -5578,6 +5964,9 @@ function FunDirectExecutionStatusLoaded({
5578
5964
  disabled: disableAutoUpdate
5579
5965
  });
5580
5966
  const { getCheckoutProgress } = useCheckoutContext();
5967
+ const { apiKey } = useFunkitConfig();
5968
+ const { checkoutItem } = useCheckoutContext();
5969
+ const checkoutConfig = checkoutItem?.initSettings.config;
5581
5970
  const progress = getCheckoutProgress(directExecution.clientMetadata.id);
5582
5971
  const startTimeMs = directExecution.createdTimeMs;
5583
5972
  const [currentTimeMs, setCurrentTimeMs] = useState12(Date.now());
@@ -5590,11 +5979,12 @@ function FunDirectExecutionStatusLoaded({
5590
5979
  if (isRefunded) {
5591
5980
  return null;
5592
5981
  }
5982
+ const isSlowTransaction = !!isLayerZero || isLighterNativeFlow(apiKey, checkoutConfig);
5593
5983
  const { clientMetadata } = directExecution;
5594
5984
  return /* @__PURE__ */ React28.createElement(
5595
5985
  TransactionStatus,
5596
5986
  {
5597
- isLayerZero: !!isLayerZero,
5987
+ isSlowTransaction,
5598
5988
  isWithdrawal: !!clientMetadata.isWithdrawal,
5599
5989
  key: clientMetadata.id,
5600
5990
  startTimeMs,
@@ -5617,10 +6007,11 @@ function useCustomStatusAnimationAboveTopbar({
5617
6007
  paddingTop,
5618
6008
  topbar,
5619
6009
  withTopDivider,
5620
- scrollableContent
6010
+ scrollableContent,
6011
+ isLighterNativeDeposit
5621
6012
  }) {
5622
6013
  const [scrollPos, setScrollPos] = useState13(0);
5623
- const lastY = useRef4(0);
6014
+ const lastY = useRef5(0);
5624
6015
  const { checkoutHistoryInfo, directExecutionInfo } = useFunkitPostCheckoutInternal(
5625
6016
  isCheckoutDetailView && depositAddress ? depositAddress : "0x"
5626
6017
  );
@@ -5677,7 +6068,8 @@ function useCustomStatusAnimationAboveTopbar({
5677
6068
  FunDirectExecutionStatus,
5678
6069
  {
5679
6070
  directExecution: directExecutionInfo,
5680
- isActiveCheckout
6071
+ isActiveCheckout,
6072
+ dangerousCustomDelayedAutoTriggerCutoff: isLighterNativeDeposit ? LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF : void 0
5681
6073
  }
5682
6074
  ) : /* @__PURE__ */ React29.createElement(
5683
6075
  FunCheckoutStatus,
@@ -5841,16 +6233,16 @@ import React45, {
5841
6233
  useCallback as useCallback12,
5842
6234
  useContext as useContext10,
5843
6235
  useEffect as useEffect17,
5844
- useRef as useRef7
6236
+ useRef as useRef8
5845
6237
  } from "react";
5846
6238
  import { createPortal } from "react-dom";
5847
6239
  import { RemoveScroll } from "react-remove-scroll";
5848
6240
  import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
5849
6241
 
5850
6242
  // src/hooks/useScrollDivider.ts
5851
- import { useEffect as useEffect13, useRef as useRef5, useState as useState14 } from "react";
6243
+ import { useEffect as useEffect13, useRef as useRef6, useState as useState14 } from "react";
5852
6244
  var useScrollDivider = () => {
5853
- const ref = useRef5(null);
6245
+ const ref = useRef6(null);
5854
6246
  const [isTop, setIsTop] = useState14(true);
5855
6247
  const [isScrollable, setIsScrollable] = useState14(false);
5856
6248
  const [isScrolling, setIsScrolling] = useState14(false);
@@ -5908,7 +6300,9 @@ var ModalSizeOptions = {
5908
6300
  MEDIUM: "medium",
5909
6301
  WIDE: "wide"
5910
6302
  };
5911
- var ModalSizeContext = createContext10(ModalSizeOptions.WIDE);
6303
+ var ModalSizeContext = createContext10(
6304
+ ModalSizeOptions.MEDIUM
6305
+ );
5912
6306
  function ModalSizeProvider({
5913
6307
  children,
5914
6308
  modalSize
@@ -6167,7 +6561,7 @@ var ErrorBoundary = class extends Component {
6167
6561
  var ErrorBoundary_default = ErrorBoundary;
6168
6562
 
6169
6563
  // src/components/FunBottomBar/FunBottomBar.tsx
6170
- import { FlagKey as FlagKey6, isMobile as isMobile2 } from "@funkit/utils";
6564
+ import { isMobile as isMobile2 } from "@funkit/utils";
6171
6565
  import React40 from "react";
6172
6566
 
6173
6567
  // src/components/FunButton/FunButton.tsx
@@ -6509,7 +6903,7 @@ var FunBottomBar = ({
6509
6903
  }) => {
6510
6904
  const { t } = useFunkitTranslation();
6511
6905
  const { uiCustomizations } = useFunkitConfig();
6512
- const showTagline = useFlag(FlagKey6.ShowPoweredTagline);
6906
+ const showTagline = useDynamicConfig("showpoweredtagline");
6513
6907
  const powerTagline = showTagline ? /* @__PURE__ */ React40.createElement(FunPoweredTagline, null) : void 0;
6514
6908
  const hasMultipleButtons = !!actionButtonProps && !!onClose;
6515
6909
  const customButtonRadius = showTagline || hasMultipleButtons ? void 0 : isMobile2() ? "modalActionButtonMobile" : "modalActionButton";
@@ -6655,7 +7049,7 @@ function FunDivider({
6655
7049
  }
6656
7050
 
6657
7051
  // src/components/Dialog/FocusTrap.tsx
6658
- import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as useRef6 } from "react";
7052
+ import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as useRef7 } from "react";
6659
7053
  var moveFocusWithin = (element2, position) => {
6660
7054
  const focusableElements = element2.querySelectorAll(
6661
7055
  "button:not(:disabled), a[href]"
@@ -6666,7 +7060,7 @@ var moveFocusWithin = (element2, position) => {
6666
7060
  focusableElements[position === "end" ? focusableElements.length - 1 : 0].focus();
6667
7061
  };
6668
7062
  function FocusTrap(props) {
6669
- const contentRef = useRef6(null);
7063
+ const contentRef = useRef7(null);
6670
7064
  useEffect14(() => {
6671
7065
  const previouslyActiveElement = document.activeElement;
6672
7066
  return () => {
@@ -7042,7 +7436,7 @@ var DialogBottom = ({
7042
7436
  ...boxProps
7043
7437
  }) => {
7044
7438
  const { activeTheme } = useActiveTheme();
7045
- const ref = useRef7(null);
7439
+ const ref = useRef8(null);
7046
7440
  const extraBottomPadding = getValueFromPxString(activeTheme.spacing.modalBaseHorizontalPadding) * 2 - getValueFromPxString(activeTheme.spacing.modalPaddingBottomLower);
7047
7441
  const hasNoChildren = useBottomBarHasNoChildren();
7048
7442
  const paddingBottom = (() => {
@@ -7204,11 +7598,11 @@ import {
7204
7598
  solanaChain as solanaChain4
7205
7599
  } from "@funkit/chains";
7206
7600
  import {
7207
- FlagKey as FlagKey12,
7601
+ FlagKey as FlagKey11,
7208
7602
  formatCryptoAndStringify as formatCryptoAndStringify2,
7209
7603
  formatCurrencyAndStringify as formatCurrencyAndStringify3
7210
7604
  } from "@funkit/utils";
7211
- import React72, { useEffect as useEffect28, useMemo as useMemo19, useRef as useRef14, useState as useState27 } from "react";
7605
+ import React72, { useEffect as useEffect28, useMemo as useMemo21, useRef as useRef15, useState as useState27 } from "react";
7212
7606
  import { createPortal as createPortal2 } from "react-dom";
7213
7607
  import { useDebounce } from "use-debounce";
7214
7608
  import { useAccount as useAccount4 } from "wagmi";
@@ -7217,14 +7611,14 @@ import { useAccount as useAccount4 } from "wagmi";
7217
7611
  import React62 from "react";
7218
7612
 
7219
7613
  // src/components/Dropdown/ChainDropdown.tsx
7220
- import { FlagKey as FlagKey7 } from "@funkit/utils";
7614
+ import { FlagKey as FlagKey6 } from "@funkit/utils";
7221
7615
  import React59 from "react";
7222
7616
 
7223
7617
  // src/components/FunTooltip/FunTooltip.tsx
7224
7618
  import React47, {
7225
7619
  useCallback as useCallback13,
7226
7620
  useEffect as useEffect18,
7227
- useRef as useRef8,
7621
+ useRef as useRef9,
7228
7622
  useState as useState16
7229
7623
  } from "react";
7230
7624
  import clsx8 from "clsx";
@@ -7310,9 +7704,9 @@ var FunTooltip = ({
7310
7704
  const [isDisplayed, setIsDisplayed] = useState16(false);
7311
7705
  const [isSafeToRenderInCenter, setIsSafeToRenderInCenter] = useState16(false);
7312
7706
  const [isSafeToRenderInRight, setIsSafeToRenderInRight] = useState16(false);
7313
- const startDelayRef = useRef8();
7314
- const delayRef = useRef8();
7315
- const tooltipRef = useRef8(null);
7707
+ const startDelayRef = useRef9();
7708
+ const delayRef = useRef9();
7709
+ const tooltipRef = useRef9(null);
7316
7710
  const show = useCallback13(
7317
7711
  (startHiding) => {
7318
7712
  startDelayRef.current = setTimeout(() => {
@@ -7404,7 +7798,7 @@ var FunTooltip = ({
7404
7798
  // src/components/Dropdown/BaseDropdown.tsx
7405
7799
  import { isMobile as isMobile4, noop as noop2 } from "@funkit/utils";
7406
7800
  import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
7407
- import React56, { useCallback as useCallback14, useEffect as useEffect21, useMemo as useMemo13, useRef as useRef10, useState as useState18 } from "react";
7801
+ import React56, { useCallback as useCallback14, useEffect as useEffect21, useMemo as useMemo15, useRef as useRef11, useState as useState18 } from "react";
7408
7802
 
7409
7803
  // src/consts/layout.ts
7410
7804
  var VERTICAL_SECTION_GAP = "18";
@@ -7831,12 +8225,12 @@ var FunNoResults = ({
7831
8225
 
7832
8226
  // src/components/FunSelect/FunClickOutside.tsx
7833
8227
  import React53 from "react";
7834
- import { useEffect as useEffect20, useRef as useRef9 } from "react";
8228
+ import { useEffect as useEffect20, useRef as useRef10 } from "react";
7835
8229
  function FunClickOutside({
7836
8230
  children,
7837
8231
  onClick
7838
8232
  }) {
7839
- const wrapperRef = useRef9(null);
8233
+ const wrapperRef = useRef10(null);
7840
8234
  useEffect20(() => {
7841
8235
  const handleClickListener = (event) => {
7842
8236
  const clickedInside = wrapperRef.current?.contains(
@@ -8034,11 +8428,11 @@ function BaseDropdown({
8034
8428
  const [isOpened, setIsOpened] = useState18();
8035
8429
  const [searchInput, setSearchInput] = useState18("");
8036
8430
  const selectedOption = options.find((option) => option.value === value);
8037
- const prevIsOpenedRef = useRef10(false);
8431
+ const prevIsOpenedRef = useRef11(false);
8038
8432
  const handleSearch = (event) => {
8039
8433
  setSearchInput(event.target.value);
8040
8434
  };
8041
- const filteredOptions = useMemo13(
8435
+ const filteredOptions = useMemo15(
8042
8436
  () => options.filter(
8043
8437
  (singleOption) => singleOption.label.toLowerCase().includes(searchInput?.toLowerCase())
8044
8438
  ),
@@ -8311,9 +8705,9 @@ var ChainDropdown = ({
8311
8705
  testId
8312
8706
  }) => {
8313
8707
  const { t } = useFunkitTranslation();
8314
- const defaultChainIdJson = useFlag(FlagKey7.TokenTransferDefaultChainId);
8708
+ const defaultChainIdJson = useFlag(FlagKey6.TokenTransferDefaultChainId);
8315
8709
  const defaultChainId = safeJSONParse(defaultChainIdJson);
8316
- const chainSortOrderJson = useFlag(FlagKey7.ChainIdSortOrder);
8710
+ const chainSortOrderJson = useFlag(FlagKey6.ChainIdSortOrder);
8317
8711
  const chainSortOrder = safeJSONParse(chainSortOrderJson) || [];
8318
8712
  const chainIds = getSortedChainIds();
8319
8713
  const options = allowUnselect ? [DEFAULT_VALUE, ...chainIds] : chainIds;
@@ -8423,7 +8817,7 @@ var ChainDropdown = ({
8423
8817
  };
8424
8818
 
8425
8819
  // src/components/Dropdown/TokenDropdown.tsx
8426
- import { FlagKey as FlagKey8 } from "@funkit/utils";
8820
+ import { FlagKey as FlagKey7 } from "@funkit/utils";
8427
8821
  import React61, { useState as useState19 } from "react";
8428
8822
 
8429
8823
  // src/utils/flags/patches/enable-bitcoin-patch.ts
@@ -8487,7 +8881,7 @@ var getTokenIconUrl = (symbol, tokens) => {
8487
8881
 
8488
8882
  // src/components/FunBadge/FunBadge.tsx
8489
8883
  import clsx12 from "clsx";
8490
- import React60, { useMemo as useMemo14 } from "react";
8884
+ import React60, { useMemo as useMemo16 } from "react";
8491
8885
 
8492
8886
  // src/components/FunBadge/FunBadge.css.ts
8493
8887
  var badgeShineStyle = "bc2uzy2";
@@ -8511,7 +8905,7 @@ function FunBadge({
8511
8905
  hasShine = false
8512
8906
  }) {
8513
8907
  const { t } = useFunkitTranslation();
8514
- const borderStyle = useMemo14(() => {
8908
+ const borderStyle = useMemo16(() => {
8515
8909
  return borderColor ? { borderStyle: "solid", borderColor, borderWidth: "1" } : {};
8516
8910
  }, [borderColor]);
8517
8911
  return /* @__PURE__ */ React60.createElement(
@@ -8568,12 +8962,12 @@ var NewTokenBadge = ({ iconSymbol }) => {
8568
8962
  // src/components/Dropdown/TokenDropdown.tsx
8569
8963
  var TOKEN_ICON_SIZE = 16;
8570
8964
  var useNewTokens = () => {
8571
- const enableBitcoin = useFlag(FlagKey8.EnableBitcoin);
8572
- const bannerJson = useFlag(FlagKey8.NewTokenAssetSelectionBanner);
8965
+ const enableBitcoin = useFlag(FlagKey7.EnableBitcoin);
8966
+ const bannerJson = useFlag(FlagKey7.NewTokenAssetSelectionBanner);
8573
8967
  const bannerData = useSafeJSONParse(bannerJson);
8574
8968
  const addBitcoinToNewTokensMiddleware = enableBitcoin ? addBitcoinToNewTokens : void 0;
8575
8969
  const newBadgeTokensJson = useFlag(
8576
- FlagKey8.TokenTransferNewTokens,
8970
+ FlagKey7.TokenTransferNewTokens,
8577
8971
  void 0,
8578
8972
  addBitcoinToNewTokensMiddleware
8579
8973
  );
@@ -8594,7 +8988,7 @@ var TokenDropdown = ({
8594
8988
  hideNewTokenBadge,
8595
8989
  testId
8596
8990
  }) => {
8597
- const defaultTokensJson = useFlag(FlagKey8.TokenTransferDefaultTokens);
8991
+ const defaultTokensJson = useFlag(FlagKey7.TokenTransferDefaultTokens);
8598
8992
  const defaultTokens = safeJSONParse(defaultTokensJson);
8599
8993
  const enabledTokens = assets[selectedChainId];
8600
8994
  const allTokens = getSortedTokens();
@@ -9016,10 +9410,10 @@ import {
9016
9410
  formatPercent,
9017
9411
  noop as noop4
9018
9412
  } from "@funkit/utils";
9019
- import React67, { useEffect as useEffect22, useMemo as useMemo15, useState as useState20 } from "react";
9413
+ import React67, { useEffect as useEffect22, useMemo as useMemo17, useState as useState20 } from "react";
9020
9414
  import clsx14 from "clsx";
9021
9415
  import { motion as motion6, useAnimationControls } from "motion/react";
9022
- import { mainnet as mainnet4 } from "viem/chains";
9416
+ import { mainnet as mainnet6 } from "viem/chains";
9023
9417
 
9024
9418
  // src/domains/relay.ts
9025
9419
  var KATANA_BRIDGE_ALERT_THRESHOLD_PERCENT = 0.5;
@@ -9216,7 +9610,7 @@ function computeDigest(relayQuoteMetadata, uiCustomizations, totalPriceImpactPer
9216
9610
  value: void 0
9217
9611
  };
9218
9612
  }
9219
- const isMainnet = details?.currencyIn?.currency?.chainId === mainnet4.id || details?.currencyOut?.currency?.chainId === mainnet4.id;
9613
+ const isMainnet = details?.currencyIn?.currency?.chainId === mainnet6.id || details?.currencyOut?.currency?.chainId === mainnet6.id;
9220
9614
  const percent = formatPercent(totalPriceImpactPercent);
9221
9615
  return {
9222
9616
  isMainnet,
@@ -9502,7 +9896,7 @@ function PaymentFeesSummary({
9502
9896
  setIsExpanded(false);
9503
9897
  }
9504
9898
  }, [valuesNotAvailable, isExpanded]);
9505
- const { collapsed: collapsedItem, expanded: expandedItems } = useMemo15(() => {
9899
+ const { collapsed: collapsedItem, expanded: expandedItems } = useMemo17(() => {
9506
9900
  const fees = quote?.finalFeesBreakdown ?? fallbackFees;
9507
9901
  if (!fees) {
9508
9902
  return NO_DATA;
@@ -9666,7 +10060,7 @@ var EvmWallet = ({ size = 20 }) => /* @__PURE__ */ React68.createElement(
9666
10060
  );
9667
10061
 
9668
10062
  // src/hooks/queries/useWithdrawalQuote.ts
9669
- import { useQuery as useQuery6 } from "@tanstack/react-query";
10063
+ import { useQuery as useQuery7 } from "@tanstack/react-query";
9670
10064
  import { useConfig as useConfig2 } from "wagmi";
9671
10065
 
9672
10066
  // src/domains/quote.ts
@@ -10116,7 +10510,7 @@ function useWithdrawalQuote({
10116
10510
  );
10117
10511
  const enabled = !!apiKey && !!targetAsset && !!sourceAmount && !!recipientAddress && !!chainId && !!symbol && !!isValidAddress && !!checkoutItem;
10118
10512
  const { logEvent } = useTrack();
10119
- const query = useQuery6({
10513
+ const query = useQuery7({
10120
10514
  queryKey: [
10121
10515
  "withdrawal",
10122
10516
  "quote",
@@ -10192,12 +10586,12 @@ function useWithdrawalQuote({
10192
10586
  }
10193
10587
 
10194
10588
  // src/hooks/queries/useWithdrawalRisk.ts
10195
- import { useQuery as useQuery7 } from "@tanstack/react-query";
10196
- import { useEffect as useEffect23, useRef as useRef11 } from "react";
10589
+ import { useQuery as useQuery8 } from "@tanstack/react-query";
10590
+ import { useEffect as useEffect23, useRef as useRef12 } from "react";
10197
10591
  import { isAddress as isAddress2 } from "viem";
10198
10592
  var useWithdrawalRisk = (apiKey, receiveAddress) => {
10199
- const lastRiskyAddressRef = useRef11(null);
10200
- const query = useQuery7({
10593
+ const lastRiskyAddressRef = useRef12(null);
10594
+ const query = useQuery8({
10201
10595
  queryKey: ["withdrawal", "addressRisk", apiKey, receiveAddress],
10202
10596
  queryFn: async () => {
10203
10597
  try {
@@ -10237,17 +10631,17 @@ import {
10237
10631
  convertFunToRelayTokenAddress,
10238
10632
  getRelayAssetPriceInfo
10239
10633
  } from "@funkit/fun-relay";
10240
- import { skipToken, useQuery as useQuery9 } from "@tanstack/react-query";
10634
+ import { skipToken, useQuery as useQuery10 } from "@tanstack/react-query";
10241
10635
 
10242
10636
  // src/hooks/queries/useErc20Asset.ts
10243
10637
  import { getAssetErc20ByChainAndSymbol } from "@funkit/api-base";
10244
- import { useQuery as useQuery8 } from "@tanstack/react-query";
10638
+ import { useQuery as useQuery9 } from "@tanstack/react-query";
10245
10639
  var useErc20Asset = ({
10246
10640
  chainId,
10247
10641
  symbol
10248
10642
  }) => {
10249
10643
  const { apiKey } = useFunkitConfig();
10250
- const query = useQuery8({
10644
+ const query = useQuery9({
10251
10645
  queryKey: ["erc20Asset", chainId, symbol],
10252
10646
  queryFn: async () => {
10253
10647
  if (!apiKey || !chainId || !symbol) {
@@ -10299,7 +10693,7 @@ function useAssetAddressPrice({
10299
10693
  refetchInterval = 1e4
10300
10694
  }) {
10301
10695
  const { apiKey } = useFunkitConfig();
10302
- const { data, error, isLoading } = useQuery9({
10696
+ const { data, error, isLoading } = useQuery10({
10303
10697
  queryKey: ["getAssetPriceInfo", chainId, assetTokenAddress],
10304
10698
  queryFn: chainId && assetTokenAddress ? async () => {
10305
10699
  const isRelayPrimary = RELAY_SHORT_CIRCUIT_CHAIN_IDS.includes(chainId);
@@ -10357,13 +10751,13 @@ var useAssetSymbolPrice = ({
10357
10751
  };
10358
10752
 
10359
10753
  // src/hooks/useTokenChain.ts
10360
- import { FlagKey as FlagKey10 } from "@funkit/utils";
10754
+ import { FlagKey as FlagKey9 } from "@funkit/utils";
10361
10755
  import { useEffect as useEffect24, useState as useState21 } from "react";
10362
10756
  import { polygon as polygon2 } from "viem/chains";
10363
10757
 
10364
10758
  // src/hooks/useEnabledTokenTransferChainTokens.ts
10365
- import { bitcoinChain as bitcoinChain2, solanaChain as solanaChain2 } from "@funkit/chains";
10366
- import { FlagKey as FlagKey9 } from "@funkit/utils";
10759
+ import { bitcoinChain, solanaChain as solanaChain2 } from "@funkit/chains";
10760
+ import { FlagKey as FlagKey8 } from "@funkit/utils";
10367
10761
  import { base as base4 } from "viem/chains";
10368
10762
 
10369
10763
  // src/hooks/useIsUsUser.ts
@@ -10380,14 +10774,14 @@ function useIsUsBankrUser() {
10380
10774
  // src/hooks/useEnabledTokenTransferChainTokens.ts
10381
10775
  function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
10382
10776
  const isBankrUsUser = useIsUsBankrUser();
10383
- const enableBitcoin = useFlag(FlagKey9.EnableBitcoin);
10777
+ const enableBitcoin = useFlag(FlagKey8.EnableBitcoin);
10384
10778
  const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
10385
10779
  const depositAssets = useFlag(
10386
- FlagKey9.TokenTransferSourceChainsAndAssets,
10780
+ FlagKey8.TokenTransferSourceChainsAndAssets,
10387
10781
  void 0,
10388
10782
  addBitcoinToSourceChainsAndAssetsMiddleware
10389
10783
  );
10390
- const withdrawalAssets = useFlag(FlagKey9.WithdrawalChainsAndAssets);
10784
+ const withdrawalAssets = useFlag(FlagKey8.WithdrawalChainsAndAssets);
10391
10785
  const assetsJsonString = isWithdrawal ? withdrawalAssets : depositAssets;
10392
10786
  const assets = safeJSONParse(assetsJsonString);
10393
10787
  if (!assets) {
@@ -10402,7 +10796,7 @@ function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
10402
10796
  if (isSolana && !hasSolanaAddress && !isWithdrawal) {
10403
10797
  return acc;
10404
10798
  }
10405
- const isBitcoin = chainId === bitcoinChain2.id;
10799
+ const isBitcoin = chainId === bitcoinChain.id;
10406
10800
  if (isBitcoin && !hasBitcoinAddress && !isWithdrawal) {
10407
10801
  return acc;
10408
10802
  }
@@ -10424,7 +10818,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
10424
10818
  transferInit ?? null,
10425
10819
  isWithdrawal
10426
10820
  );
10427
- const defaultChainIdFlag = useFlag(FlagKey10.TokenTransferDefaultChainId);
10821
+ const defaultChainIdFlag = useFlag(FlagKey9.TokenTransferDefaultChainId);
10428
10822
  const defaultChainId = defaultValues?.chainId ?? Number(defaultChainIdFlag);
10429
10823
  const validDefaultChainId = filteredAssets[defaultChainId] !== void 0 ? defaultChainId : polygon2.id;
10430
10824
  const [selectedChainId, setSelectedChainId] = useState21(validDefaultChainId);
@@ -10723,10 +11117,10 @@ function usePreparedWalletConnectors() {
10723
11117
  import { useState as useState26 } from "react";
10724
11118
 
10725
11119
  // src/hooks/useAutoClearState.ts
10726
- import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef12, useState as useState22 } from "react";
11120
+ import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef13, useState as useState22 } from "react";
10727
11121
  function useAutoClearState(initialValue = null) {
10728
11122
  const [state, setState] = useState22(initialValue);
10729
- const timeoutRef = useRef12();
11123
+ const timeoutRef = useRef13();
10730
11124
  useEffect25(() => {
10731
11125
  return () => {
10732
11126
  if (timeoutRef.current !== void 0) {
@@ -10753,72 +11147,6 @@ function useAutoClearState(initialValue = null) {
10753
11147
  import { ClientError as ClientError2 } from "@funkit/utils";
10754
11148
  import { useState as useState25 } from "react";
10755
11149
 
10756
- // src/hooks/statsig/useDynamicConfig.ts
10757
- import { useDynamicConfig as useStatsigDynamicConfig } from "@statsig/react-bindings";
10758
-
10759
- // src/__generated__/default_configs.ts
10760
- var default_configs_default = {
10761
- addressblacklist: {
10762
- value: [
10763
- "0x7b97b46D35a28B561d47F50CFB9a2735E506e59d",
10764
- "0x409ad08cc6CA757f69Fb80250a424B9eFeB99807",
10765
- "0x02A86f51aA7B8b1c17c30364748d5Ae4a0727E23",
10766
- "0x64131b60502C01362639CC5cfE1a1efB6Be1165A",
10767
- "0xb84440Ee8BAD69c14755bBb7093f861c3512E3D1"
10768
- ]
10769
- },
10770
- array_of_strings: {
10771
- value: []
10772
- },
10773
- blockedcountries: {
10774
- value: [
10775
- "AF",
10776
- "BY",
10777
- "MM",
10778
- "CF",
10779
- "CU",
10780
- "CD",
10781
- "IR",
10782
- "LB",
10783
- "LY",
10784
- "NI",
10785
- "KP",
10786
- "UA",
10787
- "SO",
10788
- "SS",
10789
- "SY",
10790
- "VE"
10791
- ]
10792
- },
10793
- boolean: {
10794
- value: false
10795
- },
10796
- brokerage_hide_you_receive: {
10797
- value: false
10798
- },
10799
- showinfobanner: {
10800
- value: {
10801
- message: "",
10802
- expireAtMs: 1,
10803
- type: "announcement"
10804
- }
10805
- },
10806
- showpoweredtagline: {
10807
- value: false
10808
- },
10809
- supportedexchangesv2: {
10810
- value: []
10811
- }
10812
- };
10813
-
10814
- // src/hooks/statsig/useDynamicConfig.ts
10815
- var useDynamicConfig = (name) => {
10816
- const config = useStatsigDynamicConfig(name);
10817
- const fallback2 = default_configs_default[name];
10818
- const value = config.get("value", fallback2.value);
10819
- return value;
10820
- };
10821
-
10822
11150
  // src/hooks/useIsBlacklisted.ts
10823
11151
  var useIsBlacklisted = (walletAddress, customRecipient) => {
10824
11152
  const addressblacklist = useDynamicConfig("addressblacklist");
@@ -10843,13 +11171,13 @@ import { useConfig as useConfig3 } from "wagmi";
10843
11171
  // src/hooks/useBluvo.ts
10844
11172
  import { bluvoGetWithdrawableBalanceById as bluvoGetWithdrawableBalanceById2 } from "@funkit/api-base";
10845
11173
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO4 } from "@funkit/chains";
10846
- import { keepPreviousData, useQuery as useQuery10 } from "@tanstack/react-query";
10847
- import { useCallback as useCallback16, useMemo as useMemo18 } from "react";
11174
+ import { keepPreviousData, useQuery as useQuery11 } from "@tanstack/react-query";
11175
+ import { useCallback as useCallback16, useMemo as useMemo20 } from "react";
10848
11176
 
10849
11177
  // src/domains/wallet.ts
10850
11178
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO2 } from "@funkit/chains";
10851
11179
  import { isNotNullish as isNotNullish2 } from "@funkit/utils";
10852
- import { mainnet as mainnet5, polygon as polygon3 } from "viem/chains";
11180
+ import { mainnet as mainnet7, polygon as polygon3 } from "viem/chains";
10853
11181
 
10854
11182
  // src/utils/assets.ts
10855
11183
  import { formatUnits } from "viem";
@@ -10895,14 +11223,14 @@ import { arbitrum as arbitrum3 } from "viem/chains";
10895
11223
 
10896
11224
  // src/hooks/useTokenTransfer.ts
10897
11225
  import {
10898
- bitcoinChain as bitcoinChain3,
11226
+ bitcoinChain as bitcoinChain2,
10899
11227
  hyperEvmChain,
10900
11228
  monadChain,
10901
11229
  solanaChain as solanaChain3
10902
11230
  } from "@funkit/chains";
10903
- import { FlagKey as FlagKey11 } from "@funkit/utils";
10904
- import { useMemo as useMemo16 } from "react";
10905
- import { arbitrum as arbitrum2, mainnet as mainnet6, polygon as polygon4 } from "viem/chains";
11231
+ import { FlagKey as FlagKey10 } from "@funkit/utils";
11232
+ import { useMemo as useMemo18 } from "react";
11233
+ import { arbitrum as arbitrum2, mainnet as mainnet8, polygon as polygon4 } from "viem/chains";
10906
11234
 
10907
11235
  // src/utils/transfer.ts
10908
11236
  var getTransferTokenQrCodeUri = (props) => {
@@ -10925,7 +11253,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
10925
11253
  const { apiKey } = useFunkitConfig();
10926
11254
  const { checkoutItem } = useCheckoutContext();
10927
11255
  const enableUniversal = useFlag(
10928
- FlagKey11.EnableTokenTransferUniversalDepositAddress,
11256
+ FlagKey10.EnableTokenTransferUniversalDepositAddress,
10929
11257
  false
10930
11258
  );
10931
11259
  const estPriceImpact = usePriceImpactEstimation(
@@ -10947,12 +11275,12 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
10947
11275
  const isUsdceOnPolygon = isPolygon && selectedToken === "USDC.e";
10948
11276
  const isUsdcOnPolygon = isPolygon && selectedToken === "USDC";
10949
11277
  const showOriginalRecipient = isBankrUsUser || !enableUniversal && (isUsdceOnPolygon || isUsdcOnPolygon);
10950
- const funDepositAddress = selectedChainId === solanaChain3.id ? transferInit?.solanaAddr : selectedChainId === bitcoinChain3.id ? transferInit?.btcAddrSegwit : transferInit?.depositAddr;
11278
+ const funDepositAddress = selectedChainId === solanaChain3.id ? transferInit?.solanaAddr : selectedChainId === bitcoinChain2.id ? transferInit?.btcAddrSegwit : transferInit?.depositAddr;
10951
11279
  const blockchainType = (() => {
10952
11280
  if (selectedChainId === solanaChain3.id) {
10953
11281
  return "solana";
10954
11282
  }
10955
- if (selectedChainId === bitcoinChain3.id) {
11283
+ if (selectedChainId === bitcoinChain2.id) {
10956
11284
  return "bitcoin";
10957
11285
  }
10958
11286
  return "ethereum";
@@ -10979,7 +11307,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
10979
11307
  };
10980
11308
  var useMinTransferLimits = () => {
10981
11309
  const { userIpInfo } = useFunkitUserIp();
10982
- const minTransferValueJsonString = useFlag(FlagKey11.MinTokenTransferValue);
11310
+ const minTransferValueJsonString = useFlag(FlagKey10.MinTokenTransferValue);
10983
11311
  const minTransferValue = safeJSONParse(
10984
11312
  minTransferValueJsonString
10985
11313
  );
@@ -10991,7 +11319,7 @@ var useMinTransferLimits = () => {
10991
11319
  return limits;
10992
11320
  };
10993
11321
  function getMinTransferValueForChain(chainId, limits) {
10994
- const MAINNET_IDS = [mainnet6.id, bitcoinChain3.id];
11322
+ const MAINNET_IDS = [mainnet8.id, bitcoinChain2.id];
10995
11323
  return MAINNET_IDS.includes(chainId) ? limits.mainnet : limits.nonMainnet;
10996
11324
  }
10997
11325
  var useMinTransferValue = (selectedChainId) => {
@@ -11009,7 +11337,7 @@ var useMinTransferValue = (selectedChainId) => {
11009
11337
  };
11010
11338
  var useMinTransferValues = (chainIds) => {
11011
11339
  const limits = useMinTransferLimits();
11012
- return useMemo16(() => {
11340
+ return useMemo18(() => {
11013
11341
  return chainIds.reduce(
11014
11342
  (acc, id) => {
11015
11343
  const limit = getMinTransferValueForChain(id, limits);
@@ -11280,8 +11608,8 @@ import { safeParseJson as safeParseJson3 } from "@funkit/utils";
11280
11608
  import React69, {
11281
11609
  useContext as useContext12,
11282
11610
  useEffect as useEffect26,
11283
- useMemo as useMemo17,
11284
- useRef as useRef13,
11611
+ useMemo as useMemo19,
11612
+ useRef as useRef14,
11285
11613
  useState as useState23
11286
11614
  } from "react";
11287
11615
  import { createContext as createContext12 } from "react";
@@ -11303,7 +11631,7 @@ var FunkitBrokerageProvider = ({
11303
11631
  }) => {
11304
11632
  const { apiKey } = useFunkitConfig();
11305
11633
  const isSandboxMode = useIsFunkitSandboxMode();
11306
- const minTransferRef = useRef13(useMinTransferLimits());
11634
+ const minTransferRef = useRef14(useMinTransferLimits());
11307
11635
  const ORG_ID = isSandboxMode ? STAGE_ORG_ID : PROD_ORG_ID;
11308
11636
  const PROJECT_ID = isSandboxMode ? STAGE_PROJECT_ID : PROD_PROJECT_ID;
11309
11637
  const [authConnections, setAuthConnections] = useState23(
@@ -11340,7 +11668,7 @@ var FunkitBrokerageProvider = ({
11340
11668
  setSelectedBrokerageAsset(null);
11341
11669
  }
11342
11670
  }, [bluvoClient.withdrawal?.status]);
11343
- const brokerageMinMax = useMemo17(() => {
11671
+ const brokerageMinMax = useMemo19(() => {
11344
11672
  if (!selectedBrokerageAsset || !isBrokerageAsset(selectedBrokerageAsset)) {
11345
11673
  return null;
11346
11674
  }
@@ -11414,7 +11742,7 @@ var useBluvoExchangeBalance = ({
11414
11742
  const deviceId = exchange && authorizedConnections?.[exchange] || "";
11415
11743
  const isEnabled = !!exchange && !!deviceId;
11416
11744
  const preferredChainId = checkoutItem?.initSettings.config.targetChain;
11417
- const { data, isLoading, isError } = useQuery10({
11745
+ const { data, isLoading, isError } = useQuery11({
11418
11746
  queryKey: ["bluvo-exchange-balance", deviceId, preferredChainId],
11419
11747
  queryFn: async () => {
11420
11748
  if (!exchange) {
@@ -11506,7 +11834,7 @@ var useBluvoSupportedExchanges = ({
11506
11834
  filterBy = ["live" /* Live */]
11507
11835
  }) => {
11508
11836
  const { authorizedConnections } = useFunkitBrokerageContext();
11509
- const exchangeOptions = useMemo18(
11837
+ const exchangeOptions = useMemo20(
11510
11838
  () => SUPPORTED_EXCHANGES.filter(
11511
11839
  ({ status: exchangeStatus }) => filterBy.includes(exchangeStatus)
11512
11840
  ).map(({ exchange, status }) => {
@@ -12219,7 +12547,7 @@ function useWithdrawalAssets(config) {
12219
12547
  },
12220
12548
  true
12221
12549
  );
12222
- const excludedTokenStr = useFlag(FlagKey12.WithdrawalExcludeTokens);
12550
+ const excludedTokenStr = useFlag(FlagKey11.WithdrawalExcludeTokens);
12223
12551
  const excludedTokens = safeJSONParse(excludedTokenStr);
12224
12552
  if (excludedTokens) {
12225
12553
  for (const chainIdStr of Object.keys(excludedTokens)) {
@@ -12511,10 +12839,10 @@ var WithdrawContent = ({
12511
12839
  recipientAddress
12512
12840
  );
12513
12841
  const isReceipentBlacklisted = isBlacklistedWithdrawAddress(recipientAddress);
12514
- const lastTargetAssetErrorRef = useRef14(null);
12515
- const lastQuoteErrorRef = useRef14(null);
12516
- const lastRiskyRecipientRef = useRef14(null);
12517
- const lastBlacklistedRecipientRef = useRef14(null);
12842
+ const lastTargetAssetErrorRef = useRef15(null);
12843
+ const lastQuoteErrorRef = useRef15(null);
12844
+ const lastRiskyRecipientRef = useRef15(null);
12845
+ const lastBlacklistedRecipientRef = useRef15(null);
12518
12846
  useEffect28(() => {
12519
12847
  if (!targetAssetFetchError) {
12520
12848
  return;
@@ -12610,7 +12938,7 @@ var WithdrawContent = ({
12610
12938
  selectedChainName,
12611
12939
  t
12612
12940
  });
12613
- const errorNotification = useMemo19(
12941
+ const errorNotification = useMemo21(
12614
12942
  () => getErrorNotification(
12615
12943
  quoteErrorObject,
12616
12944
  withdrawalError,
@@ -12941,7 +13269,7 @@ import { useAccount as useAccount5 } from "wagmi";
12941
13269
 
12942
13270
  // src/components/FunPayments/FunPaymentMethods.tsx
12943
13271
  import { BridgeCustomerStatus as BridgeCustomerStatus3 } from "@funkit/api-base";
12944
- import { FlagKey as FlagKey14, formatCurrencyAndStringify as formatCurrencyAndStringify4 } from "@funkit/utils";
13272
+ import { FlagKey as FlagKey13, formatCurrencyAndStringify as formatCurrencyAndStringify4 } from "@funkit/utils";
12945
13273
  import React79, { useEffect as useEffect29 } from "react";
12946
13274
 
12947
13275
  // src/domains/bridge.ts
@@ -13042,8 +13370,8 @@ import {
13042
13370
  createBridgeBankAccount,
13043
13371
  getBridgeKycLink
13044
13372
  } from "@funkit/api-base";
13045
- import { FlagKey as FlagKey13 } from "@funkit/utils";
13046
- import { useQuery as useQuery11, useQueryClient } from "@tanstack/react-query";
13373
+ import { FlagKey as FlagKey12 } from "@funkit/utils";
13374
+ import { useQuery as useQuery12, useQueryClient } from "@tanstack/react-query";
13047
13375
  import { useCallback as useCallback18 } from "react";
13048
13376
  var sepaCountryCode = [
13049
13377
  // EU countries that are part of SEPA
@@ -13122,15 +13450,15 @@ function useFiatEnabled() {
13122
13450
  const isEuSepaUser = sepaCountryCode.includes(
13123
13451
  userIpInfo?.alpha2 || "PLACEHOLDER"
13124
13452
  );
13125
- const isTokenTransferEnabled = useFlag(FlagKey13.EnableTokenTransfer);
13126
- const isFiatEnabled = useFlag(FlagKey13.EnableFiatDeposit);
13453
+ const isTokenTransferEnabled = useIsQRCodeTransferEnabled();
13454
+ const isFiatEnabled = useFlag(FlagKey12.EnableFiatDeposit);
13127
13455
  return isEuSepaUser && isTokenTransferEnabled && isFiatEnabled;
13128
13456
  }
13129
13457
  function useFrogAccounts() {
13130
13458
  const { apiKey } = useFunkitConfig();
13131
13459
  const { userInfo, isUserLoggedIn } = useGeneralWallet();
13132
13460
  const userId = userInfo.id;
13133
- const query = useQuery11({
13461
+ const query = useQuery12({
13134
13462
  queryKey: ["frogSubAccounts", userId],
13135
13463
  queryFn: () => fetchFrogAccounts(userId, { apiKey, logger }),
13136
13464
  enabled: userId !== "0x" && isUserLoggedIn,
@@ -13166,7 +13494,7 @@ function useVirtualFiatAccounts() {
13166
13494
  const bridgeSubAccount = frogSubAccounts?.find(
13167
13495
  (subAccount) => subAccount.subAccountType === "bridge"
13168
13496
  );
13169
- const query = useQuery11({
13497
+ const query = useQuery12({
13170
13498
  queryKey: ["useVirtualFiatAccounts", bridgeSubAccount?.guid],
13171
13499
  queryFn: () => fetchAllFiatAccounts(bridgeSubAccount, { apiKey, logger }),
13172
13500
  enabled: !!bridgeSubAccount,
@@ -13193,7 +13521,7 @@ function useMatchingVirtualFiatAccount(accounts) {
13193
13521
  }
13194
13522
  function useLoadKycLink(linkLoad) {
13195
13523
  const { apiKey } = useFunkitConfig();
13196
- const query = useQuery11({
13524
+ const query = useQuery12({
13197
13525
  queryKey: ["kycLink", linkLoad.guid],
13198
13526
  queryFn: async () => {
13199
13527
  if (linkLoad.kycLink) {
@@ -13276,7 +13604,7 @@ import {
13276
13604
  FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS3,
13277
13605
  FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7
13278
13606
  } from "@funkit/chains";
13279
- import { useMemo as useMemo20 } from "react";
13607
+ import { useMemo as useMemo22 } from "react";
13280
13608
  var processWalletAssets = (walletAssets, targetChain) => {
13281
13609
  if (!walletAssets) {
13282
13610
  return;
@@ -13296,6 +13624,10 @@ var processWalletAssets = (walletAssets, targetChain) => {
13296
13624
  if (!isCheckoutOnMainnet && targetChain !== asset.chainId) {
13297
13625
  return result;
13298
13626
  }
13627
+ const MAINNET_WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
13628
+ if (asset.contractAddress.toLowerCase() === MAINNET_WETH_ADDRESS && asset.chainId === "1") {
13629
+ asset.symbol = "WETH";
13630
+ }
13299
13631
  const chainSymbol = combineChainSymbolOrAddress({
13300
13632
  chainId: asset.chainId,
13301
13633
  symbolOrAddress: asset.symbol
@@ -13321,7 +13653,7 @@ var processWalletAssets = (walletAssets, targetChain) => {
13321
13653
  };
13322
13654
  function useWalletAssetHoldings(targetChain) {
13323
13655
  const { walletAssets, isLoading, totalWalletAssetsUsd } = useWalletAssets();
13324
- const processedAssets = useMemo20(
13656
+ const processedAssets = useMemo22(
13325
13657
  () => processWalletAssets(walletAssets, targetChain),
13326
13658
  [targetChain, walletAssets]
13327
13659
  );
@@ -14160,7 +14492,7 @@ import React76 from "react";
14160
14492
 
14161
14493
  // src/components/FunOptionBox/FunOptionBox.tsx
14162
14494
  import clsx15 from "clsx";
14163
- import React75, { useRef as useRef15 } from "react";
14495
+ import React75, { useRef as useRef16 } from "react";
14164
14496
 
14165
14497
  // src/components/FunOptionBox/FunOptionBox.css.ts
14166
14498
  var funOptionBoxStyle = { baseStyle: "_1rfcluh0", defaultBorder: "_1rsrm2f15a _1rsrm2f13f", transparentBorder: "_1rsrm2f18s _1rsrm2f13f _1rsrm2f1k", activeBorder: "_1rsrm2f13a", disabledOptionBorder: "_1rsrm2f154", defaultBackground: "_1rsrm2fzy _1rsrm2fmh", activeBackground: "_1rsrm2fzy _1rsrm2fqn _1rsrm2fqo" };
@@ -14186,7 +14518,7 @@ function FunOptionBox({
14186
14518
  ...boxProps
14187
14519
  }) {
14188
14520
  const isClickable = !!onClick && !disabled;
14189
- const ref = useRef15(null);
14521
+ const ref = useRef16(null);
14190
14522
  return /* @__PURE__ */ React75.createElement(
14191
14523
  Box,
14192
14524
  {
@@ -14633,12 +14965,12 @@ var TransferPaymentMethodItem = ({
14633
14965
  }) => {
14634
14966
  const { t } = useFunkitTranslation();
14635
14967
  const { textCustomizations } = useFunkitConfig();
14636
- const enableBitcoin = useFlag(FlagKey14.EnableBitcoin);
14637
- const bannerJson = useFlag(FlagKey14.NewTokenAssetSelectionBanner);
14968
+ const enableBitcoin = useFlag(FlagKey13.EnableBitcoin);
14969
+ const bannerJson = useFlag(FlagKey13.NewTokenAssetSelectionBanner);
14638
14970
  const bannerData = useSafeJSONParse(bannerJson);
14639
14971
  const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
14640
14972
  const depositAssetsJson = useFlag(
14641
- FlagKey14.TokenTransferSourceChainsAndAssets,
14973
+ FlagKey13.TokenTransferSourceChainsAndAssets,
14642
14974
  void 0,
14643
14975
  addBitcoinToSourceChainsAndAssetsMiddleware
14644
14976
  );
@@ -15187,7 +15519,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
15187
15519
 
15188
15520
  // src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
15189
15521
  import clsx18 from "clsx";
15190
- import React98, { useCallback as useCallback21, useEffect as useEffect33, useMemo as useMemo23, useState as useState31 } from "react";
15522
+ import React98, { useCallback as useCallback21, useEffect as useEffect33, useMemo as useMemo25, useState as useState31 } from "react";
15191
15523
 
15192
15524
  // src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
15193
15525
  import React88 from "react";
@@ -15239,13 +15571,13 @@ var selectWrapperStyle = "_163ehmk1";
15239
15571
  import {
15240
15572
  getCheckoutsByUserId as getCheckoutsByUserId2
15241
15573
  } from "@funkit/api-base";
15242
- import { FlagKey as FlagKey15 } from "@funkit/utils";
15243
- import { useQuery as useQuery12 } from "@tanstack/react-query";
15574
+ import { FlagKey as FlagKey14 } from "@funkit/utils";
15575
+ import { useQuery as useQuery13 } from "@tanstack/react-query";
15244
15576
  var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
15245
15577
  var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
15246
15578
  var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
15247
15579
  function useCheckoutRefreshInterval() {
15248
- const str = useFlag(FlagKey15.CheckoutNotificationsRefreshInterval);
15580
+ const str = useFlag(FlagKey14.CheckoutNotificationsRefreshInterval);
15249
15581
  return safeJSONParse(str) || { listRefresh: 50 * 1e3, itemRefresh: 5 * 1e3 };
15250
15582
  }
15251
15583
  var useRecentCheckouts = ({
@@ -15255,7 +15587,7 @@ var useRecentCheckouts = ({
15255
15587
  const { isUserLoggedIn, userInfo } = useGeneralWallet();
15256
15588
  const { apiKey } = useFunkitConfig();
15257
15589
  const { listRefresh } = useCheckoutRefreshInterval();
15258
- const query = useQuery12({
15590
+ const query = useQuery13({
15259
15591
  queryKey: ["checkouts", userInfo.id],
15260
15592
  queryFn: async () => {
15261
15593
  const checkouts = await getCheckoutsByUserId2({
@@ -15278,8 +15610,8 @@ var useRecentCheckouts = ({
15278
15610
  import {
15279
15611
  getDirectExecutionsByUserId as getDirectExecutionsByUserId2
15280
15612
  } from "@funkit/api-base";
15281
- import { useQuery as useQuery13 } from "@tanstack/react-query";
15282
- import { useMemo as useMemo21 } from "react";
15613
+ import { useQuery as useQuery14 } from "@tanstack/react-query";
15614
+ import { useMemo as useMemo23 } from "react";
15283
15615
  var isRecent2 = (de, timestampCutoff) => de.createdTimeMs > timestampCutoff;
15284
15616
  function mergeMultiStepDirectExecutions(directExecutions) {
15285
15617
  const directExecutionsByToTxId = {};
@@ -15323,7 +15655,7 @@ var useRecentDirectExecutions = ({
15323
15655
  const { userInfo, isUserLoggedIn } = useGeneralWallet();
15324
15656
  const { apiKey } = useFunkitConfig();
15325
15657
  const { listRefresh } = useCheckoutRefreshInterval();
15326
- const { data: directExecutions } = useQuery13({
15658
+ const { data: directExecutions } = useQuery14({
15327
15659
  queryKey: ["directExecutions", userInfo.id],
15328
15660
  queryFn: async () => {
15329
15661
  const directExecutions2 = await getDirectExecutionsByUserId2({
@@ -15336,7 +15668,7 @@ var useRecentDirectExecutions = ({
15336
15668
  refetchInterval: listRefresh,
15337
15669
  enabled: isUserLoggedIn && isVisible
15338
15670
  });
15339
- const data = useMemo21(() => {
15671
+ const data = useMemo23(() => {
15340
15672
  if (!directExecutions) {
15341
15673
  return directExecutions;
15342
15674
  }
@@ -15408,7 +15740,7 @@ import { Trans as Trans3 } from "react-i18next";
15408
15740
  import { CheckoutState as CheckoutState3 } from "@funkit/api-base";
15409
15741
  import { SOLANA_MAINNET_CHAIN_ID } from "@funkit/chains";
15410
15742
  import { formatAddress as formatAddress4, formatTimestamp } from "@funkit/utils";
15411
- import React92, { useState as useState28, useRef as useRef16, useEffect as useEffect31 } from "react";
15743
+ import React92, { useState as useState28, useRef as useRef17, useEffect as useEffect31 } from "react";
15412
15744
 
15413
15745
  // src/utils/checkoutHistory.ts
15414
15746
  var storageKey4 = "fkc-last-report-submit-time";
@@ -15642,7 +15974,7 @@ function OrderDetail({
15642
15974
  }) {
15643
15975
  const { t } = useFunkitTranslation();
15644
15976
  const [isExpanded, setIsExpanded] = useState28(false);
15645
- const contentRef = useRef16(null);
15977
+ const contentRef = useRef17(null);
15646
15978
  const isCheckoutItemLoaded = checkoutHistoryItem !== void 0;
15647
15979
  return /* @__PURE__ */ React92.createElement(Box, { ref: contentRef, paddingX: "12" }, /* @__PURE__ */ React92.createElement(
15648
15980
  Box,
@@ -15710,7 +16042,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f12m _1rsrm2f1f _1rsrm2f1c _1rsrm2fm4
15710
16042
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
15711
16043
  import clsx16 from "clsx";
15712
16044
  import { motion as motion7, useAnimate as useAnimate2 } from "motion/react";
15713
- import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as useRef17 } from "react";
16045
+ import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as useRef18 } from "react";
15714
16046
 
15715
16047
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
15716
16048
  var STATUS_SPINNER_BOTTOM_POSITION = -5;
@@ -16159,7 +16491,7 @@ var FunNotificationBannerIcon = ({
16159
16491
  )
16160
16492
  ]);
16161
16493
  }, [animate]);
16162
- const statusRef = useRef17(status);
16494
+ const statusRef = useRef18(status);
16163
16495
  useEffect32(() => {
16164
16496
  if (statusRef.current !== status) {
16165
16497
  if (statusRef.current === "processing" && status === "completed") {
@@ -16391,11 +16723,11 @@ var FunNotificationBanner = ({
16391
16723
  import {
16392
16724
  getCheckoutByDepositAddress as getCheckoutByDepositAddress2
16393
16725
  } from "@funkit/api-base";
16394
- import { useQuery as useQuery14 } from "@tanstack/react-query";
16726
+ import { useQuery as useQuery15 } from "@tanstack/react-query";
16395
16727
  var useCheckout = (depositAddress, initial) => {
16396
16728
  const { apiKey } = useFunkitConfig();
16397
16729
  const { itemRefresh } = useCheckoutRefreshInterval();
16398
- const query = useQuery14({
16730
+ const query = useQuery15({
16399
16731
  queryKey: ["checkouts", "checkout", depositAddress],
16400
16732
  queryFn: () => (
16401
16733
  // biome-ignore lint/style/noNonNullAssertion: already checked for null
@@ -16600,7 +16932,7 @@ import {
16600
16932
  formatTimestamp as formatTimestamp2,
16601
16933
  isTokenEquivalent
16602
16934
  } from "@funkit/utils";
16603
- import React96, { useCallback as useCallback20, useMemo as useMemo22, useRef as useRef18, useState as useState30 } from "react";
16935
+ import React96, { useCallback as useCallback20, useMemo as useMemo24, useRef as useRef19, useState as useState30 } from "react";
16604
16936
  import { createPortal as createPortal3 } from "react-dom";
16605
16937
 
16606
16938
  // src/hooks/useReceiveAmountLabel.ts
@@ -16661,7 +16993,7 @@ function FunDirectExecutionHistoryDetail({
16661
16993
  ]
16662
16994
  );
16663
16995
  const isWithdrawal = directExecution?.clientMetadata?.isWithdrawal;
16664
- const buttonProps = useMemo22(() => {
16996
+ const buttonProps = useMemo24(() => {
16665
16997
  if (!isLoaded) {
16666
16998
  return void 0;
16667
16999
  }
@@ -16807,7 +17139,7 @@ function DirectExecutionOrderDetail({
16807
17139
  }) {
16808
17140
  const { t } = useFunkitTranslation();
16809
17141
  const [isExpanded, setIsExpanded] = useState30(false);
16810
- const contentRef = useRef18(null);
17142
+ const contentRef = useRef19(null);
16811
17143
  return /* @__PURE__ */ React96.createElement(Box, { ref: contentRef, paddingX: "12" }, /* @__PURE__ */ React96.createElement(
16812
17144
  Box,
16813
17145
  {
@@ -17040,7 +17372,7 @@ var CheckoutNotifications = ({
17040
17372
  const [initialDirectExecutions, setInitialDirectExecutions] = useState31();
17041
17373
  const [closedNotifications, setClosedNotifications] = useState31([]);
17042
17374
  const { data: checkouts } = useRecentCheckouts({ isVisible });
17043
- const filterFunc = useMemo23(() => {
17375
+ const filterFunc = useMemo25(() => {
17044
17376
  return variant && {
17045
17377
  token_transfer: isTokenTransferDirectExecution,
17046
17378
  withdrawal: isWithdrawalDirectExecution
@@ -17062,19 +17394,19 @@ var CheckoutNotifications = ({
17062
17394
  }
17063
17395
  setInitialDirectExecutions(directExecutions);
17064
17396
  }, [initialDirectExecutions, directExecutions]);
17065
- const displayedDirectExecutions = useMemo23(() => {
17397
+ const displayedDirectExecutions = useMemo25(() => {
17066
17398
  if (!directExecutions) {
17067
17399
  return [];
17068
17400
  }
17069
17401
  return getUpdatedDirectExecutions(directExecutions, initialDirectExecutions).filter(({ txHash }) => !closedNotifications.includes(txHash)).slice(0, MAX_COUNT);
17070
17402
  }, [initialDirectExecutions, directExecutions, closedNotifications]);
17071
- const displayedCheckouts = useMemo23(() => {
17403
+ const displayedCheckouts = useMemo25(() => {
17072
17404
  if (!checkouts) {
17073
17405
  return [];
17074
17406
  }
17075
17407
  return getUpdatedCheckouts(checkouts, initialCheckouts).filter(({ depositAddr }) => !closedNotifications.includes(depositAddr)).slice(0, MAX_COUNT);
17076
17408
  }, [initialCheckouts, checkouts, closedNotifications]);
17077
- const combinedNotifications = useMemo23(() => {
17409
+ const combinedNotifications = useMemo25(() => {
17078
17410
  return [
17079
17411
  ...displayedDirectExecutions.map(
17080
17412
  (item) => ({ ...item, isDirectExecution: true })
@@ -17084,7 +17416,7 @@ var CheckoutNotifications = ({
17084
17416
  )
17085
17417
  ].sort((a, b) => b.createdTimeMs - a.createdTimeMs);
17086
17418
  }, [displayedDirectExecutions, displayedCheckouts]);
17087
- const displayedNotifications = useMemo23(() => {
17419
+ const displayedNotifications = useMemo25(() => {
17088
17420
  return isExpanded ? combinedNotifications : combinedNotifications.slice(0, COLLAPSED_COUNT);
17089
17421
  }, [isExpanded, combinedNotifications]);
17090
17422
  const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
@@ -17241,13 +17573,13 @@ import React106 from "react";
17241
17573
  import React105 from "react";
17242
17574
 
17243
17575
  // src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
17244
- import React100, { useCallback as useCallback22, useMemo as useMemo24, useState as useState32 } from "react";
17576
+ import React100, { useCallback as useCallback22, useMemo as useMemo26, useState as useState32 } from "react";
17245
17577
  import { createPortal as createPortal5 } from "react-dom";
17246
17578
 
17247
17579
  // src/hooks/useFunListeners.ts
17248
- import { useEffect as useEffect34, useRef as useRef19 } from "react";
17580
+ import { useEffect as useEffect34, useRef as useRef20 } from "react";
17249
17581
  function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
17250
- const activeIntervalRef = useRef19();
17582
+ const activeIntervalRef = useRef20();
17251
17583
  const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
17252
17584
  useEffect34(() => {
17253
17585
  if (activate) {
@@ -17308,7 +17640,7 @@ function FunCheckoutHistoryDetail({
17308
17640
  isActiveCheckout
17309
17641
  ]
17310
17642
  );
17311
- const primaryButtonProps = useMemo24(() => {
17643
+ const primaryButtonProps = useMemo26(() => {
17312
17644
  if (!isCheckoutLoaded) {
17313
17645
  return void 0;
17314
17646
  }
@@ -17395,7 +17727,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
17395
17727
 
17396
17728
  // src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
17397
17729
  import { sendSupportMessage } from "@funkit/api-base";
17398
- import React104, { useEffect as useEffect35, useMemo as useMemo25, useRef as useRef20, useState as useState33 } from "react";
17730
+ import React104, { useEffect as useEffect35, useMemo as useMemo27, useRef as useRef21, useState as useState33 } from "react";
17399
17731
  import { createPortal as createPortal6 } from "react-dom";
17400
17732
 
17401
17733
  // src/components/FunInput/FunTextAreaInput.tsx
@@ -17579,13 +17911,13 @@ function FunCheckoutHistoryHelp({
17579
17911
  );
17580
17912
  const [descriptionInput, setDescriptionInput] = useState33("");
17581
17913
  const [errorMessage, setErrorMessage] = useState33();
17582
- const isEmailInputValid = useMemo25(() => {
17914
+ const isEmailInputValid = useMemo27(() => {
17583
17915
  return validateEmailString(emailInput);
17584
17916
  }, [emailInput]);
17585
17917
  const [processStage, setProcessStage] = useState33(
17586
17918
  0 /* INPUT */
17587
17919
  );
17588
- const wrapperRef = useRef20(null);
17920
+ const wrapperRef = useRef21(null);
17589
17921
  useEffect35(() => wrapperRef.current?.scrollIntoView(), []);
17590
17922
  const handleShowErrorMessage = (message, timeMs = FIVE_SECONDS_MS) => {
17591
17923
  setErrorMessage(message);
@@ -17777,6 +18109,12 @@ function FunCheckoutHistoryContent({
17777
18109
  onHelp: onHelp2
17778
18110
  }) {
17779
18111
  const { checkoutHistoryInfo, directExecutionInfo } = useFunkitPostCheckoutInternal(depositAddress);
18112
+ const { apiKey } = useFunkitConfig();
18113
+ const { checkoutItem } = useCheckoutContext();
18114
+ const lighterNativeDeposit = isLighterNativeFlow(
18115
+ apiKey,
18116
+ checkoutItem?.initSettings.config
18117
+ );
17780
18118
  const { directExecution } = useDirectExecutionInfoPolling({
17781
18119
  initDirectExecution: directExecutionInfo
17782
18120
  });
@@ -17789,6 +18127,7 @@ function FunCheckoutHistoryContent({
17789
18127
  directExecution,
17790
18128
  isActiveCheckout,
17791
18129
  onClose,
18130
+ dangerousCustomDelayedAutoTriggerCutoff: lighterNativeDeposit ? LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF : void 0,
17792
18131
  onAnimationComplete
17793
18132
  }
17794
18133
  );
@@ -17975,7 +18314,7 @@ import React108, {
17975
18314
  createContext as createContext14,
17976
18315
  useCallback as useCallback24,
17977
18316
  useContext as useContext14,
17978
- useMemo as useMemo26,
18317
+ useMemo as useMemo28,
17979
18318
  useState as useState35
17980
18319
  } from "react";
17981
18320
  var ActivityTraversalContext = createContext14({
@@ -18018,7 +18357,7 @@ var ActivityTraversalProvider = ({
18018
18357
  setSelectedPurchaseInitView(void 0);
18019
18358
  setReturnView(void 0);
18020
18359
  }, []);
18021
- const contextValue = useMemo26(
18360
+ const contextValue = useMemo28(
18022
18361
  () => ({
18023
18362
  selectedPurchaseId,
18024
18363
  selectedPurchaseInitView,
@@ -18047,12 +18386,12 @@ import React217, { useCallback as useCallback46, useState as useState69 } from "
18047
18386
 
18048
18387
  // src/components/FunCheckoutModalHeightAnimationWrapper/FunCheckoutModalHeightAnimationWrapper.tsx
18049
18388
  import { motion as motion15 } from "motion/react";
18050
- import React204, { useEffect as useEffect51, useRef as useRef27, useState as useState66 } from "react";
18389
+ import React204, { useEffect as useEffect51, useRef as useRef28, useState as useState66 } from "react";
18051
18390
 
18052
18391
  // src/modals/CheckoutModal/stepTransition.ts
18053
18392
  import {
18054
18393
  useCallback as useCallback44,
18055
- useRef as useRef26,
18394
+ useRef as useRef27,
18056
18395
  useState as useState65
18057
18396
  } from "react";
18058
18397
 
@@ -18123,11 +18462,11 @@ function useAnimatedNavigation(callback) {
18123
18462
  }
18124
18463
 
18125
18464
  // src/hooks/useCheckoutQuoteNotification.ts
18126
- import { useMemo as useMemo27 } from "react";
18465
+ import { useMemo as useMemo29 } from "react";
18127
18466
  function useCheckoutQuoteNotification() {
18128
18467
  const { clearCheckoutQuoteMessages } = useQuoteContext();
18129
18468
  const { quoteErrorMessage, quoteStepMessage } = useQuoteContext();
18130
- const quoteNotification = useMemo27(() => {
18469
+ const quoteNotification = useMemo29(() => {
18131
18470
  if (quoteErrorMessage !== "") {
18132
18471
  return {
18133
18472
  messageType: "error",
@@ -19565,7 +19904,7 @@ import {
19565
19904
  DirectExecutionType as DirectExecutionType2,
19566
19905
  RelayExecutionStatus as RelayExecutionStatus3
19567
19906
  } from "@funkit/api-base";
19568
- import React130, { useCallback as useCallback27, useEffect as useEffect36, useMemo as useMemo28, useState as useState39 } from "react";
19907
+ import React130, { useCallback as useCallback27, useEffect as useEffect36, useMemo as useMemo30, useState as useState39 } from "react";
19569
19908
  var overrideAssetsData = (de, checkoutItem) => {
19570
19909
  return {
19571
19910
  ...de,
@@ -19640,7 +19979,7 @@ var BrokerageSuccess = ({
19640
19979
  }) => {
19641
19980
  const { t } = useFunkitTranslation();
19642
19981
  const [startTime] = useState39(() => Date.now());
19643
- const filterFunc = useMemo28(() => {
19982
+ const filterFunc = useMemo30(() => {
19644
19983
  return (execution) => execution.createdTimeMs > startTime && execution.listenerInfo?.status === RelayExecutionStatus3.SUCCESS;
19645
19984
  }, [startTime]);
19646
19985
  const { data: directExecutions } = useRecentDirectExecutions({
@@ -19660,7 +19999,7 @@ var BrokerageSuccess = ({
19660
19999
  setDirectExecution(getFakeDirectExecution(checkoutItem, walletAddress));
19661
20000
  }
19662
20001
  }, [directExecution, checkoutItem, setCheckoutProgress]);
19663
- const latestDirectExecution = useMemo28(() => {
20002
+ const latestDirectExecution = useMemo30(() => {
19664
20003
  return directExecutions?.[0];
19665
20004
  }, [directExecutions?.[0]?.txHash]);
19666
20005
  useEffect36(() => {
@@ -19715,7 +20054,7 @@ var BrokerageSuccess = ({
19715
20054
  // string
19716
20055
  directExecution?.txHash
19717
20056
  ]);
19718
- const customTextConfigSteps = useMemo28(() => {
20057
+ const customTextConfigSteps = useMemo30(() => {
19719
20058
  if (exchangeType) {
19720
20059
  return {
19721
20060
  ...getDefaultTextConfigSteps(t),
@@ -20772,7 +21111,7 @@ function CheckoutHelp({
20772
21111
  }
20773
21112
 
20774
21113
  // src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
20775
- import React156, { useEffect as useEffect43, useMemo as useMemo34, useState as useState51 } from "react";
21114
+ import React156, { useEffect as useEffect43, useMemo as useMemo36, useState as useState51 } from "react";
20776
21115
  import { createPortal as createPortal14 } from "react-dom";
20777
21116
 
20778
21117
  // src/providers/UserPresenceContext.tsx
@@ -20818,9 +21157,9 @@ import React145 from "react";
20818
21157
  import React144, { useState as useState44 } from "react";
20819
21158
 
20820
21159
  // src/hooks/useInterval.ts
20821
- import { useEffect as useEffect39, useRef as useRef21 } from "react";
21160
+ import { useEffect as useEffect39, useRef as useRef22 } from "react";
20822
21161
  function useInterval(callback, delay) {
20823
- const savedCallback = useRef21(callback);
21162
+ const savedCallback = useRef22(callback);
20824
21163
  useIsomorphicLayoutEffect(() => {
20825
21164
  savedCallback.current = callback;
20826
21165
  }, [callback]);
@@ -20878,7 +21217,7 @@ import {
20878
21217
  } from "@funkit/utils";
20879
21218
  import NumberFlow from "@number-flow/react";
20880
21219
  import { motion as motion9 } from "motion/react";
20881
- import React147, { useMemo as useMemo30 } from "react";
21220
+ import React147, { useMemo as useMemo32 } from "react";
20882
21221
 
20883
21222
  // src/consts/design.ts
20884
21223
  var mapFontLineHeightToNumberFlowHeight = {
@@ -20891,7 +21230,7 @@ var defaultTransition = "all 150ms cubic-bezier(0.3, 0, 0.06, 1)";
20891
21230
  // src/components/FunAssetAvatar/FunAssetAvatar.tsx
20892
21231
  import { isNotNullish as isNotNullish4 } from "@funkit/utils";
20893
21232
  import clsx20 from "clsx";
20894
- import React146, { useMemo as useMemo29 } from "react";
21233
+ import React146, { useMemo as useMemo31 } from "react";
20895
21234
 
20896
21235
  // src/components/FunAssetAvatar/FunAssetAvatar.css.ts
20897
21236
  var chainContainerStyle = "uwrdc22 _1rsrm2f19 _1rsrm2fa _1rsrm2f4 _1rsrm2f4o";
@@ -20912,7 +21251,7 @@ function FunAssetAvatar({
20912
21251
  isChainIconHidden = false
20913
21252
  }) {
20914
21253
  const chainMetadata = chainMetadataById[Number.parseInt((chainId || "").toString())] || null;
20915
- const finalAssetSrc = useMemo29(() => {
21254
+ const finalAssetSrc = useMemo31(() => {
20916
21255
  const normalizedTicker = assetTicker?.toUpperCase() || "";
20917
21256
  const defaultSrc = ASSET_LOGO_SRCS[normalizedTicker];
20918
21257
  if (prioritizeDefaults) {
@@ -21031,7 +21370,7 @@ function PaymentAmountSummary({
21031
21370
  const showYouWillPaySummary = !isExactSameToken && !isCardPayment || hasStakingToken;
21032
21371
  const feeBreakdown = quote?.baseQuote.metadata?.feeBreakdown;
21033
21372
  const swapImpactPct = checkoutConfig?.generateActionsParams ? feeBreakdown?.swapImpact + feeBreakdown?.appFeePercent || 0 : 0;
21034
- const receiveTokenUsdAmount = useMemo30(() => {
21373
+ const receiveTokenUsdAmount = useMemo32(() => {
21035
21374
  if (!quote) {
21036
21375
  return void 0;
21037
21376
  }
@@ -21163,24 +21502,16 @@ function useCheckoutItemDisplay({
21163
21502
  });
21164
21503
  }
21165
21504
 
21166
- // src/utils/customer.ts
21167
- function isKatanaEarnFlow({
21168
- apiKey,
21169
- checkoutConfig
21170
- }) {
21171
- return isKatanaCustomer(apiKey) && !!checkoutConfig && isCheckoutPostActionRequired(checkoutConfig);
21172
- }
21173
-
21174
21505
  // src/modals/CheckoutModal/ConfirmationStep/CheckoutPrimaryInfo.tsx
21175
21506
  import React150 from "react";
21176
21507
 
21177
21508
  // src/components/AnimatedDollarValue/AnimatedDollarValue.tsx
21178
21509
  import NumberFlow2 from "@number-flow/react";
21179
- import React148, { forwardRef as forwardRef4, useMemo as useMemo31 } from "react";
21510
+ import React148, { forwardRef as forwardRef4, useMemo as useMemo33 } from "react";
21180
21511
  var AnimatedDollarValue = forwardRef4((props, ref) => {
21181
21512
  const { value, dynamicMinFractionDigits, ...restProps } = props;
21182
21513
  const minimumFractionDigits = typeof value === "number" && !Number.isInteger(value) || !dynamicMinFractionDigits ? 2 : 0;
21183
- const formatOptions = useMemo31(
21514
+ const formatOptions = useMemo33(
21184
21515
  () => ({
21185
21516
  style: "currency",
21186
21517
  currency: "USD",
@@ -21329,7 +21660,7 @@ function CheckoutPrimaryInfo({
21329
21660
  }
21330
21661
 
21331
21662
  // src/modals/CheckoutModal/ConfirmationStep/DisclaimerText.tsx
21332
- import React151, { useMemo as useMemo32 } from "react";
21663
+ import React151, { useMemo as useMemo34 } from "react";
21333
21664
  import { Trans as Trans8 } from "react-i18next";
21334
21665
  var FunLinkButtonComponent = ({
21335
21666
  children,
@@ -21404,7 +21735,7 @@ var DisclaimerText = ({
21404
21735
  };
21405
21736
  function useCardDisclaimer(checkoutItem, finalConvertedAssetName) {
21406
21737
  const { t } = useFunkitTranslation();
21407
- const cardDisclaimer = useMemo32(() => {
21738
+ const cardDisclaimer = useMemo34(() => {
21408
21739
  if (!checkoutItem || !finalConvertedAssetName) {
21409
21740
  return null;
21410
21741
  }
@@ -21611,14 +21942,14 @@ import { useAccount as useAccount6, useSendTransaction, useWriteContract } from
21611
21942
 
21612
21943
  // src/utils/isMainnetUsdt.ts
21613
21944
  import { isTokenEquivalent as isTokenEquivalent3 } from "@funkit/utils";
21614
- import { mainnet as mainnet7 } from "viem/chains";
21945
+ import { mainnet as mainnet9 } from "viem/chains";
21615
21946
  var USDT_MAINNET_ADDRESS = "0xdAC17F958D2ee523a2206206994597C13D831ec7";
21616
21947
  function isMainnetUsdt(chainId, address) {
21617
21948
  return isTokenEquivalent3({
21618
21949
  firstTokenAddress: address,
21619
21950
  firstTokenChainId: chainId.toString(),
21620
21951
  secondTokenAddress: USDT_MAINNET_ADDRESS,
21621
- secondTokenChainId: mainnet7.id.toString()
21952
+ secondTokenChainId: mainnet9.id.toString()
21622
21953
  });
21623
21954
  }
21624
21955
 
@@ -21891,7 +22222,7 @@ function usePostCheckout({
21891
22222
  }
21892
22223
 
21893
22224
  // src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
21894
- import { useCallback as useCallback34, useEffect as useEffect42, useMemo as useMemo33, useRef as useRef22, useState as useState50 } from "react";
22225
+ import { useCallback as useCallback34, useEffect as useEffect42, useMemo as useMemo35, useRef as useRef23, useState as useState50 } from "react";
21895
22226
 
21896
22227
  // src/hooks/useCountdown.tsx
21897
22228
  import React155 from "react";
@@ -22089,8 +22420,8 @@ function useQuoteRefresh({
22089
22420
  refreshIntervalSeconds
22090
22421
  }) {
22091
22422
  const { setCheckoutQuote, isQuoting, quoteErrorMessage, quoteStepMessage } = useQuoteContext();
22092
- const preloadedQuoteRef = useRef22();
22093
- const quoteCallbackRef = useRef22();
22423
+ const preloadedQuoteRef = useRef23();
22424
+ const quoteCallbackRef = useRef23();
22094
22425
  const [isPendingRefresh, setIsPendingRefresh] = useState50(false);
22095
22426
  const {
22096
22427
  isSourceAssetConfirming,
@@ -22154,7 +22485,7 @@ function useQuoteRefresh({
22154
22485
  },
22155
22486
  [isOnHold, restartCountdown, setCheckoutQuote, triggerAssetConfirm]
22156
22487
  );
22157
- const quoteError = useMemo33(() => {
22488
+ const quoteError = useMemo35(() => {
22158
22489
  if (quoteErrorMessage && !isQuoting) {
22159
22490
  return {
22160
22491
  message: quoteErrorMessage,
@@ -22292,7 +22623,7 @@ function ConfirmationStep({
22292
22623
  })
22293
22624
  );
22294
22625
  const error = confirmationError ?? postCheckoutError ?? quoteError;
22295
- const stepMessage = useMemo34(() => {
22626
+ const stepMessage = useMemo36(() => {
22296
22627
  if (initialQuoteStep) {
22297
22628
  return initialQuoteStep;
22298
22629
  }
@@ -22350,7 +22681,7 @@ function ConfirmationStep({
22350
22681
  const isQuoteLoading = isInitialQuoting || isQuoting;
22351
22682
  const isStepLoading = isInitialQuoting || isContinuing || isRefreshing;
22352
22683
  const customRecipient = checkoutItem?.initSettings.config.customRecipient;
22353
- const showKatanaBridgeAlert = useMemo34(() => {
22684
+ const showKatanaBridgeAlert = useMemo36(() => {
22354
22685
  const relayQuoteMetadata = latestQuote?.baseQuote?.metadata;
22355
22686
  if (!relayQuoteMetadata) {
22356
22687
  return false;
@@ -22581,7 +22912,7 @@ import React173, { useEffect as useEffect45 } from "react";
22581
22912
 
22582
22913
  // src/hooks/queries/useMeldCurrencies.ts
22583
22914
  import { getMeldSupportedFiat } from "@funkit/api-base";
22584
- import { useQuery as useQuery15 } from "@tanstack/react-query";
22915
+ import { useQuery as useQuery16 } from "@tanstack/react-query";
22585
22916
  var getPriority = (currencyCode) => {
22586
22917
  if (currencyCode === "USD") {
22587
22918
  return 0;
@@ -22593,7 +22924,7 @@ var getPriority = (currencyCode) => {
22593
22924
  };
22594
22925
  var useMeldCurrencies = (isEnabled = true) => {
22595
22926
  const { apiKey } = useFunkitConfig();
22596
- const query = useQuery15({
22927
+ const query = useQuery16({
22597
22928
  queryKey: ["meld", "currencies"],
22598
22929
  queryFn: async () => {
22599
22930
  if (!apiKey) {
@@ -22619,10 +22950,10 @@ var useMeldCurrencies = (isEnabled = true) => {
22619
22950
 
22620
22951
  // src/hooks/queries/useMeldDefaultCurrency.ts
22621
22952
  import { getMeldDefaultFiat } from "@funkit/api-base";
22622
- import { useQuery as useQuery16 } from "@tanstack/react-query";
22953
+ import { useQuery as useQuery17 } from "@tanstack/react-query";
22623
22954
 
22624
22955
  // src/hooks/queries/useMeldCryptoCurrencyCode.ts
22625
- import { FlagKey as FlagKey16 } from "@funkit/utils";
22956
+ import { FlagKey as FlagKey15 } from "@funkit/utils";
22626
22957
  import { arbitrum as arbitrum4, base as base6, polygon as polygon5 } from "viem/chains";
22627
22958
  var ARB_USDC = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase();
22628
22959
  var POLYGON_USDC = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359".toLowerCase();
@@ -22655,7 +22986,7 @@ function useMeldCryptoCurrencyCode() {
22655
22986
  return mappedCurrency;
22656
22987
  }
22657
22988
  function useIsMeldEnabled() {
22658
- const meldEnabled = useFlag(FlagKey16.EnableMeldPayment);
22989
+ const meldEnabled = useFlag(FlagKey15.EnableMeldPayment);
22659
22990
  const meldCurrencyCode = useMeldCryptoCurrencyCode();
22660
22991
  return meldEnabled && !!meldCurrencyCode;
22661
22992
  }
@@ -22665,7 +22996,7 @@ var useMeldDefaultCurrency = (paymentMethod) => {
22665
22996
  const { apiKey } = useFunkitConfig();
22666
22997
  const { userIpInfo } = useFunkitUserIp();
22667
22998
  const enableMeld = useIsMeldEnabled();
22668
- const query = useQuery16({
22999
+ const query = useQuery17({
22669
23000
  queryKey: ["meld", "defaultCurrency", paymentMethod],
22670
23001
  queryFn: async () => {
22671
23002
  if (!apiKey) {
@@ -22690,7 +23021,7 @@ var useMeldDefaultCurrency = (paymentMethod) => {
22690
23021
  // src/hooks/queries/useMeldLimits.ts
22691
23022
  import { getMeldFiatLimits } from "@funkit/api-base";
22692
23023
  import { formatCurrencyAndStringify as formatCurrencyAndStringify6 } from "@funkit/utils";
22693
- import { useQuery as useQuery18 } from "@tanstack/react-query";
23024
+ import { useQuery as useQuery19 } from "@tanstack/react-query";
22694
23025
 
22695
23026
  // src/consts/meld.ts
22696
23027
  var MELD_MIN_LIMIT_BUFFER = 5;
@@ -22722,9 +23053,9 @@ var getExchangeRate = (currency, currencyExchangeRates, bipsMarkup = DEFAULT_BIP
22722
23053
 
22723
23054
  // src/hooks/useFiatExchangeRates.ts
22724
23055
  import { getFiatExchangeRates } from "@funkit/api-base";
22725
- import { useQuery as useQuery17 } from "@tanstack/react-query";
23056
+ import { useQuery as useQuery18 } from "@tanstack/react-query";
22726
23057
  function useFiatExchangeRates(enabled = true) {
22727
- const { data, isLoading, error } = useQuery17({
23058
+ const { data, isLoading, error } = useQuery18({
22728
23059
  queryKey: ["fiatExchangeRates"],
22729
23060
  queryFn: () => getFiatExchangeRates(),
22730
23061
  refetchOnMount: false,
@@ -22769,7 +23100,7 @@ var useMeldLimits = (isEnabled = true) => {
22769
23100
  const { userIpInfo } = useFunkitUserIp();
22770
23101
  const cryptoCurrency = useMeldCryptoCurrencyCode();
22771
23102
  const countryCode = userIpInfo?.alpha2;
22772
- const query = useQuery18({
23103
+ const query = useQuery19({
22773
23104
  queryKey: ["meld", "limits", countryCode, cryptoCurrency],
22774
23105
  queryFn: async () => {
22775
23106
  if (!apiKey || !countryCode) {
@@ -22852,23 +23183,23 @@ var useMeldLimitError = (amount, fiatCurrency) => {
22852
23183
 
22853
23184
  // src/modals/CheckoutModal/InputAmount/InputAmountLoaded.tsx
22854
23185
  import {
22855
- FlagKey as FlagKey19,
23186
+ FlagKey as FlagKey17,
22856
23187
  formatCryptoAndStringify as formatCryptoAndStringify5,
22857
23188
  formatCurrencyAndStringify as formatCurrencyAndStringify9,
22858
23189
  isTokenEquivalent as isTokenEquivalent4,
22859
23190
  round as round2
22860
23191
  } from "@funkit/utils";
22861
23192
  import { motion as motion11 } from "motion/react";
22862
- import React171, { useMemo as useMemo36 } from "react";
23193
+ import React171, { useMemo as useMemo38 } from "react";
22863
23194
 
22864
23195
  // src/components/AnimatedWidthWrapper/AnimatedWidthWrapper.tsx
22865
23196
  import { motion as motion10 } from "motion/react";
22866
23197
  import React159 from "react";
22867
- import { useEffect as useEffect44, useRef as useRef23, useState as useState52 } from "react";
23198
+ import { useEffect as useEffect44, useRef as useRef24, useState as useState52 } from "react";
22868
23199
  function AnimatedWidthWrapper({ children }) {
22869
- const containerRef = useRef23(null);
22870
- const animationFrameRef = useRef23(null);
22871
- const resizeObserverRef = useRef23(null);
23200
+ const containerRef = useRef24(null);
23201
+ const animationFrameRef = useRef24(null);
23202
+ const resizeObserverRef = useRef24(null);
22872
23203
  const [width, setWidth] = useState52("auto");
22873
23204
  useEffect44(() => {
22874
23205
  if (containerRef.current) {
@@ -22941,7 +23272,7 @@ var CurrencySelector = ({
22941
23272
  };
22942
23273
 
22943
23274
  // src/components/SourcePaymentMethodItem/SourcePaymentMethodItem.tsx
22944
- import { FlagKey as FlagKey17 } from "@funkit/utils";
23275
+ import { FlagKey as FlagKey16 } from "@funkit/utils";
22945
23276
  import clsx21 from "clsx";
22946
23277
  import { useAnimate as useAnimate3 } from "motion/react";
22947
23278
  import React162 from "react";
@@ -23548,7 +23879,7 @@ var SourcePaymentMethodItem = ({
23548
23879
  }
23549
23880
  ];
23550
23881
  const isMeldEnabled = useIsMeldEnabled();
23551
- const isBrokerageEnabled = useFlag(FlagKey17.EnableBluvoBrokerage);
23882
+ const isBrokerageEnabled = useFlag(FlagKey16.EnableBluvoBrokerage);
23552
23883
  const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
23553
23884
  if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isMeldEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
23554
23885
  return false;
@@ -23905,7 +24236,7 @@ function InputAmountLayout({
23905
24236
  }
23906
24237
 
23907
24238
  // src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
23908
- import { FlagKey as FlagKey18, clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify7 } from "@funkit/utils";
24239
+ import { clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify7 } from "@funkit/utils";
23909
24240
  import React167 from "react";
23910
24241
  var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
23911
24242
  function deduplicateArray(arr) {
@@ -23913,10 +24244,7 @@ function deduplicateArray(arr) {
23913
24244
  }
23914
24245
  function useFiatAmountOptions(currency) {
23915
24246
  const isMeldEnabled = useIsMeldEnabled();
23916
- const currencyQuickOptionStr = useFlag(FlagKey18.MeldQuickOptions);
23917
- const currencyQuickOption = safeJSONParse(
23918
- currencyQuickOptionStr
23919
- );
24247
+ const currencyQuickOption = useDynamicConfig("meldquickoptions");
23920
24248
  const { data: meldLimit, isPending } = useMeldLimit(currency);
23921
24249
  if (isPending || !meldLimit || !isMeldEnabled) {
23922
24250
  return [];
@@ -23924,9 +24252,7 @@ function useFiatAmountOptions(currency) {
23924
24252
  const minimumAmount = meldLimit.minimumAmount;
23925
24253
  const maximumAmount = meldLimit.maximumAmount;
23926
24254
  return deduplicateArray(
23927
- currencyQuickOption?.[currency ?? "USD"]?.map(
23928
- (val) => clamp2(val, minimumAmount, maximumAmount)
23929
- ) || []
24255
+ currencyQuickOption?.[currency ?? "USD"]?.map((val) => clamp2(val, minimumAmount, maximumAmount)) || []
23930
24256
  );
23931
24257
  }
23932
24258
  var QuickOptions = ({
@@ -23975,9 +24301,9 @@ var QuickOptions = ({
23975
24301
  // src/modals/CheckoutModal/InputAmount/useAmountInput.ts
23976
24302
  import {
23977
24303
  useCallback as useCallback36,
23978
- useMemo as useMemo35,
24304
+ useMemo as useMemo37,
23979
24305
  useReducer as useReducer3,
23980
- useRef as useRef24,
24306
+ useRef as useRef25,
23981
24307
  useState as useState54
23982
24308
  } from "react";
23983
24309
 
@@ -24290,11 +24616,11 @@ function useAmountInput(options) {
24290
24616
  quickOptions,
24291
24617
  paymentMethodInfo
24292
24618
  } = options;
24293
- const derivedState = useMemo35(
24619
+ const derivedState = useMemo37(
24294
24620
  () => getDerivedState(state, checkoutConfig.targetAssetTicker),
24295
24621
  [state, checkoutConfig]
24296
24622
  );
24297
- const inputRef = useRef24(null);
24623
+ const inputRef = useRef25(null);
24298
24624
  const { inputValue, locale } = state;
24299
24625
  const { inputDecimals, inputAffix, placeholder } = derivedState;
24300
24626
  const { measureText } = useTextMeasurer(inputRef);
@@ -24851,8 +25177,9 @@ function createMoonpayMeldQuote(quote) {
24851
25177
  };
24852
25178
  }
24853
25179
  function withMoonpayMeldQuote(quotes) {
24854
- if (!quotes) {
24855
- return quotes;
25180
+ if (!quotes || quotes.length === 0) {
25181
+ logger.error("withMoonpayMeldQuote:error", "No quotes could be found.");
25182
+ return void 0;
24856
25183
  }
24857
25184
  const topQuote = quotes[0];
24858
25185
  const moonpay = createMoonpayMeldQuote(topQuote);
@@ -24895,7 +25222,7 @@ var useMeldLink = (sourceAmount, sourceCurrencyCode = "USD") => {
24895
25222
 
24896
25223
  // src/modals/CheckoutModal/MeldQuotes/useMeldQuotes.tsx
24897
25224
  import { getMeldQuotes } from "@funkit/api-base";
24898
- import { useQuery as useQuery19 } from "@tanstack/react-query";
25225
+ import { useQuery as useQuery20 } from "@tanstack/react-query";
24899
25226
  import { useDebounce as useDebounce2 } from "use-debounce";
24900
25227
  var DEBOUNCE_DELAY = 500;
24901
25228
  var COUNTDOWN_INTERVAL_SEC = 60;
@@ -24908,7 +25235,7 @@ var useMeldQuotes = (sourceAmount, fiatCurrency, meldEnabled = true) => {
24908
25235
  const destinationCurrencyCode = useMeldCryptoCurrencyCode();
24909
25236
  const isPolymarket = isPolymarketCustomer(apiKey);
24910
25237
  const sourceCurrencyCode = fiatCurrency || "USD";
24911
- const query = useQuery19({
25238
+ const query = useQuery20({
24912
25239
  queryKey: [
24913
25240
  "meld",
24914
25241
  "quotes",
@@ -24968,7 +25295,7 @@ import {
24968
25295
  katanaChain
24969
25296
  } from "@funkit/chains";
24970
25297
  import { useCallback as useCallback37, useState as useState55 } from "react";
24971
- import { mainnet as mainnet8, mantle, zksync as zksync2 } from "viem/chains";
25298
+ import { mainnet as mainnet10, mantle, zksync as zksync2 } from "viem/chains";
24972
25299
  import { getAssetErc20ByChainAndSymbol as getAssetErc20ByChainAndSymbol2 } from "@funkit/api-base";
24973
25300
  var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
24974
25301
  if (!checkoutItem?.initSettings.config.targetChain) {
@@ -25002,7 +25329,7 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
25002
25329
  sourceTokenAddress = NATIVE_TOKEN;
25003
25330
  sourceTokenChainId = moonpayChainId;
25004
25331
  } else {
25005
- sourceTokenChainId = isNyOrTxOrVi ? mainnet8.id.toString() : moonpayChainId;
25332
+ sourceTokenChainId = isNyOrTxOrVi ? mainnet10.id.toString() : moonpayChainId;
25006
25333
  if (isTargetAssetEthOrWeth) {
25007
25334
  sourceTokenTicker = "ETH" /* ETH */;
25008
25335
  sourceTokenAddress = NATIVE_TOKEN;
@@ -25216,7 +25543,7 @@ function InputAmountLoaded({
25216
25543
  textCustomizations
25217
25544
  }) {
25218
25545
  const { t } = useFunkitTranslation();
25219
- const maxCheckoutUsdString = useFlag(FlagKey19.MaxCheckoutUsd);
25546
+ const maxCheckoutUsdString = useFlag(FlagKey17.MaxCheckoutUsd);
25220
25547
  const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
25221
25548
  const paymentMethodInfo = modalState.paymentMethodInfo;
25222
25549
  const { quote: manuallySelectedQuote } = modalState;
@@ -25275,7 +25602,7 @@ function InputAmountLoaded({
25275
25602
  onNext,
25276
25603
  onClose
25277
25604
  });
25278
- const error = useMemo36(() => {
25605
+ const error = useMemo38(() => {
25279
25606
  if (isCardCheckout) {
25280
25607
  const meldError = getMeldError();
25281
25608
  if (meldError) {
@@ -25677,7 +26004,7 @@ function YouPayYouReceiveWrapper({
25677
26004
 
25678
26005
  // src/modals/CheckoutModal/InputAmount/InputAmountLoading.tsx
25679
26006
  import { formatCryptoAndStringify as formatCryptoAndStringify6 } from "@funkit/utils";
25680
- import React172, { useMemo as useMemo37 } from "react";
26007
+ import React172, { useMemo as useMemo39 } from "react";
25681
26008
  function InputAmountLoading({
25682
26009
  modalState,
25683
26010
  sourceHoldingError,
@@ -25690,7 +26017,7 @@ function InputAmountLoading({
25690
26017
  const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
25691
26018
  const targetAssetAmount = checkoutItem?.initSettings.config.targetAssetAmount;
25692
26019
  const targetAssetTicker = checkoutItem?.initSettings.config.targetAssetTicker;
25693
- const error = useMemo37(() => {
26020
+ const error = useMemo39(() => {
25694
26021
  if (sourceHoldingError) {
25695
26022
  return {
25696
26023
  message: /* @__PURE__ */ React172.createElement("div", null, t("inputAmount.unableToRetrieveBalance"), " "),
@@ -25770,7 +26097,7 @@ function InputAmountLoading({
25770
26097
  }
25771
26098
 
25772
26099
  // src/modals/CheckoutModal/InputAmount/useAvailableBalanceForCheckout.ts
25773
- import { useMemo as useMemo38 } from "react";
26100
+ import { useMemo as useMemo40 } from "react";
25774
26101
  function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetChainId, assetSymbol) {
25775
26102
  const paymentMethod = paymentMethodInfo.paymentMethod;
25776
26103
  const isBrokerage = paymentMethod === "brokerage" /* BROKERAGE */;
@@ -25785,7 +26112,7 @@ function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetC
25785
26112
  ["virtual_bank" /* VIRTUAL_BANK */]: null
25786
26113
  }[paymentMethod];
25787
26114
  const isLoading = isBrokerage ? isLoadingBrokerageBalance : isLoadingWalletAssetHoldings;
25788
- const holdingItem = useMemo38(() => {
26115
+ const holdingItem = useMemo40(() => {
25789
26116
  if (!assetSymbol || !holdings) {
25790
26117
  return;
25791
26118
  }
@@ -25912,15 +26239,15 @@ function InputAmount(props) {
25912
26239
  import React176, { useEffect as useEffect46 } from "react";
25913
26240
 
25914
26241
  // src/hooks/usePaymentSources.ts
25915
- import { FlagKey as FlagKey20, isNotNullish as isNotNullish5 } from "@funkit/utils";
26242
+ import { FlagKey as FlagKey18, isNotNullish as isNotNullish5 } from "@funkit/utils";
25916
26243
  function usePaymentMethodEnablement({
25917
26244
  checkoutConfig
25918
26245
  }) {
25919
26246
  const { apiKey } = useFunkitConfig();
25920
- const isTokenTransferFlagEnabled = useFlag(FlagKey20.EnableTokenTransfer);
26247
+ const isTokenTransferFlagEnabled = useIsQRCodeTransferEnabled();
25921
26248
  const isFiatFlagEnabled = useFiatEnabled();
25922
26249
  const isMeldFlagEnabled = useIsMeldEnabled();
25923
- const isBrokerageFlagEnabled = useFlag(FlagKey20.EnableBluvoBrokerage);
26250
+ const isBrokerageFlagEnabled = useFlag(FlagKey18.EnableBluvoBrokerage);
25924
26251
  const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
25925
26252
  const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
25926
26253
  const isTokenTransferEnabled = isTokenTransferFlagEnabled && !isKatanaEarnFlowAction;
@@ -26317,7 +26644,7 @@ function LoadingAccount({
26317
26644
 
26318
26645
  // src/modals/CheckoutModal/MeldCurrencySelect/MeldCurrencySelect.tsx
26319
26646
  import clsx22 from "clsx";
26320
- import React177, { useMemo as useMemo39, useState as useState56 } from "react";
26647
+ import React177, { useMemo as useMemo41, useState as useState56 } from "react";
26321
26648
 
26322
26649
  // src/modals/CheckoutModal/MeldCurrencySelect/currenciesWithMultipleCountries.ts
26323
26650
  var currenciesWithMultipleCountries = {
@@ -26377,7 +26704,7 @@ function MeldCurrencySelect({
26377
26704
  const [selectedCurrency, setSelectedCurrency] = useState56(
26378
26705
  defaultCurrency
26379
26706
  );
26380
- const filteredOptions = useMemo39(() => {
26707
+ const filteredOptions = useMemo41(() => {
26381
26708
  const newOptions = data?.filter(
26382
26709
  ({ name, currencyCode }) => currencyCode.toLowerCase().includes(query.toLowerCase()) || name.toLowerCase().includes(query.toLowerCase())
26383
26710
  ) ?? [];
@@ -26595,9 +26922,9 @@ import {
26595
26922
  hyperEvmChain as hyperEvmChain5
26596
26923
  } from "@funkit/chains";
26597
26924
  import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent5 } from "@funkit/utils";
26598
- import React182, { useEffect as useEffect47, useMemo as useMemo41, useState as useState57 } from "react";
26925
+ import React182, { useEffect as useEffect47, useMemo as useMemo44, useState as useState57 } from "react";
26599
26926
  import { createPortal as createPortal18 } from "react-dom";
26600
- import { mainnet as mainnet9 } from "viem/chains";
26927
+ import { mainnet as mainnet11 } from "viem/chains";
26601
26928
 
26602
26929
  // src/components/Dropdown/ReceiveTokenDropdown.tsx
26603
26930
  import React180 from "react";
@@ -26693,7 +27020,7 @@ var ReceiveTokenDropdown = ({
26693
27020
  // src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
26694
27021
  import React181 from "react";
26695
27022
  import { Trans as Trans11 } from "react-i18next";
26696
- import { FlagKey as FlagKey21 } from "@funkit/utils";
27023
+ import { FlagKey as FlagKey19 } from "@funkit/utils";
26697
27024
  var FunLinkButtonComponent2 = ({
26698
27025
  children,
26699
27026
  onClick,
@@ -26713,9 +27040,9 @@ var NewTokenDepositAlert = ({
26713
27040
  onClick
26714
27041
  }) => {
26715
27042
  const { t } = useFunkitTranslation();
26716
- const alertJson = useFlag(FlagKey21.NewTokenAssetSelectionBanner);
27043
+ const alertJson = useFlag(FlagKey19.NewTokenAssetSelectionBanner);
26717
27044
  const alertData = useSafeJSONParse(alertJson);
26718
- const isTokenTransferEnabled = useFlag(FlagKey21.EnableTokenTransfer);
27045
+ const isTokenTransferEnabled = useIsQRCodeTransferEnabled();
26719
27046
  if (!alertData || !isTokenTransferEnabled) {
26720
27047
  return null;
26721
27048
  }
@@ -26750,13 +27077,13 @@ var NewTokenDepositAlert = ({
26750
27077
 
26751
27078
  // src/hooks/useAllowedAssets.ts
26752
27079
  import { getAllowedAssets } from "@funkit/api-base";
26753
- import { useQuery as useQuery20 } from "@tanstack/react-query";
26754
- import { useCallback as useCallback39, useMemo as useMemo40 } from "react";
27080
+ import { useQuery as useQuery21 } from "@tanstack/react-query";
27081
+ import { useCallback as useCallback39, useMemo as useMemo42 } from "react";
26755
27082
  function useAllowedAssets() {
26756
27083
  const { apiKey } = useFunkitConfig();
26757
27084
  const { checkoutItem } = useCheckoutContext();
26758
27085
  const isRelayEnabled = useSourceTokenRelayEnabled();
26759
- const { data: allowedAssets, isLoading } = useQuery20({
27086
+ const { data: allowedAssets, isLoading } = useQuery21({
26760
27087
  queryKey: ["getAllowedAssets", apiKey],
26761
27088
  queryFn: () => getAllowedAssets({ apiKey, logger }),
26762
27089
  refetchOnMount: false,
@@ -26765,7 +27092,7 @@ function useAllowedAssets() {
26765
27092
  staleTime: 5 * 60 * 1e3,
26766
27093
  gcTime: Number.POSITIVE_INFINITY
26767
27094
  });
26768
- const tokens = useMemo40(() => {
27095
+ const tokens = useMemo42(() => {
26769
27096
  if (!allowedAssets) {
26770
27097
  return {};
26771
27098
  }
@@ -26798,6 +27125,32 @@ function useAllowedAssets() {
26798
27125
  };
26799
27126
  }
26800
27127
 
27128
+ // src/hooks/useDynamicRoutes.ts
27129
+ import { useMemo as useMemo43 } from "react";
27130
+ import { DYNAMIC_ROUTES, initDynamicRouting } from "@funkit/fun-relay";
27131
+ var toMutable = (obj) => {
27132
+ return obj;
27133
+ };
27134
+ var useDynamicRoutes = (_dynamicRoutingId) => {
27135
+ const dynamicRoutingConfig = useDynamicConfig("dynamicrouting");
27136
+ const { checkoutItem } = useCheckoutContext();
27137
+ const config = checkoutItem?.initSettings.config;
27138
+ const dynamicRoutingId = _dynamicRoutingId || config?.dynamicRoutingId;
27139
+ const findPath = useMemo43(() => {
27140
+ if (!dynamicRoutingId) {
27141
+ return () => null;
27142
+ }
27143
+ const indexedDynamicRoutes = initDynamicRouting(
27144
+ DYNAMIC_ROUTES,
27145
+ toMutable(dynamicRoutingConfig)
27146
+ );
27147
+ return indexedDynamicRoutes[dynamicRoutingId].findPath;
27148
+ }, [dynamicRoutingId, dynamicRoutingConfig]);
27149
+ return {
27150
+ findPath
27151
+ };
27152
+ };
27153
+
26801
27154
  // src/modals/CheckoutModal/SelectAsset.tsx
26802
27155
  var ASSET_ITEM_HEIGHT = 52;
26803
27156
  var VISIBLE_ITEMS_COUNT = 5;
@@ -26840,11 +27193,13 @@ function useEnrichedAccountHoldings({
26840
27193
  accountHoldings,
26841
27194
  targetAssetInfo
26842
27195
  }) {
27196
+ const { apiKey } = useFunkitConfig();
26843
27197
  const { t } = useFunkitTranslation();
26844
27198
  const { isAllowed, isLoading } = useAllowedAssets();
26845
27199
  const { walletAddress } = useGeneralWallet();
26846
27200
  const minTransferLimits = useMinTransferLimits();
26847
- const enrichedAccountHoldings = useMemo41(() => {
27201
+ const { isLoading: isLighterLoading, lighterNativeNeeded } = useLighterNativeFlowNeeded(apiKey, checkoutConfig);
27202
+ const enrichedAccountHoldings = useMemo44(() => {
26848
27203
  if (!checkoutConfig) {
26849
27204
  return [];
26850
27205
  }
@@ -26869,6 +27224,7 @@ function useEnrichedAccountHoldings({
26869
27224
  asset.pickedChainId,
26870
27225
  asset.tokenAddress
26871
27226
  ),
27227
+ isLighterNative: !!lighterNativeNeeded,
26872
27228
  t
26873
27229
  });
26874
27230
  return { asset, usableForCheckout };
@@ -26881,9 +27237,10 @@ function useEnrichedAccountHoldings({
26881
27237
  walletAddress,
26882
27238
  targetAssetInfo,
26883
27239
  minTransferLimits,
27240
+ lighterNativeNeeded,
26884
27241
  t
26885
27242
  ]);
26886
- return { enrichedAccountHoldings, isLoading };
27243
+ return { enrichedAccountHoldings, isLoading: isLoading || isLighterLoading };
26887
27244
  }
26888
27245
  function useAssetOptions({
26889
27246
  enrichedAccountHoldings,
@@ -26893,7 +27250,8 @@ function useAssetOptions({
26893
27250
  }) {
26894
27251
  const { apiKey } = useFunkitConfig();
26895
27252
  const { t } = useFunkitTranslation();
26896
- const assetOptions = useMemo41(() => {
27253
+ const { findPath } = useDynamicRoutes();
27254
+ const assetOptions = useMemo44(() => {
26897
27255
  return enrichedAccountHoldings.filter(
26898
27256
  ({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
26899
27257
  ).map(({ asset, usableForCheckout }) => {
@@ -26915,7 +27273,12 @@ function useAssetOptions({
26915
27273
  badgeText = reason;
26916
27274
  } else if (!isKnown) {
26917
27275
  badgeText = t("badge.unknown");
26918
- } else if (isTreatedAsNativeToken(apiKey, asset, dynamicTargetAssetCandidates)) {
27276
+ } else if (isTreatedAsNativeToken(
27277
+ apiKey,
27278
+ asset,
27279
+ dynamicTargetAssetCandidates,
27280
+ findPath
27281
+ )) {
26919
27282
  badgeText = "Native";
26920
27283
  if (showsNativeTokensOnTop(apiKey)) {
26921
27284
  priority = 1e3;
@@ -26944,7 +27307,8 @@ function useAssetOptions({
26944
27307
  enrichedAccountHoldings,
26945
27308
  chainId,
26946
27309
  userSelectedTargetAsset,
26947
- dynamicTargetAssetCandidates
27310
+ dynamicTargetAssetCandidates,
27311
+ findPath
26948
27312
  ]);
26949
27313
  return assetOptions;
26950
27314
  }
@@ -26990,7 +27354,19 @@ function AccountSelectAsset({
26990
27354
  const { t } = useFunkitTranslation();
26991
27355
  const [selectedChainId, setSelectedChainId] = useState57();
26992
27356
  const { apiKey, textCustomizations, uiCustomizations } = useFunkitConfig();
26993
- const { checkoutItem, updateSourceAsset, updateTargetAsset } = useCheckoutContext();
27357
+ const {
27358
+ checkoutItem,
27359
+ updateSourceAsset,
27360
+ updateTargetAsset,
27361
+ applyDynamicRouting
27362
+ } = useCheckoutContext();
27363
+ const { walletAddress } = useGeneralWallet();
27364
+ const isLighter = isLighterxyzCustomer(apiKey);
27365
+ const { mainAccountIndex } = useLighterAccounts({
27366
+ address: walletAddress || "0x",
27367
+ isEnabled: isLighter && !!walletAddress && walletAddress !== "0x"
27368
+ });
27369
+ const { findPath } = useDynamicRoutes();
26994
27370
  const { setSelectedBrokerageAsset } = useFunkitBrokerageContext();
26995
27371
  const [explicitlySelectedChainTokenSymbol, setSelectedChainTokenSymbol] = useState57("");
26996
27372
  const checkoutConfig = checkoutItem?.initSettings.config;
@@ -27013,6 +27389,37 @@ function AccountSelectAsset({
27013
27389
  });
27014
27390
  const showTargetAssetSelection = isTargetAssetSelectable && uiCustomizations.selectAssetScreen.showTargetAssetSelection;
27015
27391
  const handleTargetAssetUpdate = (tokenItem) => {
27392
+ const dynamicPath = findPath({
27393
+ chainId: tokenItem.pickedChainId,
27394
+ tokenAddress: tokenItem.tokenAddress
27395
+ });
27396
+ if (dynamicPath) {
27397
+ if (!walletAddress) {
27398
+ logger.error("handleTargetAssetUpdate_missingWalletAddress", {
27399
+ tokenItem,
27400
+ dynamicPath
27401
+ });
27402
+ return;
27403
+ }
27404
+ if (!mainAccountIndex) {
27405
+ logger.error("handleTargetAssetUpdate_missingMainAccountIndex", {
27406
+ tokenItem,
27407
+ dynamicPath
27408
+ });
27409
+ }
27410
+ applyDynamicRouting({
27411
+ targetAsset: dynamicPath.path.targetAsset,
27412
+ targetChain: dynamicPath.path.targetChain,
27413
+ targetAssetTicker: dynamicPath.path.targetAssetTicker,
27414
+ iconSrc: dynamicPath.path.iconSrc,
27415
+ generateActionsParams: walletAddress ? dynamicPath.path.generateActionsParams?.(walletAddress) : void 0,
27416
+ customRecipient: dynamicPath.path.getCustomRecipient?.({
27417
+ address: walletAddress,
27418
+ l2Address: mainAccountIndex
27419
+ })
27420
+ });
27421
+ return;
27422
+ }
27016
27423
  if (!isTargetAssetSelectable) {
27017
27424
  return;
27018
27425
  }
@@ -27059,7 +27466,7 @@ function AccountSelectAsset({
27059
27466
  handleTargetAssetUpdate(tokenItem);
27060
27467
  onFinish();
27061
27468
  });
27062
- const selectedChainTokenSymbol = useMemo41(() => {
27469
+ const selectedChainTokenSymbol = useMemo44(() => {
27063
27470
  if (explicitlySelectedChainTokenSymbol) {
27064
27471
  const assetExists = assetOptions.find(
27065
27472
  ({ asset }) => asset.chainSymbolKey === explicitlySelectedChainTokenSymbol
@@ -27093,11 +27500,32 @@ function AccountSelectAsset({
27093
27500
  const isAssetsEmpty = assetOptions.length === 0;
27094
27501
  const isDisabled = isAssetsEmpty || !selectedChainTokenSymbol || isLoading;
27095
27502
  const onBalanceTopUpSwitch = checkoutItem?.initSettings.onBalanceTopUpSwitch;
27503
+ const showLighterEthMessage = isLighterEthSpot(apiKey, checkoutConfig) && assetOptions.every((asset) => asset.isDisabled);
27096
27504
  const assetList = isLoading ? /* @__PURE__ */ React182.createElement(FunAssetLoading, { count: 5 }) : isAssetsEmpty ? /* @__PURE__ */ React182.createElement(
27097
27505
  FunNoResults,
27098
27506
  {
27099
- text: t("checkout.noAvailableTokensMessage"),
27100
27507
  title: t("checkout.noAvailableTokens"),
27508
+ text: t("checkout.noAvailableTokensMessage"),
27509
+ variant: "actionable",
27510
+ actionButton: onBalanceTopUpSwitch ? /* @__PURE__ */ React182.createElement(
27511
+ FunButton,
27512
+ {
27513
+ type: "tertiary",
27514
+ onClick: () => {
27515
+ if (onBalanceTopUpSwitch) {
27516
+ onBalanceTopUpSwitch();
27517
+ }
27518
+ onClose?.();
27519
+ },
27520
+ title: t("checkout.topUpWallet")
27521
+ }
27522
+ ) : void 0
27523
+ }
27524
+ ) : showLighterEthMessage ? /* @__PURE__ */ React182.createElement(
27525
+ FunNoResults,
27526
+ {
27527
+ title: t("checkout.insufficientEth"),
27528
+ text: t("checkout.insufficientEthMessage"),
27101
27529
  variant: "actionable",
27102
27530
  actionButton: onBalanceTopUpSwitch ? /* @__PURE__ */ React182.createElement(
27103
27531
  FunButton,
@@ -27322,10 +27750,17 @@ function SelectAsset({
27322
27750
  }
27323
27751
  ));
27324
27752
  }
27325
- function isTreatedAsNativeToken(apiKey, asset, dynamicTargetAssetCandidates) {
27753
+ function isTreatedAsNativeToken(apiKey, asset, dynamicTargetAssetCandidates, findDynamicPath) {
27754
+ const dynamicPath = findDynamicPath({
27755
+ chainId: asset.pickedChainId,
27756
+ tokenAddress: asset.tokenAddress
27757
+ });
27758
+ if (dynamicPath) {
27759
+ return dynamicPath.badge === "NATIVE";
27760
+ }
27326
27761
  if (isEtherealCustomer(apiKey)) {
27327
27762
  if (isTokenEquivalent5({
27328
- firstTokenChainId: mainnet9.id.toString(),
27763
+ firstTokenChainId: mainnet11.id.toString(),
27329
27764
  firstTokenAddress: "0x90d2af7d622ca3141efa4d8f1f24d86e5974cc8f",
27330
27765
  // eUSDe (Ethereum)
27331
27766
  secondTokenChainId: asset.pickedChainId,
@@ -27751,7 +28186,7 @@ function SourceChange({
27751
28186
 
27752
28187
  // src/modals/CheckoutModal/TransferToken/TransferToken.tsx
27753
28188
  import { motion as motion13, useAnimationControls as useAnimationControls3 } from "motion/react";
27754
- import React196, { useRef as useRef25, useState as useState62 } from "react";
28189
+ import React196, { useRef as useRef26, useState as useState62 } from "react";
27755
28190
  import { createPortal as createPortal20 } from "react-dom";
27756
28191
 
27757
28192
  // src/components/CopyAddress/CopyInputDisplayedAddress.tsx
@@ -27868,12 +28303,12 @@ function CopyInputDisplayedAddress(props) {
27868
28303
  }
27869
28304
 
27870
28305
  // src/components/FunInfoBanner/ChainInfoBanners.tsx
27871
- import { FlagKey as FlagKey22 } from "@funkit/utils";
28306
+ import { FlagKey as FlagKey20 } from "@funkit/utils";
27872
28307
  import React186 from "react";
27873
28308
  var ChainInfoBanners = ({
27874
28309
  chainId
27875
28310
  }) => {
27876
- const chainInfoBanners = useFlag(FlagKey22.ChainInfoBanners);
28311
+ const chainInfoBanners = useFlag(FlagKey20.ChainInfoBanners);
27877
28312
  const chainInfoBannersData = useSafeJSONParse(chainInfoBanners) ?? {};
27878
28313
  try {
27879
28314
  const chainBanners = chainInfoBannersData[chainId] ?? [];
@@ -27895,7 +28330,7 @@ var ChainInfoBanners = ({
27895
28330
 
27896
28331
  // src/components/QRCode/QRCode.tsx
27897
28332
  import QRCodeUtil from "qrcode";
27898
- import React187, { useMemo as useMemo42 } from "react";
28333
+ import React187, { useMemo as useMemo45 } from "react";
27899
28334
  var generateMatrix = (value, errorCorrectionLevel) => {
27900
28335
  const { data } = QRCodeUtil.create(value, { errorCorrectionLevel }).modules;
27901
28336
  const sqrt = Math.sqrt(data.length);
@@ -27923,7 +28358,7 @@ function QRCode({
27923
28358
  }) {
27924
28359
  const { activeTheme } = useActiveTheme();
27925
28360
  const size = sizeProp - Number.parseInt(outsidePadding, 10) * 2;
27926
- const dots = useMemo42(() => {
28361
+ const dots = useMemo45(() => {
27927
28362
  const dots2 = [];
27928
28363
  const matrix = generateMatrix(uri, ecl);
27929
28364
  const cellSize = size / matrix.length;
@@ -28489,7 +28924,7 @@ function TransferToken({
28489
28924
  const { checkoutItem } = useCheckoutContext();
28490
28925
  const checkoutConfig = checkoutItem?.initSettings.config;
28491
28926
  const { transferToken } = modalState;
28492
- const disclaimerTextWrapperRef = useRef25(null);
28927
+ const disclaimerTextWrapperRef = useRef26(null);
28493
28928
  const { transferInit } = useCheckoutTransferInit();
28494
28929
  const {
28495
28930
  assets,
@@ -29157,7 +29592,7 @@ var FiatAccountDetail = {
29157
29592
 
29158
29593
  // src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
29159
29594
  import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
29160
- import React203, { useCallback as useCallback43, useEffect as useEffect50, useMemo as useMemo43, useState as useState64 } from "react";
29595
+ import React203, { useCallback as useCallback43, useEffect as useEffect50, useMemo as useMemo46, useState as useState64 } from "react";
29161
29596
  function useIframeListener(listeners) {
29162
29597
  const handleMessage = useCallback43(
29163
29598
  (event) => {
@@ -29211,7 +29646,7 @@ function KycIframe({
29211
29646
  const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
29212
29647
  const { data: kycLink, isLoading: isLinkLoading } = useLoadKycLink(modalState);
29213
29648
  const [iframeLoading, setIframeLoading] = useState64(true);
29214
- const listeners = useMemo43(
29649
+ const listeners = useMemo46(
29215
29650
  () => ({
29216
29651
  load: () => {
29217
29652
  logger.info("KYC iframe loaded");
@@ -29428,7 +29863,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
29428
29863
  );
29429
29864
  const { animation, animate } = useAnimatedNavigation(void 0);
29430
29865
  const [stateHistory, setHistory] = useState65([]);
29431
- const prevStep = useRef26(null);
29866
+ const prevStep = useRef27(null);
29432
29867
  const hasHistoryEntry = stateHistory.length > 1;
29433
29868
  const onNext = useCallback44(
29434
29869
  (payload) => {
@@ -29566,9 +30001,9 @@ function FunCheckoutModalHeightAnimationWrapper({
29566
30001
  children,
29567
30002
  checkoutStep
29568
30003
  }) {
29569
- const containerRef = useRef27(null);
29570
- const animationFrameRef = useRef27(null);
29571
- const resizeObserverRef = useRef27(null);
30004
+ const containerRef = useRef28(null);
30005
+ const animationFrameRef = useRef28(null);
30006
+ const resizeObserverRef = useRef28(null);
29572
30007
  const [height, setHeight] = useState66("auto");
29573
30008
  useEffect51(() => {
29574
30009
  if (containerRef.current) {
@@ -29628,7 +30063,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
29628
30063
  import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
29629
30064
  import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
29630
30065
  import clsx24 from "clsx";
29631
- import React213, { useEffect as useEffect52, useMemo as useMemo44, useRef as useRef28, useState as useState68 } from "react";
30066
+ import React213, { useEffect as useEffect52, useMemo as useMemo47, useRef as useRef29, useState as useState68 } from "react";
29632
30067
  import { Virtuoso } from "react-virtuoso";
29633
30068
  import { useAccount as useAccount7 } from "wagmi";
29634
30069
 
@@ -30162,8 +30597,8 @@ function Home({
30162
30597
  }) {
30163
30598
  const { t } = useFunkitTranslation();
30164
30599
  const [selectedView, setSelectedView] = useState68(defaultHomeTab);
30165
- const checkoutsListRef = useRef28(null);
30166
- const virtuosoParentRef = useRef28(null);
30600
+ const checkoutsListRef = useRef29(null);
30601
+ const virtuosoParentRef = useRef29(null);
30167
30602
  const account = useAccount7();
30168
30603
  useCheckoutHistoryListener();
30169
30604
  const { userInfo, handleLogout } = useGeneralWallet();
@@ -30175,7 +30610,7 @@ function Home({
30175
30610
  const virtuosoDiv = virtuosoParentRef.current?.firstChild;
30176
30611
  virtuosoDiv?.classList.add(animateVirtuosoInClass);
30177
30612
  }, []);
30178
- const AssetsList = useMemo44(() => {
30613
+ const AssetsList = useMemo47(() => {
30179
30614
  if (walletAssets && !Object.keys(walletAssets).length) {
30180
30615
  return /* @__PURE__ */ React213.createElement(EmptyTabAlert, null);
30181
30616
  }
@@ -30202,7 +30637,7 @@ function Home({
30202
30637
  }
30203
30638
  ));
30204
30639
  }, [walletAssets]);
30205
- const CheckoutsList = useMemo44(() => {
30640
+ const CheckoutsList = useMemo47(() => {
30206
30641
  if (checkoutHistoryList.length === 0 && isCheckoutHistoryInited) {
30207
30642
  return /* @__PURE__ */ React213.createElement(EmptyTabAlert, null);
30208
30643
  }
@@ -30922,10 +31357,10 @@ function ChainModal({ onClose, open }) {
30922
31357
  // src/modals/CheckoutModal/FunCheckoutModal.tsx
30923
31358
  import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST3 } from "@funkit/chains";
30924
31359
  import { LogLevel, initializeRelayClient } from "@funkit/fun-relay";
30925
- import React231, { useRef as useRef29 } from "react";
31360
+ import React231, { useRef as useRef30 } from "react";
30926
31361
 
30927
31362
  // src/components/FunConnectOptions/FunConnectOptions.tsx
30928
- import React229, { useCallback as useCallback47, useMemo as useMemo45, useState as useState72 } from "react";
31363
+ import React229, { useCallback as useCallback47, useMemo as useMemo48, useState as useState72 } from "react";
30929
31364
 
30930
31365
  // src/components/FunConnectOptions/FunConnectResultStep.tsx
30931
31366
  import React224, { useEffect as useEffect53 } from "react";
@@ -31385,7 +31820,7 @@ function FunConnectOptions({
31385
31820
  }
31386
31821
  }
31387
31822
  };
31388
- const stepComponent = useMemo45(() => {
31823
+ const stepComponent = useMemo48(() => {
31389
31824
  switch (step) {
31390
31825
  case 0 /* SIGNIN_PRIMARY */:
31391
31826
  return /* @__PURE__ */ React229.createElement(
@@ -31529,7 +31964,7 @@ function FunCheckoutModalInner({
31529
31964
  depositAddress
31530
31965
  });
31531
31966
  };
31532
- const animationCallbackRef = useRef29(null);
31967
+ const animationCallbackRef = useRef30(null);
31533
31968
  const handleAnimationCompleteRegister = (cb) => {
31534
31969
  animationCallbackRef.current = cb;
31535
31970
  };
@@ -31550,12 +31985,18 @@ function FunCheckoutModalInner({
31550
31985
  const isInitialStep = modalState.step === "loading_account" /* LOADING_ACCOUNT */;
31551
31986
  const isBlocked = isUserGeoblocked || modalState.isBlocked;
31552
31987
  const hasBack = hasHistoryEntry && !disableBack;
31988
+ const { apiKey } = useFunkitConfig();
31989
+ const lighterNativeDeposit = isLighterNativeFlow(
31990
+ apiKey,
31991
+ checkoutItem.initSettings.config
31992
+ );
31553
31993
  const checkoutConfig = hideModalTitleMetaIfTrue(
31554
31994
  checkoutItem.initSettings.config,
31555
31995
  HIDE_MODAL_META_TITLE_AND_DIVIDER.includes(modalState.step)
31556
31996
  );
31557
31997
  const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
31558
31998
  depositAddress: checkoutItem.depositAddress ?? void 0,
31999
+ isLighterNativeDeposit: lighterNativeDeposit,
31559
32000
  isActiveCheckout: true,
31560
32001
  isCheckoutDetailView: modalState.step === "checkout_complete" /* CHECKOUT_COMPLETE */,
31561
32002
  paddingTop: 0,
@@ -31774,7 +32215,7 @@ function ModalProvider({ children }) {
31774
32215
  return /* @__PURE__ */ React233.createElement(
31775
32216
  ModalContext.Provider,
31776
32217
  {
31777
- value: useMemo46(
32218
+ value: useMemo49(
31778
32219
  () => ({
31779
32220
  accountModalOpen,
31780
32221
  accountModalTab,
@@ -31907,7 +32348,8 @@ var FunkitCheckoutContext = createContext17({
31907
32348
  setCompletedTimestamp: () => void 0,
31908
32349
  withdrawalItem: null,
31909
32350
  initNewWithdrawal: () => "",
31910
- updateWithdrawalSourceAssetAmount: () => void 0
32351
+ updateWithdrawalSourceAssetAmount: () => void 0,
32352
+ applyDynamicRouting: () => void 0
31911
32353
  });
31912
32354
  function assertCheckoutItem(checkoutItem) {
31913
32355
  if (!checkoutItem) {
@@ -31924,6 +32366,9 @@ function FunkitCheckoutProvider({ children }) {
31924
32366
  const { logEvent } = useTrack();
31925
32367
  const [activeCheckout, setActiveCheckout] = useState74(null);
31926
32368
  const [activeWithdrawal, setActiveWithdrawal] = useState74(null);
32369
+ const udaParams = useUDAParams(
32370
+ activeCheckout?.initSettings.config?.dynamicRoutingId
32371
+ );
31927
32372
  const [checkoutsProgress, setCheckoutsProgress] = useState74({});
31928
32373
  const getCheckoutProgress = useCallback49(
31929
32374
  (checkoutId) => {
@@ -32171,7 +32616,8 @@ function FunkitCheckoutProvider({ children }) {
32171
32616
  config: checkoutItem.initSettings.config,
32172
32617
  walletAddress
32173
32618
  }),
32174
- apiKey: funkitConfig.apiKey
32619
+ apiKey: funkitConfig.apiKey,
32620
+ udaParams
32175
32621
  });
32176
32622
  if (!queryParams) {
32177
32623
  const missingQueryParamsError = new Error(
@@ -32217,7 +32663,8 @@ function FunkitCheckoutProvider({ children }) {
32217
32663
  updateActiveCheckout,
32218
32664
  walletAddress,
32219
32665
  getWithdrawalDirectExecution,
32220
- logEvent
32666
+ logEvent,
32667
+ udaParams
32221
32668
  ]
32222
32669
  );
32223
32670
  const startRegularCheckout = useCallback49(
@@ -32362,6 +32809,27 @@ function FunkitCheckoutProvider({ children }) {
32362
32809
  });
32363
32810
  }
32364
32811
  );
32812
+ const applyDynamicRouting = useEffectEvent(
32813
+ (path) => {
32814
+ updateActiveCheckout((checkoutItem) => {
32815
+ const config = checkoutItem.initSettings.config;
32816
+ return {
32817
+ initSettings: {
32818
+ ...checkoutItem.initSettings,
32819
+ config: {
32820
+ ...config,
32821
+ targetAsset: path.targetAsset,
32822
+ targetChain: path.targetChain,
32823
+ targetAssetTicker: path.targetAssetTicker ?? config.targetAssetTicker,
32824
+ iconSrc: path.iconSrc ?? config.iconSrc,
32825
+ generateActionsParams: path.generateActionsParams,
32826
+ customRecipient: path.customRecipient
32827
+ }
32828
+ }
32829
+ };
32830
+ });
32831
+ }
32832
+ );
32365
32833
  const updateModalTitleMeta = useEffectEvent((newMeta) => {
32366
32834
  updateActiveCheckout((checkoutItem) => {
32367
32835
  const config = checkoutItem.initSettings.config;
@@ -32418,7 +32886,8 @@ function FunkitCheckoutProvider({ children }) {
32418
32886
  withdrawalItem: activeWithdrawal,
32419
32887
  initNewWithdrawal,
32420
32888
  updateCustomRecipient,
32421
- updateWithdrawalSourceAssetAmount
32889
+ updateWithdrawalSourceAssetAmount,
32890
+ applyDynamicRouting
32422
32891
  };
32423
32892
  return /* @__PURE__ */ React234.createElement(FunkitCheckoutContext.Provider, { value: contextValue }, children);
32424
32893
  }
@@ -32437,7 +32906,7 @@ function useFunkitCheckout(props) {
32437
32906
  const { openWithdrawalModal } = useWithdrawalModal();
32438
32907
  const { connectModalOpen, openConnectModal } = useConnectModal();
32439
32908
  const { isUserLoggedIn } = useGeneralWallet();
32440
- const isCheckoutActivated = useFlag(FlagKey23.IsCheckoutActivated);
32909
+ const isCheckoutActivated = useFlag(FlagKey21.IsCheckoutActivated);
32441
32910
  const onErrorWrapper = useCallback49(
32442
32911
  (payload) => {
32443
32912
  logger.warn(payload.message, payload);
@@ -32608,21 +33077,6 @@ async function validateCheckoutConfig(config) {
32608
33077
  message: "Invalid generateActionsParams configuration: Must be a function."
32609
33078
  };
32610
33079
  }
32611
- if (parsedTargetAssetAmount === 0) {
32612
- return {
32613
- isValid: false,
32614
- message: "Invalid targetAssetAmount configuration: Has to be a number greater than 0"
32615
- };
32616
- }
32617
- const initialActionsParams = await config.generateActionsParams(
32618
- parsedTargetAssetAmount
32619
- );
32620
- if (!Array.isArray(initialActionsParams)) {
32621
- return {
32622
- isValid: false,
32623
- message: "Invalid generateActionsParams configuration: Must return an array. If no actions are required, please specify an empty array ([]) instead."
32624
- };
32625
- }
32626
33080
  }
32627
33081
  if (!config.targetAssetTicker) {
32628
33082
  return {
@@ -32871,12 +33325,12 @@ function computeDisplayDestinationToken(checkoutConfig, displayAssetAmount) {
32871
33325
  }
32872
33326
 
32873
33327
  // src/domains/feeEstimate.ts
32874
- import { mainnet as mainnet10 } from "viem/chains";
33328
+ import { mainnet as mainnet12 } from "viem/chains";
32875
33329
  var L1_FEES_ESTIMATE = 1;
32876
33330
  var L2_FEES_ESTIMATE = 1;
32877
33331
  var BROKERAGE_FEES_ESTIMATE = 0;
32878
33332
  var getBaseFeeUsdEstimate = (targetChainId, assetChainId) => {
32879
- if (targetChainId !== mainnet10.id.toString() && assetChainId !== mainnet10.id.toString()) {
33333
+ if (targetChainId !== mainnet12.id.toString() && assetChainId !== mainnet12.id.toString()) {
32880
33334
  return L2_FEES_ESTIMATE;
32881
33335
  }
32882
33336
  return L1_FEES_ESTIMATE;
@@ -32892,7 +33346,7 @@ var getFeesUsdEstimate = (targetChainId, assetChainId, paymentMethod) => {
32892
33346
  var isStablecoin = (symbol) => STABLECOIN_SYMBOLS.find((s) => symbol.toLowerCase().includes(s.toLowerCase()));
32893
33347
  function isPreferredChain(chainId, additionalChains = []) {
32894
33348
  const chains = /* @__PURE__ */ new Set([
32895
- mainnet11.id,
33349
+ mainnet13.id,
32896
33350
  polygon6.id,
32897
33351
  base7.id,
32898
33352
  arbitrum5.id,
@@ -32920,6 +33374,7 @@ var isAssetUsableToPayForCheckout = ({
32920
33374
  assetUsdAmount,
32921
33375
  isAllowedForCheckout,
32922
33376
  minUsdRequired,
33377
+ isLighterNative,
32923
33378
  t
32924
33379
  }) => {
32925
33380
  const finalCheckoutRecipient = getCheckoutRecipient({
@@ -32936,6 +33391,9 @@ var isAssetUsableToPayForCheckout = ({
32936
33391
  minUsdRequired ?? 0
32937
33392
  );
32938
33393
  const isSameAsPurchasingToken = (() => {
33394
+ if (isLighterNative) {
33395
+ return false;
33396
+ }
32939
33397
  if (isCheckoutPostActionRequired(config)) {
32940
33398
  const vaultToken = config.stakingToken;
32941
33399
  return vaultToken && isTokenEquivalent7({
@@ -32974,7 +33432,15 @@ var isAssetUsableToPayForCheckout = ({
32974
33432
  minUsdRequired: minValueThreshold + feeEstimate
32975
33433
  };
32976
33434
  }
32977
- const isSupported = isAllowedForCheckout && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO14[assetChainId]?.isCheckoutSupported;
33435
+ let isSupported = isAllowedForCheckout && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO14[assetChainId]?.isCheckoutSupported;
33436
+ if (isSupported && isLighterNative) {
33437
+ isSupported = isTokenEquivalent7({
33438
+ firstTokenChainId: assetChainId,
33439
+ firstTokenAddress: assetTokenAddress,
33440
+ secondTokenChainId: mainnet13.id.toString(),
33441
+ secondTokenAddress: NATIVE_TOKEN
33442
+ });
33443
+ }
32978
33444
  return {
32979
33445
  isUsable: !!isSupported,
32980
33446
  reason: !isSupported ? t("payment.unsupported") : ""
@@ -33106,7 +33572,7 @@ var useWalletAssets = ({
33106
33572
  } = {}) => {
33107
33573
  const { address, isConnected } = useAccount11();
33108
33574
  const { apiKey } = useFunkitConfig();
33109
- const { data, isLoading, isFetching } = useQuery21({
33575
+ const { data, isLoading, isFetching } = useQuery22({
33110
33576
  queryKey: ["getWalletAssets", address, apiKey],
33111
33577
  queryFn: ({ queryKey: [_, addr, key] }) => fetchAssets(addr, key),
33112
33578
  placeholderData: keepPreviousData2,
@@ -33904,9 +34370,9 @@ function cssStringFromTheme(theme, options = {}) {
33904
34370
  }
33905
34371
 
33906
34372
  // src/hooks/useFunkitMaxCheckoutUsdInfo.ts
33907
- import { FlagKey as FlagKey24, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
34373
+ import { FlagKey as FlagKey22, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
33908
34374
  var useFunkitMaxCheckoutUsdInfo = () => {
33909
- const maxCheckoutUsd = Number(useFlag(FlagKey24.MaxCheckoutUsd));
34375
+ const maxCheckoutUsd = Number(useFlag(FlagKey22.MaxCheckoutUsd));
33910
34376
  const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify16(maxCheckoutUsd, {
33911
34377
  decimalPrecisionForSuffix: 0,
33912
34378
  minimumSignificantDigits: 0,
@@ -34023,6 +34489,8 @@ var en_default = {
34023
34489
  checkout: {
34024
34490
  noAvailableTokens: "No available tokens",
34025
34491
  noAvailableTokensMessage: "You don't have any crypto tokens in your wallet. Top up or transfer crypto to your wallet to continue.",
34492
+ insufficientEth: "Insufficient ETH",
34493
+ insufficientEthMessage: "You don't have enough mainnet ETH in your wallet. You need at least 0.001 ETH to continue.",
34026
34494
  topUpWallet: "Top up wallet",
34027
34495
  refundProcessing: "Funds were withdrawn, but the transaction didn't complete. A refund is being processed.",
34028
34496
  orderRefunded: "Your order was refunded.",
@@ -34521,6 +34989,8 @@ var es_default = {
34521
34989
  checkout: {
34522
34990
  noAvailableTokens: "No hay tokens disponibles",
34523
34991
  noAvailableTokensMessage: "No tienes ning\xFAn token cripto en tu billetera. Recarga o transfiere cripto a tu billetera para continuar.",
34992
+ insufficientEth: "ETH insuficiente",
34993
+ insufficientEthMessage: "No tienes suficiente ETH de mainnet en tu billetera. Necesitas al menos 0.001 ETH para continuar.",
34524
34994
  topUpWallet: "Recargar billetera",
34525
34995
  refundProcessing: "Los fondos fueron retirados, pero la transacci\xF3n no se complet\xF3. Se est\xE1 procesando un reembolso.",
34526
34996
  orderRefunded: "Tu pedido fue reembolsado.",
@@ -35019,6 +35489,8 @@ var fr_default = {
35019
35489
  checkout: {
35020
35490
  noAvailableTokens: "Aucun actif disponible",
35021
35491
  noAvailableTokensMessage: "Vous n'avez aucun actif dans votre portefeuille. Approvisionnez ou transf\xE9rez des cryptomonnaies vers votre portefeuille pour continuer.",
35492
+ insufficientEth: "ETH insuffisant",
35493
+ insufficientEthMessage: "Vous n'avez pas assez d'ETH mainnet dans votre portefeuille. Vous avez besoin d'au moins 0,001 ETH pour continuer.",
35022
35494
  topUpWallet: "Approvisionner le portefeuille",
35023
35495
  refundProcessing: "Les fonds ont \xE9t\xE9 d\xE9bit\xE9s, mais la transaction n'a pas abouti. Un remboursement est en cours.",
35024
35496
  orderRefunded: "Votre commande a \xE9t\xE9 rembours\xE9e.",
@@ -35517,6 +35989,8 @@ var ja_default = {
35517
35989
  checkout: {
35518
35990
  noAvailableTokens: "\u5229\u7528\u53EF\u80FD\u306A\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308A\u307E\u305B\u3093",
35519
35991
  noAvailableTokensMessage: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u7D9A\u884C\u3059\u308B\u306B\u306F\u3001\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u3092\u30C1\u30E3\u30FC\u30B8\u307E\u305F\u306F\u9001\u91D1\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
35992
+ insufficientEth: "ETH\u6B8B\u9AD8\u4E0D\u8DB3",
35993
+ insufficientEthMessage: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30E1\u30A4\u30F3\u30CD\u30C3\u30C8ETH\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\u7D9A\u884C\u3059\u308B\u306B\u306F\u5C11\u306A\u304F\u3068\u30820.001 ETH\u304C\u5FC5\u8981\u3067\u3059\u3002",
35520
35994
  topUpWallet: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30C1\u30E3\u30FC\u30B8",
35521
35995
  refundProcessing: "\u8CC7\u91D1\u306F\u5F15\u304D\u51FA\u3055\u308C\u307E\u3057\u305F\u304C\u3001\u53D6\u5F15\u306F\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8FD4\u91D1\u51E6\u7406\u4E2D\u3067\u3059\u3002",
35522
35996
  orderRefunded: "\u3054\u6CE8\u6587\u306F\u8FD4\u91D1\u3055\u308C\u307E\u3057\u305F\u3002",
@@ -36015,6 +36489,8 @@ var ko_default = {
36015
36489
  checkout: {
36016
36490
  noAvailableTokens: "\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
36017
36491
  noAvailableTokensMessage: "\uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0 \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uACC4\uC18D\uD558\uB824\uBA74 \uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0\uB97C \uCDA9\uC804\uD558\uAC70\uB098 \uC804\uC1A1\uD558\uC138\uC694.",
36492
+ insufficientEth: "ETH \uBD80\uC871",
36493
+ insufficientEthMessage: "\uC9C0\uAC11\uC5D0 \uBA54\uC778\uB137 ETH\uAC00 \uCDA9\uBD84\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uACC4\uC18D\uD558\uB824\uBA74 \uCD5C\uC18C 0.001 ETH\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.",
36018
36494
  topUpWallet: "\uC9C0\uAC11 \uCDA9\uC804",
36019
36495
  refundProcessing: "\uC790\uAE08\uC774 \uCD9C\uAE08\uB418\uC5C8\uC9C0\uB9CC \uAC70\uB798\uAC00 \uC644\uB8CC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD658\uBD88\uC774 \uCC98\uB9AC\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",
36020
36496
  orderRefunded: "\uC8FC\uBB38\uC774 \uD658\uBD88\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
@@ -36513,6 +36989,8 @@ var ru_default = {
36513
36989
  checkout: {
36514
36990
  noAvailableTokens: "\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432",
36515
36991
  noAvailableTokensMessage: "\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u0432 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435. \u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443 \u0432 \u043A\u043E\u0448\u0435\u043B\u0451\u043A \u0434\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F.",
36992
+ insufficientEth: "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E ETH",
36993
+ insufficientEthMessage: "\u0412 \u0432\u0430\u0448\u0435\u043C \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435 \u043D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E ETH \u0432 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u0435\u0442\u0438. \u0414\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u043D\u0435 \u043C\u0435\u043D\u0435\u0435 0.001 ETH.",
36516
36994
  topUpWallet: "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A",
36517
36995
  refundProcessing: "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u043B\u0438 \u0432\u044B\u0432\u0435\u0434\u0435\u043D\u044B, \u043D\u043E \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044F \u043D\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430. \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0442.",
36518
36996
  orderRefunded: "\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0431\u044B\u043B \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D.",
@@ -37011,6 +37489,8 @@ var tr_default = {
37011
37489
  checkout: {
37012
37490
  noAvailableTokens: "Kullan\u0131labilir token yok",
37013
37491
  noAvailableTokensMessage: "C\xFCzdan\u0131n\u0131zda kripto token bulunmamaktad\u0131r. Devam etmek i\xE7in c\xFCzdan\u0131n\u0131za para yat\u0131r\u0131n veya kripto transfer edin.",
37492
+ insufficientEth: "Yetersiz ETH",
37493
+ insufficientEthMessage: "C\xFCzdan\u0131n\u0131zda yeterli mainnet ETH bulunmuyor. Devam etmek i\xE7in en az 0.001 ETH gereklidir.",
37014
37494
  topUpWallet: "C\xFCzdana para y\xFCkle",
37015
37495
  refundProcessing: "\u0130ade edilecek fonlar haz\u0131rland\u0131, ancak i\u015Flem tamamlanmad\u0131. \u0130ade i\u015Flemi yap\u0131l\u0131yor.",
37016
37496
  orderRefunded: "Sipari\u015Finiz iade edildi.",
@@ -37509,6 +37989,8 @@ var zh_default = {
37509
37989
  checkout: {
37510
37990
  noAvailableTokens: "\u6CA1\u6709\u53EF\u7528\u4EE3\u5E01",
37511
37991
  noAvailableTokensMessage: "\u60A8\u7684\u94B1\u5305\u4E2D\u6CA1\u6709\u4EFB\u4F55\u52A0\u5BC6\u4EE3\u5E01\u3002\u5145\u503C\u6216\u8F6C\u8D26\u52A0\u5BC6\u8D27\u5E01\u5230\u60A8\u7684\u94B1\u5305\u4EE5\u7EE7\u7EED\u3002",
37992
+ insufficientEth: "ETH \u4E0D\u8DB3",
37993
+ insufficientEthMessage: "\u60A8\u7684\u94B1\u5305\u4E2D\u6CA1\u6709\u8DB3\u591F\u7684\u4E3B\u7F51 ETH\u3002\u60A8\u81F3\u5C11\u9700\u8981 0.001 ETH \u624D\u80FD\u7EE7\u7EED\u3002",
37512
37994
  topUpWallet: "\u5145\u503C\u94B1\u5305",
37513
37995
  refundProcessing: "\u8D44\u91D1\u5DF2\u63D0\u53D6\uFF0C\u4F46\u4EA4\u6613\u672A\u5B8C\u6210\u3002\u6B63\u5728\u5904\u7406\u9000\u6B3E\u3002",
37514
37996
  orderRefunded: "\u60A8\u7684\u8BA2\u5355\u5DF2\u9000\u6B3E\u3002",
@@ -38052,7 +38534,7 @@ import React240, {
38052
38534
  createContext as createContext18,
38053
38535
  useContext as useContext18,
38054
38536
  useEffect as useEffect59,
38055
- useMemo as useMemo47
38537
+ useMemo as useMemo50
38056
38538
  } from "react";
38057
38539
  import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
38058
38540
 
@@ -38138,7 +38620,7 @@ var createThemeRootSelector = (id) => {
38138
38620
  function FunkitProvider(props) {
38139
38621
  validateFunkitProviderProps(props);
38140
38622
  const initialChainId = getInitialChainIdFromFunkitProviderProps(props);
38141
- const finalWagmiConfig = useMemo47(() => {
38623
+ const finalWagmiConfig = useMemo50(() => {
38142
38624
  if (!props.wagmiConfig || !initialChainId) {
38143
38625
  return void 0;
38144
38626
  }
@@ -38148,7 +38630,7 @@ function FunkitProvider(props) {
38148
38630
  });
38149
38631
  }, [initialChainId, props.wagmiConfig, props.funkitConfig.appName]);
38150
38632
  const finalQueryClient = props.queryClient;
38151
- const sdkVersion = useMemo47(() => getCurrentSdkVersion(), []);
38633
+ const sdkVersion = useMemo50(() => getCurrentSdkVersion(), []);
38152
38634
  useEffect59(() => {
38153
38635
  logger.configure(props.funkitConfig.apiKey, !!props.debug, sdkVersion);
38154
38636
  }, [props.funkitConfig.apiKey, props.debug, sdkVersion]);
@@ -38183,9 +38665,9 @@ function FunkitProviderInner({
38183
38665
  useFingerprint();
38184
38666
  useAccountEffect3({ onDisconnect: clearWalletConnectDeepLink });
38185
38667
  const { activeTheme } = useActiveTheme();
38186
- const selector = useMemo47(() => createThemeRootSelector(id), [id]);
38187
- const themeRootProps = useMemo47(() => createThemeRootProps2(id), [id]);
38188
- const themeStyles = useMemo47(() => {
38668
+ const selector = useMemo50(() => createThemeRootSelector(id), [id]);
38669
+ const themeRootProps = useMemo50(() => createThemeRootProps2(id), [id]);
38670
+ const themeStyles = useMemo50(() => {
38189
38671
  if (!activeTheme) {
38190
38672
  return "";
38191
38673
  }
@@ -38193,7 +38675,7 @@ function FunkitProviderInner({
38193
38675
  }, [activeTheme, selector]);
38194
38676
  const avatarContext = avatar ?? defaultAvatar;
38195
38677
  const isSandboxMode = !!sandbox;
38196
- const modalSizeFinal = modalSize || ModalSizeOptions.COMPACT;
38678
+ const modalSizeFinal = modalSize || ModalSizeOptions.MEDIUM;
38197
38679
  return /* @__PURE__ */ React240.createElement(FunkitI18nProvider, { locale }, /* @__PURE__ */ React240.createElement(FunkitStatsigProvider, { isDevelopment: debug }, /* @__PURE__ */ React240.createElement(FunkitConfigContext.Provider, { value: funkitConfig }, /* @__PURE__ */ React240.createElement(FunkitConnectChainProvider, { initialChain }, /* @__PURE__ */ React240.createElement(ModalSizeProvider, { modalSize: modalSizeFinal }, /* @__PURE__ */ React240.createElement(GeneralWalletProvider, null, /* @__PURE__ */ React240.createElement(FunkitFlagsProvider, null, /* @__PURE__ */ React240.createElement(FunkitCheckoutHistoryProvider, null, /* @__PURE__ */ React240.createElement(FunkitCheckoutProvider, null, /* @__PURE__ */ React240.createElement(FunkitSandboxContext.Provider, { value: isSandboxMode }, /* @__PURE__ */ React240.createElement(FunkitBrokerageProvider, null, /* @__PURE__ */ React240.createElement(FunkitQuoteProvider, null, /* @__PURE__ */ React240.createElement(AvatarContext.Provider, { value: avatarContext }, /* @__PURE__ */ React240.createElement(ThemeIdContext2.Provider, { value: id }, /* @__PURE__ */ React240.createElement(ShowBalanceProvider, null, /* @__PURE__ */ React240.createElement(UserPresenceProvider, null, /* @__PURE__ */ React240.createElement(ModalProvider, null, activeTheme ? /* @__PURE__ */ React240.createElement(
38198
38680
  "div",
38199
38681
  {