@funkit/connect 6.14.2 → 6.14.3

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
@@ -519,13 +519,13 @@ import PrivyJS, {
519
519
  } from "@privy-io/js-sdk-core";
520
520
  import React227, {
521
521
  createContext as createContext17,
522
- useCallback as useCallback48,
522
+ useCallback as useCallback49,
523
523
  useContext as useContext17,
524
524
  useEffect as useEffect54,
525
- useMemo as useMemo41,
525
+ useMemo as useMemo42,
526
526
  useState as useState71
527
527
  } from "react";
528
- import { useConfig as useConfig6, useConnect as useConnect2, useDisconnect as useDisconnect2 } from "wagmi";
528
+ import { useConfig as useConfig7, useConnect as useConnect2, useDisconnect as useDisconnect2 } from "wagmi";
529
529
 
530
530
  // src/components/ConnectButton/formatAccountName.ts
531
531
  function formatAccountName(accountName, isEmail) {
@@ -825,6 +825,7 @@ function useFunkitConfig() {
825
825
  // src/providers/provideFunkitConnectChains.ts
826
826
  import {
827
827
  BITCOIN_MAINNET_CHAIN_ID,
828
+ ETHEREAL_CHAIN_ID,
828
829
  HYPERCORE_CHAIN_ID,
829
830
  HYPER_EVM_CHAIN_ID,
830
831
  KATANA_CHAIN_ID,
@@ -871,6 +872,10 @@ var ethereumIcon = {
871
872
  iconBackground: "#484c50",
872
873
  iconUrl: "https://sdk-cdn.fun.xyz/images/ethereum.svg"
873
874
  };
875
+ var etherealIcon = {
876
+ iconBackground: "#000000",
877
+ iconUrl: "https://sdk-cdn.fun.xyz/images/ethereal.svg"
878
+ };
874
879
  var hardhatIcon = {
875
880
  iconBackground: "#f9f7ec",
876
881
  iconUrl: "https://sdk-cdn.fun.xyz/images/hardhat.svg"
@@ -955,6 +960,7 @@ var chainMetadataByName = {
955
960
  bscTestnet: { chainId: 97, name: "BSC Testnet", ...bscIcon },
956
961
  cronos: { chainId: 25, name: "Cronos", ...cronosIcon },
957
962
  cronosTestnet: { chainId: 338, name: "Cronos Testnet", ...cronosIcon },
963
+ ethereal: { chainId: ETHEREAL_CHAIN_ID, name: "Ethereal", ...etherealIcon },
958
964
  goerli: { chainId: 5, name: "Goerli", ...ethereumIcon },
959
965
  hardhat: { chainId: 31337, name: "Hardhat", ...hardhatIcon },
960
966
  holesky: { chainId: 17e3, name: "Holesky", ...ethereumIcon },
@@ -1081,13 +1087,13 @@ var useInitialChainId = () => useContext4(FunkitConnectChainContext).initialChai
1081
1087
  // src/providers/ModalContext.tsx
1082
1088
  import React226, {
1083
1089
  createContext as createContext16,
1084
- useCallback as useCallback47,
1090
+ useCallback as useCallback48,
1085
1091
  useContext as useContext16,
1086
1092
  useEffect as useEffect53,
1087
- useMemo as useMemo40,
1093
+ useMemo as useMemo41,
1088
1094
  useState as useState70
1089
1095
  } from "react";
1090
- import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig5 } from "wagmi";
1096
+ import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig6 } from "wagmi";
1091
1097
 
1092
1098
  // src/components/Dialog/Dialog.css.ts
1093
1099
  var DialogAnimationTimeIn = 0.25;
@@ -1173,7 +1179,7 @@ import {
1173
1179
  import { isNotNullish as isNotNullish3 } from "@funkit/utils";
1174
1180
  import React14, {
1175
1181
  createContext as createContext10,
1176
- useCallback as useCallback8,
1182
+ useCallback as useCallback9,
1177
1183
  useContext as useContext10,
1178
1184
  useEffect as useEffect8,
1179
1185
  useRef as useRef2,
@@ -1230,7 +1236,7 @@ import {
1230
1236
  } from "@funkit/core";
1231
1237
  import {
1232
1238
  formatCryptoAndStringify,
1233
- isTokenAddressEquivalent as isTokenAddressEquivalent3,
1239
+ isTokenAddressEquivalent as isTokenAddressEquivalent4,
1234
1240
  round as round2,
1235
1241
  roundUpToXDecimalPlaces
1236
1242
  } from "@funkit/utils";
@@ -2114,10 +2120,10 @@ import {
2114
2120
  initializeCheckout as postApiInitializeCheckout
2115
2121
  } from "@funkit/api-base";
2116
2122
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO3 } from "@funkit/chains";
2117
- import { FlagKey as FlagKey5, isNotNullish as isNotNullish2 } from "@funkit/utils";
2123
+ import { FlagKey as FlagKey6, isNotNullish as isNotNullish2 } from "@funkit/utils";
2118
2124
  import React13, {
2119
2125
  createContext as createContext9,
2120
- useCallback as useCallback7,
2126
+ useCallback as useCallback8,
2121
2127
  useContext as useContext9,
2122
2128
  useEffect as useEffect7,
2123
2129
  useState as useState6
@@ -2128,8 +2134,9 @@ import { v4 as uuid } from "uuid";
2128
2134
  // src/hooks/useCheckoutDirectExecution.ts
2129
2135
  import { DirectExecutionType, getCheckoutQuoteV2 } from "@funkit/api-base";
2130
2136
  import { executeRelayQuote } from "@funkit/fun-relay";
2131
- import { useCallback as useCallback4 } from "react";
2132
- import { useWalletClient } from "wagmi";
2137
+ import { FlagKey as FlagKey4 } from "@funkit/utils";
2138
+ import { useCallback as useCallback5 } from "react";
2139
+ import { useConfig as useConfig2, useWalletClient } from "wagmi";
2133
2140
 
2134
2141
  // src/consts/checkout.ts
2135
2142
  var CHECKOUT_STEP_MESSAGE = {
@@ -2146,48 +2153,10 @@ var WEB3_ACCOUNT_BALANCE_MESSAGE = {
2146
2153
  [2 /* APPROVE_TRANSFER */]: (tokenSymbol) => `Confirm ${tokenSymbol} transfer`
2147
2154
  };
2148
2155
 
2149
- // src/hooks/useRelayBypass.ts
2150
- import { FlagKey as FlagKey3, isTokenAddressEquivalent as isTokenAddressEquivalent2 } from "@funkit/utils";
2156
+ // src/hooks/useIsTokenWhitelisted.ts
2157
+ import { isTokenAddressEquivalent as isTokenAddressEquivalent2 } from "@funkit/utils";
2151
2158
  import { useCallback as useCallback3, useMemo as useMemo7 } from "react";
2152
2159
 
2153
- // src/consts/customers.ts
2154
- import {
2155
- BANKR_API_KEY,
2156
- BASED_API_KEY,
2157
- BSX_API_KEY,
2158
- ETHEREAL_API_KEY,
2159
- HYPERBEAT_API_KEY,
2160
- KALSHI_API_KEY,
2161
- KATANA_API_KEY,
2162
- MONKEY_TILT_API_KEY,
2163
- OSTIUM_API_KEY,
2164
- POLYMARKET_API_KEY
2165
- } from "@funkit/api-base";
2166
- function isPolymarketCustomer(apiKey) {
2167
- return apiKey === POLYMARKET_API_KEY;
2168
- }
2169
- function isOstiumCustomer(apiKey) {
2170
- return apiKey === OSTIUM_API_KEY;
2171
- }
2172
- function isBankrCustomer(apiKey) {
2173
- return apiKey === BANKR_API_KEY;
2174
- }
2175
- function isEtherealCustomer(apiKey) {
2176
- return apiKey === ETHEREAL_API_KEY;
2177
- }
2178
- function isKatanaCustomer(apiKey) {
2179
- return apiKey === KATANA_API_KEY;
2180
- }
2181
- function isHyperbeatCustomer(apiKey) {
2182
- return apiKey === HYPERBEAT_API_KEY;
2183
- }
2184
- function isBasedCustomer(apiKey) {
2185
- return apiKey === BASED_API_KEY;
2186
- }
2187
- function isKalshiCustomer(apiKey) {
2188
- return apiKey === KALSHI_API_KEY;
2189
- }
2190
-
2191
2160
  // src/providers/FunkitFlagsProvider.tsx
2192
2161
  import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
2193
2162
  import { useQuery as useQuery2 } from "@tanstack/react-query";
@@ -2200,19 +2169,19 @@ import React12, {
2200
2169
 
2201
2170
  // src/utils/flags/config.ts
2202
2171
  import {
2203
- BANKR_API_KEY as BANKR_API_KEY2,
2204
- BASED_API_KEY as BASED_API_KEY2,
2172
+ BANKR_API_KEY,
2173
+ BASED_API_KEY,
2205
2174
  CAMBRIA_API_KEY,
2206
2175
  DEGEN_API_KEY,
2207
2176
  DEV_API_KEY as DEV_API_KEY2,
2208
- HYPERBEAT_API_KEY as HYPERBEAT_API_KEY2,
2177
+ HYPERBEAT_API_KEY,
2209
2178
  HYPERDASH_API_KEY,
2210
2179
  HYPERSWAP_API_KEY,
2211
- KALSHI_API_KEY as KALSHI_API_KEY2,
2212
- KATANA_API_KEY as KATANA_API_KEY2,
2213
- MONKEY_TILT_API_KEY as MONKEY_TILT_API_KEY2,
2214
- OSTIUM_API_KEY as OSTIUM_API_KEY2,
2215
- POLYMARKET_API_KEY as POLYMARKET_API_KEY2,
2180
+ KALSHI_API_KEY,
2181
+ KATANA_API_KEY,
2182
+ MONKEY_TILT_API_KEY,
2183
+ OSTIUM_API_KEY,
2184
+ POLYMARKET_API_KEY,
2216
2185
  SUSHI_API_KEY,
2217
2186
  VENTUALS_API_KEY
2218
2187
  } from "@funkit/api-base";
@@ -2301,7 +2270,7 @@ var flagConfig = {
2301
2270
  {
2302
2271
  key: "apiKey",
2303
2272
  type: "isAnyOf",
2304
- values: [DEGEN_API_KEY, BANKR_API_KEY2, BASED_API_KEY2]
2273
+ values: [DEGEN_API_KEY, BANKR_API_KEY, BASED_API_KEY]
2305
2274
  }
2306
2275
  ],
2307
2276
  // Do not block US for Degen, since its still pure slow flow
@@ -2315,7 +2284,7 @@ var flagConfig = {
2315
2284
  {
2316
2285
  key: "apiKey",
2317
2286
  type: "isAnyOf",
2318
- values: [POLYMARKET_API_KEY2, KATANA_API_KEY2, KALSHI_API_KEY2]
2287
+ values: [POLYMARKET_API_KEY, KATANA_API_KEY, KALSHI_API_KEY]
2319
2288
  }
2320
2289
  ],
2321
2290
  // Turn off geoblock for PM / Katana / Kalshi on our end.
@@ -2342,7 +2311,7 @@ var flagConfig = {
2342
2311
  {
2343
2312
  key: "apiKey",
2344
2313
  type: "isAnyOf",
2345
- values: [KATANA_API_KEY2]
2314
+ values: [KATANA_API_KEY]
2346
2315
  }
2347
2316
  ],
2348
2317
  value: true
@@ -2359,18 +2328,18 @@ var flagConfig = {
2359
2328
  key: "apiKey",
2360
2329
  type: "isAnyOf",
2361
2330
  values: [
2362
- POLYMARKET_API_KEY2,
2363
- OSTIUM_API_KEY2,
2364
- BANKR_API_KEY2,
2365
- BASED_API_KEY2,
2366
- KATANA_API_KEY2,
2331
+ POLYMARKET_API_KEY,
2332
+ OSTIUM_API_KEY,
2333
+ BANKR_API_KEY,
2334
+ BASED_API_KEY,
2335
+ KATANA_API_KEY,
2367
2336
  CAMBRIA_API_KEY,
2368
- HYPERBEAT_API_KEY2,
2337
+ HYPERBEAT_API_KEY,
2369
2338
  HYPERSWAP_API_KEY,
2370
2339
  HYPERDASH_API_KEY,
2371
- MONKEY_TILT_API_KEY2,
2340
+ MONKEY_TILT_API_KEY,
2372
2341
  VENTUALS_API_KEY,
2373
- KALSHI_API_KEY2
2342
+ KALSHI_API_KEY
2374
2343
  ]
2375
2344
  }
2376
2345
  ],
@@ -2415,8 +2384,8 @@ var flagConfig = {
2415
2384
  type: "isAnyOf",
2416
2385
  values: [
2417
2386
  DEV_API_KEY2,
2418
- POLYMARKET_API_KEY2,
2419
- OSTIUM_API_KEY2
2387
+ POLYMARKET_API_KEY,
2388
+ OSTIUM_API_KEY
2420
2389
  // HYPERBEAT_API_KEY,
2421
2390
  // HYPERDASH_API_KEY,
2422
2391
  // BASED_API_KEY,
@@ -2475,10 +2444,10 @@ var flagConfig = {
2475
2444
  key: "apiKey",
2476
2445
  type: "isAnyOf",
2477
2446
  values: [
2478
- POLYMARKET_API_KEY2,
2479
- OSTIUM_API_KEY2,
2480
- BANKR_API_KEY2,
2481
- KATANA_API_KEY2
2447
+ POLYMARKET_API_KEY,
2448
+ OSTIUM_API_KEY,
2449
+ BANKR_API_KEY,
2450
+ KATANA_API_KEY
2482
2451
  ]
2483
2452
  }
2484
2453
  ],
@@ -2502,7 +2471,7 @@ var flagConfig = {
2502
2471
  {
2503
2472
  key: "apiKey",
2504
2473
  type: "isAnyOf",
2505
- values: [OSTIUM_API_KEY2]
2474
+ values: [OSTIUM_API_KEY]
2506
2475
  }
2507
2476
  ],
2508
2477
  value: arbitrum.id.toString()
@@ -2512,7 +2481,7 @@ var flagConfig = {
2512
2481
  {
2513
2482
  key: "apiKey",
2514
2483
  type: "isAnyOf",
2515
- values: [BANKR_API_KEY2, KALSHI_API_KEY2]
2484
+ values: [BANKR_API_KEY, KALSHI_API_KEY]
2516
2485
  }
2517
2486
  ],
2518
2487
  value: base3.id.toString()
@@ -2535,11 +2504,11 @@ var flagConfig = {
2535
2504
  {
2536
2505
  key: "apiKey",
2537
2506
  type: "isAnyOf",
2538
- values: [OSTIUM_API_KEY2]
2507
+ values: [POLYMARKET_API_KEY]
2539
2508
  }
2540
2509
  ],
2541
2510
  value: JSON.stringify({
2542
- message: ""
2511
+ message: "Deposits on BSC are delayed and may take longer to process."
2543
2512
  })
2544
2513
  }
2545
2514
  ]
@@ -2653,7 +2622,7 @@ var flagConfig = {
2653
2622
  {
2654
2623
  key: "apiKey",
2655
2624
  type: "isAnyOf",
2656
- values: [KATANA_API_KEY2, KALSHI_API_KEY2]
2625
+ values: [KATANA_API_KEY, KALSHI_API_KEY]
2657
2626
  }
2658
2627
  ],
2659
2628
  value: false
@@ -2737,13 +2706,13 @@ var flagConfig = {
2737
2706
  values: [
2738
2707
  SUSHI_API_KEY,
2739
2708
  HYPERSWAP_API_KEY,
2740
- HYPERBEAT_API_KEY2,
2709
+ HYPERBEAT_API_KEY,
2741
2710
  HYPERDASH_API_KEY,
2742
- BASED_API_KEY2,
2743
- OSTIUM_API_KEY2,
2744
- POLYMARKET_API_KEY2,
2711
+ BASED_API_KEY,
2712
+ OSTIUM_API_KEY,
2713
+ POLYMARKET_API_KEY,
2745
2714
  VENTUALS_API_KEY,
2746
- KALSHI_API_KEY2
2715
+ KALSHI_API_KEY
2747
2716
  ]
2748
2717
  }
2749
2718
  ],
@@ -2795,14 +2764,6 @@ var flagConfig = {
2795
2764
  137: []
2796
2765
  })
2797
2766
  },
2798
- [FlagKey.WithdrawalExcludeChains]: {
2799
- type: "string",
2800
- default_value: JSON.stringify([56, 10])
2801
- },
2802
- [FlagKey.EnableSourceNavigationWidget]: {
2803
- type: "boolean",
2804
- default_value: false
2805
- },
2806
2767
  [FlagKey.TokenTransferDefaultTokens]: {
2807
2768
  type: "string",
2808
2769
  default_value: "",
@@ -2812,7 +2773,7 @@ var flagConfig = {
2812
2773
  {
2813
2774
  key: "apiKey",
2814
2775
  type: "isAnyOf",
2815
- values: [POLYMARKET_API_KEY2]
2776
+ values: [POLYMARKET_API_KEY]
2816
2777
  }
2817
2778
  ],
2818
2779
  value: JSON.stringify(["USDC", "USDC.e"])
@@ -2862,7 +2823,7 @@ var flagConfig = {
2862
2823
  {
2863
2824
  key: "apiKey",
2864
2825
  type: "isAnyOf",
2865
- values: [BASED_API_KEY2]
2826
+ values: [BASED_API_KEY]
2866
2827
  }
2867
2828
  ],
2868
2829
  value: JSON.stringify({
@@ -3002,6 +2963,44 @@ import React11, {
3002
2963
  } from "react";
3003
2964
  import { FlagKey as FlagKey2 } from "@funkit/utils";
3004
2965
 
2966
+ // src/consts/customers.ts
2967
+ import {
2968
+ BANKR_API_KEY as BANKR_API_KEY2,
2969
+ BASED_API_KEY as BASED_API_KEY2,
2970
+ BSX_API_KEY,
2971
+ ETHEREAL_API_KEY,
2972
+ HYPERBEAT_API_KEY as HYPERBEAT_API_KEY2,
2973
+ KALSHI_API_KEY as KALSHI_API_KEY2,
2974
+ KATANA_API_KEY as KATANA_API_KEY2,
2975
+ MONKEY_TILT_API_KEY as MONKEY_TILT_API_KEY2,
2976
+ OSTIUM_API_KEY as OSTIUM_API_KEY2,
2977
+ POLYMARKET_API_KEY as POLYMARKET_API_KEY2
2978
+ } from "@funkit/api-base";
2979
+ function isPolymarketCustomer(apiKey) {
2980
+ return apiKey === POLYMARKET_API_KEY2;
2981
+ }
2982
+ function isOstiumCustomer(apiKey) {
2983
+ return apiKey === OSTIUM_API_KEY2;
2984
+ }
2985
+ function isBankrCustomer(apiKey) {
2986
+ return apiKey === BANKR_API_KEY2;
2987
+ }
2988
+ function isEtherealCustomer(apiKey) {
2989
+ return apiKey === ETHEREAL_API_KEY;
2990
+ }
2991
+ function isKatanaCustomer(apiKey) {
2992
+ return apiKey === KATANA_API_KEY2;
2993
+ }
2994
+ function isHyperbeatCustomer(apiKey) {
2995
+ return apiKey === HYPERBEAT_API_KEY2;
2996
+ }
2997
+ function isBasedCustomer(apiKey) {
2998
+ return apiKey === BASED_API_KEY2;
2999
+ }
3000
+ function isKalshiCustomer(apiKey) {
3001
+ return apiKey === KALSHI_API_KEY2;
3002
+ }
3003
+
3005
3004
  // src/providers/FunkitSandboxContext.tsx
3006
3005
  import { createContext as createContext6, useContext as useContext6 } from "react";
3007
3006
  var FunkitSandboxContext = createContext6(false);
@@ -3211,13 +3210,57 @@ function safeJSONParse(src) {
3211
3210
  });
3212
3211
  }
3213
3212
 
3213
+ // src/hooks/useIsTokenWhitelisted.ts
3214
+ var MATCH_ALL = "*";
3215
+ var useIsTokenWhitelisted = (flagKey) => {
3216
+ const whitelistedTokensString = useFlag(flagKey);
3217
+ const whitelistedTokensByChainId = useMemo7(
3218
+ () => safeJSONParse(whitelistedTokensString),
3219
+ [whitelistedTokensString]
3220
+ );
3221
+ const isTokenWhitelisted = useCallback3(
3222
+ (chainId, tokenAddress) => {
3223
+ const tokensForChainId = toArrayIfString(whitelistedTokensByChainId?.[chainId]) ?? [];
3224
+ const tokensForAllChains = toArrayIfString(whitelistedTokensByChainId?.[MATCH_ALL]) ?? [];
3225
+ const tokens = [
3226
+ ...tokensForChainId,
3227
+ // whitelisted tokens for the `chainId` provided
3228
+ ...tokensForAllChains
3229
+ // whitelisted tokens for all chains
3230
+ ];
3231
+ if (tokens.length === 0) {
3232
+ return false;
3233
+ }
3234
+ if (tokens.includes("*")) {
3235
+ return true;
3236
+ }
3237
+ return tokens.some(
3238
+ (currentTokenAddress) => isTokenAddressEquivalent2({
3239
+ firstTokenAddress: currentTokenAddress,
3240
+ secondTokenAddress: tokenAddress
3241
+ })
3242
+ );
3243
+ },
3244
+ [whitelistedTokensByChainId]
3245
+ );
3246
+ return isTokenWhitelisted;
3247
+ };
3248
+ var toArrayIfString = (value) => {
3249
+ if (typeof value === "string") {
3250
+ return [value];
3251
+ }
3252
+ return value;
3253
+ };
3254
+
3214
3255
  // src/hooks/useRelayBypass.ts
3256
+ import { FlagKey as FlagKey3, isTokenAddressEquivalent as isTokenAddressEquivalent3 } from "@funkit/utils";
3257
+ import { useCallback as useCallback4, useMemo as useMemo8 } from "react";
3215
3258
  var isTokenFlagEnabled = (tokenList, tokenAddress) => {
3216
3259
  if (tokenList.includes("*")) {
3217
3260
  return true;
3218
3261
  }
3219
3262
  return tokenList.some(
3220
- (t) => isTokenAddressEquivalent2({
3263
+ (t) => isTokenAddressEquivalent3({
3221
3264
  firstTokenAddress: t,
3222
3265
  secondTokenAddress: tokenAddress
3223
3266
  })
@@ -3228,11 +3271,11 @@ function useSourceTokenRelayEnabled() {
3228
3271
  const sourceTokensJsonString = useFlag(
3229
3272
  FlagKey3.RelayBypassSourceChainsAndAssets
3230
3273
  );
3231
- const sourceTokens = useMemo7(
3274
+ const sourceTokens = useMemo8(
3232
3275
  () => safeJSONParse(sourceTokensJsonString),
3233
3276
  [sourceTokensJsonString]
3234
3277
  );
3235
- const isAllowed = useCallback3(
3278
+ const isAllowed = useCallback4(
3236
3279
  (chainId, tokenAddress) => {
3237
3280
  return isRelayBypassEnabled && isTokenFlagEnabled(
3238
3281
  sourceTokens?.[Number.parseInt(`${chainId}`)] || [],
@@ -3258,7 +3301,7 @@ function useRelayBypass() {
3258
3301
  const targetTokens = safeJSONParse(
3259
3302
  targetTokensJsonString
3260
3303
  );
3261
- const paymentMethodWhitelistConfig = useMemo7(() => {
3304
+ const paymentMethodWhitelistConfig = useMemo8(() => {
3262
3305
  if (isKatanaCustomer(apiKey)) {
3263
3306
  return {
3264
3307
  relayPaymentMethods: [
@@ -3276,7 +3319,7 @@ function useRelayBypass() {
3276
3319
  };
3277
3320
  }, [apiKey]);
3278
3321
  return {
3279
- getIsRelayEnabled: useCallback3(
3322
+ getIsRelayEnabled: useCallback4(
3280
3323
  ({
3281
3324
  fromChainId,
3282
3325
  fromTokenAddress,
@@ -3323,7 +3366,9 @@ function useCheckoutDirectExecution() {
3323
3366
  const { data: walletClient } = useWalletClient();
3324
3367
  const { getIsRelayEnabled } = useRelayBypass();
3325
3368
  const { apiKey } = useFunkitConfig();
3326
- const getRelayDirectExecutionBaseQuote = useCallback4(
3369
+ const isPermitEnabledForToken = useIsTokenWhitelisted(FlagKey4.Permit2Tokens);
3370
+ const wagmiConfig = useConfig2();
3371
+ const getRelayDirectExecutionBaseQuote = useCallback5(
3327
3372
  async (params) => {
3328
3373
  const {
3329
3374
  actionParams,
@@ -3334,6 +3379,13 @@ function useCheckoutDirectExecution() {
3334
3379
  recipientAddress,
3335
3380
  senderAddress = address
3336
3381
  } = params;
3382
+ const doesHaveGasToken = await hasGasToken(
3383
+ wagmiConfig,
3384
+ address,
3385
+ fromChainId
3386
+ );
3387
+ const usePermit = doesHaveGasToken === false && // Check if the wallet has gas token (e.g. ETH > 0 on eth mainnet)
3388
+ isPermitEnabledForToken(fromChainId, fromTokenAddress);
3337
3389
  const getCheckoutQuoteParams = {
3338
3390
  actionParams,
3339
3391
  apiKey,
@@ -3343,7 +3395,8 @@ function useCheckoutDirectExecution() {
3343
3395
  recipientAddress,
3344
3396
  toChainId,
3345
3397
  toTokenAddress,
3346
- userAddress: senderAddress
3398
+ userAddress: senderAddress,
3399
+ usePermit
3347
3400
  };
3348
3401
  if (params.isExactIn) {
3349
3402
  const { fromTokenDecimals, fromTokenAmount } = params;
@@ -3360,9 +3413,9 @@ function useCheckoutDirectExecution() {
3360
3413
  toAmountBaseUnit: BigInt(Math.floor(toTokenAmount * multiplier))
3361
3414
  });
3362
3415
  },
3363
- [address, apiKey]
3416
+ [address, apiKey, isPermitEnabledForToken, wagmiConfig]
3364
3417
  );
3365
- const checkAndSwitchChains = useCallback4(
3418
+ const checkAndSwitchChains = useCallback5(
3366
3419
  async ({
3367
3420
  executionChainId,
3368
3421
  stepMessageSetter
@@ -3386,7 +3439,7 @@ function useCheckoutDirectExecution() {
3386
3439
  },
3387
3440
  [connector, switchChainAsync]
3388
3441
  );
3389
- const startRelayDirectExecution = useCallback4(
3442
+ const startRelayDirectExecution = useCallback5(
3390
3443
  async ({
3391
3444
  checkoutItem,
3392
3445
  latestQuote,
@@ -3463,7 +3516,7 @@ function useCheckoutDirectExecution() {
3463
3516
  },
3464
3517
  [walletClient, checkAndSwitchChains]
3465
3518
  );
3466
- const getDirectExecutionInfo = useCallback4(
3519
+ const getDirectExecutionInfo = useCallback5(
3467
3520
  (checkoutItem) => {
3468
3521
  const noop10 = {
3469
3522
  isDirectExecution: false,
@@ -3501,7 +3554,7 @@ function useCheckoutDirectExecution() {
3501
3554
  startRelayDirectExecution
3502
3555
  ]
3503
3556
  );
3504
- const getWithdrawalDirectExecution = useCallback4(() => {
3557
+ const getWithdrawalDirectExecution = useCallback5(() => {
3505
3558
  const quoteAction = getRelayDirectExecutionBaseQuote;
3506
3559
  const executeAction = startRelayDirectExecution;
3507
3560
  return {
@@ -3521,9 +3574,9 @@ function useCheckoutDirectExecution() {
3521
3574
  import {
3522
3575
  initializeCheckoutTokenTransferAddress
3523
3576
  } from "@funkit/api-base";
3524
- import { FlagKey as FlagKey4 } from "@funkit/utils";
3577
+ import { FlagKey as FlagKey5 } from "@funkit/utils";
3525
3578
  import { useQuery as useQuery3 } from "@tanstack/react-query";
3526
- import { useCallback as useCallback5 } from "react";
3579
+ import { useCallback as useCallback6 } from "react";
3527
3580
 
3528
3581
  // src/domains/clientMetadata.ts
3529
3582
  function generateClientMetadataForBackend({
@@ -3596,7 +3649,7 @@ var useCheckoutTransferInit = () => {
3596
3649
  const checkoutConfig = checkoutItem?.initSettings.config;
3597
3650
  const { walletAddress, userInfo } = useGeneralWallet();
3598
3651
  const { apiKey } = useFunkitConfig();
3599
- const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
3652
+ const isQrCodeEnabled = useFlag(FlagKey5.EnableTokenTransfer, false);
3600
3653
  const recipientAddr = checkoutConfig?.customRecipient || walletAddress || "0x";
3601
3654
  const queryKey = {
3602
3655
  userId: userInfo.id || "",
@@ -3606,7 +3659,7 @@ var useCheckoutTransferInit = () => {
3606
3659
  apiKey,
3607
3660
  actionType: checkoutConfig?.qrcodeActionType
3608
3661
  };
3609
- const queryFunction = useCallback5(
3662
+ const queryFunction = useCallback6(
3610
3663
  async (params) => {
3611
3664
  return await initializeCheckoutTokenTransferAddress({
3612
3665
  ...params,
@@ -3638,13 +3691,13 @@ var useCheckoutTransferInit = () => {
3638
3691
  };
3639
3692
 
3640
3693
  // src/hooks/useEffectEvent.ts
3641
- import { useCallback as useCallback6, useInsertionEffect, useRef } from "react";
3694
+ import { useCallback as useCallback7, useInsertionEffect, useRef } from "react";
3642
3695
  function useEffectEvent(fn) {
3643
3696
  const savedCallback = useRef(fn);
3644
3697
  useInsertionEffect(() => {
3645
3698
  savedCallback.current = fn;
3646
3699
  }, [fn]);
3647
- return useCallback6(
3700
+ return useCallback7(
3648
3701
  ((...args) => {
3649
3702
  const f = savedCallback.current;
3650
3703
  return f(...args);
@@ -3714,13 +3767,13 @@ function FunkitCheckoutProvider({ children }) {
3714
3767
  const [activeCheckout, setActiveCheckout] = useState6(null);
3715
3768
  const [activeWithdrawal, setActiveWithdrawal] = useState6(null);
3716
3769
  const [checkoutsProgress, setCheckoutsProgress] = useState6({});
3717
- const getCheckoutProgress = useCallback7(
3770
+ const getCheckoutProgress = useCallback8(
3718
3771
  (checkoutId) => {
3719
3772
  return checkoutsProgress[checkoutId];
3720
3773
  },
3721
3774
  [checkoutsProgress]
3722
3775
  );
3723
- const setCheckoutProgress = useCallback7(
3776
+ const setCheckoutProgress = useCallback8(
3724
3777
  (checkoutId, progress) => {
3725
3778
  setCheckoutsProgress((data) => ({ ...data, [checkoutId]: progress }));
3726
3779
  },
@@ -3742,7 +3795,7 @@ function FunkitCheckoutProvider({ children }) {
3742
3795
  });
3743
3796
  }
3744
3797
  );
3745
- const initNewWithdrawal = useCallback7(
3798
+ const initNewWithdrawal = useCallback8(
3746
3799
  (props) => {
3747
3800
  const { onWithdrawalConfirmation, onWithdrawalError, config } = props;
3748
3801
  const newWithdrawalId = uuid();
@@ -3760,7 +3813,7 @@ function FunkitCheckoutProvider({ children }) {
3760
3813
  },
3761
3814
  []
3762
3815
  );
3763
- const initNewCheckout = useCallback7(
3816
+ const initNewCheckout = useCallback8(
3764
3817
  ({ config, ...initSettings }) => {
3765
3818
  const newCheckoutId = uuid();
3766
3819
  const newActiveCheckoutItem = {
@@ -3835,7 +3888,7 @@ function FunkitCheckoutProvider({ children }) {
3835
3888
  });
3836
3889
  }
3837
3890
  );
3838
- const startDirectExecutionCheckout = useCallback7(
3891
+ const startDirectExecutionCheckout = useCallback8(
3839
3892
  async ({
3840
3893
  stepMessageSetter,
3841
3894
  latestQuote,
@@ -3921,7 +3974,7 @@ function FunkitCheckoutProvider({ children }) {
3921
3974
  manualFetch
3922
3975
  ]
3923
3976
  );
3924
- const startRegularCheckout = useCallback7(
3977
+ const startRegularCheckout = useCallback8(
3925
3978
  async ({
3926
3979
  stepMessageSetter,
3927
3980
  latestQuote,
@@ -4121,15 +4174,15 @@ function useFunkitCheckout(props) {
4121
4174
  const { openWithdrawalModal } = useWithdrawalModal();
4122
4175
  const { connectModalOpen, openConnectModal } = useConnectModal();
4123
4176
  const { isUserLoggedIn } = useGeneralWallet();
4124
- const isCheckoutActivated = useFlag(FlagKey5.IsCheckoutActivated);
4125
- const onErrorWrapper = useCallback7(
4177
+ const isCheckoutActivated = useFlag(FlagKey6.IsCheckoutActivated);
4178
+ const onErrorWrapper = useCallback8(
4126
4179
  (payload) => {
4127
4180
  logger.warn(payload.message, payload);
4128
4181
  onError?.(payload);
4129
4182
  },
4130
4183
  [onError]
4131
4184
  );
4132
- const onOpenWrapper = useCallback7(
4185
+ const onOpenWrapper = useCallback8(
4133
4186
  (newId) => {
4134
4187
  props?.onOpen?.();
4135
4188
  openFunCheckoutModal?.(newId);
@@ -4321,18 +4374,6 @@ async function validateCheckoutConfig(config) {
4321
4374
  message: `Invalid targetChain configuration: Unsupported chain id ${config.targetChain} for checkout.`
4322
4375
  };
4323
4376
  }
4324
- const chainCheckoutAssetWhitelist = FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO4[config.targetChain]?.checkoutAssetWhitelist || [];
4325
- if (chainCheckoutAssetWhitelist?.[0] !== "*" && !chainCheckoutAssetWhitelist.some(
4326
- (asset) => isTokenAddressEquivalent3({
4327
- firstTokenAddress: asset,
4328
- secondTokenAddress: config.targetAsset || ""
4329
- })
4330
- )) {
4331
- return {
4332
- isValid: false,
4333
- message: `Invalid targetAsset ${config.targetAsset} for targetChain ${config.targetChain}.`
4334
- };
4335
- }
4336
4377
  if (config.customRecipient && !isAddress(config.customRecipient)) {
4337
4378
  return {
4338
4379
  isValid: false,
@@ -4364,7 +4405,7 @@ async function validateCheckoutConfig(config) {
4364
4405
  };
4365
4406
  }
4366
4407
  var hasSufficientBalance = async (wagmiConfig, walletAddress, tokenAddress, tokenChainId, requiredAssetAmount) => {
4367
- const finalTokenAddress = isTokenAddressEquivalent3({
4408
+ const finalTokenAddress = isTokenAddressEquivalent4({
4368
4409
  firstTokenAddress: tokenAddress,
4369
4410
  secondTokenAddress: FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS2
4370
4411
  }) ? void 0 : tokenAddress;
@@ -4385,6 +4426,27 @@ var hasSufficientBalance = async (wagmiConfig, walletAddress, tokenAddress, toke
4385
4426
  }
4386
4427
  return { balance, result: false, tokenTicker: null };
4387
4428
  };
4429
+ var hasGasToken = async (wagmiConfig, walletAddress, chainId) => {
4430
+ try {
4431
+ const data = await getBalance(wagmiConfig, {
4432
+ address: walletAddress,
4433
+ chainId: Number(chainId),
4434
+ blockTag: "latest"
4435
+ });
4436
+ logger.log("hasGasToken_info", {
4437
+ data,
4438
+ walletAddress,
4439
+ chainId
4440
+ });
4441
+ return data.value > 0;
4442
+ } catch (err) {
4443
+ logger.error("hasGasToken_error", err, {
4444
+ walletAddress,
4445
+ chainId
4446
+ });
4447
+ return false;
4448
+ }
4449
+ };
4388
4450
  function getFunkitEnvForCheckoutEstimation({
4389
4451
  chainId,
4390
4452
  bypassWalletInit
@@ -4707,7 +4769,7 @@ function FunkitCheckoutHistoryProvider({
4707
4769
  const [isInited, setIsInited] = useState7(false);
4708
4770
  const [isRefreshing, setIsRefreshing] = useState7(true);
4709
4771
  const isGuestUserOnCheckoutHistory = !isUserLoggedIn && !!historyDepositAddress;
4710
- const _refreshCheckoutHistory = useCallback8(async () => {
4772
+ const _refreshCheckoutHistory = useCallback9(async () => {
4711
4773
  if (!funkitConfig.apiKey) {
4712
4774
  return;
4713
4775
  }
@@ -4775,7 +4837,7 @@ function FunkitCheckoutHistoryProvider({
4775
4837
  clearInterval(intervalRef.current);
4776
4838
  }
4777
4839
  }, [logoutSymbol]);
4778
- const startCheckoutHistoryListener = useCallback8(
4840
+ const startCheckoutHistoryListener = useCallback9(
4779
4841
  (singleDepositAddr, expedited = false) => {
4780
4842
  setHistoryDepositAddress(singleDepositAddr);
4781
4843
  clearInterval(intervalRef.current);
@@ -4791,7 +4853,7 @@ function FunkitCheckoutHistoryProvider({
4791
4853
  },
4792
4854
  [triggerRefreshSymbol]
4793
4855
  );
4794
- const stopCheckoutHistoryListener = useCallback8(
4856
+ const stopCheckoutHistoryListener = useCallback9(
4795
4857
  (cancelIntervalId) => {
4796
4858
  clearInterval(cancelIntervalId);
4797
4859
  if (cancelIntervalId === intervalRef.current) {
@@ -4943,7 +5005,7 @@ var useFunkitPostCheckoutInternal = (checkoutId) => {
4943
5005
  };
4944
5006
 
4945
5007
  // src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
4946
- import React22, { useEffect as useEffect11, useMemo as useMemo8, useState as useState10 } from "react";
5008
+ import React22, { useEffect as useEffect11, useMemo as useMemo9, useState as useState10 } from "react";
4947
5009
 
4948
5010
  // src/components/TransactionStatus/TransactionStatus.tsx
4949
5011
  import {
@@ -4952,7 +5014,7 @@ import {
4952
5014
  useAnimate
4953
5015
  } from "motion/react";
4954
5016
  import React21, {
4955
- useCallback as useCallback9,
5017
+ useCallback as useCallback10,
4956
5018
  useEffect as useEffect10,
4957
5019
  useRef as useRef3,
4958
5020
  useState as useState9
@@ -5675,11 +5737,11 @@ function TransactionStatus({
5675
5737
  const [transitioningToStatus, setTransitioningToStatus] = useState9(status);
5676
5738
  const [transitioningToStep, setTransitioningToStep] = useState9(step);
5677
5739
  const spinAnimationRef = useRef3();
5678
- const stopSpinning = useCallback9(() => {
5740
+ const stopSpinning = useCallback10(() => {
5679
5741
  spinAnimationRef.current?.cancel();
5680
5742
  spinAnimationRef.current = void 0;
5681
5743
  }, []);
5682
- const startSpinning = useCallback9(
5744
+ const startSpinning = useCallback10(
5683
5745
  (step2) => {
5684
5746
  stopSpinning();
5685
5747
  spinAnimationRef.current = animate(
@@ -5697,7 +5759,7 @@ function TransactionStatus({
5697
5759
  },
5698
5760
  [animate, stopSpinning]
5699
5761
  );
5700
- const animateCircleToSuccess = useCallback9(
5762
+ const animateCircleToSuccess = useCallback10(
5701
5763
  async (step2) => {
5702
5764
  const durationMs = 300;
5703
5765
  const checkmarkDelayMs = 50;
@@ -6093,7 +6155,7 @@ function FunCheckoutStatusLoaded({
6093
6155
  checkoutHistoryItem.state,
6094
6156
  checkoutHistoryItem.refundState
6095
6157
  );
6096
- const startTimeMs = useMemo8(
6158
+ const startTimeMs = useMemo9(
6097
6159
  () => extractStartTimeMs(
6098
6160
  checkoutHistoryItem.clientMetadata.id,
6099
6161
  activeCheckoutItem,
@@ -6349,7 +6411,7 @@ function isCustomWithdrawalConfig(config) {
6349
6411
  import { isMobile as isMobile2, isSafari } from "@funkit/utils";
6350
6412
  import clsx8 from "clsx";
6351
6413
  import React43, {
6352
- useCallback as useCallback12,
6414
+ useCallback as useCallback13,
6353
6415
  useContext as useContext12,
6354
6416
  useEffect as useEffect18,
6355
6417
  useRef as useRef8
@@ -6665,7 +6727,7 @@ var ErrorFallback = () => /* @__PURE__ */ React31.createElement(
6665
6727
  );
6666
6728
 
6667
6729
  // src/components/FunBottomBar/FunBottomBar.tsx
6668
- import { FlagKey as FlagKey6, isMobile } from "@funkit/utils";
6730
+ import { FlagKey as FlagKey7, isMobile } from "@funkit/utils";
6669
6731
  import React35 from "react";
6670
6732
 
6671
6733
  // src/components/FunButton/FunButton.tsx
@@ -6953,7 +7015,7 @@ var FunBottomBar = ({
6953
7015
  onClose
6954
7016
  }) => {
6955
7017
  const { uiCustomizations } = useFunkitConfig();
6956
- const showTagline = useFlag(FlagKey6.ShowPoweredTagline);
7018
+ const showTagline = useFlag(FlagKey7.ShowPoweredTagline);
6957
7019
  const defaultBottomSection = showTagline ? /* @__PURE__ */ React35.createElement(FunPoweredTagline, null) : void 0;
6958
7020
  const bottomSectionComponent = bottomSection ?? defaultBottomSection;
6959
7021
  const hasMultipleButtons = !!onClose;
@@ -7086,7 +7148,7 @@ function FunDivider({
7086
7148
 
7087
7149
  // src/components/FunTooltip/FunTooltip.tsx
7088
7150
  import React40, {
7089
- useCallback as useCallback10,
7151
+ useCallback as useCallback11,
7090
7152
  useEffect as useEffect14,
7091
7153
  useRef as useRef6,
7092
7154
  useState as useState14
@@ -7177,7 +7239,7 @@ var FunTooltip = ({
7177
7239
  const startDelayRef = useRef6();
7178
7240
  const delayRef = useRef6();
7179
7241
  const tooltipRef = useRef6(null);
7180
- const show = useCallback10(
7242
+ const show = useCallback11(
7181
7243
  (startHiding) => {
7182
7244
  startDelayRef.current = setTimeout(() => {
7183
7245
  setIsDisplayed(true);
@@ -7187,7 +7249,7 @@ var FunTooltip = ({
7187
7249
  },
7188
7250
  [startDelay]
7189
7251
  );
7190
- const hide = useCallback10(() => {
7252
+ const hide = useCallback11(() => {
7191
7253
  clearTimeout(startDelayRef.current);
7192
7254
  delayRef.current = setTimeout(() => {
7193
7255
  setIsDisplayed(false);
@@ -7300,7 +7362,7 @@ var HelpIcon = () => {
7300
7362
  };
7301
7363
 
7302
7364
  // src/components/Dialog/FocusTrap.tsx
7303
- import React42, { useCallback as useCallback11, useEffect as useEffect15, useRef as useRef7 } from "react";
7365
+ import React42, { useCallback as useCallback12, useEffect as useEffect15, useRef as useRef7 } from "react";
7304
7366
  var moveFocusWithin = (element2, position) => {
7305
7367
  const focusableElements = element2.querySelectorAll(
7306
7368
  "button:not(:disabled), a[href]"
@@ -7333,7 +7395,7 @@ function FocusTrap(props) {
7333
7395
  return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(
7334
7396
  "div",
7335
7397
  {
7336
- onFocus: useCallback11(
7398
+ onFocus: useCallback12(
7337
7399
  () => contentRef.current && moveFocusWithin(contentRef.current, "end"),
7338
7400
  []
7339
7401
  ),
@@ -7350,7 +7412,7 @@ function FocusTrap(props) {
7350
7412
  ), /* @__PURE__ */ React42.createElement(
7351
7413
  "div",
7352
7414
  {
7353
- onFocus: useCallback11(
7415
+ onFocus: useCallback12(
7354
7416
  () => contentRef.current && moveFocusWithin(contentRef.current, "start"),
7355
7417
  []
7356
7418
  ),
@@ -7486,7 +7548,7 @@ function Dialog({
7486
7548
  }
7487
7549
  return () => document.removeEventListener("keydown", handleEscape);
7488
7550
  }, [open, onClose, isSmartCloseable]);
7489
- const handleBackdropClick = useCallback12(
7551
+ const handleBackdropClick = useCallback13(
7490
7552
  () => isSmartCloseable ? onClose() : () => void 0,
7491
7553
  [isSmartCloseable, onClose]
7492
7554
  );
@@ -7842,17 +7904,17 @@ Dialog.BottomBar = FunBottomBar;
7842
7904
  // src/modals/WithdrwalModal/WithdrawalContent.tsx
7843
7905
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7 } from "@funkit/chains";
7844
7906
  import {
7845
- FlagKey as FlagKey13,
7907
+ FlagKey as FlagKey14,
7846
7908
  formatCryptoAndStringify as formatCryptoAndStringify2,
7847
7909
  formatCurrencyAndStringify as formatCurrencyAndStringify3
7848
7910
  } from "@funkit/utils";
7849
- import React67, { useEffect as useEffect27, useMemo as useMemo13, useState as useState26 } from "react";
7911
+ import React67, { useEffect as useEffect27, useMemo as useMemo14, useState as useState26 } from "react";
7850
7912
  import { createPortal as createPortal2 } from "react-dom";
7851
7913
  import { useDebounce } from "use-debounce";
7852
7914
  import { useAccount as useAccount3 } from "wagmi";
7853
7915
 
7854
7916
  // src/components/AsyncImage/AsyncImage.tsx
7855
- import React44, { useMemo as useMemo9, useReducer as useReducer2, useState as useState16 } from "react";
7917
+ import React44, { useMemo as useMemo10, useReducer as useReducer2, useState as useState16 } from "react";
7856
7918
 
7857
7919
  // src/components/AsyncImage/useAsyncImage.ts
7858
7920
  import { useEffect as useEffect19, useReducer } from "react";
@@ -7920,7 +7982,7 @@ function AsyncImage({
7920
7982
  const [hasError, setHasError] = useState16(
7921
7983
  srcProp === void 0 && fallbackSrc === void 0
7922
7984
  );
7923
- const { asyncStyle, imgProps } = useMemo9(() => {
7985
+ const { asyncStyle, imgProps } = useMemo10(() => {
7924
7986
  const asyncStyle2 = !useAsImage ? getRemoteImageStyles(isRemoteImage, isRemoteImageLoaded, src) : {};
7925
7987
  if (useAsImage || isRemoteImage) {
7926
7988
  const imgProps2 = {
@@ -8022,13 +8084,13 @@ var getRemoteImageStyles = (isRemoteImage, isRemoteImageLoaded, src) => {
8022
8084
  import React59 from "react";
8023
8085
 
8024
8086
  // src/components/Dropdown/ChainDropdown.tsx
8025
- import { FlagKey as FlagKey7 } from "@funkit/utils";
8087
+ import { FlagKey as FlagKey8 } from "@funkit/utils";
8026
8088
  import React56 from "react";
8027
8089
 
8028
8090
  // src/components/Dropdown/BaseDropdown.tsx
8029
8091
  import { isMobile as isMobile3, noop as noop2 } from "@funkit/utils";
8030
8092
  import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
8031
- import React53, { useCallback as useCallback13, useEffect as useEffect22, useMemo as useMemo10, useRef as useRef10, useState as useState18 } from "react";
8093
+ import React53, { useCallback as useCallback14, useEffect as useEffect22, useMemo as useMemo11, useRef as useRef10, useState as useState18 } from "react";
8032
8094
 
8033
8095
  // src/consts/layout.ts
8034
8096
  var VERTICAL_SECTION_GAP = "18";
@@ -8652,13 +8714,13 @@ function BaseDropdown({
8652
8714
  const handleSearch = (event) => {
8653
8715
  setSearchInput(event.target.value);
8654
8716
  };
8655
- const filteredOptions = useMemo10(
8717
+ const filteredOptions = useMemo11(
8656
8718
  () => options.filter(
8657
8719
  (singleOption) => singleOption.label.toLowerCase().includes(searchInput?.toLowerCase())
8658
8720
  ),
8659
8721
  [options, searchInput]
8660
8722
  );
8661
- const closeDropdown = useCallback13(() => {
8723
+ const closeDropdown = useCallback14(() => {
8662
8724
  setIsOpened(false);
8663
8725
  resetSearchOnClose && setSearchInput("");
8664
8726
  }, [resetSearchOnClose]);
@@ -8931,9 +8993,9 @@ var ChainDropdown = ({
8931
8993
  maxDropdownHeight,
8932
8994
  tagComponent
8933
8995
  }) => {
8934
- const defaultChainIdJson = useFlag(FlagKey7.TokenTransferDefaultChainId);
8996
+ const defaultChainIdJson = useFlag(FlagKey8.TokenTransferDefaultChainId);
8935
8997
  const defaultChainId = safeJSONParse(defaultChainIdJson);
8936
- const chainSortOrderJson = useFlag(FlagKey7.ChainIdSortOrder);
8998
+ const chainSortOrderJson = useFlag(FlagKey8.ChainIdSortOrder);
8937
8999
  const chainSortOrder = safeJSONParse(chainSortOrderJson) || [];
8938
9000
  const chainIds = getSortedChainIds();
8939
9001
  const options = allowUnselect ? [DEFAULT_VALUE, ...chainIds] : chainIds;
@@ -9040,7 +9102,7 @@ var ChainDropdown = ({
9040
9102
  };
9041
9103
 
9042
9104
  // src/components/Dropdown/TokenDropdown.tsx
9043
- import { FlagKey as FlagKey8, safeParseJson as safeParseJson3 } from "@funkit/utils";
9105
+ import { FlagKey as FlagKey9, safeParseJson as safeParseJson3 } from "@funkit/utils";
9044
9106
  import React58, { useState as useState19 } from "react";
9045
9107
 
9046
9108
  // src/utils/flags/patches/enable-bitcoin-patch.ts
@@ -9181,12 +9243,12 @@ var NewTokenBadge = ({ iconSymbol }) => {
9181
9243
  // src/components/Dropdown/TokenDropdown.tsx
9182
9244
  var TOKEN_ICON_SIZE = 16;
9183
9245
  var useNewTokens = () => {
9184
- const enableBitcoin = useFlag(FlagKey8.EnableBitcoin);
9185
- const bannerJson = useFlag(FlagKey8.NewTokenAssetSelectionBanner);
9246
+ const enableBitcoin = useFlag(FlagKey9.EnableBitcoin);
9247
+ const bannerJson = useFlag(FlagKey9.NewTokenAssetSelectionBanner);
9186
9248
  const bannerData = safeParseJson3(bannerJson);
9187
9249
  const addBitcoinToNewTokensMiddleware = enableBitcoin ? addBitcoinToNewTokens : void 0;
9188
9250
  const newBadgeTokensJson = useFlag(
9189
- FlagKey8.TokenTransferNewTokens,
9251
+ FlagKey9.TokenTransferNewTokens,
9190
9252
  void 0,
9191
9253
  addBitcoinToNewTokensMiddleware
9192
9254
  );
@@ -9206,7 +9268,7 @@ var TokenDropdown = ({
9206
9268
  maxDropdownHeight,
9207
9269
  hideNewTokenBadge
9208
9270
  }) => {
9209
- const defaultTokensJson = useFlag(FlagKey8.TokenTransferDefaultTokens);
9271
+ const defaultTokensJson = useFlag(FlagKey9.TokenTransferDefaultTokens);
9210
9272
  const defaultTokens = safeJSONParse(defaultTokensJson);
9211
9273
  const enabledTokens = assets[selectedChainId];
9212
9274
  const allTokens = getSortedTokens();
@@ -9606,7 +9668,7 @@ import {
9606
9668
  formatPercent,
9607
9669
  noop as noop4
9608
9670
  } from "@funkit/utils";
9609
- import React64, { useEffect as useEffect23, useMemo as useMemo11, useState as useState20 } from "react";
9671
+ import React64, { useEffect as useEffect23, useMemo as useMemo12, useState as useState20 } from "react";
9610
9672
  import clsx14 from "clsx";
9611
9673
  import { motion as motion6, useAnimationControls } from "motion/react";
9612
9674
  import { mainnet as mainnet5 } from "viem/chains";
@@ -10002,7 +10064,7 @@ function PaymentFeesSummary({
10002
10064
  }
10003
10065
  }, [valuesNotAvailable, isExpanded]);
10004
10066
  const { uiCustomizations } = useFunkitConfig();
10005
- const { collapsed: collapsedItem, expanded: expandedItems } = useMemo11(() => {
10067
+ const { collapsed: collapsedItem, expanded: expandedItems } = useMemo12(() => {
10006
10068
  const fees = quote?.finalFeesBreakdown ?? fallbackFees;
10007
10069
  if (!fees) {
10008
10070
  return NO_DATA;
@@ -10156,7 +10218,7 @@ var EvmWallet = ({ size = 20 }) => /* @__PURE__ */ React65.createElement(
10156
10218
 
10157
10219
  // src/hooks/queries/useWithdrawalQuote.ts
10158
10220
  import { useQuery as useQuery6 } from "@tanstack/react-query";
10159
- import { useConfig as useConfig2 } from "wagmi";
10221
+ import { useConfig as useConfig3 } from "wagmi";
10160
10222
 
10161
10223
  // src/domains/quote.ts
10162
10224
  import { getCheckoutQuote as getApiCheckoutQuote } from "@funkit/api-base";
@@ -10592,7 +10654,7 @@ function useWithdrawalQuote({
10592
10654
  });
10593
10655
  const { loginType, userInfo } = useGeneralWallet();
10594
10656
  const { apiKey } = useFunkitConfig();
10595
- const wagmiConfig = useConfig2();
10657
+ const wagmiConfig = useConfig3();
10596
10658
  const { getWithdrawalDirectExecution } = useCheckoutDirectExecution();
10597
10659
  const { checkoutItem } = useCheckoutContext();
10598
10660
  const isInstantQuoting = (symbol === "USDC" || symbol === "USDT") && chainId !== "1";
@@ -10805,13 +10867,13 @@ var useAssetSymbolPrice = ({
10805
10867
  };
10806
10868
 
10807
10869
  // src/hooks/useTokenChain.ts
10808
- import { FlagKey as FlagKey10 } from "@funkit/utils";
10870
+ import { FlagKey as FlagKey11 } from "@funkit/utils";
10809
10871
  import { useEffect as useEffect24, useState as useState21 } from "react";
10810
10872
  import { polygon as polygon3 } from "viem/chains";
10811
10873
 
10812
10874
  // src/hooks/useEnabledTokenTransferChainTokens.ts
10813
10875
  import { bitcoinChain as bitcoinChain2, solanaChain as solanaChain3 } from "@funkit/chains";
10814
- import { FlagKey as FlagKey9 } from "@funkit/utils";
10876
+ import { FlagKey as FlagKey10 } from "@funkit/utils";
10815
10877
  import { base as base4 } from "viem/chains";
10816
10878
 
10817
10879
  // src/hooks/useIsUsUser.ts
@@ -10833,14 +10895,14 @@ function useIsUsKatanaUser() {
10833
10895
  // src/hooks/useEnabledTokenTransferChainTokens.ts
10834
10896
  function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
10835
10897
  const isBankrUsUser = useIsUsBankrUser();
10836
- const enableBitcoin = useFlag(FlagKey9.EnableBitcoin);
10898
+ const enableBitcoin = useFlag(FlagKey10.EnableBitcoin);
10837
10899
  const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
10838
10900
  const depositAssets = useFlag(
10839
- FlagKey9.TokenTransferSourceChainsAndAssets,
10901
+ FlagKey10.TokenTransferSourceChainsAndAssets,
10840
10902
  void 0,
10841
10903
  addBitcoinToSourceChainsAndAssetsMiddleware
10842
10904
  );
10843
- const withdrawalAssets = useFlag(FlagKey9.WithdrawalChainsAndAssets);
10905
+ const withdrawalAssets = useFlag(FlagKey10.WithdrawalChainsAndAssets);
10844
10906
  const assetsJsonString = isWithdrawal ? withdrawalAssets : depositAssets;
10845
10907
  const assets = safeJSONParse(assetsJsonString);
10846
10908
  if (!assets) {
@@ -10877,7 +10939,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
10877
10939
  transferInit ?? null,
10878
10940
  isWithdrawal
10879
10941
  );
10880
- const defaultChainIdFlag = useFlag(FlagKey10.TokenTransferDefaultChainId);
10942
+ const defaultChainIdFlag = useFlag(FlagKey11.TokenTransferDefaultChainId);
10881
10943
  const defaultChainId = defaultValues?.chainId ?? Number(defaultChainIdFlag);
10882
10944
  const validDefaultChainId = filteredAssets[defaultChainId] !== void 0 ? defaultChainId : polygon3.id;
10883
10945
  const [selectedChainId, setSelectedChainId] = useState21(validDefaultChainId);
@@ -10932,7 +10994,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
10932
10994
  import { useState as useState25 } from "react";
10933
10995
 
10934
10996
  // src/hooks/useAutoClearState.ts
10935
- import { useCallback as useCallback14, useEffect as useEffect25, useRef as useRef11, useState as useState22 } from "react";
10997
+ import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef11, useState as useState22 } from "react";
10936
10998
  function useAutoClearState(initialValue = null) {
10937
10999
  const [state, setState] = useState22(initialValue);
10938
11000
  const timeoutRef = useRef11();
@@ -10945,7 +11007,7 @@ function useAutoClearState(initialValue = null) {
10945
11007
  }, []);
10946
11008
  return [
10947
11009
  state,
10948
- useCallback14((newState, durationMs) => {
11010
+ useCallback15((newState, durationMs) => {
10949
11011
  if (timeoutRef.current) {
10950
11012
  clearTimeout(timeoutRef.current);
10951
11013
  timeoutRef.current = void 0;
@@ -10963,11 +11025,11 @@ import { ClientError as ClientError2 } from "@funkit/utils";
10963
11025
  import { useState as useState24 } from "react";
10964
11026
 
10965
11027
  // src/hooks/useIsBlacklisted.ts
10966
- import { FlagKey as FlagKey11 } from "@funkit/utils";
10967
- import { useMemo as useMemo12 } from "react";
11028
+ import { FlagKey as FlagKey12 } from "@funkit/utils";
11029
+ import { useMemo as useMemo13 } from "react";
10968
11030
  var useIsBlacklisted = (walletAddress, customRecipient) => {
10969
- const flagStr = useFlag(FlagKey11.AddressBlacklist);
10970
- const blacklist = useMemo12(
11031
+ const flagStr = useFlag(FlagKey12.AddressBlacklist);
11032
+ const blacklist = useMemo13(
10971
11033
  () => safeJSONParse(flagStr)?.map((addr) => addr.toLowerCase()) || [],
10972
11034
  [flagStr]
10973
11035
  );
@@ -10978,15 +11040,15 @@ var useIsBlacklisted = (walletAddress, customRecipient) => {
10978
11040
  };
10979
11041
 
10980
11042
  // src/providers/FunkitQuoteContext.tsx
10981
- import { FlagKey as FlagKey12, isNotNullish as isNotNullish4 } from "@funkit/utils";
11043
+ import { FlagKey as FlagKey13, isNotNullish as isNotNullish4 } from "@funkit/utils";
10982
11044
  import React66, {
10983
11045
  createContext as createContext13,
10984
- useCallback as useCallback15,
11046
+ useCallback as useCallback16,
10985
11047
  useContext as useContext13,
10986
11048
  useEffect as useEffect26,
10987
11049
  useState as useState23
10988
11050
  } from "react";
10989
- import { useConfig as useConfig3 } from "wagmi";
11051
+ import { useConfig as useConfig4 } from "wagmi";
10990
11052
 
10991
11053
  // src/consts/quote.ts
10992
11054
  import { ClientError } from "@funkit/utils";
@@ -11077,9 +11139,9 @@ var FunkitQuoteContext = createContext13({
11077
11139
  function FunkitQuoteProvider({ children }) {
11078
11140
  const { checkoutItem, setCheckout } = useCheckoutContext();
11079
11141
  const funkitConfig = useFunkitConfig();
11080
- const wagmiConfig = useConfig3();
11142
+ const wagmiConfig = useConfig4();
11081
11143
  const { walletAddress, logoutSymbol, loginType, userInfo } = useGeneralWallet();
11082
- const enableFrogProxyServer = useFlag(FlagKey12.EnableFrogProxyServer);
11144
+ const enableFrogProxyServer = useFlag(FlagKey13.EnableFrogProxyServer);
11083
11145
  const { getDirectExecutionInfo } = useCheckoutDirectExecution();
11084
11146
  const [latestQuote, setLatestQuote] = useState23(null);
11085
11147
  const [isQuoting, setIsQuoting] = useState23(false);
@@ -11095,7 +11157,7 @@ function FunkitQuoteProvider({ children }) {
11095
11157
  });
11096
11158
  }
11097
11159
  }, [logoutSymbol]);
11098
- const setQuoteProgress = useCallback15(
11160
+ const setQuoteProgress = useCallback16(
11099
11161
  (state) => {
11100
11162
  setQuoteErrorMessage(state.quoteErrorMessage);
11101
11163
  setQuoteStepMessage(state.quoteStepMessage);
@@ -11103,7 +11165,7 @@ function FunkitQuoteProvider({ children }) {
11103
11165
  },
11104
11166
  []
11105
11167
  );
11106
- const clearCheckoutQuoteMessages = useCallback15(() => {
11168
+ const clearCheckoutQuoteMessages = useCallback16(() => {
11107
11169
  setQuoteStepMessage("");
11108
11170
  setQuoteErrorMessage("");
11109
11171
  }, []);
@@ -11538,7 +11600,7 @@ function useWithdrawalAssets(config) {
11538
11600
  },
11539
11601
  true
11540
11602
  );
11541
- const excludedTokenStr = useFlag(FlagKey13.WithdrawalExcludeTokens);
11603
+ const excludedTokenStr = useFlag(FlagKey14.WithdrawalExcludeTokens);
11542
11604
  const excludedTokens = safeJSONParse(excludedTokenStr);
11543
11605
  if (excludedTokens) {
11544
11606
  for (const chainIdStr of Object.keys(excludedTokens)) {
@@ -11630,11 +11692,52 @@ function getErrorNotification(quoteErrorObject, withdrawalError, targetAssetFetc
11630
11692
  }
11631
11693
  return null;
11632
11694
  }
11695
+ function useShowConnectWallet({
11696
+ config
11697
+ }) {
11698
+ const withdrawalWalletAddress = "wallet" in config ? config.wallet.address() : "0x";
11699
+ const { isConnected, address: connectedWalletAddress } = useAccount3();
11700
+ const showUseConnected = !config.disableConnectedWallet && isConnected && connectedWalletAddress && withdrawalWalletAddress.toLowerCase() !== connectedWalletAddress.toLowerCase();
11701
+ useEffect27(() => {
11702
+ logger.debug("withdrawalContent:showUseConnected", {
11703
+ isConnected,
11704
+ connectedWalletAddress,
11705
+ withdrawalWalletAddress
11706
+ });
11707
+ }, [isConnected, connectedWalletAddress, withdrawalWalletAddress]);
11708
+ return showUseConnected;
11709
+ }
11710
+ function isValidWithdrawal({
11711
+ config,
11712
+ checkoutConfig,
11713
+ withdrawalUSD,
11714
+ recipientAddress,
11715
+ selectedChainId,
11716
+ sourceTokenBalance
11717
+ }) {
11718
+ const isValidAddress = isAddressSupported(recipientAddress);
11719
+ const isValidAddressAndChain = isAddressCompatibleWithChain(
11720
+ recipientAddress,
11721
+ selectedChainId
11722
+ );
11723
+ const minWithdrawalUsd = config.getMinWithdrawalUSD?.({
11724
+ tokenAddress: checkoutConfig?.sourceTokenAddress || "0x",
11725
+ tokenChainId: checkoutConfig?.sourceChain || "0"
11726
+ }) || 0.01;
11727
+ const isWithdrawAmountTooLow = Number(withdrawalUSD) < minWithdrawalUsd;
11728
+ const isWithdrawAmountValid = !isWithdrawAmountTooLow && Number(withdrawalUSD) <= sourceTokenBalance;
11729
+ return {
11730
+ isValidAddress,
11731
+ isValidAddressAndChain,
11732
+ isWithdrawAmountTooLow,
11733
+ isWithdrawAmountValid,
11734
+ minWithdrawalUsd
11735
+ };
11736
+ }
11633
11737
  var WithdrawContent = ({
11634
11738
  onContinue,
11635
11739
  config,
11636
11740
  withdrawalItem
11637
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: refactor this later
11638
11741
  }) => {
11639
11742
  const sourceTokenBalance = withdrawalItem?.withdrawalSourceTokenBalance?.() || 0;
11640
11743
  const token = config.sourceTokenSymbol;
@@ -11685,7 +11788,6 @@ var WithdrawContent = ({
11685
11788
  iconSrc: getTokenIconUrl(selectedToken)
11686
11789
  });
11687
11790
  }, [targetAssetInfo, updateTargetAsset, selectedChainId, selectedToken]);
11688
- const withdrawalWalletAddress = "wallet" in config ? config.wallet.address() : "0x";
11689
11791
  const {
11690
11792
  isLoading: isQuoteLoading,
11691
11793
  data: quote,
@@ -11701,11 +11803,7 @@ var WithdrawContent = ({
11701
11803
  symbol: selectedToken,
11702
11804
  targetAsset: targetAssetInfo?.address
11703
11805
  });
11704
- const {
11705
- isConnected,
11706
- connector,
11707
- address: connectedWalletAddress
11708
- } = useAccount3();
11806
+ const { connector, address: connectedWalletAddress } = useAccount3();
11709
11807
  const { handleWithdrawal, isWithdrawing, withdrawalError } = useWithdrawal({
11710
11808
  config,
11711
11809
  withdrawalItem,
@@ -11727,27 +11825,25 @@ var WithdrawContent = ({
11727
11825
  (wallet) => wallet.id === connector?.id
11728
11826
  )?.iconUrl;
11729
11827
  const normalizedSelectedToken = selectedToken.toUpperCase();
11730
- const isValidAddress = isAddressSupported(recipientAddress);
11731
- const isValidAddressAndChain = isAddressCompatibleWithChain(
11732
- recipientAddress,
11733
- selectedChainId
11734
- );
11735
11828
  const { checkoutItem } = useCheckoutContext();
11736
11829
  const checkoutConfig = checkoutItem?.initSettings.config;
11737
- const minWithdrawalUsd = config.getMinWithdrawalUSD?.({
11738
- tokenAddress: checkoutConfig?.sourceTokenAddress || "0x",
11739
- tokenChainId: checkoutConfig?.sourceChain || "0"
11740
- }) || 0.01;
11741
- const isWithdrawAmountTooLow = Number(withdrawalUSD) < minWithdrawalUsd;
11742
- const isWithdrawAmountValid = !isWithdrawAmountTooLow && Number(withdrawalUSD) <= sourceTokenBalance;
11743
- const showUseConnected = !config.disableConnectedWallet && isConnected && connectedWalletAddress && withdrawalWalletAddress.toLowerCase() !== connectedWalletAddress.toLowerCase();
11744
- useEffect27(() => {
11745
- logger.debug("withdrawalContent:showUseConnected", {
11746
- isConnected,
11747
- connectedWalletAddress,
11748
- withdrawalWalletAddress
11749
- });
11750
- }, [isConnected, connectedWalletAddress, withdrawalWalletAddress]);
11830
+ const {
11831
+ isValidAddress,
11832
+ isValidAddressAndChain,
11833
+ isWithdrawAmountTooLow,
11834
+ isWithdrawAmountValid,
11835
+ minWithdrawalUsd
11836
+ } = isValidWithdrawal({
11837
+ config,
11838
+ checkoutConfig,
11839
+ withdrawalUSD,
11840
+ sourceTokenBalance,
11841
+ recipientAddress,
11842
+ selectedChainId
11843
+ });
11844
+ const showUseConnected = useShowConnectWallet({
11845
+ config
11846
+ });
11751
11847
  const handleUseConnectedClick = () => {
11752
11848
  if (!connectedWalletAddress) {
11753
11849
  return;
@@ -11824,7 +11920,7 @@ var WithdrawContent = ({
11824
11920
  isValidAddressAndChain,
11825
11921
  selectedChainName
11826
11922
  });
11827
- const errorNotification = useMemo13(
11923
+ const errorNotification = useMemo14(
11828
11924
  () => getErrorNotification(
11829
11925
  quoteErrorObject,
11830
11926
  withdrawalError,
@@ -12070,7 +12166,7 @@ import { useAccount as useAccount6 } from "wagmi";
12070
12166
  // src/components/FunPayments/FunPaymentMethods.tsx
12071
12167
  import { BridgeCustomerStatus as BridgeCustomerStatus3 } from "@funkit/api-base";
12072
12168
  import {
12073
- FlagKey as FlagKey16,
12169
+ FlagKey as FlagKey17,
12074
12170
  formatCurrencyAndStringify as formatCurrencyAndStringify4,
12075
12171
  formatSecondsToReadableForm,
12076
12172
  safeParseJson as safeParseJson4
@@ -12157,9 +12253,9 @@ var isSoftRejected = (customer) => customer && isKycUninitialized(customer.statu
12157
12253
  var FIAT_PROCESSING_TIME = "1-2 business days";
12158
12254
 
12159
12255
  // src/hooks/useCheckoutTimeEstimate.ts
12160
- import { FlagKey as FlagKey14 } from "@funkit/utils";
12256
+ import { FlagKey as FlagKey15 } from "@funkit/utils";
12161
12257
  function useCheckoutTimeEstimate(originalTimeEstimationMs, paymentMethod = "card" /* CARD */, bypassFlag = false) {
12162
- const timeEstimatesJsonString = useFlag(FlagKey14.CheckoutTimeEstimateOverrides);
12258
+ const timeEstimatesJsonString = useFlag(FlagKey15.CheckoutTimeEstimateOverrides);
12163
12259
  const timeEstimates = safeJSONParse(
12164
12260
  timeEstimatesJsonString
12165
12261
  );
@@ -12176,9 +12272,9 @@ import {
12176
12272
  getBridgeKycLink
12177
12273
  } from "@funkit/api-base";
12178
12274
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9 } from "@funkit/chains";
12179
- import { FlagKey as FlagKey15 } from "@funkit/utils";
12275
+ import { FlagKey as FlagKey16 } from "@funkit/utils";
12180
12276
  import { useQuery as useQuery10, useQueryClient } from "@tanstack/react-query";
12181
- import { useCallback as useCallback16 } from "react";
12277
+ import { useCallback as useCallback17 } from "react";
12182
12278
  var sepaCountryCode = [
12183
12279
  // EU countries that are part of SEPA
12184
12280
  "AT",
@@ -12256,8 +12352,8 @@ function useFiatEnabled() {
12256
12352
  const isEuSepaUser = sepaCountryCode.includes(
12257
12353
  userIpInfo?.alpha2 || "PLACEHOLDER"
12258
12354
  );
12259
- const isTokenTransferEnabled = useFlag(FlagKey15.EnableTokenTransfer);
12260
- const isFiatEnabled = useFlag(FlagKey15.EnableFiatDeposit);
12355
+ const isTokenTransferEnabled = useFlag(FlagKey16.EnableTokenTransfer);
12356
+ const isFiatEnabled = useFlag(FlagKey16.EnableFiatDeposit);
12261
12357
  return isEuSepaUser && isTokenTransferEnabled && isFiatEnabled;
12262
12358
  }
12263
12359
  function useFrogAccounts() {
@@ -12277,13 +12373,13 @@ function useFrogAccounts() {
12277
12373
  function useClearFrogAccountsCache() {
12278
12374
  const { walletAddress } = useGeneralWallet();
12279
12375
  const queryClient = useQueryClient();
12280
- const clearFrogAccounts = useCallback16(() => {
12376
+ const clearFrogAccounts = useCallback17(() => {
12281
12377
  queryClient.removeQueries({
12282
12378
  queryKey: ["frogSubAccounts", walletAddress],
12283
12379
  exact: true
12284
12380
  });
12285
12381
  }, [queryClient, walletAddress]);
12286
- const clearVirtualFiatAccounts = useCallback16(() => {
12382
+ const clearVirtualFiatAccounts = useCallback17(() => {
12287
12383
  queryClient.removeQueries({
12288
12384
  queryKey: ["useVirtualFiatAccounts"]
12289
12385
  });
@@ -12358,7 +12454,7 @@ function useCreateVirtualBankAccount() {
12358
12454
  const chainName = targetChainId && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9[targetChainId]?.name?.toLowerCase();
12359
12455
  const subAccountId = allFiatAccounts?.bridgeCustomer?.id;
12360
12456
  const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
12361
- const handleCreateVirtualFiatAccount = useCallback16(async () => {
12457
+ const handleCreateVirtualFiatAccount = useCallback17(async () => {
12362
12458
  try {
12363
12459
  if (!subAccountId || !chainName) {
12364
12460
  return {
@@ -12408,7 +12504,7 @@ import {
12408
12504
  FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS3,
12409
12505
  FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO10
12410
12506
  } from "@funkit/chains";
12411
- import { useMemo as useMemo14 } from "react";
12507
+ import { useMemo as useMemo15 } from "react";
12412
12508
 
12413
12509
  // src/hooks/useWalletAssets.ts
12414
12510
  import {
@@ -12585,7 +12681,7 @@ var processWalletAssets = (walletAssets, targetChain) => {
12585
12681
  };
12586
12682
  function useWalletAssetHoldings(targetChain) {
12587
12683
  const { walletAssets, isLoading, totalWalletAssetsUsd } = useWalletAssets();
12588
- const processedAssets = useMemo14(
12684
+ const processedAssets = useMemo15(
12589
12685
  () => processWalletAssets(walletAssets, targetChain),
12590
12686
  [targetChain, walletAssets]
12591
12687
  );
@@ -13833,16 +13929,6 @@ var CardPaymentMethodItem = ({
13833
13929
  valueIcon: customValueIcon ?? /* @__PURE__ */ React74.createElement(CombinedCreditCardOptionsIcon, null),
13834
13930
  onClick,
13835
13931
  isDisabled: !isClickable,
13836
- badge: /* @__PURE__ */ React74.createElement(
13837
- FunBadge,
13838
- {
13839
- background: "approvedBadgeBackground",
13840
- borderColor: "approvedBadgeBorder",
13841
- color: "approvedBadgeText",
13842
- hasShine: true
13843
- },
13844
- "NEW"
13845
- ),
13846
13932
  disclaimerText: `$50,000 limit \u2022 ${formatSecondsToReadableForm(timeEstimate, true)}`
13847
13933
  }
13848
13934
  );
@@ -13855,12 +13941,12 @@ var TransferPaymentMethodItem = ({
13855
13941
  paymentIcon
13856
13942
  }) => {
13857
13943
  const { textCustomizations } = useFunkitConfig();
13858
- const enableBitcoin = useFlag(FlagKey16.EnableBitcoin);
13859
- const bannerJson = useFlag(FlagKey16.NewTokenAssetSelectionBanner);
13944
+ const enableBitcoin = useFlag(FlagKey17.EnableBitcoin);
13945
+ const bannerJson = useFlag(FlagKey17.NewTokenAssetSelectionBanner);
13860
13946
  const bannerData = safeParseJson4(bannerJson);
13861
13947
  const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
13862
13948
  const depositAssetsJson = useFlag(
13863
- FlagKey16.TokenTransferSourceChainsAndAssets,
13949
+ FlagKey17.TokenTransferSourceChainsAndAssets,
13864
13950
  void 0,
13865
13951
  addBitcoinToSourceChainsAndAssetsMiddleware
13866
13952
  );
@@ -13977,16 +14063,6 @@ function PayPalPaymentMethodItem({
13977
14063
  keyText: "Deposit with PayPal",
13978
14064
  onClick,
13979
14065
  isDisabled: !isClickable,
13980
- badge: /* @__PURE__ */ React74.createElement(
13981
- FunBadge,
13982
- {
13983
- background: "approvedBadgeBackground",
13984
- borderColor: "approvedBadgeBorder",
13985
- color: "approvedBadgeText",
13986
- hasShine: true
13987
- },
13988
- "NEW"
13989
- ),
13990
14066
  disclaimerText: "$10,000 limit \u2022 5 min"
13991
14067
  }
13992
14068
  );
@@ -14078,7 +14154,7 @@ var BankIconActive = ({ size = 20 }) => {
14078
14154
 
14079
14155
  // src/components/FunConnectOptions/FunSignInStep.tsx
14080
14156
  import { groupBy, isMobile as isMobile8, isSafari as isSafari3, redirectInMobile as redirectInMobile2 } from "@funkit/utils";
14081
- import React191, { Fragment as Fragment2, useCallback as useCallback42, useMemo as useMemo37, useState as useState62 } from "react";
14157
+ import React191, { Fragment as Fragment2, useCallback as useCallback43, useMemo as useMemo38, useState as useState62 } from "react";
14082
14158
 
14083
14159
  // src/providers/walletConnectDeepLink.ts
14084
14160
  var storageKey = "WALLETCONNECT_DEEPLINK_CHOICE";
@@ -14496,10 +14572,10 @@ var SocialsIcon = () => {
14496
14572
  };
14497
14573
 
14498
14574
  // src/components/FunConnectOptions/FunConnectOptions.tsx
14499
- import React190, { useCallback as useCallback41, useMemo as useMemo36, useState as useState61 } from "react";
14575
+ import React190, { useCallback as useCallback42, useMemo as useMemo37, useState as useState61 } from "react";
14500
14576
 
14501
14577
  // src/hooks/useAnimatedNavigation.ts
14502
- import { useCallback as useCallback17, useState as useState28 } from "react";
14578
+ import { useCallback as useCallback18, useState as useState28 } from "react";
14503
14579
 
14504
14580
  // src/css/modalTransitionStyles.css.ts
14505
14581
  var animateContentInClass = "stgjxl2";
@@ -14527,7 +14603,7 @@ function useAnimatedNavigation(callback) {
14527
14603
  const [animateOut, setAnimateOut] = useState28(false);
14528
14604
  const [isSkipped, setIsSkipped] = useState28(false);
14529
14605
  const [isReversed, setIsReversed] = useState28(false);
14530
- const navigateTo = useCallback17(
14606
+ const navigateTo = useCallback18(
14531
14607
  (page, params = {}) => {
14532
14608
  setIsSkipped(!!params.skip);
14533
14609
  if (params.skip) {
@@ -14542,7 +14618,7 @@ function useAnimatedNavigation(callback) {
14542
14618
  },
14543
14619
  [callback]
14544
14620
  );
14545
- const animate = useCallback17(
14621
+ const animate = useCallback18(
14546
14622
  (callback2, params = {}) => {
14547
14623
  setIsSkipped(!!params.skip);
14548
14624
  if (params.skip) {
@@ -14570,17 +14646,17 @@ import React180, { useEffect as useEffect45, useRef as useRef23, useState as use
14570
14646
 
14571
14647
  // src/modals/CheckoutModal/stepTransition.ts
14572
14648
  import {
14573
- useCallback as useCallback37,
14649
+ useCallback as useCallback38,
14574
14650
  useRef as useRef22,
14575
14651
  useState as useState57
14576
14652
  } from "react";
14577
14653
 
14578
14654
  // src/hooks/useCheckoutQuoteNotification.ts
14579
- import { useMemo as useMemo15 } from "react";
14655
+ import { useMemo as useMemo16 } from "react";
14580
14656
  function useCheckoutQuoteNotification() {
14581
14657
  const { clearCheckoutQuoteMessages } = useQuoteContext();
14582
14658
  const { quoteErrorMessage, quoteStepMessage } = useQuoteContext();
14583
- const quoteNotification = useMemo15(() => {
14659
+ const quoteNotification = useMemo16(() => {
14584
14660
  if (quoteErrorMessage !== "") {
14585
14661
  return {
14586
14662
  messageType: "error",
@@ -14864,7 +14940,7 @@ import {
14864
14940
  BridgeCustomerStatus as BridgeCustomerStatus4
14865
14941
  } from "@funkit/api-base";
14866
14942
  import { exhaustiveCheck as exhaustiveCheck4 } from "@funkit/utils";
14867
- import React92, { useCallback as useCallback18, useState as useState30 } from "react";
14943
+ import React92, { useCallback as useCallback19, useState as useState30 } from "react";
14868
14944
  import { createPortal as createPortal4 } from "react-dom";
14869
14945
 
14870
14946
  // src/components/Icons/HomeIcon.tsx
@@ -15466,7 +15542,7 @@ var VerifyAccountScreen = ({
15466
15542
  const kycUninitialized = !isSoftRejected2 && customerStatus && isKycUninitialized(customerStatus);
15467
15543
  const canStartKyc = kycUninitialized || isSoftRejected2;
15468
15544
  const handleCreateVirtualFiatAccount = useCreateVirtualBankAccount();
15469
- const onClick = useCallback18(async () => {
15545
+ const onClick = useCallback19(async () => {
15470
15546
  if (customerStatus === BridgeCustomerStatus4.ACTIVE) {
15471
15547
  setCreating(true);
15472
15548
  const result = await handleCreateVirtualFiatAccount();
@@ -15998,7 +16074,7 @@ function getCheckoutCompletionTime(checkout) {
15998
16074
  }
15999
16075
 
16000
16076
  // src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
16001
- import React108, { useCallback as useCallback20, useMemo as useMemo16, useState as useState32 } from "react";
16077
+ import React108, { useCallback as useCallback21, useMemo as useMemo17, useState as useState32 } from "react";
16002
16078
  import { createPortal as createPortal6 } from "react-dom";
16003
16079
 
16004
16080
  // src/components/HelpAlert/HelpAlert.tsx
@@ -16014,7 +16090,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
16014
16090
  };
16015
16091
 
16016
16092
  // src/hooks/useFunListeners.ts
16017
- import { useCallback as useCallback19, useEffect as useEffect28, useRef as useRef13 } from "react";
16093
+ import { useCallback as useCallback20, useEffect as useEffect28, useRef as useRef13 } from "react";
16018
16094
  function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
16019
16095
  const activeIntervalRef = useRef13();
16020
16096
  const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
@@ -16037,21 +16113,21 @@ function useSIWFarcasterListener(channelToken) {
16037
16113
  const { getFcConnectionStatus, handleFunkitWeb2Login } = useFunkitWeb2Login();
16038
16114
  const intervalRef = useRef13();
16039
16115
  const [refreshSymbol, triggerRefreshSymbol] = useSymbolRefresh_default();
16040
- const startStatusListener = useCallback19(() => {
16116
+ const startStatusListener = useCallback20(() => {
16041
16117
  clearInterval(intervalRef.current);
16042
16118
  triggerRefreshSymbol();
16043
16119
  intervalRef.current = setInterval(() => {
16044
16120
  triggerRefreshSymbol();
16045
16121
  }, FARCASTER_STATUS_INTERVAL);
16046
16122
  }, [triggerRefreshSymbol]);
16047
- const stopStatusListener = useCallback19(() => {
16123
+ const stopStatusListener = useCallback20(() => {
16048
16124
  clearInterval(intervalRef.current);
16049
16125
  }, []);
16050
16126
  useEffect28(() => {
16051
16127
  startStatusListener();
16052
16128
  return () => stopStatusListener();
16053
16129
  }, []);
16054
- const check = useCallback19(async () => {
16130
+ const check = useCallback20(async () => {
16055
16131
  if (!channelToken || !initalChainid) {
16056
16132
  return;
16057
16133
  }
@@ -16365,7 +16441,7 @@ function FunCheckoutHistoryDetail({
16365
16441
  useCheckoutHistoryListener(isProcessing, checkoutHistoryInfo?.depositAddr);
16366
16442
  useWalletAssets({ enableRefetchInterval: isProcessing || isCompleted });
16367
16443
  const { beginCheckout } = useFunkitCheckout({});
16368
- const handleNewCheckout = useCallback20(
16444
+ const handleNewCheckout = useCallback21(
16369
16445
  (fromCheckout) => {
16370
16446
  onClose({ isNewDeposit: true });
16371
16447
  const historicalCheckout = fromCheckout.clientMetadata;
@@ -16384,7 +16460,7 @@ function FunCheckoutHistoryDetail({
16384
16460
  isActiveCheckout
16385
16461
  ]
16386
16462
  );
16387
- const primaryButtonProps = useMemo16(() => {
16463
+ const primaryButtonProps = useMemo17(() => {
16388
16464
  if (!isCheckoutLoaded) {
16389
16465
  return void 0;
16390
16466
  }
@@ -16473,7 +16549,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
16473
16549
 
16474
16550
  // src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
16475
16551
  import { sendSupportMessage } from "@funkit/api-base";
16476
- import React112, { useEffect as useEffect30, useMemo as useMemo17, useRef as useRef15, useState as useState33 } from "react";
16552
+ import React112, { useEffect as useEffect30, useMemo as useMemo18, useRef as useRef15, useState as useState33 } from "react";
16477
16553
  import { createPortal as createPortal7 } from "react-dom";
16478
16554
 
16479
16555
  // src/components/FunInput/FunTextAreaInput.tsx
@@ -16650,7 +16726,7 @@ function FunCheckoutHistoryHelp({
16650
16726
  );
16651
16727
  const [descriptionInput, setDescriptionInput] = useState33("");
16652
16728
  const [errorMessage, setErrorMessage] = useState33();
16653
- const isEmailInputValid = useMemo17(() => {
16729
+ const isEmailInputValid = useMemo18(() => {
16654
16730
  return validateEmailString(emailInput);
16655
16731
  }, [emailInput]);
16656
16732
  const [processStage, setProcessStage] = useState33(
@@ -16842,7 +16918,7 @@ import {
16842
16918
  formatTimestamp as formatTimestamp2,
16843
16919
  isTokenEquivalent as isTokenEquivalent3
16844
16920
  } from "@funkit/utils";
16845
- import React113, { useCallback as useCallback21, useMemo as useMemo18, useRef as useRef16, useState as useState34 } from "react";
16921
+ import React113, { useCallback as useCallback22, useMemo as useMemo19, useRef as useRef16, useState as useState34 } from "react";
16846
16922
  import { createPortal as createPortal8 } from "react-dom";
16847
16923
 
16848
16924
  // src/hooks/useReceiveAmountLabel.ts
@@ -16871,7 +16947,7 @@ function FunDirectExecutionHistoryDetail({
16871
16947
  const bottomSectionRef = document.getElementById(bottomBarId);
16872
16948
  const { checkoutItem } = useCheckoutContext();
16873
16949
  const { beginCheckout } = useFunkitCheckout({});
16874
- const handleNewCheckout = useCallback21(
16950
+ const handleNewCheckout = useCallback22(
16875
16951
  (fromCheckout) => {
16876
16952
  onClose({ isNewDeposit: true });
16877
16953
  const historicalCheckout = fromCheckout.clientMetadata;
@@ -16891,7 +16967,7 @@ function FunDirectExecutionHistoryDetail({
16891
16967
  ]
16892
16968
  );
16893
16969
  const isWithdrawal = directExecution?.clientMetadata?.isWithdrawal;
16894
- const buttonProps = useMemo18(() => {
16970
+ const buttonProps = useMemo19(() => {
16895
16971
  if (!isLoaded) {
16896
16972
  return void 0;
16897
16973
  }
@@ -17114,11 +17190,11 @@ function FunCheckoutHistoryContent({
17114
17190
  }
17115
17191
 
17116
17192
  // src/modals/CheckoutModal/CheckoutComplete/useLogCheckoutCompletion.ts
17117
- import { useCallback as useCallback22 } from "react";
17193
+ import { useCallback as useCallback23 } from "react";
17118
17194
  function useLogCheckoutCompletion() {
17119
17195
  const { latestQuote } = useQuoteContext();
17120
17196
  const { checkoutItem } = useCheckoutContext();
17121
- const logCheckoutCompletion = useCallback22(
17197
+ const logCheckoutCompletion = useCallback23(
17122
17198
  (depositAddress) => {
17123
17199
  if (depositAddress) {
17124
17200
  logger.log("checkoutFundingCompleted", {
@@ -17214,7 +17290,7 @@ function CheckoutHelp({
17214
17290
  }
17215
17291
 
17216
17292
  // src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
17217
- import React131, { useEffect as useEffect36, useMemo as useMemo23, useState as useState43 } from "react";
17293
+ import React131, { useEffect as useEffect36, useMemo as useMemo24, useState as useState43 } from "react";
17218
17294
  import { createPortal as createPortal10 } from "react-dom";
17219
17295
 
17220
17296
  // src/providers/UserPresenceContext.tsx
@@ -17255,7 +17331,7 @@ import { DirectExecutionType as DirectExecutionType2 } from "@funkit/api-base";
17255
17331
 
17256
17332
  // src/components/FunInfoBanner/FunInfoBanner.tsx
17257
17333
  import React119 from "react";
17258
- import { FlagKey as FlagKey17, safeParseJson as safeParseJson5 } from "@funkit/utils";
17334
+ import { FlagKey as FlagKey18, safeParseJson as safeParseJson5 } from "@funkit/utils";
17259
17335
 
17260
17336
  // src/components/FunInfoBanner/EphemeralInfoBanner.tsx
17261
17337
  import React118, { useState as useState36 } from "react";
@@ -17293,7 +17369,7 @@ var EphemeralInfoBanner = ({
17293
17369
 
17294
17370
  // src/components/FunInfoBanner/FunInfoBanner.tsx
17295
17371
  var FunInfoBanner = () => {
17296
- const bannerJson = useFlag(FlagKey17.ShowInfoBanner);
17372
+ const bannerJson = useFlag(FlagKey18.ShowInfoBanner);
17297
17373
  const bannerData = safeParseJson5(bannerJson);
17298
17374
  if (!bannerData || !bannerData.message) {
17299
17375
  return null;
@@ -17311,12 +17387,12 @@ var FunInfoBanner = () => {
17311
17387
  // src/components/FunTransactionSummary/PaymentAmountSummary.tsx
17312
17388
  import {
17313
17389
  formatCurrencyAndStringify as formatCurrencyAndStringify5,
17314
- isTokenAddressEquivalent as isTokenAddressEquivalent4,
17390
+ isTokenAddressEquivalent as isTokenAddressEquivalent5,
17315
17391
  isTokenEquivalent as isTokenEquivalent4
17316
17392
  } from "@funkit/utils";
17317
17393
  import NumberFlow from "@number-flow/react";
17318
17394
  import { motion as motion7 } from "motion/react";
17319
- import React121, { useMemo as useMemo20 } from "react";
17395
+ import React121, { useMemo as useMemo21 } from "react";
17320
17396
 
17321
17397
  // src/consts/design.ts
17322
17398
  var mapFontLineHeightToNumberFlowHeight = {
@@ -17329,7 +17405,7 @@ var defaultTransition = "all 150ms cubic-bezier(0.3, 0, 0.06, 1)";
17329
17405
  // src/components/FunAssetAvatar/FunAssetAvatar.tsx
17330
17406
  import { isNotNullish as isNotNullish5 } from "@funkit/utils";
17331
17407
  import clsx16 from "clsx";
17332
- import React120, { useMemo as useMemo19 } from "react";
17408
+ import React120, { useMemo as useMemo20 } from "react";
17333
17409
 
17334
17410
  // src/components/FunAssetAvatar/FunAssetAvatar.css.ts
17335
17411
  var chainContainerStyle = "uwrdc22 _1rsrm2f19 _1rsrm2fa _1rsrm2f4 _1rsrm2f4i";
@@ -17349,7 +17425,7 @@ function FunAssetAvatar({
17349
17425
  largeChainIcon = false
17350
17426
  }) {
17351
17427
  const chainMetadata = chainMetadataById[Number.parseInt((chainId || "").toString())] || null;
17352
- const finalAssetSrc = useMemo19(() => {
17428
+ const finalAssetSrc = useMemo20(() => {
17353
17429
  const normalizedTicker = assetTicker?.toUpperCase() || "";
17354
17430
  const defaultSrc = ASSET_LOGO_SRCS[normalizedTicker];
17355
17431
  if (prioritizeDefaults) {
@@ -17449,7 +17525,7 @@ function PaymentAmountSummary({
17449
17525
  })
17450
17526
  });
17451
17527
  const sourceTokenAmount = quote?.finalPaymentTokenAmount ? Number.parseFloat(quote.finalPaymentTokenAmount) : void 0;
17452
- const paymentTokenUsdAmount = useMemo20(() => {
17528
+ const paymentTokenUsdAmount = useMemo21(() => {
17453
17529
  if (!quote) {
17454
17530
  return void 0;
17455
17531
  }
@@ -17457,7 +17533,7 @@ function PaymentAmountSummary({
17457
17533
  quote.baseQuote.estSubtotalUsd + Number.parseFloat(quote.finalPaymentFeeUsd) - Number.parseFloat(quote.finalSpreadUsd)
17458
17534
  );
17459
17535
  }, [quote]);
17460
- const receiveTokenUsdAmount = useMemo20(() => {
17536
+ const receiveTokenUsdAmount = useMemo21(() => {
17461
17537
  if (!quote) {
17462
17538
  return void 0;
17463
17539
  }
@@ -17471,7 +17547,7 @@ function PaymentAmountSummary({
17471
17547
  const sourceChainId = sourceAssetInfo?.chainId;
17472
17548
  const areSameChains = sourceChainId === targetChainId;
17473
17549
  const sourceIcon = sourceAssetInfo?.iconSrc ?? void 0;
17474
- const isSameTokenAddress = isTokenAddressEquivalent4({
17550
+ const isSameTokenAddress = isTokenAddressEquivalent5({
17475
17551
  firstTokenAddress: sourceTokenAddress,
17476
17552
  secondTokenAddress: targetTokenAddress
17477
17553
  });
@@ -17748,7 +17824,7 @@ var DirectExecutionBrokerageAndCardAlert = () => {
17748
17824
  };
17749
17825
 
17750
17826
  // src/modals/CheckoutModal/ConfirmationStep/DisclaimerText.tsx
17751
- import React126, { useMemo as useMemo21 } from "react";
17827
+ import React126, { useMemo as useMemo22 } from "react";
17752
17828
  var DisclaimerText = ({
17753
17829
  continueText,
17754
17830
  isCardPayment,
@@ -17783,7 +17859,7 @@ var DisclaimerText = ({
17783
17859
  ), ", and the ", /* @__PURE__ */ React126.createElement(FunLinkButton, { href: "https://morpho.org/", inline: true, text: "terms" }), " applicable to third-party Morpho vaults", ".") : /* @__PURE__ */ React126.createElement(React126.Fragment, null, showCardDisclaimer && `${cardDisclaimer} `, "By clicking on ", continueText, ", you agree to our", " ", /* @__PURE__ */ React126.createElement(FunLinkButton, { href: FUN_TERMS_URL, inline: true, text: "terms" }), ".");
17784
17860
  };
17785
17861
  function useCardDisclaimer(checkoutItem, finalConvertedAssetName) {
17786
- const cardDisclaimer = useMemo21(() => {
17862
+ const cardDisclaimer = useMemo22(() => {
17787
17863
  if (!checkoutItem || !finalConvertedAssetName) {
17788
17864
  return null;
17789
17865
  }
@@ -17828,11 +17904,11 @@ import { useState as useState38 } from "react";
17828
17904
  import { useEffect as useEffect33, useState as useState37 } from "react";
17829
17905
 
17830
17906
  // src/hooks/useCheckoutAccountBalanceTransfer.ts
17831
- import { useCallback as useCallback23 } from "react";
17907
+ import { useCallback as useCallback24 } from "react";
17832
17908
  function useCheckoutAccountBalanceTransfer() {
17833
17909
  const { checkoutItem } = useCheckoutContext();
17834
17910
  const { funWallet, funWalletAuth } = useGeneralWallet();
17835
- const generateCheckoutTransferOpItems = useCallback23(
17911
+ const generateCheckoutTransferOpItems = useCallback24(
17836
17912
  async (toAddress, tokenAmount) => {
17837
17913
  if (checkoutItem?.selectedSourceAssetInfo?.chainId) {
17838
17914
  const newConfig = getFunkitEnvForCheckoutEstimation({
@@ -18042,7 +18118,7 @@ import React128, { useState as useState39 } from "react";
18042
18118
  // src/modals/CheckoutModal/ConfirmationStep/useAccountBalanceTransfer.ts
18043
18119
  import { getPaymasterDataForCheckoutSponsoredTransfer } from "@funkit/api-base";
18044
18120
  import { ERC20_ABI, USDT_ABI } from "@funkit/core";
18045
- import { useCallback as useCallback24 } from "react";
18121
+ import { useCallback as useCallback25 } from "react";
18046
18122
  import { useAccount as useAccount5, useSendTransaction, useWriteContract } from "wagmi";
18047
18123
 
18048
18124
  // src/utils/isMainnetUsdt.ts
@@ -18066,7 +18142,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
18066
18142
  const { sendTransactionAsync } = useSendTransaction();
18067
18143
  const { cancelCheckout, checkoutItem } = useCheckoutContext();
18068
18144
  const { latestQuote } = useQuoteContext();
18069
- const handleWeb3AccountBalancePostCheckout = useCallback24(
18145
+ const handleWeb3AccountBalancePostCheckout = useCallback25(
18070
18146
  async (depositAddress) => {
18071
18147
  if (!latestQuote?.baseQuote.estTotalFromAmountBaseUnit) {
18072
18148
  return;
@@ -18172,7 +18248,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
18172
18248
  function useWeb2AccountBalancePostCheckout(apiKey) {
18173
18249
  const { latestQuote } = useQuoteContext();
18174
18250
  const { generateCheckoutTransferOpItems } = useCheckoutAccountBalanceTransfer();
18175
- const handleWeb2AccountBalancePostCheckout = useCallback24(
18251
+ const handleWeb2AccountBalancePostCheckout = useCallback25(
18176
18252
  async (depositAddress) => {
18177
18253
  const { rFunWallet, rFunWalletAuth, transferOp, envConfig } = await generateCheckoutTransferOpItems(
18178
18254
  depositAddress,
@@ -18221,7 +18297,7 @@ function useAccountBalancePostCheckout(setPostCheckoutStepMessage, apiKey) {
18221
18297
  const { loginType } = useGeneralWallet();
18222
18298
  const handleWeb2AccountBalancePostCheckout = useWeb2AccountBalancePostCheckout(apiKey);
18223
18299
  const handleWeb3AccountBalancePostCheckout = useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage);
18224
- const handleAccountBalancePostCheckout = useCallback24(
18300
+ const handleAccountBalancePostCheckout = useCallback25(
18225
18301
  async (depositAddress) => {
18226
18302
  if (loginType === "web2" /* Web2 */) {
18227
18303
  await handleWeb2AccountBalancePostCheckout(depositAddress);
@@ -18372,15 +18448,15 @@ function usePostCheckout({
18372
18448
  }
18373
18449
 
18374
18450
  // src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
18375
- import { useCallback as useCallback27, useEffect as useEffect35, useMemo as useMemo22, useRef as useRef18, useState as useState42 } from "react";
18451
+ import { useCallback as useCallback28, useEffect as useEffect35, useMemo as useMemo23, useRef as useRef18, useState as useState42 } from "react";
18376
18452
 
18377
18453
  // src/hooks/useCountdown.tsx
18378
18454
  import React130 from "react";
18379
- import { useCallback as useCallback26, useState as useState41 } from "react";
18455
+ import { useCallback as useCallback27, useState as useState41 } from "react";
18380
18456
 
18381
18457
  // src/components/FunCountdown/FunCountdown.tsx
18382
18458
  import { noop as noop7 } from "@funkit/utils";
18383
- import React129, { useCallback as useCallback25, useEffect as useEffect34, useState as useState40 } from "react";
18459
+ import React129, { useCallback as useCallback26, useEffect as useEffect34, useState as useState40 } from "react";
18384
18460
 
18385
18461
  // src/components/FunCountdown/FunCountdown.css.ts
18386
18462
  var backgroundRing = "_1t0bc111 _1rsrm2f1l4";
@@ -18416,7 +18492,7 @@ var FunCountdown = ({
18416
18492
  const onCountdownEndedOnce = useEffectEvent(onCountdownEnded);
18417
18493
  const onBeforeCountdownEndsOnce = useEffectEvent(onBeforeCountdownEnds);
18418
18494
  const onCountdownLastSecondOnce = useEffectEvent(onCountdownLastSecond);
18419
- const handleInterval = useCallback25(() => {
18495
+ const handleInterval = useCallback26(() => {
18420
18496
  if (isPaused) {
18421
18497
  return;
18422
18498
  }
@@ -18534,7 +18610,7 @@ function useCountdown({
18534
18610
  }) {
18535
18611
  const [countdownKey, setCountdownKey] = useState41(0);
18536
18612
  const [isLastSecond, setIsLastSecond] = useState41(false);
18537
- const restartCountdown = useCallback26(() => {
18613
+ const restartCountdown = useCallback27(() => {
18538
18614
  setIsLastSecond(false);
18539
18615
  setCountdownKey((key) => key + 1);
18540
18616
  }, []);
@@ -18589,7 +18665,7 @@ function useQuoteRefresh({
18589
18665
  preloadedQuoteRef.current = data;
18590
18666
  }
18591
18667
  );
18592
- const preloadQuote = useCallback27(() => {
18668
+ const preloadQuote = useCallback28(() => {
18593
18669
  if (!isSourceAssetConfirming) {
18594
18670
  onSourceAssetConfirmed(true);
18595
18671
  }
@@ -18603,7 +18679,7 @@ function useQuoteRefresh({
18603
18679
  onBeforeCountdownEnds: preloadQuote,
18604
18680
  onCountdownEnded: () => refreshQuote()
18605
18681
  });
18606
- const refreshQuote = useCallback27(
18682
+ const refreshQuote = useCallback28(
18607
18683
  async (forceHardRefresh = false) => {
18608
18684
  if (isOnHold) {
18609
18685
  setIsPendingRefresh(true);
@@ -18635,7 +18711,7 @@ function useQuoteRefresh({
18635
18711
  },
18636
18712
  [isOnHold, restartCountdown, setCheckoutQuote, triggerAssetConfirm]
18637
18713
  );
18638
- const quoteError = useMemo22(() => {
18714
+ const quoteError = useMemo23(() => {
18639
18715
  if (quoteErrorMessage && !isQuoting) {
18640
18716
  return {
18641
18717
  message: quoteErrorMessage,
@@ -18773,7 +18849,7 @@ function ConfirmationStep({
18773
18849
  refreshIntervalSeconds: directExecutionType === DirectExecutionType2.RELAY ? RELAY_ESTIMATE_REFRESH_INTERVAL_SEC : DEFAULT_ESTIMATE_REFRESH_INTERVAL_SEC
18774
18850
  })
18775
18851
  );
18776
- const error = useMemo23(() => {
18852
+ const error = useMemo24(() => {
18777
18853
  if (!isInitialQuoting && moonpayAmountCheck?.isInvalid) {
18778
18854
  return {
18779
18855
  message: moonpayAmountCheck.message,
@@ -18788,7 +18864,7 @@ function ConfirmationStep({
18788
18864
  quoteError,
18789
18865
  isInitialQuoting
18790
18866
  ]);
18791
- const stepMessage = useMemo23(() => {
18867
+ const stepMessage = useMemo24(() => {
18792
18868
  if (initialQuoteStep) {
18793
18869
  return initialQuoteStep;
18794
18870
  }
@@ -18845,7 +18921,7 @@ function ConfirmationStep({
18845
18921
  const isStepLoading = isInitialQuoting || isContinuing || isRefreshing;
18846
18922
  const uiCustomizations = funkitConfig.uiCustomizations?.confirmationScreen;
18847
18923
  const customRecipient = checkoutItem?.initSettings.config.customRecipient;
18848
- const showKatanaBridgeAlert = useMemo23(() => {
18924
+ const showKatanaBridgeAlert = useMemo24(() => {
18849
18925
  const relayQuoteMetadata = latestQuote?.baseQuote?.metadata;
18850
18926
  if (!relayQuoteMetadata) {
18851
18927
  return false;
@@ -18859,7 +18935,7 @@ function ConfirmationStep({
18859
18935
  // https://fun-xyz.slack.com/archives/C08PVUDA1M2/p1752179735981389?thread_ts=1752176009.628309&cid=C08PVUDA1M2
18860
18936
  swapImpact + appFeePercent > KATANA_BRIDGE_ALERT_THRESHOLD_PERCENT;
18861
18937
  }, [funkitConfig.apiKey, latestQuote, checkoutItem]);
18862
- const showDirectExecutionNotificationBanner = useMemo23(() => {
18938
+ const showDirectExecutionNotificationBanner = useMemo24(() => {
18863
18939
  const isRelayEnabled = checkoutItem !== null && getIsRelayEnabled({
18864
18940
  fromChainId: checkoutItem.selectedSourceAssetInfo.chainId,
18865
18941
  fromTokenAddress: checkoutItem.selectedSourceAssetInfo.address || "",
@@ -19111,7 +19187,7 @@ import { getMeldDefaultFiat } from "@funkit/api-base";
19111
19187
  import { useQuery as useQuery13 } from "@tanstack/react-query";
19112
19188
 
19113
19189
  // src/hooks/queries/useMeldCryptoCurrencyCode.ts
19114
- import { FlagKey as FlagKey18 } from "@funkit/utils";
19190
+ import { FlagKey as FlagKey19 } from "@funkit/utils";
19115
19191
  import { arbitrum as arbitrum3, base as base6, polygon as polygon5 } from "viem/chains";
19116
19192
  var ARB_USDC = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase();
19117
19193
  var POLYGON_USDC = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359".toLowerCase();
@@ -19144,7 +19220,7 @@ function useMeldCryptoCurrencyCode() {
19144
19220
  return mappedCurrency;
19145
19221
  }
19146
19222
  function useIsMeldEnabled() {
19147
- const meldEnabled = useFlag(FlagKey18.EnableMeldPayment);
19223
+ const meldEnabled = useFlag(FlagKey19.EnableMeldPayment);
19148
19224
  const meldCurrencyCode = useMeldCryptoCurrencyCode();
19149
19225
  return meldEnabled && !!meldCurrencyCode;
19150
19226
  }
@@ -19278,13 +19354,13 @@ import {
19278
19354
  MeldServiceProvider as MeldServiceProvider2
19279
19355
  } from "@funkit/api-base";
19280
19356
  import {
19281
- FlagKey as FlagKey21,
19357
+ FlagKey as FlagKey22,
19282
19358
  formatCryptoAndStringify as formatCryptoAndStringify4,
19283
19359
  formatCurrencyAndStringify as formatCurrencyAndStringify9,
19284
19360
  isTokenEquivalent as isTokenEquivalent6,
19285
19361
  round as round4
19286
19362
  } from "@funkit/utils";
19287
- import React145, { useMemo as useMemo25 } from "react";
19363
+ import React145, { useMemo as useMemo26 } from "react";
19288
19364
 
19289
19365
  // src/components/CurrencySelector/CurrencySelector.tsx
19290
19366
  import React134 from "react";
@@ -19550,7 +19626,7 @@ var MeldProviderLabel = ({
19550
19626
  };
19551
19627
 
19552
19628
  // src/components/SourcePaymentMethodItem/SourcePaymentMethodItem.tsx
19553
- import { FlagKey as FlagKey19 } from "@funkit/utils";
19629
+ import { FlagKey as FlagKey20 } from "@funkit/utils";
19554
19630
  import clsx17 from "clsx";
19555
19631
  import { useAnimate as useAnimate2 } from "motion/react";
19556
19632
  import React139 from "react";
@@ -20155,8 +20231,8 @@ var SourcePaymentMethodItem = ({
20155
20231
  icon: /* @__PURE__ */ React139.createElement(MasterCardPillIcon, { key: "mastercard", backdropColor })
20156
20232
  }
20157
20233
  ];
20158
- const isCardEnabled = useFlag(FlagKey19.EnableCard);
20159
- const isBrokerageEnabled = useFlag(FlagKey19.EnableBrokerage);
20234
+ const isCardEnabled = useFlag(FlagKey20.EnableCard);
20235
+ const isBrokerageEnabled = useFlag(FlagKey20.EnableBrokerage);
20160
20236
  const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
20161
20237
  if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isCardEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
20162
20238
  return false;
@@ -20578,7 +20654,7 @@ import {
20578
20654
  katanaChain
20579
20655
  } from "@funkit/chains";
20580
20656
  import { getTokenAddressBySymbolAndChainId as getTokenAddressBySymbolAndChainId2 } from "@funkit/core";
20581
- import { useCallback as useCallback28, useState as useState44 } from "react";
20657
+ import { useCallback as useCallback29, useState as useState44 } from "react";
20582
20658
  import { mainnet as mainnet7, mantle, zksync as zksync2 } from "viem/chains";
20583
20659
  var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
20584
20660
  if (!checkoutItem?.initSettings.config.targetChain) {
@@ -20639,7 +20715,7 @@ function useUpdateCardSourceAsset() {
20639
20715
  const { checkoutItem, updateSourceAsset } = useCheckoutContext();
20640
20716
  const { userIpInfo } = useFunkitUserIp();
20641
20717
  const [isUpdating, setIsUpdating] = useState44(false);
20642
- const onSelectCard = useCallback28(async () => {
20718
+ const onSelectCard = useCallback29(async () => {
20643
20719
  setIsUpdating(true);
20644
20720
  try {
20645
20721
  const source = await pickSourceAssetForCard(checkoutItem, userIpInfo);
@@ -20762,7 +20838,7 @@ function InputAmountLayout({
20762
20838
  }
20763
20839
 
20764
20840
  // src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
20765
- import { FlagKey as FlagKey20, clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify8 } from "@funkit/utils";
20841
+ import { FlagKey as FlagKey21, clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify8 } from "@funkit/utils";
20766
20842
  import React144 from "react";
20767
20843
  var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
20768
20844
  function deduplicateArray(arr) {
@@ -20770,7 +20846,7 @@ function deduplicateArray(arr) {
20770
20846
  }
20771
20847
  function useFiatAmountOptions(currency) {
20772
20848
  const isMeldEnabled = useIsMeldEnabled();
20773
- const currencyQuickOptionStr = useFlag(FlagKey20.MeldQuickOptions);
20849
+ const currencyQuickOptionStr = useFlag(FlagKey21.MeldQuickOptions);
20774
20850
  const currencyQuickOption = safeJSONParse(
20775
20851
  currencyQuickOptionStr
20776
20852
  );
@@ -20836,19 +20912,19 @@ var QuickOptions = ({
20836
20912
 
20837
20913
  // src/modals/CheckoutModal/InputAmount/useAmountInput.ts
20838
20914
  import {
20839
- useCallback as useCallback30,
20915
+ useCallback as useCallback31,
20840
20916
  useEffect as useEffect37,
20841
- useMemo as useMemo24,
20917
+ useMemo as useMemo25,
20842
20918
  useReducer as useReducer3,
20843
20919
  useRef as useRef20,
20844
20920
  useState as useState45
20845
20921
  } from "react";
20846
20922
 
20847
20923
  // src/hooks/useTextMeasurer.ts
20848
- import { useCallback as useCallback29, useRef as useRef19 } from "react";
20924
+ import { useCallback as useCallback30, useRef as useRef19 } from "react";
20849
20925
  function useTextMeasurer(inputRef) {
20850
20926
  const canvasRef = useRef19(document.createElement("canvas"));
20851
- const measureText = useCallback29(
20927
+ const measureText = useCallback30(
20852
20928
  (text, fontSize) => {
20853
20929
  if (!inputRef.current) {
20854
20930
  return void 0;
@@ -21099,7 +21175,7 @@ var MAX_WIDTH = 310;
21099
21175
  function useAmountInput(options) {
21100
21176
  const isMeldEnabled = useIsMeldEnabled();
21101
21177
  const [state, dispatch] = useReducer3(reduceState, options, initializeState);
21102
- const derivedState = useMemo24(() => getDerivedState(state), [state]);
21178
+ const derivedState = useMemo25(() => getDerivedState(state), [state]);
21103
21179
  const inputRef = useRef20(null);
21104
21180
  const { inputValue, locale } = state;
21105
21181
  const { inputDecimals, inputPrefix, placeholder } = derivedState;
@@ -21134,7 +21210,7 @@ function useAmountInput(options) {
21134
21210
  quickOptions
21135
21211
  } = options;
21136
21212
  const unitPrice = isStablecoin(checkoutConfig.targetAssetTicker) ? 1 : realUnitPrice;
21137
- const dispatchAndGetNewState = useCallback30(
21213
+ const dispatchAndGetNewState = useCallback31(
21138
21214
  (action) => {
21139
21215
  dispatch(action);
21140
21216
  return getDerivedState(reduceState(state, action));
@@ -21322,7 +21398,7 @@ function useAmountInput(options) {
21322
21398
  return () => element2.removeEventListener("beforeinput", onBeforeInput2);
21323
21399
  }
21324
21400
  }, [inputDecimals, locale]);
21325
- const onChange = useCallback30(
21401
+ const onChange = useCallback31(
21326
21402
  (event) => {
21327
21403
  dispatch({
21328
21404
  type: "setInputValue",
@@ -21357,7 +21433,7 @@ function useAmountInput(options) {
21357
21433
  });
21358
21434
  }
21359
21435
  }, [defaultAmount]);
21360
- const setFiatAmount = useCallback30(
21436
+ const setFiatAmount = useCallback31(
21361
21437
  (fiatAmount) => {
21362
21438
  const newState = dispatchAndGetNewState({
21363
21439
  type: "setFiatAmount",
@@ -21369,7 +21445,7 @@ function useAmountInput(options) {
21369
21445
  },
21370
21446
  [dispatchAndGetNewState, unitPrice]
21371
21447
  );
21372
- const toggleInputInFiat = useCallback30(() => {
21448
+ const toggleInputInFiat = useCallback31(() => {
21373
21449
  dispatch({ type: "toggleInputInFiat" });
21374
21450
  inputRef.current?.focus();
21375
21451
  }, []);
@@ -21435,7 +21511,7 @@ function InputAmountLoaded({
21435
21511
  defaultFiatCurrency,
21436
21512
  textCustomizations
21437
21513
  }) {
21438
- const maxCheckoutUsdString = useFlag(FlagKey21.MaxCheckoutUsd);
21514
+ const maxCheckoutUsdString = useFlag(FlagKey22.MaxCheckoutUsd);
21439
21515
  const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
21440
21516
  const { paymentMethod } = modalState.paymentMethodInfo;
21441
21517
  const { quote: manuallySelectedQuote } = modalState;
@@ -21495,7 +21571,7 @@ function InputAmountLoaded({
21495
21571
  selectedQuote,
21496
21572
  isSelectedQuoteUnavailable
21497
21573
  } = useMeld(manuallySelectedQuote, fiatAmount, fiatCurrency);
21498
- const error = useMemo25(() => {
21574
+ const error = useMemo26(() => {
21499
21575
  if (isCardCheckout) {
21500
21576
  if (isSelectedQuoteUnavailable) {
21501
21577
  return {
@@ -21780,7 +21856,7 @@ function YouPayYouReceiveWrapper({
21780
21856
 
21781
21857
  // src/modals/CheckoutModal/InputAmount/InputAmountLoading.tsx
21782
21858
  import { formatCryptoAndStringify as formatCryptoAndStringify5 } from "@funkit/utils";
21783
- import React146, { useMemo as useMemo26 } from "react";
21859
+ import React146, { useMemo as useMemo27 } from "react";
21784
21860
  function InputAmountLoading({
21785
21861
  modalState,
21786
21862
  sourceHoldingError,
@@ -21792,7 +21868,7 @@ function InputAmountLoading({
21792
21868
  const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
21793
21869
  const targetAssetAmount = checkoutItem?.initSettings.config.targetAssetAmount;
21794
21870
  const targetAssetTicker = checkoutItem?.initSettings.config.targetAssetTicker;
21795
- const error = useMemo26(() => {
21871
+ const error = useMemo27(() => {
21796
21872
  if (sourceHoldingError) {
21797
21873
  return {
21798
21874
  message: /* @__PURE__ */ React146.createElement("div", null, "Unable to retrieve your account balance. Please try re-linking your account.", " "),
@@ -21872,7 +21948,7 @@ function InputAmountLoading({
21872
21948
  }
21873
21949
 
21874
21950
  // src/modals/CheckoutModal/InputAmount/useAvailableBalanceForCheckout.ts
21875
- import { useMemo as useMemo27 } from "react";
21951
+ import { useMemo as useMemo28 } from "react";
21876
21952
  function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetChainId, assetSymbol) {
21877
21953
  const { data: walletAssetHoldings, isLoading: isLoadingWalletAssetHoldings } = useWalletAssetHoldings(targetChainId);
21878
21954
  const holdings = {
@@ -21882,7 +21958,7 @@ function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetC
21882
21958
  ["token_transfer" /* TOKEN_TRANSFER */]: null,
21883
21959
  ["virtual_bank" /* VIRTUAL_BANK */]: null
21884
21960
  }[paymentMethodInfo.paymentMethod];
21885
- const holdingItem = useMemo27(() => {
21961
+ const holdingItem = useMemo28(() => {
21886
21962
  if (!assetSymbol || !holdings) {
21887
21963
  return;
21888
21964
  }
@@ -22005,14 +22081,14 @@ import { mainnet as mainnet8, polygon as polygon6 } from "viem/chains";
22005
22081
  var ASSETS_LOW_VALUE_THRESHOLD2 = 0.1;
22006
22082
 
22007
22083
  // src/hooks/usePaymentSources.ts
22008
- import { FlagKey as FlagKey22, isNotNullish as isNotNullish7 } from "@funkit/utils";
22084
+ import { FlagKey as FlagKey23, isNotNullish as isNotNullish7 } from "@funkit/utils";
22009
22085
  function usePaymentMethodEnablement({
22010
22086
  checkoutConfig
22011
22087
  }) {
22012
22088
  const { apiKey } = useFunkitConfig();
22013
- const isTokenTransferFlagEnabled = useFlag(FlagKey22.EnableTokenTransfer);
22089
+ const isTokenTransferFlagEnabled = useFlag(FlagKey23.EnableTokenTransfer);
22014
22090
  const isFiatFlagEnabled = useFiatEnabled();
22015
- const isCardFlagEnabled = useFlag(FlagKey22.EnableCard);
22091
+ const isCardFlagEnabled = useFlag(FlagKey23.EnableCard);
22016
22092
  const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
22017
22093
  const isUsKatanaUser = useIsUsKatanaUser();
22018
22094
  const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
@@ -22390,7 +22466,7 @@ function LoadingAccount({
22390
22466
 
22391
22467
  // src/modals/CheckoutModal/MeldCurrencySelect/MeldCurrencySelect.tsx
22392
22468
  import clsx18 from "clsx";
22393
- import React151, { useMemo as useMemo28, useState as useState46 } from "react";
22469
+ import React151, { useMemo as useMemo29, useState as useState46 } from "react";
22394
22470
 
22395
22471
  // src/css/scrollStyles.css.ts
22396
22472
  var hideScrollBar = "_163ehmk0";
@@ -22446,7 +22522,7 @@ function MeldCurrencySelect({
22446
22522
  const [selectedCurrency, setSelectedCurrency] = useState46(
22447
22523
  defaultCurrency
22448
22524
  );
22449
- const filteredOptions = useMemo28(() => {
22525
+ const filteredOptions = useMemo29(() => {
22450
22526
  const newOptions = data?.filter(
22451
22527
  ({ name, currencyCode }) => currencyCode.toLowerCase().includes(query.toLowerCase()) || name.toLowerCase().includes(query.toLowerCase())
22452
22528
  ) ?? [];
@@ -22582,7 +22658,7 @@ function MeldQuotes({
22582
22658
  }
22583
22659
 
22584
22660
  // src/modals/CheckoutModal/MoonpaySetup.tsx
22585
- import React154, { useCallback as useCallback31, useMemo as useMemo30, useState as useState48 } from "react";
22661
+ import React154, { useCallback as useCallback32, useMemo as useMemo31, useState as useState48 } from "react";
22586
22662
 
22587
22663
  // src/components/FunPayments/FunPaymentMoonpayType.css.ts
22588
22664
  var mpClass = "_1kmpeyf0";
@@ -22591,7 +22667,7 @@ var stretchStyle = "_1kmpeyf1";
22591
22667
  // src/components/FunPayments/FunPaymentMoonpayType.tsx
22592
22668
  import { getMoonpayUrlSignature } from "@funkit/api-base";
22593
22669
  import { colorToHex } from "@funkit/utils";
22594
- import React153, { Fragment, useEffect as useEffect40, useMemo as useMemo29, useState as useState47 } from "react";
22670
+ import React153, { Fragment, useEffect as useEffect40, useMemo as useMemo30, useState as useState47 } from "react";
22595
22671
  var LazyMoonPayBuyWidget = (props) => {
22596
22672
  const [MoonPayBuyWidget, setMoonPayBuyWidget] = useState47(null);
22597
22673
  useEffect40(() => {
@@ -22622,7 +22698,7 @@ function FunPaymentMoonpayType({
22622
22698
  const isSandboxMode = useIsFunkitSandboxMode();
22623
22699
  const funkitConfig = useFunkitConfig();
22624
22700
  const { userInfo } = useGeneralWallet();
22625
- const currencyCode = useMemo29(() => {
22701
+ const currencyCode = useMemo30(() => {
22626
22702
  return generateMoonpayCurrencyCode(depositToken, depositTokenChainId);
22627
22703
  }, [depositToken, depositTokenChainId]);
22628
22704
  const depositTokenAmountStringFormatted = formatTokenAmountForMoonpay(
@@ -22645,7 +22721,7 @@ function FunPaymentMoonpayType({
22645
22721
  });
22646
22722
  return signature || "";
22647
22723
  };
22648
- const moonpayButtonColor = useMemo29(() => {
22724
+ const moonpayButtonColor = useMemo30(() => {
22649
22725
  const primaryButtonHex = colorToHex(activeTheme.colors.buttonPrimary);
22650
22726
  if (["#FFF", "#FFFF", "#FFFFFF", "#FFFFFFFF"].includes(primaryButtonHex)) {
22651
22727
  return void 0;
@@ -22703,12 +22779,12 @@ function MoonpaySetup({
22703
22779
  const { paymentAddress, token, tokenChainId, depositAmount } = modalState;
22704
22780
  const [isSupportedRegion, setIsSupportedRegion] = useState48(true);
22705
22781
  const [isContinueEnabled, setIsContinueEnabled] = useState48(false);
22706
- const handleOnCompleted = useCallback31(() => {
22782
+ const handleOnCompleted = useCallback32(() => {
22707
22783
  onNext({
22708
22784
  depositAddress: paymentAddress
22709
22785
  });
22710
22786
  }, [onNext, paymentAddress]);
22711
- const MoonpayWidget = useMemo30(() => {
22787
+ const MoonpayWidget = useMemo31(() => {
22712
22788
  return /* @__PURE__ */ React154.createElement(
22713
22789
  FunPaymentMoonpayType,
22714
22790
  {
@@ -22739,7 +22815,7 @@ function MoonpaySetup({
22739
22815
  // src/modals/CheckoutModal/SelectAsset.tsx
22740
22816
  import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST2 } from "@funkit/chains";
22741
22817
  import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent7 } from "@funkit/utils";
22742
- import React157, { useEffect as useEffect41, useMemo as useMemo32, useState as useState49 } from "react";
22818
+ import React157, { useEffect as useEffect41, useMemo as useMemo33, useState as useState49 } from "react";
22743
22819
  import { createPortal as createPortal14 } from "react-dom";
22744
22820
 
22745
22821
  // src/components/Dropdown/ReceiveTokenDropdown.tsx
@@ -22835,13 +22911,13 @@ var ReceiveTokenDropdown = ({
22835
22911
 
22836
22912
  // src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
22837
22913
  import React156 from "react";
22838
- import { FlagKey as FlagKey23, safeParseJson as safeParseJson6 } from "@funkit/utils";
22914
+ import { FlagKey as FlagKey24, safeParseJson as safeParseJson6 } from "@funkit/utils";
22839
22915
  var NewTokenDepositAlert = ({
22840
22916
  onClick
22841
22917
  }) => {
22842
- const alertJson = useFlag(FlagKey23.NewTokenAssetSelectionBanner);
22918
+ const alertJson = useFlag(FlagKey24.NewTokenAssetSelectionBanner);
22843
22919
  const alertData = safeParseJson6(alertJson);
22844
- const isTokenTransferEnabled = useFlag(FlagKey23.EnableTokenTransfer);
22920
+ const isTokenTransferEnabled = useFlag(FlagKey24.EnableTokenTransfer);
22845
22921
  if (!alertData || !isTokenTransferEnabled) {
22846
22922
  return null;
22847
22923
  }
@@ -22869,7 +22945,7 @@ var NewTokenDepositAlert = ({
22869
22945
  // src/hooks/useAllowedAssets.ts
22870
22946
  import { getAllowedAssets } from "@funkit/api-base";
22871
22947
  import { useQuery as useQuery17 } from "@tanstack/react-query";
22872
- import { useCallback as useCallback32, useMemo as useMemo31 } from "react";
22948
+ import { useCallback as useCallback33, useMemo as useMemo32 } from "react";
22873
22949
  function useAllowedAssets() {
22874
22950
  const { apiKey } = useFunkitConfig();
22875
22951
  const { checkoutItem } = useCheckoutContext();
@@ -22883,7 +22959,7 @@ function useAllowedAssets() {
22883
22959
  staleTime: 5 * 60 * 1e3,
22884
22960
  gcTime: Number.POSITIVE_INFINITY
22885
22961
  });
22886
- const tokens = useMemo31(() => {
22962
+ const tokens = useMemo32(() => {
22887
22963
  if (!allowedAssets) {
22888
22964
  return {};
22889
22965
  }
@@ -22894,7 +22970,7 @@ function useAllowedAssets() {
22894
22970
  }
22895
22971
  return ret;
22896
22972
  }, [allowedAssets]);
22897
- const isAllowed = useCallback32(
22973
+ const isAllowed = useCallback33(
22898
22974
  (chainId, tokenAddress) => {
22899
22975
  const disabledByCustomerList = checkoutItem?.initSettings.config.disabledSourceTokens?.some(
22900
22976
  (token) => {
@@ -22960,7 +23036,7 @@ function useEnrichedAccountHoldings({
22960
23036
  }) {
22961
23037
  const { isAllowed, isLoading } = useAllowedAssets();
22962
23038
  const { loginType, walletAddress } = useGeneralWallet();
22963
- const enrichedAccountHoldings = useMemo32(() => {
23039
+ const enrichedAccountHoldings = useMemo33(() => {
22964
23040
  if (!checkoutConfig) {
22965
23041
  return [];
22966
23042
  }
@@ -23000,7 +23076,7 @@ function useAssetOptions({
23000
23076
  chainId,
23001
23077
  dynamicTargetAssetCandidates
23002
23078
  }) {
23003
- const assetOptions = useMemo32(() => {
23079
+ const assetOptions = useMemo33(() => {
23004
23080
  return enrichedAccountHoldings.filter(
23005
23081
  ({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
23006
23082
  ).map(({ asset, usableForCheckout }) => {
@@ -23072,7 +23148,7 @@ function useScrollToSelectedAsset(selectedChainTokenSymbol) {
23072
23148
  }
23073
23149
  function useComputeDefault(checkoutConfig, accountHoldings) {
23074
23150
  const candidates = checkoutConfig?.dynamicTargetAssetCandidates;
23075
- const defaultTargetAsset = useMemo32(() => {
23151
+ const defaultTargetAsset = useMemo33(() => {
23076
23152
  if (!candidates || candidates.length <= 1) {
23077
23153
  return {
23078
23154
  tokenAddress: checkoutConfig?.targetAsset || "0x",
@@ -23086,7 +23162,7 @@ function useComputeDefault(checkoutConfig, accountHoldings) {
23086
23162
  (token) => token.tokenSymbol === checkoutConfig?.targetAssetTicker
23087
23163
  ) ?? candidates.find((token) => token.isDefault) ?? candidates[0];
23088
23164
  }, [candidates, checkoutConfig]);
23089
- const defaultTokenSymbols = useMemo32(() => {
23165
+ const defaultTokenSymbols = useMemo33(() => {
23090
23166
  if (!checkoutConfig) {
23091
23167
  return [];
23092
23168
  }
@@ -23179,7 +23255,7 @@ function AccountSelectAsset({
23179
23255
  handleTargetAssetUpdate(tokenItem);
23180
23256
  onFinish();
23181
23257
  });
23182
- const selectedChainTokenSymbol = useMemo32(() => {
23258
+ const selectedChainTokenSymbol = useMemo33(() => {
23183
23259
  if (explicitlySelectedChainTokenSymbol) {
23184
23260
  const assetExists = assetOptions.find(
23185
23261
  ({ asset }) => asset.chainSymbolKey === explicitlySelectedChainTokenSymbol
@@ -23429,7 +23505,7 @@ function SelectAsset({
23429
23505
 
23430
23506
  // src/modals/CheckoutModal/SourceChange/SourceChange.tsx
23431
23507
  import { BridgeCustomerStatus as BridgeCustomerStatus6, MeldServiceProvider as MeldServiceProvider4 } from "@funkit/api-base";
23432
- import React159, { useCallback as useCallback33, useEffect as useEffect42, useState as useState50 } from "react";
23508
+ import React159, { useCallback as useCallback34, useEffect as useEffect42, useState as useState50 } from "react";
23433
23509
  import { createPortal as createPortal15 } from "react-dom";
23434
23510
 
23435
23511
  // src/modals/CheckoutModal/SourceChange/DefiPurchaseSection.tsx
@@ -23563,7 +23639,7 @@ function PayPal() {
23563
23639
  const isMeldEnabled = useIsMeldEnabled();
23564
23640
  const { checkoutItem } = useCheckoutContext();
23565
23641
  const isPaypalReady = false;
23566
- const onClick = useCallback33(() => {
23642
+ const onClick = useCallback34(() => {
23567
23643
  if (isMeldEnabled && isPaypalReady) {
23568
23644
  openMeldPopup(() => mutateAsync(MeldServiceProvider4.PAYPAL));
23569
23645
  } else {
@@ -23777,13 +23853,13 @@ import { createPortal as createPortal16 } from "react-dom";
23777
23853
 
23778
23854
  // src/components/CopyAddress/CopyInputDisplayedAddress.tsx
23779
23855
  import { truncateMiddleOfAddress } from "@funkit/utils";
23780
- import React160, { useCallback as useCallback35, useState as useState52 } from "react";
23856
+ import React160, { useCallback as useCallback36, useState as useState52 } from "react";
23781
23857
 
23782
23858
  // src/hooks/useCopyToClipboard.ts
23783
- import { useCallback as useCallback34, useEffect as useEffect43, useState as useState51 } from "react";
23859
+ import { useCallback as useCallback35, useEffect as useEffect43, useState as useState51 } from "react";
23784
23860
  var useCopyToClipboard = (text, delay = 1500) => {
23785
23861
  const [isCopied, setCopied] = useState51(false);
23786
- const handleCopy = useCallback34(() => {
23862
+ const handleCopy = useCallback35(() => {
23787
23863
  if (!text) {
23788
23864
  return;
23789
23865
  }
@@ -23823,7 +23899,7 @@ function CopyInputDisplayedAddress({
23823
23899
  const { handleCopy } = useCopyToClipboard(address);
23824
23900
  const [isActive, setIsActive] = useState52(null);
23825
23901
  const displayAddress = truncateAddress ? truncateMiddleOfAddress(address, 40, 24, 8) : address;
23826
- const handleClick = useCallback35(() => {
23902
+ const handleClick = useCallback36(() => {
23827
23903
  if (isActive) {
23828
23904
  return;
23829
23905
  }
@@ -23863,12 +23939,12 @@ function CopyInputDisplayedAddress({
23863
23939
  }
23864
23940
 
23865
23941
  // src/components/FunInfoBanner/ChainInfoBanners.tsx
23866
- import { FlagKey as FlagKey24, safeParseJson as safeParseJson7 } from "@funkit/utils";
23942
+ import { FlagKey as FlagKey25, safeParseJson as safeParseJson7 } from "@funkit/utils";
23867
23943
  import React161 from "react";
23868
23944
  var ChainInfoBanners = ({
23869
23945
  chainId
23870
23946
  }) => {
23871
- const chainInfoBanners = useFlag(FlagKey24.ChainInfoBanners);
23947
+ const chainInfoBanners = useFlag(FlagKey25.ChainInfoBanners);
23872
23948
  const chainInfoBannersData = safeParseJson7(chainInfoBanners) ?? {};
23873
23949
  try {
23874
23950
  const chainBanners = chainInfoBannersData[chainId] ?? [];
@@ -23912,7 +23988,7 @@ var LightningBoltIcon = ({ size = 16 }) => /* @__PURE__ */ React162.createElemen
23912
23988
 
23913
23989
  // src/components/QRCode/QRCode.tsx
23914
23990
  import QRCodeUtil from "qrcode";
23915
- import React163, { useMemo as useMemo33 } from "react";
23991
+ import React163, { useMemo as useMemo34 } from "react";
23916
23992
  var generateMatrix = (value, errorCorrectionLevel) => {
23917
23993
  const { data } = QRCodeUtil.create(value, { errorCorrectionLevel }).modules;
23918
23994
  const sqrt = Math.sqrt(data.length);
@@ -23940,7 +24016,7 @@ function QRCode({
23940
24016
  }) {
23941
24017
  const { activeTheme } = useActiveTheme();
23942
24018
  const size = sizeProp - Number.parseInt(outsidePadding, 10) * 2;
23943
- const dots = useMemo33(() => {
24019
+ const dots = useMemo34(() => {
23944
24020
  const dots2 = [];
23945
24021
  const matrix = generateMatrix(uri, ecl);
23946
24022
  const cellSize = size / matrix.length;
@@ -24484,8 +24560,8 @@ var TransferTokenDetails = ({
24484
24560
 
24485
24561
  // src/hooks/useTokenTransfer.ts
24486
24562
  import { bitcoinChain as bitcoinChain3, solanaChain as solanaChain4 } from "@funkit/chains";
24487
- import { FlagKey as FlagKey25 } from "@funkit/utils";
24488
- import { useMemo as useMemo34 } from "react";
24563
+ import { FlagKey as FlagKey26 } from "@funkit/utils";
24564
+ import { useMemo as useMemo35 } from "react";
24489
24565
  import { arbitrum as arbitrum4, base as base7, mainnet as mainnet9, optimism, polygon as polygon7 } from "viem/chains";
24490
24566
 
24491
24567
  // src/utils/transfer.ts
@@ -24508,7 +24584,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
24508
24584
  const { apiKey } = useFunkitConfig();
24509
24585
  const { checkoutItem } = useCheckoutContext();
24510
24586
  const enableUniversal = useFlag(
24511
- FlagKey25.EnableTokenTransferUniversalDepositAddress,
24587
+ FlagKey26.EnableTokenTransferUniversalDepositAddress,
24512
24588
  false
24513
24589
  );
24514
24590
  const estPriceImpact = usePriceImpactEstimation(
@@ -24560,7 +24636,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
24560
24636
  };
24561
24637
  var useMinTransferLimits = () => {
24562
24638
  const { userIpInfo } = useFunkitUserIp();
24563
- const minTransferValueJsonString = useFlag(FlagKey25.MinTokenTransferValue);
24639
+ const minTransferValueJsonString = useFlag(FlagKey26.MinTokenTransferValue);
24564
24640
  const minTransferValue = safeJSONParse(
24565
24641
  minTransferValueJsonString
24566
24642
  );
@@ -24582,7 +24658,7 @@ var useMinTransferValue = (selectedChainId) => {
24582
24658
  };
24583
24659
  var useMinTransferValues = (chainIds) => {
24584
24660
  const limits = useMinTransferLimits();
24585
- return useMemo34(() => {
24661
+ return useMemo35(() => {
24586
24662
  return chainIds.reduce(
24587
24663
  (acc, id) => {
24588
24664
  const limit = getMinTransferValueForChain(id, limits);
@@ -25304,9 +25380,9 @@ var FiatAccountDetail = {
25304
25380
 
25305
25381
  // src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
25306
25382
  import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
25307
- import React179, { useCallback as useCallback36, useEffect as useEffect44, useMemo as useMemo35, useState as useState56 } from "react";
25383
+ import React179, { useCallback as useCallback37, useEffect as useEffect44, useMemo as useMemo36, useState as useState56 } from "react";
25308
25384
  function useIframeListener(listeners) {
25309
- const handleMessage = useCallback36(
25385
+ const handleMessage = useCallback37(
25310
25386
  (event) => {
25311
25387
  switch (event.data.name) {
25312
25388
  case "load": {
@@ -25357,7 +25433,7 @@ function KycIframe({
25357
25433
  const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
25358
25434
  const { data: kycLink, isLoading: isLinkLoading } = useLoadKycLink(modalState);
25359
25435
  const [iframeLoading, setIframeLoading] = useState56(true);
25360
- const listeners = useMemo35(
25436
+ const listeners = useMemo36(
25361
25437
  () => ({
25362
25438
  load: () => {
25363
25439
  logger.info("KYC iframe loaded");
@@ -25496,7 +25572,7 @@ function initialState(checkoutItem) {
25496
25572
  function useCheckoutModalTransition(checkoutItem, onClose) {
25497
25573
  const [modalState, setModalState] = useState57(() => initialState(checkoutItem));
25498
25574
  const { clearCheckoutQuoteMessages } = useCheckoutQuoteNotification();
25499
- const onCloseWrapper = useCallback37(
25575
+ const onCloseWrapper = useCallback38(
25500
25576
  (options) => {
25501
25577
  const normalizedIsNewDeposit = !!options?.isNewDeposit;
25502
25578
  checkoutItem.initSettings.onClose?.({
@@ -25516,7 +25592,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
25516
25592
  const [stateHistory, setHistory] = useState57([]);
25517
25593
  const prevStep = useRef22(null);
25518
25594
  const hasHistoryEntry = stateHistory.length > 1;
25519
- const onNext = useCallback37(
25595
+ const onNext = useCallback38(
25520
25596
  (payload) => {
25521
25597
  if (prevStep.current === modalState.step) {
25522
25598
  return;
@@ -25549,7 +25625,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
25549
25625
  },
25550
25626
  [clearCheckoutQuoteMessages, modalState, animate, hasHistoryEntry]
25551
25627
  );
25552
- const onStepChange = useCallback37(
25628
+ const onStepChange = useCallback38(
25553
25629
  (nextState) => {
25554
25630
  if (prevStep.current === modalState.step) {
25555
25631
  return;
@@ -25562,7 +25638,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
25562
25638
  },
25563
25639
  [modalState, animate]
25564
25640
  );
25565
- const onBack = useCallback37(() => {
25641
+ const onBack = useCallback38(() => {
25566
25642
  clearCheckoutQuoteMessages();
25567
25643
  const backStepOverride = checkoutBackMap[modalState.step];
25568
25644
  const prevState = [...stateHistory].reverse().find((s) => s.step === backStepOverride) ?? stateHistory[stateHistory.length - 1];
@@ -25757,7 +25833,7 @@ var FunConnectResultStep = ({
25757
25833
 
25758
25834
  // src/components/FunConnectOptions/FunFarcasterConnectingStep.tsx
25759
25835
  import { isMobile as isMobile7, isSafari as isSafari2, redirectInMobile } from "@funkit/utils";
25760
- import React184, { useCallback as useCallback38, useEffect as useEffect47 } from "react";
25836
+ import React184, { useCallback as useCallback39, useEffect as useEffect47 } from "react";
25761
25837
 
25762
25838
  // src/components/CopyAddress/OldCopyAddressButton.tsx
25763
25839
  import React183 from "react";
@@ -25810,7 +25886,7 @@ function FunFarcasterConnectingStep({
25810
25886
  }
25811
25887
  }, [farcasterUri, mobile, safari]);
25812
25888
  useSIWFarcasterListener(farcasterToken);
25813
- const svgUrl = useCallback38(async () => {
25889
+ const svgUrl = useCallback39(async () => {
25814
25890
  return (await import("./farcaster-MF6WINBA.js")).default;
25815
25891
  }, []);
25816
25892
  const promptText = mobile ? "To sign in with Farcaster, please open the Warpcast app." : "Scan this QR code or open the link with your mobile phone.";
@@ -25858,11 +25934,11 @@ function FunFarcasterConnectingStep({
25858
25934
 
25859
25935
  // src/components/FunConnectOptions/FunWeb2ConnectingStep.tsx
25860
25936
  import { isNotNullish as isNotNullish9 } from "@funkit/utils";
25861
- import React187, { useCallback as useCallback40, useEffect as useEffect49, useState as useState60 } from "react";
25937
+ import React187, { useCallback as useCallback41, useEffect as useEffect49, useState as useState60 } from "react";
25862
25938
 
25863
25939
  // src/components/FunInput/FunTwoFaInput.tsx
25864
25940
  import React185, {
25865
- useCallback as useCallback39,
25941
+ useCallback as useCallback40,
25866
25942
  useEffect as useEffect48,
25867
25943
  useRef as useRef24,
25868
25944
  useState as useState59
@@ -25889,12 +25965,12 @@ var FunTwoFaInput = ({
25889
25965
  setFocusIndex(0);
25890
25966
  }
25891
25967
  }, [value]);
25892
- const ensureFocus = useCallback39((nextIndex) => {
25968
+ const ensureFocus = useCallback40((nextIndex) => {
25893
25969
  setTimeout(() => {
25894
25970
  inputRefs.current[nextIndex]?.focus();
25895
25971
  }, 10);
25896
25972
  }, []);
25897
- const handleBackspace = useCallback39(
25973
+ const handleBackspace = useCallback40(
25898
25974
  (index) => {
25899
25975
  if (index === maxInputLength - 1 && value.length === maxInputLength) {
25900
25976
  onChange(value.slice(0, index));
@@ -25918,7 +25994,7 @@ var FunTwoFaInput = ({
25918
25994
  },
25919
25995
  [currentLength, initialInputLength, maxInputLength, onChange, value]
25920
25996
  );
25921
- const handleChange = useCallback39(
25997
+ const handleChange = useCallback40(
25922
25998
  (changeEvent) => {
25923
25999
  changeEvent.stopPropagation();
25924
26000
  const nativeEvent = changeEvent.nativeEvent;
@@ -26087,7 +26163,7 @@ var FunWeb2ConnectingStep = ({
26087
26163
  useEffect49(() => {
26088
26164
  clearLoginError();
26089
26165
  }, []);
26090
- const handleOtpComplete = useCallback40(
26166
+ const handleOtpComplete = useCallback41(
26091
26167
  async (finalOtpInput) => {
26092
26168
  if (isNotNullish9(initialChainId)) {
26093
26169
  await handleFunkitWeb2Login({
@@ -26234,7 +26310,7 @@ function FunConnectOptions({
26234
26310
  const { loginConfig } = useFunkitConfig();
26235
26311
  const prioritizedLoginType = loginConfig.prioritizedLogin;
26236
26312
  const hasSecondarySignIn = prioritizedLoginType !== "none" && loginConfig.web2 && loginConfig.web3;
26237
- const changeStep = useCallback41((newStep) => {
26313
+ const changeStep = useCallback42((newStep) => {
26238
26314
  setStep(newStep);
26239
26315
  if (isSignIn(newStep)) {
26240
26316
  setSelectedWallet(void 0);
@@ -26242,7 +26318,7 @@ function FunConnectOptions({
26242
26318
  }
26243
26319
  }, []);
26244
26320
  const { animation, navigateTo } = useAnimatedNavigation(changeStep);
26245
- const handleBackToSignIn = useCallback41(
26321
+ const handleBackToSignIn = useCallback42(
26246
26322
  (type) => {
26247
26323
  const isPrimary = !hasSecondarySignIn || type === prioritizedLoginType;
26248
26324
  navigateTo(
@@ -26253,7 +26329,7 @@ function FunConnectOptions({
26253
26329
  [navigateTo, hasSecondarySignIn, prioritizedLoginType]
26254
26330
  );
26255
26331
  const walletConnectors = usePreparedWalletConnectors();
26256
- const onRegenerateQrCode = useCallback41(
26332
+ const onRegenerateQrCode = useCallback42(
26257
26333
  async (wallet) => {
26258
26334
  const sWallet = walletConnectors.find((w) => wallet.id === w.id);
26259
26335
  const uri = await sWallet?.getQrCodeUri?.();
@@ -26261,7 +26337,7 @@ function FunConnectOptions({
26261
26337
  },
26262
26338
  [walletConnectors]
26263
26339
  );
26264
- const connectToWallet = useCallback41(
26340
+ const connectToWallet = useCallback42(
26265
26341
  async (wallet) => {
26266
26342
  if (!wallet.ready) {
26267
26343
  return;
@@ -26280,7 +26356,7 @@ function FunConnectOptions({
26280
26356
  },
26281
26357
  [changeStep, onRegenerateQrCode]
26282
26358
  );
26283
- const handleRetry = useCallback41(() => {
26359
+ const handleRetry = useCallback42(() => {
26284
26360
  if (!selectedWallet || selectedWallet.id === FUNKIT_CONNECT_WALLET_ID) {
26285
26361
  handleBackToSignIn("web2");
26286
26362
  } else {
@@ -26328,7 +26404,7 @@ function FunConnectOptions({
26328
26404
  }
26329
26405
  }
26330
26406
  };
26331
- const stepComponent = useMemo36(() => {
26407
+ const stepComponent = useMemo37(() => {
26332
26408
  switch (step) {
26333
26409
  case 0 /* SIGNIN_PRIMARY */:
26334
26410
  case 1 /* SIGNIN_SECONDARY */:
@@ -26437,7 +26513,7 @@ var FULL_SOCIAL_LOGIN_OPTIONS = [
26437
26513
  function useEnabledSocialLogins() {
26438
26514
  const funkitConfig = useFunkitConfig();
26439
26515
  const { web2SocialLogins } = funkitConfig.loginConfig;
26440
- const enabledSocialItems = useMemo37(() => {
26516
+ const enabledSocialItems = useMemo38(() => {
26441
26517
  return FULL_SOCIAL_LOGIN_OPTIONS.filter(
26442
26518
  (oAuthItem) => !!web2SocialLogins[oAuthItem.funkitKey]
26443
26519
  );
@@ -26466,7 +26542,7 @@ function FunSignInStep({
26466
26542
  handleOauthRedirect,
26467
26543
  handleGenerateFcUri
26468
26544
  } = useFunkitWeb2Login();
26469
- const isEmailInputValid = useMemo37(() => {
26545
+ const isEmailInputValid = useMemo38(() => {
26470
26546
  return validateEmailString(emailInput);
26471
26547
  }, [emailInput]);
26472
26548
  const [emailError, setEmailError] = useState62();
@@ -26539,7 +26615,7 @@ function FunSignInStep({
26539
26615
  changeStep(3 /* PENDING_WALLET */);
26540
26616
  }
26541
26617
  };
26542
- const handleEmailSubmit = useCallback42(async () => {
26618
+ const handleEmailSubmit = useCallback43(async () => {
26543
26619
  if (!isEmailInputValid) {
26544
26620
  return;
26545
26621
  }
@@ -26878,7 +26954,7 @@ function PaymentMethodSummary({
26878
26954
 
26879
26955
  // src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
26880
26956
  import clsx21 from "clsx";
26881
- import React201, { useEffect as useEffect51, useMemo as useMemo38, useState as useState64 } from "react";
26957
+ import React201, { useEffect as useEffect51, useMemo as useMemo39, useState as useState64 } from "react";
26882
26958
 
26883
26959
  // src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
26884
26960
  import React196 from "react";
@@ -26926,13 +27002,13 @@ var FunNotificationShowMoreButton = ({
26926
27002
  import {
26927
27003
  getCheckoutsByUserId as getCheckoutsByUserId2
26928
27004
  } from "@funkit/api-base";
26929
- import { FlagKey as FlagKey26 } from "@funkit/utils";
27005
+ import { FlagKey as FlagKey27 } from "@funkit/utils";
26930
27006
  import { useQuery as useQuery18 } from "@tanstack/react-query";
26931
27007
  var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
26932
27008
  var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
26933
27009
  var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
26934
27010
  function useCheckoutRefreshInterval() {
26935
- const str = useFlag(FlagKey26.CheckoutNotificationsRefreshInterval);
27011
+ const str = useFlag(FlagKey27.CheckoutNotificationsRefreshInterval);
26936
27012
  return safeJSONParse(str) || { listRefresh: 50 * 1e3, itemRefresh: 5 * 1e3 };
26937
27013
  }
26938
27014
  var useRecentCheckouts = ({
@@ -27012,7 +27088,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f11m _1rsrm2f1f _1rsrm2f1c _1rsrm2fls
27012
27088
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
27013
27089
  import clsx19 from "clsx";
27014
27090
  import { motion as motion12, useAnimate as useAnimate3 } from "motion/react";
27015
- import React197, { useCallback as useCallback43, useEffect as useEffect50, useRef as useRef25 } from "react";
27091
+ import React197, { useCallback as useCallback44, useEffect as useEffect50, useRef as useRef25 } from "react";
27016
27092
 
27017
27093
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
27018
27094
  var STATUS_SPINNER_BOTTOM_POSITION = -5;
@@ -27261,7 +27337,7 @@ var FunNotificationBannerIcon = ({
27261
27337
  fallbackIconUrl = FALLBACK_ASSET
27262
27338
  }) => {
27263
27339
  const [animationScope, animate] = useAnimate3();
27264
- const triggerAnimationProcessingToCompleted = useCallback43(async () => {
27340
+ const triggerAnimationProcessingToCompleted = useCallback44(async () => {
27265
27341
  const completedIconPath = document.querySelector(
27266
27342
  `.${generateAnimationPrefixClassName("icon-wrapper-completed")} path`
27267
27343
  );
@@ -27368,7 +27444,7 @@ var FunNotificationBannerIcon = ({
27368
27444
  )
27369
27445
  ]);
27370
27446
  }, [animate]);
27371
- const triggerAnimationDelayedToFailed = useCallback43(async () => {
27447
+ const triggerAnimationDelayedToFailed = useCallback44(async () => {
27372
27448
  await Promise.all([
27373
27449
  animate(
27374
27450
  `.${generateAnimationPrefixClassName("icon-wrapper")}`,
@@ -27959,19 +28035,19 @@ var CheckoutNotifications = ({
27959
28035
  }
27960
28036
  setInitialDirectExecutions(directExecutions);
27961
28037
  }, [initialDirectExecutions, directExecutions]);
27962
- const displayedDirectExecutions = useMemo38(() => {
28038
+ const displayedDirectExecutions = useMemo39(() => {
27963
28039
  if (!directExecutions) {
27964
28040
  return [];
27965
28041
  }
27966
28042
  return getUpdatedDirectExecutions(directExecutions, initialDirectExecutions).filter(({ txHash }) => !closedNotifications.includes(txHash)).slice(0, MAX_COUNT);
27967
28043
  }, [initialDirectExecutions, directExecutions, closedNotifications]);
27968
- const displayedCheckouts = useMemo38(() => {
28044
+ const displayedCheckouts = useMemo39(() => {
27969
28045
  if (!checkouts) {
27970
28046
  return [];
27971
28047
  }
27972
28048
  return getUpdatedCheckouts(checkouts, initialCheckouts).filter(({ depositAddr }) => !closedNotifications.includes(depositAddr)).slice(0, MAX_COUNT);
27973
28049
  }, [initialCheckouts, checkouts, closedNotifications]);
27974
- const combinedNotifications = useMemo38(() => {
28050
+ const combinedNotifications = useMemo39(() => {
27975
28051
  return [
27976
28052
  ...displayedDirectExecutions.map(
27977
28053
  (item) => ({ ...item, isDirectExecution: true })
@@ -27981,7 +28057,7 @@ var CheckoutNotifications = ({
27981
28057
  )
27982
28058
  ].sort((a, b) => b.createdTimeMs - a.createdTimeMs);
27983
28059
  }, [displayedDirectExecutions, displayedCheckouts]);
27984
- const displayedNotifications = useMemo38(() => {
28060
+ const displayedNotifications = useMemo39(() => {
27985
28061
  return isExpanded ? combinedNotifications : combinedNotifications.slice(0, COLLAPSED_COUNT);
27986
28062
  }, [isExpanded, combinedNotifications]);
27987
28063
  const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
@@ -28258,7 +28334,7 @@ import React217 from "react";
28258
28334
  // src/modals/ProfileDetails/ActivityTraversalContext.tsx
28259
28335
  import React205, {
28260
28336
  createContext as createContext15,
28261
- useCallback as useCallback44,
28337
+ useCallback as useCallback45,
28262
28338
  useContext as useContext15,
28263
28339
  useState as useState66
28264
28340
  } from "react";
@@ -28279,7 +28355,7 @@ var ActivityTraversalProvider = ({
28279
28355
  const [returnViewPresets, setReturnViewPresets] = useState66(
28280
28356
  {}
28281
28357
  );
28282
- const onSelectActivity = useCallback44(
28358
+ const onSelectActivity = useCallback45(
28283
28359
  ({
28284
28360
  checkoutId,
28285
28361
  initialPage,
@@ -28297,7 +28373,7 @@ var ActivityTraversalProvider = ({
28297
28373
  },
28298
28374
  []
28299
28375
  );
28300
- const resetActivityTraversal = useCallback44(() => {
28376
+ const resetActivityTraversal = useCallback45(() => {
28301
28377
  setSelectedPurchaseId(void 0);
28302
28378
  setSelectedPurchaseInitView(void 0);
28303
28379
  setReturnView(void 0);
@@ -28317,7 +28393,7 @@ var useActivityTraversal = () => {
28317
28393
  };
28318
28394
 
28319
28395
  // src/modals/ProfileDetails/ProfileDetails.tsx
28320
- import React216, { useCallback as useCallback46, useState as useState69 } from "react";
28396
+ import React216, { useCallback as useCallback47, useState as useState69 } from "react";
28321
28397
 
28322
28398
  // src/hooks/useCheckoutModalTitle.ts
28323
28399
  function useCheckoutModalTitle(depositAddress, defaultTitle) {
@@ -28331,7 +28407,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
28331
28407
  import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
28332
28408
  import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
28333
28409
  import clsx23 from "clsx";
28334
- import React214, { useEffect as useEffect52, useMemo as useMemo39, useRef as useRef26, useState as useState68 } from "react";
28410
+ import React214, { useEffect as useEffect52, useMemo as useMemo40, useRef as useRef26, useState as useState68 } from "react";
28335
28411
  import { Virtuoso } from "react-virtuoso";
28336
28412
  import { useAccount as useAccount7 } from "wagmi";
28337
28413
 
@@ -28705,7 +28781,7 @@ var HomeTokenBalanceDisplayRowSkeleton = () => {
28705
28781
 
28706
28782
  // src/modals/ProfileDetails/FunProfileViews/Home/ProfileTitleSection.tsx
28707
28783
  import React213 from "react";
28708
- import { useCallback as useCallback45, useState as useState67 } from "react";
28784
+ import { useCallback as useCallback46, useState as useState67 } from "react";
28709
28785
 
28710
28786
  // src/components/Icons/LogoutIcon.tsx
28711
28787
  import React211 from "react";
@@ -28772,7 +28848,7 @@ var ProfileTitleSection = ({
28772
28848
  onClose
28773
28849
  }) => {
28774
28850
  const [isDisconnectExpanded, setIsDisconnectExpanded] = useState67(false);
28775
- const collapseDisconnect = useCallback45(
28851
+ const collapseDisconnect = useCallback46(
28776
28852
  () => setIsDisconnectExpanded(false),
28777
28853
  []
28778
28854
  );
@@ -28878,7 +28954,7 @@ function Home({
28878
28954
  const virtuosoDiv = virtuosoParentRef.current?.firstChild;
28879
28955
  virtuosoDiv?.classList.add(animateVirtuosoInClass);
28880
28956
  }, []);
28881
- const AssetsList = useMemo39(() => {
28957
+ const AssetsList = useMemo40(() => {
28882
28958
  if (walletAssets && !Object.keys(walletAssets).length) {
28883
28959
  return /* @__PURE__ */ React214.createElement(EmptyTabAlert, null);
28884
28960
  }
@@ -28905,7 +28981,7 @@ function Home({
28905
28981
  }
28906
28982
  ));
28907
28983
  }, [walletAssets]);
28908
- const CheckoutsList = useMemo39(() => {
28984
+ const CheckoutsList = useMemo40(() => {
28909
28985
  if (checkoutHistoryList.length === 0 && isCheckoutHistoryInited) {
28910
28986
  return /* @__PURE__ */ React214.createElement(EmptyTabAlert, null);
28911
28987
  }
@@ -29128,13 +29204,13 @@ function ProfileDetails({ onClose, defaultTab }) {
29128
29204
  const [singleActivityPage, setSingleActivityPage] = useState69(
29129
29205
  selectedPurchaseInitView ?? "detail" /* DETAIL */
29130
29206
  );
29131
- const resetView = useCallback46(() => {
29207
+ const resetView = useCallback47(() => {
29132
29208
  setView(returnView ?? 0 /* HOME */);
29133
29209
  setSelectedHomeTab("checkouts" /* CHECKOUTS */);
29134
29210
  resetActivityTraversal();
29135
29211
  }, [resetActivityTraversal, returnView]);
29136
29212
  const { animation, animate } = useAnimatedNavigation(void 0);
29137
- const onSelectActivityWrapper = useCallback46(
29213
+ const onSelectActivityWrapper = useCallback47(
29138
29214
  (activity) => {
29139
29215
  onSelectActivity({
29140
29216
  ...activity,
@@ -29171,7 +29247,7 @@ function ProfileDetails({ onClose, defaultTab }) {
29171
29247
  const isHelpPage = singleActivityPage === "help" /* HELP */;
29172
29248
  const isCheckoutDetailView = isSingleActivityView && singleActivityPage === "detail" /* DETAIL */;
29173
29249
  const withDivider = isSingleActivityView ? isHelpPage ? "scroll" : "always" : void 0;
29174
- const handleHelp = useCallback46(() => {
29250
+ const handleHelp = useCallback47(() => {
29175
29251
  animate(() => setSingleActivityPage("help" /* HELP */));
29176
29252
  }, [animate]);
29177
29253
  const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
@@ -29246,7 +29322,7 @@ function AccountModal({ onClose, open, defaultTab }) {
29246
29322
  // src/modals/ChainModal/ChainModal.tsx
29247
29323
  import { isMobile as isMobile13 } from "@funkit/utils";
29248
29324
  import React222 from "react";
29249
- import { useAccount as useAccount8, useConfig as useConfig4 } from "wagmi";
29325
+ import { useAccount as useAccount8, useConfig as useConfig5 } from "wagmi";
29250
29326
 
29251
29327
  // src/components/Icons/DisconnectSqIcon.tsx
29252
29328
  import React218 from "react";
@@ -29459,7 +29535,7 @@ var MobileScrollClassName = "_1d2b1vf1";
29459
29535
  // src/modals/ChainModal/ChainModal.tsx
29460
29536
  function ChainModal({ onClose, open }) {
29461
29537
  const { chainId } = useAccount8();
29462
- const { chains } = useConfig4();
29538
+ const { chains } = useConfig5();
29463
29539
  const { switchChain, pendingChainId } = useFunkitSwitchChains({
29464
29540
  onSettled: () => onClose()
29465
29541
  });
@@ -29578,7 +29654,7 @@ function ChainModal({ onClose, open }) {
29578
29654
  // src/modals/CheckoutModal/FunCheckoutModal.tsx
29579
29655
  import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST3 } from "@funkit/chains";
29580
29656
  import { LogLevel, initializeRelayClient } from "@funkit/fun-relay";
29581
- import { FlagKey as FlagKey27 } from "@funkit/utils";
29657
+ import { FlagKey as FlagKey28 } from "@funkit/utils";
29582
29658
  import React224, { useRef as useRef27 } from "react";
29583
29659
 
29584
29660
  // src/components/FunCheckoutBlocked/FunCheckoutBlocked.tsx
@@ -29665,7 +29741,7 @@ function FunCheckoutModalInner({
29665
29741
  const isBlocked = isUserGeoblocked || modalState.isBlocked;
29666
29742
  const hasBack = hasHistoryEntry && !disableBack;
29667
29743
  const checkoutConfig = checkoutItem.initSettings.config;
29668
- const helpButtonUrl = useFlag(FlagKey27.HelpTutorialUrl);
29744
+ const helpButtonUrl = useFlag(FlagKey28.HelpTutorialUrl);
29669
29745
  const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
29670
29746
  depositAddress: checkoutItem.depositAddress ?? void 0,
29671
29747
  isActiveCheckout: true,
@@ -29781,16 +29857,16 @@ function ConnectModal({
29781
29857
  function useModalStateValue() {
29782
29858
  const [isModalOpen, setModalOpen] = useState70(false);
29783
29859
  return {
29784
- closeModal: useCallback47(() => setModalOpen(false), []),
29860
+ closeModal: useCallback48(() => setModalOpen(false), []),
29785
29861
  isModalOpen,
29786
- openModal: useCallback47(() => setModalOpen(true), [])
29862
+ openModal: useCallback48(() => setModalOpen(true), [])
29787
29863
  };
29788
29864
  }
29789
29865
  function useModalStateValueWithProp() {
29790
29866
  const [isModalOpen, setModalOpen] = useState70(false);
29791
29867
  const [prop, setProp] = useState70(null);
29792
29868
  return {
29793
- closeModal: useCallback47(() => {
29869
+ closeModal: useCallback48(() => {
29794
29870
  setTimeout(
29795
29871
  () => {
29796
29872
  setProp(null);
@@ -29801,7 +29877,7 @@ function useModalStateValueWithProp() {
29801
29877
  }, []),
29802
29878
  isModalOpen,
29803
29879
  prop,
29804
- openModal: useCallback47((prop2) => {
29880
+ openModal: useCallback48((prop2) => {
29805
29881
  if (prop2 != null) {
29806
29882
  setProp(prop2);
29807
29883
  }
@@ -29850,7 +29926,7 @@ function ModalProvider({ children }) {
29850
29926
  } = useModalStateValueWithProp();
29851
29927
  const connectionStatus = useConnectionStatus();
29852
29928
  const { chainId } = useAccount10();
29853
- const { chains } = useConfig5();
29929
+ const { chains } = useConfig6();
29854
29930
  const isCurrentChainSupported = chains.some((chain) => chain.id === chainId);
29855
29931
  function closeModals(keepConnectModalOpen = false) {
29856
29932
  if (!keepConnectModalOpen) {
@@ -29872,7 +29948,7 @@ function ModalProvider({ children }) {
29872
29948
  return /* @__PURE__ */ React226.createElement(
29873
29949
  ModalContext.Provider,
29874
29950
  {
29875
- value: useMemo40(
29951
+ value: useMemo41(
29876
29952
  () => ({
29877
29953
  accountModalOpen,
29878
29954
  accountModalTab,
@@ -30277,7 +30353,7 @@ var FunkitWeb2Provider = ({
30277
30353
  children
30278
30354
  }) => {
30279
30355
  const { connectAsync } = useConnect2();
30280
- const { chains } = useConfig6();
30356
+ const { chains } = useConfig7();
30281
30357
  const { connectors, disconnectAsync } = useDisconnect2();
30282
30358
  const [privy, setPrivy] = useState71(null);
30283
30359
  const [privyIframeUrl, setPrivyIframeUrl] = useState71();
@@ -30288,7 +30364,7 @@ var FunkitWeb2Provider = ({
30288
30364
  const [isLoggingIn, setIsLoggingIn] = useState71(false);
30289
30365
  const [loginErrorMessage, setLoginErrorMessage] = useState71("");
30290
30366
  const [loggedInUser, setLoggedInUser] = useState71(null);
30291
- const setLoginMethodAndCache = useCallback48(
30367
+ const setLoginMethodAndCache = useCallback49(
30292
30368
  (method) => {
30293
30369
  try {
30294
30370
  setLoginMethod(method);
@@ -30312,7 +30388,7 @@ var FunkitWeb2Provider = ({
30312
30388
  setPrivyIframeUrl(newPrivy.embeddedWallet.getURL());
30313
30389
  setPrivy(newPrivy);
30314
30390
  }, [chains]);
30315
- const handleIframeMessage = useCallback48(
30391
+ const handleIframeMessage = useCallback49(
30316
30392
  (e) => {
30317
30393
  if (e.origin === PRIVY_AUTH_URL && privy) {
30318
30394
  const iframeHandler = privy.embeddedWallet.getMessageHandler();
@@ -30321,7 +30397,7 @@ var FunkitWeb2Provider = ({
30321
30397
  },
30322
30398
  [privy]
30323
30399
  );
30324
- const handleFunkitWeb2Logout = useCallback48(async () => {
30400
+ const handleFunkitWeb2Logout = useCallback49(async () => {
30325
30401
  if (privy) {
30326
30402
  logger.log("handleFunkitWeb2Logout_disconnecting_connectors", {
30327
30403
  numConnectors: connectors.length
@@ -30334,7 +30410,7 @@ var FunkitWeb2Provider = ({
30334
30410
  setLoginMethodAndCache(null);
30335
30411
  }
30336
30412
  }, [connectors, disconnectAsync, privy, setLoginMethodAndCache]);
30337
- const handleFreshPrivyLogin = useCallback48(
30413
+ const handleFreshPrivyLogin = useCallback49(
30338
30414
  async ({
30339
30415
  firstLoginCode,
30340
30416
  secondLoginCode,
@@ -30386,7 +30462,7 @@ var FunkitWeb2Provider = ({
30386
30462
  },
30387
30463
  [handleFunkitWeb2Logout, privy]
30388
30464
  );
30389
- const getPrivyUserEmbeddedWallet = useCallback48(
30465
+ const getPrivyUserEmbeddedWallet = useCallback49(
30390
30466
  async (inputPrivyUser) => {
30391
30467
  try {
30392
30468
  if (!privy || !inputPrivyUser) {
@@ -30405,7 +30481,7 @@ var FunkitWeb2Provider = ({
30405
30481
  },
30406
30482
  [privy]
30407
30483
  );
30408
- const getExistingPrivySession = useCallback48(async () => {
30484
+ const getExistingPrivySession = useCallback49(async () => {
30409
30485
  try {
30410
30486
  if (!privy) {
30411
30487
  throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
@@ -30416,7 +30492,7 @@ var FunkitWeb2Provider = ({
30416
30492
  return null;
30417
30493
  }
30418
30494
  }, [privy]);
30419
- const handleFunkitWeb2Login = useCallback48(
30495
+ const handleFunkitWeb2Login = useCallback49(
30420
30496
  async ({
30421
30497
  chainId,
30422
30498
  firstLoginCode,
@@ -30493,9 +30569,9 @@ var FunkitWeb2Provider = ({
30493
30569
  wallets
30494
30570
  ]
30495
30571
  );
30496
- const clearLoginError = useCallback48(() => setLoginErrorMessage(""), []);
30572
+ const clearLoginError = useCallback49(() => setLoginErrorMessage(""), []);
30497
30573
  const initChainId = useInitialChainId();
30498
- const handleAutoLoginFlows = useCallback48(async () => {
30574
+ const handleAutoLoginFlows = useCallback49(async () => {
30499
30575
  if (isNotNullish11(loginMethod) && isNotNullish11(initChainId)) {
30500
30576
  const queryParams = new URLSearchParams(window.location.search);
30501
30577
  const oauthCode = queryParams.get(PRIVY_OAUTH_CODE_URL_PARAM);
@@ -30539,7 +30615,7 @@ var FunkitWeb2Provider = ({
30539
30615
  initChainId
30540
30616
  // Do not include `handleAutoLoginFlows`,
30541
30617
  ]);
30542
- const handleOauthRedirect = useCallback48(
30618
+ const handleOauthRedirect = useCallback49(
30543
30619
  async (authProvider) => {
30544
30620
  if (!privy) {
30545
30621
  throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
@@ -30565,7 +30641,7 @@ var FunkitWeb2Provider = ({
30565
30641
  [privy, setLoginMethodAndCache]
30566
30642
  );
30567
30643
  const [isSendingOtpEmail, setIsSendingOtpEmail] = useState71(false);
30568
- const handleSendOtpEmail = useCallback48(
30644
+ const handleSendOtpEmail = useCallback49(
30569
30645
  async (emailAddress) => {
30570
30646
  try {
30571
30647
  if (!privy) {
@@ -30593,7 +30669,7 @@ var FunkitWeb2Provider = ({
30593
30669
  [privy, setLoginMethodAndCache]
30594
30670
  );
30595
30671
  const [isGeneratingFcUri, setIsGeneratingFcUri] = useState71(false);
30596
- const handleGenerateFcUri = useCallback48(async () => {
30672
+ const handleGenerateFcUri = useCallback49(async () => {
30597
30673
  try {
30598
30674
  if (!privy) {
30599
30675
  throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
@@ -30620,7 +30696,7 @@ var FunkitWeb2Provider = ({
30620
30696
  setIsGeneratingFcUri(false);
30621
30697
  }
30622
30698
  }, [privy]);
30623
- const getFcConnectionStatus = useCallback48(
30699
+ const getFcConnectionStatus = useCallback49(
30624
30700
  async (channelToken) => {
30625
30701
  try {
30626
30702
  if (!privy) {
@@ -30643,7 +30719,7 @@ var FunkitWeb2Provider = ({
30643
30719
  },
30644
30720
  [privy]
30645
30721
  );
30646
- const web2UserInfo = useMemo41(() => {
30722
+ const web2UserInfo = useMemo42(() => {
30647
30723
  if (!loggedInUser || !loggedInUser?.linked_accounts || !loggedInUser?.linked_accounts?.length) {
30648
30724
  return PLACEHOLDER_FUNKIT_USER_INFO;
30649
30725
  }
@@ -30764,10 +30840,10 @@ var useShowBalance = () => useContext18(ShowBalanceContext);
30764
30840
  // src/components/ConnectButton/ConnectButtonRenderer.tsx
30765
30841
  import { formatCurrencyAndStringify as formatCurrencyAndStringify15, isMobile as isMobile14, noop as noop9 } from "@funkit/utils";
30766
30842
  import React229 from "react";
30767
- import { useAccount as useAccount12, useBalance, useConfig as useConfig7 } from "wagmi";
30843
+ import { useAccount as useAccount12, useBalance, useConfig as useConfig8 } from "wagmi";
30768
30844
 
30769
30845
  // src/hooks/useIsMounted.ts
30770
- import { useCallback as useCallback49, useEffect as useEffect55, useState as useState73 } from "react";
30846
+ import { useCallback as useCallback50, useEffect as useEffect55, useState as useState73 } from "react";
30771
30847
  function useIsMounted() {
30772
30848
  const [isMounted, setIsMounted] = useState73(false);
30773
30849
  useEffect55(() => {
@@ -30776,7 +30852,7 @@ function useIsMounted() {
30776
30852
  setIsMounted(false);
30777
30853
  };
30778
30854
  }, []);
30779
- return useCallback49(() => isMounted, [isMounted]);
30855
+ return useCallback50(() => isMounted, [isMounted]);
30780
30856
  }
30781
30857
 
30782
30858
  // src/components/ConnectButton/abbreviateETHBalance.ts
@@ -30822,7 +30898,7 @@ function ConnectButtonRenderer({
30822
30898
  const { totalWalletAssetsUsd } = useWalletAssets({
30823
30899
  enableRefetchInterval: false
30824
30900
  });
30825
- const { chains: wagmiChains } = useConfig7();
30901
+ const { chains: wagmiChains } = useConfig8();
30826
30902
  const isCurrentChainSupported = wagmiChains.some(
30827
30903
  (chain) => chain.id === chainId
30828
30904
  );
@@ -31585,18 +31661,18 @@ function cssStringFromTheme(theme, options = {}) {
31585
31661
  }
31586
31662
 
31587
31663
  // src/hooks/useIsFunkitCheckoutActivated.ts
31588
- import { FlagKey as FlagKey28 } from "@funkit/utils";
31664
+ import { FlagKey as FlagKey29 } from "@funkit/utils";
31589
31665
  var useIsFunkitCheckoutActivated = () => {
31590
- const isCheckoutActivated = useFlag(FlagKey28.IsCheckoutActivated);
31666
+ const isCheckoutActivated = useFlag(FlagKey29.IsCheckoutActivated);
31591
31667
  return {
31592
31668
  isActivated: isCheckoutActivated
31593
31669
  };
31594
31670
  };
31595
31671
 
31596
31672
  // src/hooks/useFunkitMaxCheckoutUsdInfo.ts
31597
- import { FlagKey as FlagKey29, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
31673
+ import { FlagKey as FlagKey30, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
31598
31674
  var useFunkitMaxCheckoutUsdInfo = () => {
31599
- const maxCheckoutUsd = Number(useFlag(FlagKey29.MaxCheckoutUsd));
31675
+ const maxCheckoutUsd = Number(useFlag(FlagKey30.MaxCheckoutUsd));
31600
31676
  const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify16(maxCheckoutUsd, {
31601
31677
  decimalPrecisionForSuffix: 0,
31602
31678
  minimumSignificantDigits: 0,
@@ -31629,16 +31705,16 @@ import React233, { createContext as createContext19, useContext as useContext19
31629
31705
  import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
31630
31706
 
31631
31707
  // src/providers/useFingerprint.ts
31632
- import { useCallback as useCallback50, useEffect as useEffect57 } from "react";
31708
+ import { useCallback as useCallback51, useEffect as useEffect57 } from "react";
31633
31709
  var storageKey5 = "funkit-connect-version";
31634
31710
  function setFunkitConnectVersion({ version }) {
31635
31711
  localStorage.setItem(storageKey5, version);
31636
31712
  }
31637
31713
  function getCurrentSdkVersion() {
31638
- return "6.14.2";
31714
+ return "6.14.3";
31639
31715
  }
31640
31716
  function useFingerprint() {
31641
- const fingerprint = useCallback50(() => {
31717
+ const fingerprint = useCallback51(() => {
31642
31718
  setFunkitConnectVersion({ version: getCurrentSdkVersion() });
31643
31719
  }, []);
31644
31720
  useEffect57(() => {
@@ -31648,11 +31724,11 @@ function useFingerprint() {
31648
31724
 
31649
31725
  // src/providers/usePreloadImages.ts
31650
31726
  import { isNotNullish as isNotNullish12 } from "@funkit/utils";
31651
- import { useCallback as useCallback51, useEffect as useEffect58 } from "react";
31727
+ import { useCallback as useCallback52, useEffect as useEffect58 } from "react";
31652
31728
  function usePreloadImages() {
31653
31729
  const funkitConnectChains = useFunkitConnectChains();
31654
31730
  const walletConnectors = useWalletConnectors();
31655
- const preloadImages = useCallback51(() => {
31731
+ const preloadImages = useCallback52(() => {
31656
31732
  loadImages(
31657
31733
  ...walletConnectors.map((wallet) => wallet.iconUrl),
31658
31734
  ...funkitConnectChains.map((chain) => chain.iconUrl).filter(isNotNullish12)