@funkit/connect 7.0.0 → 7.0.3-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  darkTheme
4
- } from "./chunk-OVMNR35O.js";
4
+ } from "./chunk-IVO7KGHT.js";
5
5
  import {
6
6
  lightTheme
7
- } from "./chunk-DN7UTQK5.js";
7
+ } from "./chunk-5GV4UXWB.js";
8
8
  import {
9
9
  systemFontStack
10
10
  } from "./chunk-RJAD5CZH.js";
@@ -417,7 +417,7 @@ function Avatar({ address, imageUrl, loading, size }) {
417
417
  }
418
418
 
419
419
  // src/components/ConnectButton/ConnectButton.tsx
420
- import React236, { useEffect as useEffect57, useState as useState75 } from "react";
420
+ import React236, { useEffect as useEffect56, useState as useState75 } from "react";
421
421
 
422
422
  // src/css/touchableStyles.css.ts
423
423
  var active = { shrink: "_7rkubb8", shrinkSm: "_7rkubb9" };
@@ -538,284 +538,13 @@ function useFunkitTranslation() {
538
538
  }
539
539
 
540
540
  // src/providers/FunkitConnectChainContext.tsx
541
- import { configureEnvironment } from "@funkit/core";
542
541
  import React9, {
543
- createContext as createContext4,
544
- useContext as useContext4,
545
- useEffect as useEffect3,
546
- useMemo as useMemo4
542
+ createContext as createContext3,
543
+ useContext as useContext3,
544
+ useMemo as useMemo3
547
545
  } from "react";
548
546
  import { useConfig } from "wagmi";
549
547
 
550
- // src/utils/funLogger.ts
551
- import { datadogLogs } from "@datadog/browser-logs";
552
- import { DEV_API_KEY } from "@funkit/api-base";
553
- var DDOG_CLIENT_TOKEN = "pub4f86c6be8c792cb48dc156a8c17d9a47";
554
- var FUN_DEV_API_KEYS = [
555
- "hnHevQR0y394nBprGrvNx4HgoZHUwMet5mXTOBhf",
556
- "MYny3w7xJh6PRlRgkJ9604sHouY2MTke6lCPpSHq",
557
- DEV_API_KEY
558
- ];
559
- function setDdogEnv(environment) {
560
- datadogLogs.setGlobalContextProperty("env", environment);
561
- }
562
- var FunLogger = class {
563
- constructor() {
564
- setDdogEnv("development" /* DEVELOPMENT */);
565
- this.apiKey = null;
566
- this.isDebugMode = false;
567
- this.userId = null;
568
- this.userAddress = null;
569
- this.userName = null;
570
- this.userLoginType = null;
571
- this.sdkVersion = null;
572
- }
573
- getFunLogEnv() {
574
- if (!this.apiKey || FUN_DEV_API_KEYS.includes(this.apiKey)) {
575
- return "development" /* DEVELOPMENT */;
576
- }
577
- return "production" /* PRODUCTION */;
578
- }
579
- logDataDog(level, title, data, error) {
580
- if (typeof window === "undefined") {
581
- return;
582
- }
583
- const datadogData = {
584
- data,
585
- apiKey: this.apiKey,
586
- userId: this.userId,
587
- userName: this.userName,
588
- userAddress: this.userAddress,
589
- userLoginType: this.userLoginType,
590
- sdkVersion: this.sdkVersion
591
- };
592
- switch (level) {
593
- case "info":
594
- datadogLogs.logger.info(title, datadogData);
595
- break;
596
- case "debug":
597
- datadogLogs.logger.debug(title, datadogData);
598
- break;
599
- case "warn":
600
- datadogLogs.logger.warn(title, datadogData);
601
- break;
602
- case "error":
603
- datadogLogs.logger.error(title, datadogData, error);
604
- }
605
- }
606
- onDebug({ title, data }) {
607
- const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
608
- if (isProd) {
609
- this.logDataDog("debug", title, data);
610
- }
611
- if (!isProd || this.isDebugMode) {
612
- console.debug(title, data || "");
613
- }
614
- }
615
- onInfo({ title, data }) {
616
- const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
617
- if (isProd) {
618
- this.logDataDog("info", title, data);
619
- }
620
- if (!isProd || this.isDebugMode) {
621
- console.log(title, data || "");
622
- }
623
- }
624
- onWarn({ title, data }) {
625
- const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
626
- if (isProd) {
627
- this.logDataDog("warn", title, data);
628
- }
629
- if (!isProd || this.isDebugMode) {
630
- console.warn(title, data || "");
631
- }
632
- }
633
- onError({ title, error, data }) {
634
- const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
635
- if (isProd) {
636
- this.logDataDog("error", title, data, error);
637
- }
638
- if (!isProd || this.isDebugMode) {
639
- console.error(title, data || "", error);
640
- }
641
- }
642
- extractError(error) {
643
- if (error instanceof Error) {
644
- return error;
645
- }
646
- if (typeof error === "object" && error !== null && "error" in error && error.error instanceof Error) {
647
- return error.error;
648
- }
649
- return null;
650
- }
651
- /**========================
652
- * PUBLIC LOGGER FUNCTIONS
653
- *=========================*/
654
- log(title, data) {
655
- this.onInfo({ title, data });
656
- }
657
- info(title, data) {
658
- this.onInfo({ title, data });
659
- }
660
- debug(title, data) {
661
- this.onDebug({ title, data });
662
- }
663
- warn(title, data) {
664
- this.onWarn({ title, data });
665
- }
666
- /**
667
- * @param errorOrData -
668
- * Previously was called "error" but since in the {@link Logger} interface, error is defined as object (which is the same thing as "any"), we treat it as of unknown type here for safety.
669
- * In a lot of places it's actually being used as a "data" prop, which also usually has an `.error` property representing an actual {@link Error} object.
670
- */
671
- error(title, errorOrData, _data = {}) {
672
- const error = this.extractError(errorOrData) ?? void 0;
673
- const data = {
674
- ..._data,
675
- ...typeof errorOrData === "object" && errorOrData !== null ? errorOrData : {}
676
- };
677
- this.onError({ title, error, data });
678
- }
679
- configure(apiKey, isDebug, sdkVersion) {
680
- this.apiKey = apiKey;
681
- this.isDebugMode = isDebug;
682
- this.sdkVersion = sdkVersion;
683
- setDdogEnv(this.getFunLogEnv());
684
- }
685
- getUserId() {
686
- return this.userId;
687
- }
688
- getUserAddress() {
689
- return this.userAddress;
690
- }
691
- getUserName() {
692
- return this.userName;
693
- }
694
- getUserLoginType() {
695
- return this.userLoginType;
696
- }
697
- setUserInfo(userId, userAddress, userName, userLoginType) {
698
- this.userId = userId;
699
- this.userAddress = userAddress;
700
- this.userName = userName;
701
- this.userLoginType = userLoginType;
702
- }
703
- };
704
- datadogLogs.init({
705
- clientToken: DDOG_CLIENT_TOKEN,
706
- site: "datadoghq.com",
707
- forwardErrorsToLogs: false,
708
- sessionSampleRate: 100,
709
- service: "connect-sdk"
710
- });
711
- var logger = new FunLogger();
712
-
713
- // src/providers/FunkitConfigContext.tsx
714
- import { createContext as createContext3, useContext as useContext3, useMemo as useMemo3 } from "react";
715
- var DEFAULT_TEXT_CUSTOMIZATIONS = {
716
- virtualFiat: "Deposit with SEPA",
717
- brokerageOrExchange: "Connect Exchange",
718
- debitOrCredit: "Deposit with Card",
719
- accountBalance: "Wallet",
720
- selectAccount: "Select an exchange",
721
- sourceMethodTitle: "Your source",
722
- tokensListTitle: "Your tokens",
723
- transferTokens: "Transfer Crypto",
724
- receiveDropdownTitle: "",
725
- // Default to empty
726
- receiveDropdownLabel: "Asset to Receive",
727
- confirmationScreen: {
728
- payAmountLabel: "You send",
729
- receiveAmountLabel: "You receive"
730
- }
731
- };
732
- var DEFAULT_UI_CUSTOMIZATIONS = {
733
- alignTitle: "center",
734
- callToActionsUppercase: false,
735
- confirmationScreen: {
736
- preferDestinationWhenSame: false,
737
- showPaymentAmountUsd: false,
738
- showReceiveAmountUsd: false,
739
- showTokenAmount: true,
740
- showTransactionDigest: "none"
741
- },
742
- inputAmountScreen: {
743
- allowTokenAmountInput: true
744
- },
745
- selectAssetScreen: {
746
- showTargetAssetSelection: false
747
- },
748
- transferCryptoScreen: {
749
- showYouSendYouReceive: false
750
- }
751
- };
752
- var DEFAULT_FUNKIT_CONFIG = {
753
- apiKey: "",
754
- appName: "",
755
- textCustomizations: DEFAULT_TEXT_CUSTOMIZATIONS,
756
- uiCustomizations: DEFAULT_UI_CUSTOMIZATIONS
757
- };
758
- var FunkitConfigContext = createContext3(
759
- DEFAULT_FUNKIT_CONFIG
760
- );
761
- function useFunkitConfig() {
762
- const originalFunkitConfig = useContext3(FunkitConfigContext);
763
- const { t } = useFunkitTranslation();
764
- const translatedDefaults = useMemo3(() => {
765
- return {
766
- virtualFiat: t("textCustomizations.virtualFiat"),
767
- brokerageOrExchange: t("textCustomizations.brokerageOrExchange"),
768
- debitOrCredit: t("textCustomizations.debitOrCredit"),
769
- accountBalance: t("textCustomizations.accountBalance"),
770
- selectAccount: t("textCustomizations.selectAccount"),
771
- sourceMethodTitle: t("textCustomizations.sourceMethodTitle"),
772
- tokensListTitle: t("textCustomizations.tokensListTitle"),
773
- transferTokens: t("textCustomizations.transferTokens"),
774
- receiveDropdownTitle: t("textCustomizations.receiveDropdownTitle"),
775
- receiveDropdownLabel: t("textCustomizations.receiveDropdownLabel"),
776
- confirmationScreen: {
777
- payAmountLabel: t("textCustomizations.payAmountLabel"),
778
- receiveAmountLabel: t("textCustomizations.receiveAmountLabel")
779
- }
780
- };
781
- }, [t]);
782
- const finalFunkitConfig = useMemo3(() => {
783
- return {
784
- ...DEFAULT_FUNKIT_CONFIG,
785
- ...originalFunkitConfig,
786
- textCustomizations: {
787
- ...translatedDefaults,
788
- ...originalFunkitConfig.textCustomizations,
789
- confirmationScreen: {
790
- ...translatedDefaults.confirmationScreen,
791
- ...originalFunkitConfig.textCustomizations?.confirmationScreen
792
- }
793
- },
794
- uiCustomizations: {
795
- ...DEFAULT_FUNKIT_CONFIG.uiCustomizations,
796
- ...originalFunkitConfig.uiCustomizations,
797
- selectAssetScreen: {
798
- ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.selectAssetScreen,
799
- ...originalFunkitConfig.uiCustomizations?.selectAssetScreen
800
- },
801
- confirmationScreen: {
802
- ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.confirmationScreen,
803
- ...originalFunkitConfig.uiCustomizations?.confirmationScreen
804
- },
805
- inputAmountScreen: {
806
- ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.inputAmountScreen,
807
- ...originalFunkitConfig.uiCustomizations?.inputAmountScreen
808
- },
809
- transferCryptoScreen: {
810
- ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.transferCryptoScreen,
811
- ...originalFunkitConfig.uiCustomizations?.transferCryptoScreen
812
- }
813
- }
814
- };
815
- }, [originalFunkitConfig, translatedDefaults]);
816
- return finalFunkitConfig;
817
- }
818
-
819
548
  // src/providers/provideFunkitConnectChains.ts
820
549
  import { chainMetadataById } from "@funkit/chains";
821
550
  var provideFunkitConnectChains = (chains) => chains.map((chain) => {
@@ -837,7 +566,7 @@ var groupChainsById = (chains) => {
837
566
  };
838
567
 
839
568
  // src/providers/FunkitConnectChainContext.tsx
840
- var FunkitConnectChainContext = createContext4(
569
+ var FunkitConnectChainContext = createContext3(
841
570
  {
842
571
  chains: []
843
572
  }
@@ -847,22 +576,11 @@ function FunkitConnectChainProvider({
847
576
  initialChain
848
577
  }) {
849
578
  const { chains } = useConfig();
850
- const { apiKey } = useFunkitConfig();
851
579
  const initialChainFinal = initialChain || chains[0].id;
852
- useEffect3(() => {
853
- if (initialChainFinal) {
854
- configureEnvironment({
855
- chain: initialChainFinal,
856
- apiKey
857
- }).then(() => {
858
- logger.log("Core configured");
859
- });
860
- }
861
- }, [apiKey, initialChainFinal]);
862
580
  return /* @__PURE__ */ React9.createElement(
863
581
  FunkitConnectChainContext.Provider,
864
582
  {
865
- value: useMemo4(
583
+ value: useMemo3(
866
584
  () => ({
867
585
  chains: provideFunkitConnectChains(chains),
868
586
  initialChainId: initialChainFinal
@@ -873,17 +591,17 @@ function FunkitConnectChainProvider({
873
591
  children
874
592
  );
875
593
  }
876
- var useFunkitConnectChains = () => useContext4(FunkitConnectChainContext).chains;
594
+ var useFunkitConnectChains = () => useContext3(FunkitConnectChainContext).chains;
877
595
  var useFunkitConnectChainsById = () => groupChainsById(useFunkitConnectChains());
878
- var useInitialChainId = () => useContext4(FunkitConnectChainContext).initialChainId;
596
+ var useInitialChainId = () => useContext3(FunkitConnectChainContext).initialChainId;
879
597
 
880
598
  // src/providers/ShowBalanceContext.tsx
881
599
  import React10, {
882
- createContext as createContext5,
883
- useContext as useContext5,
600
+ createContext as createContext4,
601
+ useContext as useContext4,
884
602
  useState as useState3
885
603
  } from "react";
886
- var ShowBalanceContext = createContext5({
604
+ var ShowBalanceContext = createContext4({
887
605
  showBalance: void 0,
888
606
  setShowBalance: () => void 0
889
607
  });
@@ -891,13 +609,13 @@ function ShowBalanceProvider({ children }) {
891
609
  const [showBalance, setShowBalance] = useState3();
892
610
  return /* @__PURE__ */ React10.createElement(ShowBalanceContext.Provider, { value: { showBalance, setShowBalance } }, children);
893
611
  }
894
- var useShowBalance = () => useContext5(ShowBalanceContext);
612
+ var useShowBalance = () => useContext4(ShowBalanceContext);
895
613
 
896
614
  // src/components/AsyncImage/AsyncImage.tsx
897
- import React11, { useMemo as useMemo5, useReducer as useReducer2, useState as useState4 } from "react";
615
+ import React11, { useMemo as useMemo4, useReducer as useReducer2, useState as useState4 } from "react";
898
616
 
899
617
  // src/components/AsyncImage/useAsyncImage.ts
900
- import { useEffect as useEffect4, useReducer } from "react";
618
+ import { useEffect as useEffect3, useReducer } from "react";
901
619
  var cachedUrls = /* @__PURE__ */ new Map();
902
620
  var cachedRequestPromises = /* @__PURE__ */ new Map();
903
621
  async function loadAsyncImage(asyncImage) {
@@ -930,7 +648,7 @@ function useForceUpdate() {
930
648
  function useAsyncImage(url) {
931
649
  const cachedUrl = typeof url === "function" ? cachedUrls.get(url) : void 0;
932
650
  const forceUpdate = useForceUpdate();
933
- useEffect4(() => {
651
+ useEffect3(() => {
934
652
  if (typeof url === "function" && !cachedUrl) {
935
653
  loadAsyncImage(url).then(forceUpdate);
936
654
  }
@@ -962,7 +680,7 @@ function AsyncImage({
962
680
  const [hasError, setHasError] = useState4(
963
681
  srcProp === void 0 && fallbackSrc === void 0
964
682
  );
965
- const { asyncStyle, imgProps } = useMemo5(() => {
683
+ const { asyncStyle, imgProps } = useMemo4(() => {
966
684
  const asyncStyle2 = !useAsImage ? getRemoteImageStyles(isRemoteImage, isRemoteImageLoaded, src) : {};
967
685
  if (useAsImage || isRemoteImage) {
968
686
  const imgProps2 = {
@@ -1066,10 +784,10 @@ import React235 from "react";
1066
784
  import { useAccount as useAccount12, useBalance, useConfig as useConfig6 } from "wagmi";
1067
785
 
1068
786
  // src/hooks/useIsMounted.ts
1069
- import { useCallback as useCallback2, useEffect as useEffect5, useState as useState5 } from "react";
787
+ import { useCallback as useCallback2, useEffect as useEffect4, useState as useState5 } from "react";
1070
788
  function useIsMounted() {
1071
789
  const [isMounted, setIsMounted] = useState5(false);
1072
- useEffect5(() => {
790
+ useEffect4(() => {
1073
791
  setIsMounted(true);
1074
792
  return () => {
1075
793
  setIsMounted(false);
@@ -1133,9 +851,9 @@ import { useAccount as useAccount11 } from "wagmi";
1133
851
  // src/domains/asset.ts
1134
852
  import {
1135
853
  FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO14,
1136
- solanaChain as solanaChain5
854
+ solanaChain as solanaChain6
1137
855
  } from "@funkit/chains";
1138
- import { STABLECOIN_SYMBOLS } from "@funkit/core";
856
+ import { STABLECOIN_SYMBOLS } from "@funkit/utils";
1139
857
  import {
1140
858
  isTokenAddressEquivalent as isTokenAddressEquivalent4,
1141
859
  isTokenEquivalent as isTokenEquivalent7,
@@ -1143,6 +861,55 @@ import {
1143
861
  } from "@funkit/utils";
1144
862
  import { arbitrum as arbitrum5, base as base7, mainnet as mainnet11, optimism, polygon as polygon6 } from "viem/chains";
1145
863
 
864
+ // src/consts/customers.ts
865
+ import {
866
+ AVANTIS_API_KEY,
867
+ BANKR_API_KEY,
868
+ BASED_API_KEY,
869
+ BSX_API_KEY,
870
+ ETHEREAL_API_KEY,
871
+ HYENA_API_KEY,
872
+ HYPERBEAT_API_KEY,
873
+ HYPERDASH_API_KEY,
874
+ KATANA_API_KEY,
875
+ LIGHTERXYZ_API_KEY,
876
+ MONAD_API_KEY,
877
+ MONKEY_TILT_API_KEY,
878
+ OSTIUM_API_KEY,
879
+ PERPL_API_KEY,
880
+ POLYMARKET_API_KEY
881
+ } from "@funkit/api-base";
882
+ function isPolymarketCustomer(apiKey) {
883
+ return apiKey === POLYMARKET_API_KEY;
884
+ }
885
+ function isOstiumCustomer(apiKey) {
886
+ return apiKey === OSTIUM_API_KEY;
887
+ }
888
+ function isBankrCustomer(apiKey) {
889
+ return apiKey === BANKR_API_KEY;
890
+ }
891
+ function isEtherealCustomer(apiKey) {
892
+ return apiKey === ETHEREAL_API_KEY;
893
+ }
894
+ function isKatanaCustomer(apiKey) {
895
+ return apiKey === KATANA_API_KEY;
896
+ }
897
+ function isMonadCustomer(apiKey) {
898
+ return apiKey === MONAD_API_KEY;
899
+ }
900
+ function isBasedCustomer(apiKey) {
901
+ return apiKey === BASED_API_KEY;
902
+ }
903
+ function isHyenaCustomer(apiKey) {
904
+ return apiKey === HYENA_API_KEY;
905
+ }
906
+ function isLighterxyzCustomer(apiKey) {
907
+ return apiKey === LIGHTERXYZ_API_KEY;
908
+ }
909
+ function isLighterEthSpot(apiKey, checkoutConfig) {
910
+ return checkoutConfig && isLighterxyzCustomer(apiKey) && checkoutConfig.qrcodeActionType === "LIGHTER_ETH_SPOT_DEPOSIT";
911
+ }
912
+
1146
913
  // src/modals/CheckoutModal/InputAmount/utils.ts
1147
914
  import { formatCurrencyAndStringify } from "@funkit/utils";
1148
915
 
@@ -1322,20 +1089,13 @@ function reformatIntegerPart(integerPart, locale, preserveLeadingZeroes) {
1322
1089
 
1323
1090
  // src/utils/checkout.ts
1324
1091
  import {
1325
- CheckoutState as CheckoutState4,
1326
- getAssetPriceInfo as getAssetPriceInfo3
1092
+ CheckoutState as CheckoutState4
1327
1093
  } from "@funkit/api-base";
1328
1094
  import {
1329
1095
  FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS4,
1330
1096
  FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO13,
1331
- solanaChain as solanaChain4
1097
+ solanaChain as solanaChain5
1332
1098
  } from "@funkit/chains";
1333
- import {
1334
- CHECKOUT_SPONSOR_SUPPORT_CHAINS,
1335
- CONTRACT_ADDRESSES,
1336
- getEnvOptions,
1337
- getTokenAddressBySymbolAndChainId as getTokenAddressBySymbolAndChainId2
1338
- } from "@funkit/core";
1339
1099
  import { getRelayAssetInfo } from "@funkit/fun-relay";
1340
1100
  import {
1341
1101
  formatCryptoAndStringify as formatCryptoAndStringify9,
@@ -1345,30 +1105,7 @@ import {
1345
1105
  round as round3
1346
1106
  } from "@funkit/utils";
1347
1107
  import { getBalance, readContract } from "@wagmi/core";
1348
- import { erc20Abi as erc20Abi2, isAddress as isAddress3 } from "viem";
1349
-
1350
- // src/consts/funkit.ts
1351
- import { FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS } from "@funkit/chains";
1352
- var NATIVE_TOKEN = FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS;
1353
- var FUN_ORG_NAME = "Fun.xyz";
1354
- var FUN_TERMS_URL = "https://fun.xyz/terms";
1355
- var FunkitSocialLoginMethod = /* @__PURE__ */ ((FunkitSocialLoginMethod2) => {
1356
- FunkitSocialLoginMethod2["GOOGLE"] = "google_oauth" /* google_oauth */;
1357
- FunkitSocialLoginMethod2["TWITTER"] = "twitter_oauth" /* twitter_oauth */;
1358
- FunkitSocialLoginMethod2["APPLE"] = "apple_oauth" /* apple_oauth */;
1359
- FunkitSocialLoginMethod2["FARCASTER"] = "farcaster" /* farcaster */;
1360
- return FunkitSocialLoginMethod2;
1361
- })(FunkitSocialLoginMethod || {});
1362
- var PLACEHOLDER_FUNKIT_USER_INFO = {
1363
- id: "0x",
1364
- address: "0x",
1365
- name: "Guest",
1366
- nameTruncated: "Guest",
1367
- type: "unknown",
1368
- typeLabel: "",
1369
- iconSrc: "",
1370
- isConnected: false
1371
- };
1108
+ import { erc20Abi as erc20Abi3, isAddress as isAddress3 } from "viem";
1372
1109
 
1373
1110
  // src/providers/FunkitCheckoutContext/index.tsx
1374
1111
  import {
@@ -1377,12 +1114,12 @@ import {
1377
1114
  initializeCheckout as postApiInitializeCheckout
1378
1115
  } from "@funkit/api-base";
1379
1116
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO12 } from "@funkit/chains";
1380
- import { FlagKey as FlagKey23, isNotNullish as isNotNullish8 } from "@funkit/utils";
1117
+ import { FlagKey as FlagKey22, isNotNullish as isNotNullish8 } from "@funkit/utils";
1381
1118
  import React234, {
1382
1119
  createContext as createContext17,
1383
1120
  useCallback as useCallback49,
1384
1121
  useContext as useContext17,
1385
- useEffect as useEffect56,
1122
+ useEffect as useEffect55,
1386
1123
  useState as useState74
1387
1124
  } from "react";
1388
1125
  import { flushSync } from "react-dom";
@@ -1401,7 +1138,7 @@ function getCheckoutRecipient({
1401
1138
  import { exhaustiveCheck, formatAddress } from "@funkit/utils";
1402
1139
 
1403
1140
  // src/consts/bluvo.tsx
1404
- import { ETHEREAL_API_KEY } from "@funkit/api-base";
1141
+ import { ETHEREAL_API_KEY as ETHEREAL_API_KEY2 } from "@funkit/api-base";
1405
1142
  import React16 from "react";
1406
1143
 
1407
1144
  // src/components/Icons/BinanceIcon.tsx
@@ -1517,7 +1254,7 @@ var KrakenIcon = ({ size = 24 }) => {
1517
1254
 
1518
1255
  // src/consts/bluvo.tsx
1519
1256
  var BLUVO_MIN_DEPOSIT_BY_CUSTOMER = {
1520
- [ETHEREAL_API_KEY]: 15
1257
+ [ETHEREAL_API_KEY2]: 15
1521
1258
  };
1522
1259
  var SUPPORTED_EXCHANGES = [
1523
1260
  { exchange: "coinbase" /* Coinbase */, status: "live" /* Live */ },
@@ -1659,7 +1396,6 @@ function generateClientMetadataForTokenTransfer() {
1659
1396
  targetAsset: "0x",
1660
1397
  targetChain: "",
1661
1398
  targetAssetTicker: "",
1662
- expirationTimestampMs: 0,
1663
1399
  checkoutItemTitle: ""
1664
1400
  }
1665
1401
  },
@@ -1684,23 +1420,186 @@ import {
1684
1420
  import { useCallback as useCallback4 } from "react";
1685
1421
 
1686
1422
  // src/providers/useFingerprint.ts
1687
- import { useCallback as useCallback3, useEffect as useEffect6 } from "react";
1423
+ import { useCallback as useCallback3, useEffect as useEffect5 } from "react";
1688
1424
  var storageKey = "funkit-connect-version";
1689
1425
  function setFunkitConnectVersion({ version }) {
1690
1426
  localStorage.setItem(storageKey, version);
1691
1427
  }
1692
1428
  function getCurrentSdkVersion() {
1693
- return "7.0.0";
1429
+ return "7.0.3-next.0";
1694
1430
  }
1695
1431
  function useFingerprint() {
1696
1432
  const fingerprint = useCallback3(() => {
1697
1433
  setFunkitConnectVersion({ version: getCurrentSdkVersion() });
1698
1434
  }, []);
1699
- useEffect6(() => {
1435
+ useEffect5(() => {
1700
1436
  fingerprint();
1701
1437
  }, [fingerprint]);
1702
1438
  }
1703
1439
 
1440
+ // src/utils/funLogger.ts
1441
+ import { datadogLogs } from "@datadog/browser-logs";
1442
+ import { DEV_API_KEY } from "@funkit/api-base";
1443
+ var DDOG_CLIENT_TOKEN = "pub4f86c6be8c792cb48dc156a8c17d9a47";
1444
+ var FUN_DEV_API_KEYS = [
1445
+ "hnHevQR0y394nBprGrvNx4HgoZHUwMet5mXTOBhf",
1446
+ "MYny3w7xJh6PRlRgkJ9604sHouY2MTke6lCPpSHq",
1447
+ DEV_API_KEY
1448
+ ];
1449
+ function setDdogEnv(environment) {
1450
+ datadogLogs.setGlobalContextProperty("env", environment);
1451
+ }
1452
+ var FunLogger = class {
1453
+ constructor() {
1454
+ setDdogEnv("development" /* DEVELOPMENT */);
1455
+ this.apiKey = null;
1456
+ this.isDebugMode = false;
1457
+ this.userId = null;
1458
+ this.userAddress = null;
1459
+ this.userName = null;
1460
+ this.userLoginType = null;
1461
+ this.sdkVersion = null;
1462
+ }
1463
+ getFunLogEnv() {
1464
+ if (!this.apiKey || FUN_DEV_API_KEYS.includes(this.apiKey)) {
1465
+ return "development" /* DEVELOPMENT */;
1466
+ }
1467
+ return "production" /* PRODUCTION */;
1468
+ }
1469
+ logDataDog(level, title, data, error) {
1470
+ if (typeof window === "undefined") {
1471
+ return;
1472
+ }
1473
+ const datadogData = {
1474
+ data,
1475
+ apiKey: this.apiKey,
1476
+ userId: this.userId,
1477
+ userName: this.userName,
1478
+ userAddress: this.userAddress,
1479
+ userLoginType: this.userLoginType,
1480
+ sdkVersion: this.sdkVersion
1481
+ };
1482
+ switch (level) {
1483
+ case "info":
1484
+ datadogLogs.logger.info(title, datadogData);
1485
+ break;
1486
+ case "debug":
1487
+ datadogLogs.logger.debug(title, datadogData);
1488
+ break;
1489
+ case "warn":
1490
+ datadogLogs.logger.warn(title, datadogData);
1491
+ break;
1492
+ case "error":
1493
+ datadogLogs.logger.error(title, datadogData, error);
1494
+ }
1495
+ }
1496
+ onDebug({ title, data }) {
1497
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1498
+ if (isProd) {
1499
+ this.logDataDog("debug", title, data);
1500
+ }
1501
+ if (!isProd || this.isDebugMode) {
1502
+ console.debug(title, data || "");
1503
+ }
1504
+ }
1505
+ onInfo({ title, data }) {
1506
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1507
+ if (isProd) {
1508
+ this.logDataDog("info", title, data);
1509
+ }
1510
+ if (!isProd || this.isDebugMode) {
1511
+ console.log(title, data || "");
1512
+ }
1513
+ }
1514
+ onWarn({ title, data }) {
1515
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1516
+ if (isProd) {
1517
+ this.logDataDog("warn", title, data);
1518
+ }
1519
+ if (!isProd || this.isDebugMode) {
1520
+ console.warn(title, data || "");
1521
+ }
1522
+ }
1523
+ onError({ title, error, data }) {
1524
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1525
+ if (isProd) {
1526
+ this.logDataDog("error", title, data, error);
1527
+ }
1528
+ if (!isProd || this.isDebugMode) {
1529
+ console.error(title, data || "", error);
1530
+ }
1531
+ }
1532
+ extractError(error) {
1533
+ if (error instanceof Error) {
1534
+ return error;
1535
+ }
1536
+ if (typeof error === "object" && error !== null && "error" in error && error.error instanceof Error) {
1537
+ return error.error;
1538
+ }
1539
+ return null;
1540
+ }
1541
+ /**========================
1542
+ * PUBLIC LOGGER FUNCTIONS
1543
+ *=========================*/
1544
+ log(title, data) {
1545
+ this.onInfo({ title, data });
1546
+ }
1547
+ info(title, data) {
1548
+ this.onInfo({ title, data });
1549
+ }
1550
+ debug(title, data) {
1551
+ this.onDebug({ title, data });
1552
+ }
1553
+ warn(title, data) {
1554
+ this.onWarn({ title, data });
1555
+ }
1556
+ /**
1557
+ * @param errorOrData -
1558
+ * Previously was called "error" but since in the {@link Logger} interface, error is defined as object (which is the same thing as "any"), we treat it as of unknown type here for safety.
1559
+ * In a lot of places it's actually being used as a "data" prop, which also usually has an `.error` property representing an actual {@link Error} object.
1560
+ */
1561
+ error(title, errorOrData, _data = {}) {
1562
+ const error = this.extractError(errorOrData) ?? void 0;
1563
+ const data = {
1564
+ ..._data,
1565
+ ...typeof errorOrData === "object" && errorOrData !== null ? errorOrData : {}
1566
+ };
1567
+ this.onError({ title, error, data });
1568
+ }
1569
+ configure(apiKey, isDebug, sdkVersion) {
1570
+ this.apiKey = apiKey;
1571
+ this.isDebugMode = isDebug;
1572
+ this.sdkVersion = sdkVersion;
1573
+ setDdogEnv(this.getFunLogEnv());
1574
+ }
1575
+ getUserId() {
1576
+ return this.userId;
1577
+ }
1578
+ getUserAddress() {
1579
+ return this.userAddress;
1580
+ }
1581
+ getUserName() {
1582
+ return this.userName;
1583
+ }
1584
+ getUserLoginType() {
1585
+ return this.userLoginType;
1586
+ }
1587
+ setUserInfo(userId, userAddress, userName, userLoginType) {
1588
+ this.userId = userId;
1589
+ this.userAddress = userAddress;
1590
+ this.userName = userName;
1591
+ this.userLoginType = userLoginType;
1592
+ }
1593
+ };
1594
+ datadogLogs.init({
1595
+ clientToken: DDOG_CLIENT_TOKEN,
1596
+ site: "datadoghq.com",
1597
+ forwardErrorsToLogs: false,
1598
+ sessionSampleRate: 100,
1599
+ service: "connect-sdk"
1600
+ });
1601
+ var logger = new FunLogger();
1602
+
1704
1603
  // src/hooks/track/useTrack.ts
1705
1604
  var stringifyValues = (metadata) => {
1706
1605
  const normalizedMetadata = {};
@@ -1800,13 +1699,119 @@ var getWeb3AccountBalanceMessage = (t) => ({
1800
1699
  [2 /* APPROVE_TRANSFER */]: (tokenSymbol) => t("checkoutConfirmation.confirmTokenTransfer", { tokenSymbol })
1801
1700
  });
1802
1701
 
1702
+ // src/providers/FunkitConfigContext.tsx
1703
+ import { createContext as createContext5, useContext as useContext5, useMemo as useMemo5 } from "react";
1704
+ var DEFAULT_TEXT_CUSTOMIZATIONS = {
1705
+ virtualFiat: "Deposit with SEPA",
1706
+ brokerageOrExchange: "Connect Exchange",
1707
+ debitOrCredit: "Deposit with Card",
1708
+ accountBalance: "Wallet",
1709
+ selectAccount: "Select an exchange",
1710
+ sourceMethodTitle: "Your source",
1711
+ tokensListTitle: "Your tokens",
1712
+ transferTokens: "Transfer Crypto",
1713
+ receiveDropdownTitle: "",
1714
+ // Default to empty
1715
+ receiveDropdownLabel: "Asset to Receive",
1716
+ confirmationScreen: {
1717
+ payAmountLabel: "You send",
1718
+ receiveAmountLabel: "You receive"
1719
+ }
1720
+ };
1721
+ var DEFAULT_UI_CUSTOMIZATIONS = {
1722
+ alignTitle: "center",
1723
+ callToActionsUppercase: false,
1724
+ confirmationScreen: {
1725
+ preferDestinationWhenSame: false,
1726
+ showPaymentAmountUsd: false,
1727
+ showReceiveAmountUsd: false,
1728
+ showTokenAmount: true,
1729
+ showTransactionDigest: "none"
1730
+ },
1731
+ inputAmountScreen: {
1732
+ allowTokenAmountInput: true
1733
+ },
1734
+ selectAssetScreen: {
1735
+ showTargetAssetSelection: false
1736
+ },
1737
+ transferCryptoScreen: {
1738
+ showYouSendYouReceive: false
1739
+ }
1740
+ };
1741
+ var DEFAULT_FUNKIT_CONFIG = {
1742
+ apiKey: "",
1743
+ appName: "",
1744
+ textCustomizations: DEFAULT_TEXT_CUSTOMIZATIONS,
1745
+ uiCustomizations: DEFAULT_UI_CUSTOMIZATIONS
1746
+ };
1747
+ var FunkitConfigContext = createContext5(
1748
+ DEFAULT_FUNKIT_CONFIG
1749
+ );
1750
+ function useFunkitConfig() {
1751
+ const originalFunkitConfig = useContext5(FunkitConfigContext);
1752
+ const { t } = useFunkitTranslation();
1753
+ const translatedDefaults = useMemo5(() => {
1754
+ return {
1755
+ virtualFiat: t("textCustomizations.virtualFiat"),
1756
+ brokerageOrExchange: t("textCustomizations.brokerageOrExchange"),
1757
+ debitOrCredit: t("textCustomizations.debitOrCredit"),
1758
+ accountBalance: t("textCustomizations.accountBalance"),
1759
+ selectAccount: t("textCustomizations.selectAccount"),
1760
+ sourceMethodTitle: t("textCustomizations.sourceMethodTitle"),
1761
+ tokensListTitle: t("textCustomizations.tokensListTitle"),
1762
+ transferTokens: t("textCustomizations.transferTokens"),
1763
+ receiveDropdownTitle: t("textCustomizations.receiveDropdownTitle"),
1764
+ receiveDropdownLabel: t("textCustomizations.receiveDropdownLabel"),
1765
+ confirmationScreen: {
1766
+ payAmountLabel: t("textCustomizations.payAmountLabel"),
1767
+ receiveAmountLabel: t("textCustomizations.receiveAmountLabel")
1768
+ }
1769
+ };
1770
+ }, [t]);
1771
+ const finalFunkitConfig = useMemo5(() => {
1772
+ return {
1773
+ ...DEFAULT_FUNKIT_CONFIG,
1774
+ ...originalFunkitConfig,
1775
+ textCustomizations: {
1776
+ ...translatedDefaults,
1777
+ ...originalFunkitConfig.textCustomizations,
1778
+ confirmationScreen: {
1779
+ ...translatedDefaults.confirmationScreen,
1780
+ ...originalFunkitConfig.textCustomizations?.confirmationScreen
1781
+ }
1782
+ },
1783
+ uiCustomizations: {
1784
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations,
1785
+ ...originalFunkitConfig.uiCustomizations,
1786
+ selectAssetScreen: {
1787
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.selectAssetScreen,
1788
+ ...originalFunkitConfig.uiCustomizations?.selectAssetScreen
1789
+ },
1790
+ confirmationScreen: {
1791
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.confirmationScreen,
1792
+ ...originalFunkitConfig.uiCustomizations?.confirmationScreen
1793
+ },
1794
+ inputAmountScreen: {
1795
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.inputAmountScreen,
1796
+ ...originalFunkitConfig.uiCustomizations?.inputAmountScreen
1797
+ },
1798
+ transferCryptoScreen: {
1799
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.transferCryptoScreen,
1800
+ ...originalFunkitConfig.uiCustomizations?.transferCryptoScreen
1801
+ }
1802
+ }
1803
+ };
1804
+ }, [originalFunkitConfig, translatedDefaults]);
1805
+ return finalFunkitConfig;
1806
+ }
1807
+
1803
1808
  // src/providers/GeneralWalletProvider.tsx
1804
1809
  import { formatAddress as formatAddress2 } from "@funkit/utils";
1805
1810
  import React17, {
1806
1811
  createContext as createContext6,
1807
1812
  useCallback as useCallback5,
1808
1813
  useContext as useContext6,
1809
- useEffect as useEffect7,
1814
+ useEffect as useEffect6,
1810
1815
  useMemo as useMemo6,
1811
1816
  useState as useState7
1812
1817
  } from "react";
@@ -1906,6 +1911,22 @@ function formatENS(name) {
1906
1911
  return `${parts.join(".")}.${last}`;
1907
1912
  }
1908
1913
 
1914
+ // src/consts/funkit.ts
1915
+ import { FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS } from "@funkit/chains";
1916
+ var NATIVE_TOKEN = FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS;
1917
+ var FUN_ORG_NAME = "Fun.xyz";
1918
+ var FUN_TERMS_URL = "https://fun.xyz/terms";
1919
+ var PLACEHOLDER_FUNKIT_USER_INFO = {
1920
+ id: "0x",
1921
+ address: "0x",
1922
+ name: "Guest",
1923
+ nameTruncated: "Guest",
1924
+ type: "unknown",
1925
+ typeLabel: "",
1926
+ iconSrc: "",
1927
+ isConnected: false
1928
+ };
1929
+
1909
1930
  // src/hooks/useSymbolRefresh.ts
1910
1931
  import { useState as useState6 } from "react";
1911
1932
  function useSymbolRefresh() {
@@ -1984,7 +2005,7 @@ function GeneralWalletProvider({ children }) {
1984
2005
  apiKey,
1985
2006
  externalUserId
1986
2007
  ]);
1987
- useEffect7(() => {
2008
+ useEffect6(() => {
1988
2009
  if (userInfo.id !== logger.getUserId() || userInfo.address !== logger.getUserAddress() || userInfo.name !== logger.getUserName() || userInfo.type !== logger.getUserLoginType()) {
1989
2010
  logger.log("settingUserInfo", userInfo);
1990
2011
  updateUserAsync(userInfo, apiKey).catch(
@@ -2146,63 +2167,73 @@ async function disableAtomicBatchIfSupported(wallet, chainId) {
2146
2167
  });
2147
2168
  }
2148
2169
 
2170
+ // src/utils/lighter.ts
2171
+ import { getAddress } from "viem";
2172
+ var LIGHTER_DEPOSIT_ABI = [
2173
+ {
2174
+ inputs: [
2175
+ { internalType: "address", name: "_to", type: "address" },
2176
+ { internalType: "uint16", name: "_assetIndex", type: "uint16" },
2177
+ {
2178
+ internalType: "enum TxTypes.RouteType",
2179
+ name: "_routeType",
2180
+ type: "uint8"
2181
+ },
2182
+ { internalType: "uint256", name: "_amount", type: "uint256" }
2183
+ ],
2184
+ name: "deposit",
2185
+ outputs: [],
2186
+ stateMutability: "payable",
2187
+ type: "function"
2188
+ },
2189
+ {
2190
+ inputs: [{ internalType: "address", name: "", type: "address" }],
2191
+ name: "addressToAccountIndex",
2192
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
2193
+ stateMutability: "view",
2194
+ type: "function"
2195
+ },
2196
+ {
2197
+ inputs: [{ internalType: "uint16", name: "assetIndex", type: "uint16" }],
2198
+ name: "assetConfigs",
2199
+ outputs: [
2200
+ { internalType: "address", name: "tokenAddress", type: "address" },
2201
+ {
2202
+ internalType: "uint8",
2203
+ name: "withdrawalsEnabled",
2204
+ type: "uint8"
2205
+ },
2206
+ {
2207
+ internalType: "uint56",
2208
+ name: "extensionMultiplier",
2209
+ type: "uint56"
2210
+ },
2211
+ { internalType: "uint128", name: "tickSize", type: "uint128" },
2212
+ { internalType: "uint64", name: "depositCapTicks", type: "uint64" },
2213
+ { internalType: "uint64", name: "minDepositTicks", type: "uint64" }
2214
+ ],
2215
+ stateMutability: "view",
2216
+ type: "function"
2217
+ }
2218
+ ];
2219
+ var LIGHTER_DEPOSIT_ADDRESS = getAddress(
2220
+ "0x3b4d794a66304f130a4db8f2551b0070dfcf5ca7"
2221
+ );
2222
+ var roundDownToTick = (amount, tickSize) => {
2223
+ return amount - amount % tickSize;
2224
+ };
2225
+
2149
2226
  // src/hooks/useRelayBypass.ts
2150
2227
  import { FlagKey as FlagKey3, isTokenAddressEquivalent } from "@funkit/utils";
2151
2228
  import { useCallback as useCallback6, useMemo as useMemo10 } from "react";
2152
2229
 
2153
- // src/consts/customers.ts
2154
- import {
2155
- AVANTIS_API_KEY,
2156
- BANKR_API_KEY,
2157
- BASED_API_KEY,
2158
- BSX_API_KEY,
2159
- ETHEREAL_API_KEY as ETHEREAL_API_KEY2,
2160
- HYENA_API_KEY,
2161
- HYPERBEAT_API_KEY,
2162
- HYPERDASH_API_KEY,
2163
- KATANA_API_KEY,
2164
- LIGHTERXYZ_API_KEY,
2165
- MONAD_API_KEY,
2166
- MONKEY_TILT_API_KEY,
2167
- OSTIUM_API_KEY,
2168
- PERPL_API_KEY,
2169
- POLYMARKET_API_KEY
2170
- } from "@funkit/api-base";
2171
- function isPolymarketCustomer(apiKey) {
2172
- return apiKey === POLYMARKET_API_KEY;
2173
- }
2174
- function isOstiumCustomer(apiKey) {
2175
- return apiKey === OSTIUM_API_KEY;
2176
- }
2177
- function isBankrCustomer(apiKey) {
2178
- return apiKey === BANKR_API_KEY;
2179
- }
2180
- function isEtherealCustomer(apiKey) {
2181
- return apiKey === ETHEREAL_API_KEY2;
2182
- }
2183
- function isKatanaCustomer(apiKey) {
2184
- return apiKey === KATANA_API_KEY;
2185
- }
2186
- function isMonadCustomer(apiKey) {
2187
- return apiKey === MONAD_API_KEY;
2188
- }
2189
- function isBasedCustomer(apiKey) {
2190
- return apiKey === BASED_API_KEY;
2191
- }
2192
- function isHyenaCustomer(apiKey) {
2193
- return apiKey === HYENA_API_KEY;
2194
- }
2195
- function isLighterxyzCustomer(apiKey) {
2196
- return apiKey === LIGHTERXYZ_API_KEY;
2197
- }
2198
-
2199
2230
  // src/providers/FunkitFlagsProvider.tsx
2200
2231
  import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
2201
2232
  import { useQuery as useQuery2 } from "@tanstack/react-query";
2202
2233
  import React18, {
2203
2234
  createContext as createContext7,
2204
2235
  useContext as useContext7,
2205
- useEffect as useEffect8,
2236
+ useEffect as useEffect7,
2206
2237
  useMemo as useMemo8
2207
2238
  } from "react";
2208
2239
 
@@ -2231,6 +2262,7 @@ import {
2231
2262
  POLYMARKET_API_KEY as POLYMARKET_API_KEY2,
2232
2263
  RAREBETSPORTS_API_KEY,
2233
2264
  SUSHI_API_KEY,
2265
+ TRADEFOX_API_KEY,
2234
2266
  VENTUALS_API_KEY
2235
2267
  } from "@funkit/api-base";
2236
2268
  import { MONAD_CHAIN_ID, bitcoinChain } from "@funkit/chains";
@@ -2372,12 +2404,12 @@ var flagConfig = {
2372
2404
  POLYMARKET_API_KEY2,
2373
2405
  KATANA_API_KEY2,
2374
2406
  HYPERBEAT_API_KEY2,
2375
- HYPERDASH_API_KEY2
2407
+ HYPERDASH_API_KEY2,
2408
+ FELIX_API_KEY
2376
2409
  ]
2377
2410
  }
2378
2411
  ],
2379
- // Turn off geoblock for PM / Katana on our end.
2380
- // These clients will handle the conditional display of the Deposit button.
2412
+ // Turn off geoblocks for client who will be handling the conditional display of the Deposit button.
2381
2413
  value: ""
2382
2414
  }
2383
2415
  ]
@@ -2466,7 +2498,8 @@ var flagConfig = {
2466
2498
  POLYMARKET_API_KEY2,
2467
2499
  RAREBETSPORTS_API_KEY,
2468
2500
  SUSHI_API_KEY,
2469
- VENTUALS_API_KEY
2501
+ VENTUALS_API_KEY,
2502
+ TRADEFOX_API_KEY
2470
2503
  ]
2471
2504
  }
2472
2505
  ],
@@ -2547,7 +2580,7 @@ var flagConfig = {
2547
2580
  {
2548
2581
  key: "apiKey",
2549
2582
  type: "isAnyOf",
2550
- values: [POLYMARKET_API_KEY2]
2583
+ values: [POLYMARKET_API_KEY2, BASED_API_KEY2, HYENA_API_KEY2]
2551
2584
  }
2552
2585
  ],
2553
2586
  value: JSON.stringify(QR_CODE_WITH_MONAD)
@@ -2967,10 +3000,10 @@ var flagConfig = {
2967
3000
  type: "string",
2968
3001
  default_value: JSON.stringify({
2969
3002
  // EXAMPLE:
2970
- // [bitcoinChain.id]: [
3003
+ // [solanaChain.id]: [
2971
3004
  // {
2972
3005
  // message:
2973
- // 'Bitcoin deposits currently have a limit of 1 BTC per transaction and take up to 1 hour to complete.',
3006
+ // 'Solana deposits are taking longer than usual to process. Your funds are safe.',
2974
3007
  // type: 'alert',
2975
3008
  // },
2976
3009
  // ],
@@ -3253,12 +3286,12 @@ function FunkitFlagsProvider({ children }) {
3253
3286
  isLoading
3254
3287
  };
3255
3288
  }, [error, flags, isLoading]);
3256
- useEffect8(() => {
3289
+ useEffect7(() => {
3257
3290
  if (!isLoading) {
3258
3291
  datadogLogs2.setGlobalContextProperty("flags", flags);
3259
3292
  }
3260
3293
  }, [flags, isLoading]);
3261
- useEffect8(() => {
3294
+ useEffect7(() => {
3262
3295
  if (error) {
3263
3296
  logger.error("flag_initError", error);
3264
3297
  }
@@ -3432,16 +3465,22 @@ function useCheckoutDirectExecution() {
3432
3465
  if (params.isExactIn) {
3433
3466
  const { fromTokenDecimals, fromTokenAmount } = params;
3434
3467
  const multiplier2 = 10 ** fromTokenDecimals;
3468
+ const fromAmountBaseUnit = BigInt(
3469
+ Math.floor(fromTokenAmount * multiplier2)
3470
+ );
3471
+ const roundedFromAmountBaseUnit = params.tickSize ? roundDownToTick(fromAmountBaseUnit, params.tickSize) : fromAmountBaseUnit;
3435
3472
  return await getCheckoutQuoteV2({
3436
3473
  ...getCheckoutQuoteParams,
3437
- fromAmountBaseUnit: BigInt(Math.floor(fromTokenAmount * multiplier2))
3474
+ fromAmountBaseUnit: roundedFromAmountBaseUnit
3438
3475
  });
3439
3476
  }
3440
3477
  const { toTokenAmount, toTokenDecimals } = params;
3441
3478
  const multiplier = 10 ** toTokenDecimals;
3479
+ const toAmountBaseUnit = BigInt(Math.floor(toTokenAmount * multiplier));
3480
+ const roundedToAmountBaseUnit = params.tickSize ? roundDownToTick(toAmountBaseUnit, params.tickSize) : toAmountBaseUnit;
3442
3481
  return await getCheckoutQuoteV2({
3443
3482
  ...getCheckoutQuoteParams,
3444
- toAmountBaseUnit: BigInt(Math.floor(toTokenAmount * multiplier))
3483
+ toAmountBaseUnit: roundedToAmountBaseUnit
3445
3484
  });
3446
3485
  },
3447
3486
  [address, apiKey]
@@ -3672,12 +3711,19 @@ function getCheckoutTokenTransferParams({
3672
3711
  toTokenAddress: checkoutConfig.targetAsset
3673
3712
  };
3674
3713
  }
3714
+ function useIsQRCodeTransferEnabled() {
3715
+ const { checkoutItem } = useCheckoutContext();
3716
+ const checkoutConfig = checkoutItem?.initSettings.config;
3717
+ const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
3718
+ const { apiKey } = useFunkitConfig();
3719
+ return isQrCodeEnabled && !isLighterEthSpot(apiKey, checkoutConfig);
3720
+ }
3675
3721
  var useCheckoutTransferInit = (enabled = true) => {
3676
3722
  const { checkoutItem } = useCheckoutContext();
3677
3723
  const checkoutConfig = checkoutItem?.initSettings.config;
3724
+ const isQrCodeEnabled = useIsQRCodeTransferEnabled();
3678
3725
  const { walletAddress, userInfo } = useGeneralWallet();
3679
3726
  const { apiKey } = useFunkitConfig();
3680
- const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
3681
3727
  const recipientAddr = checkoutConfig?.customRecipient || walletAddress || "0x";
3682
3728
  const userId = userInfo.id || "";
3683
3729
  const queryKey = getCheckoutTokenTransferParams({
@@ -3753,7 +3799,7 @@ import React19, {
3753
3799
  createContext as createContext8,
3754
3800
  useCallback as useCallback9,
3755
3801
  useContext as useContext8,
3756
- useEffect as useEffect9,
3802
+ useEffect as useEffect8,
3757
3803
  useRef as useRef2,
3758
3804
  useState as useState8
3759
3805
  } from "react";
@@ -4006,12 +4052,12 @@ function FunkitCheckoutHistoryProvider({
4006
4052
  isUserLoggedIn,
4007
4053
  userInfo
4008
4054
  ]);
4009
- useEffect9(() => {
4055
+ useEffect8(() => {
4010
4056
  if (isListening && (isUserLoggedIn || isGuestUserOnCheckoutHistory)) {
4011
4057
  _refreshCheckoutHistory();
4012
4058
  }
4013
4059
  }, [refreshSymbol, isUserLoggedIn]);
4014
- useEffect9(() => {
4060
+ useEffect8(() => {
4015
4061
  if (isNotNullish(logoutSymbol) && isInited) {
4016
4062
  setIsInited(false);
4017
4063
  setCheckoutHistoryList([]);
@@ -4127,7 +4173,7 @@ var useFunkitPostCheckoutInternal = (checkoutId) => {
4127
4173
  if (!checkoutId || !isHex(checkoutId)) {
4128
4174
  throw new Error("Invalid checkout ID");
4129
4175
  }
4130
- useEffect9(() => {
4176
+ useEffect8(() => {
4131
4177
  const setupCheckoutHistory = async () => {
4132
4178
  if (checkoutId === "0x") {
4133
4179
  return;
@@ -4193,7 +4239,7 @@ import React233, {
4193
4239
  createContext as createContext16,
4194
4240
  useCallback as useCallback48,
4195
4241
  useContext as useContext16,
4196
- useEffect as useEffect55,
4242
+ useEffect as useEffect54,
4197
4243
  useMemo as useMemo46,
4198
4244
  useState as useState73
4199
4245
  } from "react";
@@ -4274,7 +4320,7 @@ function getCheckoutStateBooleans(checkoutState, refundState) {
4274
4320
  }
4275
4321
 
4276
4322
  // src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
4277
- import React27, { useEffect as useEffect12, useMemo as useMemo12, useState as useState11 } from "react";
4323
+ import React27, { useEffect as useEffect11, useMemo as useMemo12, useState as useState11 } from "react";
4278
4324
 
4279
4325
  // src/components/TransactionStatus/TransactionStatus.tsx
4280
4326
  import {
@@ -4284,7 +4330,7 @@ import {
4284
4330
  } from "motion/react";
4285
4331
  import React26, {
4286
4332
  useCallback as useCallback10,
4287
- useEffect as useEffect11,
4333
+ useEffect as useEffect10,
4288
4334
  useMemo as useMemo11,
4289
4335
  useRef as useRef3,
4290
4336
  useState as useState10
@@ -4292,7 +4338,7 @@ import React26, {
4292
4338
  import { Trans } from "react-i18next";
4293
4339
 
4294
4340
  // src/providers/FunkitThemeProvider.tsx
4295
- import React20, { createContext as createContext9, useContext as useContext9, useEffect as useEffect10, useState as useState9 } from "react";
4341
+ import React20, { createContext as createContext9, useContext as useContext9, useEffect as useEffect9, useState as useState9 } from "react";
4296
4342
  var FUNKIT_THEME_CACHE_KEY = "funkit-connect-is-light";
4297
4343
  var DEFAULT_THEME_SET = {
4298
4344
  lightTheme: lightTheme(),
@@ -4375,7 +4421,7 @@ var FunkitThemeProvider = ({
4375
4421
  const [activeTheme, setActiveTheme] = useState9(
4376
4422
  getConfigTheme(themeOrThemeSet, systemColorScheme)
4377
4423
  );
4378
- useEffect10(() => {
4424
+ useEffect9(() => {
4379
4425
  const handler = (e) => {
4380
4426
  const colorScheme = e.matches ? "light" : "dark";
4381
4427
  setSystemColorScheme(colorScheme);
@@ -4392,7 +4438,7 @@ var FunkitThemeProvider = ({
4392
4438
  };
4393
4439
  }
4394
4440
  }, []);
4395
- useEffect10(() => {
4441
+ useEffect9(() => {
4396
4442
  setActiveTheme(getConfigTheme(themeOrThemeSet, systemColorScheme));
4397
4443
  }, [systemColorScheme, themeOrThemeSet]);
4398
4444
  const isFullThemeSet = isThemeSet(themeOrThemeSet);
@@ -5112,12 +5158,12 @@ function TransactionStatus({
5112
5158
  },
5113
5159
  [animate]
5114
5160
  );
5115
- useEffect11(() => {
5161
+ useEffect10(() => {
5116
5162
  if (initialStatus === "progress") {
5117
5163
  startSpinning(initialStep);
5118
5164
  }
5119
5165
  }, [initialStatus, initialStep, startSpinning]);
5120
- useEffect11(() => {
5166
+ useEffect10(() => {
5121
5167
  if (transitioningToStatus !== currentStatus || transitioningToStep !== currentStep) {
5122
5168
  return;
5123
5169
  }
@@ -5487,14 +5533,14 @@ function FunCheckoutStatusLoaded({
5487
5533
  [activeCheckoutItem, checkoutHistoryItem]
5488
5534
  );
5489
5535
  const [currentTimeMs, setCurrentTimeMs] = useState11(Date.now());
5490
- useEffect12(() => {
5536
+ useEffect11(() => {
5491
5537
  const interval = setInterval(() => setCurrentTimeMs(Date.now()), 1e3);
5492
5538
  return () => clearInterval(interval);
5493
5539
  }, []);
5494
5540
  const onOrderDelayedEvent = useEffectEvent(() => onOrderDelayed?.());
5495
5541
  const elapsedSeconds = (currentTimeMs - startTimeMs) / 1e3;
5496
5542
  const isNewlyDelayed = isProcessing && elapsedSeconds >= 60;
5497
- useEffect12(() => {
5543
+ useEffect11(() => {
5498
5544
  if (isNewlyDelayed) {
5499
5545
  onOrderDelayedEvent();
5500
5546
  }
@@ -5526,7 +5572,7 @@ function extractStartTimeMs(historyCheckoutItemId, activeCheckoutItem, { created
5526
5572
  }
5527
5573
 
5528
5574
  // src/components/FunCheckoutHistory/FunDirectExecutionStatus.tsx
5529
- import React28, { useEffect as useEffect13, useState as useState12 } from "react";
5575
+ import React28, { useEffect as useEffect12, useState as useState12 } from "react";
5530
5576
 
5531
5577
  // src/hooks/useCheckoutTimeEstimate.ts
5532
5578
  import { FlagKey as FlagKey5 } from "@funkit/utils";
@@ -5609,7 +5655,7 @@ function FunDirectExecutionStatusLoaded({
5609
5655
  const progress = getCheckoutProgress(directExecution.clientMetadata.id);
5610
5656
  const startTimeMs = directExecution.createdTimeMs;
5611
5657
  const [currentTimeMs, setCurrentTimeMs] = useState12(Date.now());
5612
- useEffect13(() => {
5658
+ useEffect12(() => {
5613
5659
  const interval = setInterval(() => setCurrentTimeMs(Date.now()), 1e3);
5614
5660
  return () => clearInterval(interval);
5615
5661
  }, []);
@@ -5868,7 +5914,7 @@ import clsx7 from "clsx";
5868
5914
  import React45, {
5869
5915
  useCallback as useCallback12,
5870
5916
  useContext as useContext10,
5871
- useEffect as useEffect18,
5917
+ useEffect as useEffect17,
5872
5918
  useRef as useRef7
5873
5919
  } from "react";
5874
5920
  import { createPortal } from "react-dom";
@@ -5876,13 +5922,13 @@ import { RemoveScroll } from "react-remove-scroll";
5876
5922
  import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
5877
5923
 
5878
5924
  // src/hooks/useScrollDivider.ts
5879
- import { useEffect as useEffect14, useRef as useRef5, useState as useState14 } from "react";
5925
+ import { useEffect as useEffect13, useRef as useRef5, useState as useState14 } from "react";
5880
5926
  var useScrollDivider = () => {
5881
5927
  const ref = useRef5(null);
5882
5928
  const [isTop, setIsTop] = useState14(true);
5883
5929
  const [isScrollable, setIsScrollable] = useState14(false);
5884
5930
  const [isScrolling, setIsScrolling] = useState14(false);
5885
- useEffect14(() => {
5931
+ useEffect13(() => {
5886
5932
  const content2 = ref.current;
5887
5933
  if (!content2 || !window.ResizeObserver) {
5888
5934
  return;
@@ -5936,7 +5982,9 @@ var ModalSizeOptions = {
5936
5982
  MEDIUM: "medium",
5937
5983
  WIDE: "wide"
5938
5984
  };
5939
- var ModalSizeContext = createContext10(ModalSizeOptions.WIDE);
5985
+ var ModalSizeContext = createContext10(
5986
+ ModalSizeOptions.MEDIUM
5987
+ );
5940
5988
  function ModalSizeProvider({
5941
5989
  children,
5942
5990
  modalSize
@@ -6195,9 +6243,75 @@ var ErrorBoundary = class extends Component {
6195
6243
  var ErrorBoundary_default = ErrorBoundary;
6196
6244
 
6197
6245
  // src/components/FunBottomBar/FunBottomBar.tsx
6198
- import { FlagKey as FlagKey6, isMobile as isMobile2 } from "@funkit/utils";
6246
+ import { isMobile as isMobile2 } from "@funkit/utils";
6199
6247
  import React40 from "react";
6200
6248
 
6249
+ // src/hooks/statsig/useDynamicConfig.ts
6250
+ import { useDynamicConfig as useStatsigDynamicConfig } from "@statsig/react-bindings";
6251
+
6252
+ // src/__generated__/default_configs.ts
6253
+ var default_configs_default = {
6254
+ addressblacklist: {
6255
+ value: [
6256
+ "0x7b97b46D35a28B561d47F50CFB9a2735E506e59d",
6257
+ "0x409ad08cc6CA757f69Fb80250a424B9eFeB99807",
6258
+ "0x02A86f51aA7B8b1c17c30364748d5Ae4a0727E23",
6259
+ "0x64131b60502C01362639CC5cfE1a1efB6Be1165A",
6260
+ "0xb84440Ee8BAD69c14755bBb7093f861c3512E3D1"
6261
+ ]
6262
+ },
6263
+ array_of_strings: {
6264
+ value: []
6265
+ },
6266
+ blockedcountries: {
6267
+ value: [
6268
+ "AF",
6269
+ "BY",
6270
+ "MM",
6271
+ "CF",
6272
+ "CU",
6273
+ "CD",
6274
+ "IR",
6275
+ "LB",
6276
+ "LY",
6277
+ "NI",
6278
+ "KP",
6279
+ "UA",
6280
+ "SO",
6281
+ "SS",
6282
+ "SY",
6283
+ "VE"
6284
+ ]
6285
+ },
6286
+ boolean: {
6287
+ value: false
6288
+ },
6289
+ brokerage_hide_you_receive: {
6290
+ value: false
6291
+ },
6292
+ showinfobanner: {
6293
+ value: {
6294
+ message: "",
6295
+ expireAtMs: 1,
6296
+ type: "announcement"
6297
+ }
6298
+ },
6299
+ showpoweredtagline: {
6300
+ value: false
6301
+ },
6302
+ supportedexchangesv2: {
6303
+ value: []
6304
+ }
6305
+ };
6306
+
6307
+ // src/hooks/statsig/useDynamicConfig.ts
6308
+ var useDynamicConfig = (name) => {
6309
+ const config = useStatsigDynamicConfig(name);
6310
+ const fallback2 = default_configs_default[name];
6311
+ const value = config.get("value", fallback2.value);
6312
+ return value;
6313
+ };
6314
+
6201
6315
  // src/components/FunButton/FunButton.tsx
6202
6316
  import clsx6 from "clsx";
6203
6317
  import React37 from "react";
@@ -6495,11 +6609,17 @@ var FunTechnologyLogo = () => {
6495
6609
  );
6496
6610
  };
6497
6611
 
6612
+ // src/components/FunPoweredTagline/FunPoweredTagline.css.ts
6613
+ var taglineBorderTop = "_1wdgk6i0";
6614
+
6498
6615
  // src/components/FunPoweredTagline/FunPoweredTagline.tsx
6499
- function FunPoweredTagline() {
6616
+ function FunPoweredTagline({
6617
+ enableBorderTop = true
6618
+ }) {
6500
6619
  return /* @__PURE__ */ React39.createElement(
6501
6620
  Box,
6502
6621
  {
6622
+ className: enableBorderTop ? taglineBorderTop : void 0,
6503
6623
  display: "flex",
6504
6624
  flexDirection: "row",
6505
6625
  justifyContent: "center",
@@ -6531,7 +6651,7 @@ var FunBottomBar = ({
6531
6651
  }) => {
6532
6652
  const { t } = useFunkitTranslation();
6533
6653
  const { uiCustomizations } = useFunkitConfig();
6534
- const showTagline = useFlag(FlagKey6.ShowPoweredTagline);
6654
+ const showTagline = useDynamicConfig("showpoweredtagline");
6535
6655
  const powerTagline = showTagline ? /* @__PURE__ */ React40.createElement(FunPoweredTagline, null) : void 0;
6536
6656
  const hasMultipleButtons = !!actionButtonProps && !!onClose;
6537
6657
  const customButtonRadius = showTagline || hasMultipleButtons ? void 0 : isMobile2() ? "modalActionButtonMobile" : "modalActionButton";
@@ -6677,7 +6797,7 @@ function FunDivider({
6677
6797
  }
6678
6798
 
6679
6799
  // src/components/Dialog/FocusTrap.tsx
6680
- import React44, { useCallback as useCallback11, useEffect as useEffect15, useRef as useRef6 } from "react";
6800
+ import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as useRef6 } from "react";
6681
6801
  var moveFocusWithin = (element2, position) => {
6682
6802
  const focusableElements = element2.querySelectorAll(
6683
6803
  "button:not(:disabled), a[href]"
@@ -6689,14 +6809,14 @@ var moveFocusWithin = (element2, position) => {
6689
6809
  };
6690
6810
  function FocusTrap(props) {
6691
6811
  const contentRef = useRef6(null);
6692
- useEffect15(() => {
6812
+ useEffect14(() => {
6693
6813
  const previouslyActiveElement = document.activeElement;
6694
6814
  return () => {
6695
6815
  ;
6696
6816
  previouslyActiveElement.focus?.();
6697
6817
  };
6698
6818
  }, []);
6699
- useEffect15(() => {
6819
+ useEffect14(() => {
6700
6820
  if (contentRef.current) {
6701
6821
  const elementToFocus = contentRef.current.querySelector("[data-auto-focus]");
6702
6822
  if (elementToFocus) {
@@ -6737,11 +6857,11 @@ function FocusTrap(props) {
6737
6857
  }
6738
6858
 
6739
6859
  // src/components/Dialog/hooks.ts
6740
- import { useEffect as useEffect17, useState as useState15 } from "react";
6860
+ import { useEffect as useEffect16, useState as useState15 } from "react";
6741
6861
 
6742
6862
  // src/hooks/useIsomorphicEffect.ts
6743
- import { useEffect as useEffect16, useLayoutEffect } from "react";
6744
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect16;
6863
+ import { useEffect as useEffect15, useLayoutEffect } from "react";
6864
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect15;
6745
6865
 
6746
6866
  // src/components/Dialog/hooks.ts
6747
6867
  var MODAL_BOTTOM_BAR_WRAPPER_ID = "fun-modal-bottom-bar-wrapper";
@@ -6818,7 +6938,7 @@ function useBottomBarHasNoChildren() {
6818
6938
  const withdrawalBottomBarElement = useWithdrawalBottomBarElement();
6819
6939
  const connectWalletBottomBarElement = useConnectWalletBottomBarElement();
6820
6940
  const [hasNoChildren, setHasNoChildren] = useState15(false);
6821
- useEffect17(() => {
6941
+ useEffect16(() => {
6822
6942
  const node = connectWalletBottomBarElement || checkoutBottomBarElement || withdrawalBottomBarElement || generalBottomBarElement;
6823
6943
  if (!node) {
6824
6944
  return;
@@ -6869,7 +6989,7 @@ function Dialog({
6869
6989
  withTransition = true,
6870
6990
  testId
6871
6991
  }) {
6872
- useEffect18(() => {
6992
+ useEffect17(() => {
6873
6993
  const handleEscape = (event) => open && event.key === "Escape" && onClose();
6874
6994
  if (isSmartCloseable) {
6875
6995
  document.addEventListener("keydown", handleEscape);
@@ -7221,13 +7341,16 @@ Dialog.BottomBar = FunBottomBar;
7221
7341
 
7222
7342
  // src/modals/WithdrwalModal/WithdrawalContent.tsx
7223
7343
  import { RelayQuoteError } from "@funkit/api-base";
7224
- import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO5 } from "@funkit/chains";
7225
7344
  import {
7226
- FlagKey as FlagKey12,
7345
+ FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO5,
7346
+ solanaChain as solanaChain4
7347
+ } from "@funkit/chains";
7348
+ import {
7349
+ FlagKey as FlagKey11,
7227
7350
  formatCryptoAndStringify as formatCryptoAndStringify2,
7228
7351
  formatCurrencyAndStringify as formatCurrencyAndStringify3
7229
7352
  } from "@funkit/utils";
7230
- import React72, { useEffect as useEffect29, useMemo as useMemo19, useRef as useRef14, useState as useState27 } from "react";
7353
+ import React72, { useEffect as useEffect28, useMemo as useMemo19, useRef as useRef14, useState as useState27 } from "react";
7231
7354
  import { createPortal as createPortal2 } from "react-dom";
7232
7355
  import { useDebounce } from "use-debounce";
7233
7356
  import { useAccount as useAccount4 } from "wagmi";
@@ -7236,13 +7359,13 @@ import { useAccount as useAccount4 } from "wagmi";
7236
7359
  import React62 from "react";
7237
7360
 
7238
7361
  // src/components/Dropdown/ChainDropdown.tsx
7239
- import { FlagKey as FlagKey7 } from "@funkit/utils";
7362
+ import { FlagKey as FlagKey6 } from "@funkit/utils";
7240
7363
  import React59 from "react";
7241
7364
 
7242
7365
  // src/components/FunTooltip/FunTooltip.tsx
7243
7366
  import React47, {
7244
7367
  useCallback as useCallback13,
7245
- useEffect as useEffect19,
7368
+ useEffect as useEffect18,
7246
7369
  useRef as useRef8,
7247
7370
  useState as useState16
7248
7371
  } from "react";
@@ -7348,13 +7471,13 @@ var FunTooltip = ({
7348
7471
  setIsDisplayed(false);
7349
7472
  }, hideDelay);
7350
7473
  }, [hideDelay]);
7351
- useEffect19(() => {
7474
+ useEffect18(() => {
7352
7475
  return () => {
7353
7476
  clearTimeout(delayRef.current);
7354
7477
  clearTimeout(startDelayRef.current);
7355
7478
  };
7356
7479
  }, []);
7357
- useEffect19(() => {
7480
+ useEffect18(() => {
7358
7481
  if (!wrapperElementRef?.current || !tooltipRef.current || !enableDynamicPositioning) {
7359
7482
  return;
7360
7483
  }
@@ -7423,7 +7546,7 @@ var FunTooltip = ({
7423
7546
  // src/components/Dropdown/BaseDropdown.tsx
7424
7547
  import { isMobile as isMobile4, noop as noop2 } from "@funkit/utils";
7425
7548
  import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
7426
- import React56, { useCallback as useCallback14, useEffect as useEffect22, useMemo as useMemo13, useRef as useRef10, useState as useState18 } from "react";
7549
+ import React56, { useCallback as useCallback14, useEffect as useEffect21, useMemo as useMemo13, useRef as useRef10, useState as useState18 } from "react";
7427
7550
 
7428
7551
  // src/consts/layout.ts
7429
7552
  var VERTICAL_SECTION_GAP = "18";
@@ -7437,7 +7560,7 @@ var DROPDOWN_Z_INDEX = 10;
7437
7560
  // src/components/FunInput/FunInput.tsx
7438
7561
  import React49, {
7439
7562
  forwardRef as forwardRef3,
7440
- useEffect as useEffect20,
7563
+ useEffect as useEffect19,
7441
7564
  useState as useState17
7442
7565
  } from "react";
7443
7566
  import clsx9 from "clsx";
@@ -7540,7 +7663,7 @@ var FunInput = forwardRef3(function FunInputWithRef({
7540
7663
  };
7541
7664
  };
7542
7665
  const textareaRef = React49.useRef(null);
7543
- useEffect20(() => {
7666
+ useEffect19(() => {
7544
7667
  if (allowMultiline) {
7545
7668
  adjustTextareaHeight(textareaRef.current);
7546
7669
  }
@@ -7850,13 +7973,13 @@ var FunNoResults = ({
7850
7973
 
7851
7974
  // src/components/FunSelect/FunClickOutside.tsx
7852
7975
  import React53 from "react";
7853
- import { useEffect as useEffect21, useRef as useRef9 } from "react";
7976
+ import { useEffect as useEffect20, useRef as useRef9 } from "react";
7854
7977
  function FunClickOutside({
7855
7978
  children,
7856
7979
  onClick
7857
7980
  }) {
7858
7981
  const wrapperRef = useRef9(null);
7859
- useEffect21(() => {
7982
+ useEffect20(() => {
7860
7983
  const handleClickListener = (event) => {
7861
7984
  const clickedInside = wrapperRef.current?.contains(
7862
7985
  event.target
@@ -8071,7 +8194,7 @@ function BaseDropdown({
8071
8194
  setIsOpened(true);
8072
8195
  onOpen?.();
8073
8196
  };
8074
- useEffect22(() => {
8197
+ useEffect21(() => {
8075
8198
  if (isOpened && !prevIsOpenedRef.current) {
8076
8199
  prevIsOpenedRef.current = true;
8077
8200
  if (selectedOption) {
@@ -8330,9 +8453,9 @@ var ChainDropdown = ({
8330
8453
  testId
8331
8454
  }) => {
8332
8455
  const { t } = useFunkitTranslation();
8333
- const defaultChainIdJson = useFlag(FlagKey7.TokenTransferDefaultChainId);
8456
+ const defaultChainIdJson = useFlag(FlagKey6.TokenTransferDefaultChainId);
8334
8457
  const defaultChainId = safeJSONParse(defaultChainIdJson);
8335
- const chainSortOrderJson = useFlag(FlagKey7.ChainIdSortOrder);
8458
+ const chainSortOrderJson = useFlag(FlagKey6.ChainIdSortOrder);
8336
8459
  const chainSortOrder = safeJSONParse(chainSortOrderJson) || [];
8337
8460
  const chainIds = getSortedChainIds();
8338
8461
  const options = allowUnselect ? [DEFAULT_VALUE, ...chainIds] : chainIds;
@@ -8442,7 +8565,7 @@ var ChainDropdown = ({
8442
8565
  };
8443
8566
 
8444
8567
  // src/components/Dropdown/TokenDropdown.tsx
8445
- import { FlagKey as FlagKey8 } from "@funkit/utils";
8568
+ import { FlagKey as FlagKey7 } from "@funkit/utils";
8446
8569
  import React61, { useState as useState19 } from "react";
8447
8570
 
8448
8571
  // src/utils/flags/patches/enable-bitcoin-patch.ts
@@ -8587,12 +8710,12 @@ var NewTokenBadge = ({ iconSymbol }) => {
8587
8710
  // src/components/Dropdown/TokenDropdown.tsx
8588
8711
  var TOKEN_ICON_SIZE = 16;
8589
8712
  var useNewTokens = () => {
8590
- const enableBitcoin = useFlag(FlagKey8.EnableBitcoin);
8591
- const bannerJson = useFlag(FlagKey8.NewTokenAssetSelectionBanner);
8713
+ const enableBitcoin = useFlag(FlagKey7.EnableBitcoin);
8714
+ const bannerJson = useFlag(FlagKey7.NewTokenAssetSelectionBanner);
8592
8715
  const bannerData = useSafeJSONParse(bannerJson);
8593
8716
  const addBitcoinToNewTokensMiddleware = enableBitcoin ? addBitcoinToNewTokens : void 0;
8594
8717
  const newBadgeTokensJson = useFlag(
8595
- FlagKey8.TokenTransferNewTokens,
8718
+ FlagKey7.TokenTransferNewTokens,
8596
8719
  void 0,
8597
8720
  addBitcoinToNewTokensMiddleware
8598
8721
  );
@@ -8613,7 +8736,7 @@ var TokenDropdown = ({
8613
8736
  hideNewTokenBadge,
8614
8737
  testId
8615
8738
  }) => {
8616
- const defaultTokensJson = useFlag(FlagKey8.TokenTransferDefaultTokens);
8739
+ const defaultTokensJson = useFlag(FlagKey7.TokenTransferDefaultTokens);
8617
8740
  const defaultTokens = safeJSONParse(defaultTokensJson);
8618
8741
  const enabledTokens = assets[selectedChainId];
8619
8742
  const allTokens = getSortedTokens();
@@ -9035,7 +9158,7 @@ import {
9035
9158
  formatPercent,
9036
9159
  noop as noop4
9037
9160
  } from "@funkit/utils";
9038
- import React67, { useEffect as useEffect23, useMemo as useMemo15, useState as useState20 } from "react";
9161
+ import React67, { useEffect as useEffect22, useMemo as useMemo15, useState as useState20 } from "react";
9039
9162
  import clsx14 from "clsx";
9040
9163
  import { motion as motion6, useAnimationControls } from "motion/react";
9041
9164
  import { mainnet as mainnet4 } from "viem/chains";
@@ -9516,7 +9639,7 @@ function PaymentFeesSummary({
9516
9639
  }
9517
9640
  }
9518
9641
  };
9519
- useEffect23(() => {
9642
+ useEffect22(() => {
9520
9643
  if (valuesNotAvailable && isExpanded) {
9521
9644
  setIsExpanded(false);
9522
9645
  }
@@ -9839,9 +9962,11 @@ async function getCheckoutBaseQuote(checkoutItem, userId, walletAddress, apiKey,
9839
9962
  const toTokenAddress = config.targetAsset;
9840
9963
  const fromChainId = selectedSourceAssetInfo.chainId;
9841
9964
  const fromTokenAddress = selectedSourceAssetInfo.address;
9842
- const [toTokenDecimals, fromTokenDecimals] = await Promise.all([
9965
+ const isLighterSpot = isLighterEthSpot(apiKey, config);
9966
+ const [toTokenDecimals, fromTokenDecimals, lighterTickSize] = await Promise.all([
9843
9967
  getTokenDecimals(wagmiConfig, toChainId, toTokenAddress),
9844
- getTokenDecimals(wagmiConfig, fromChainId, fromTokenAddress)
9968
+ getTokenDecimals(wagmiConfig, fromChainId, fromTokenAddress),
9969
+ isLighterSpot ? getLighterTickSize(wagmiConfig, toChainId, 1) : Promise.resolve(void 0)
9845
9970
  ]);
9846
9971
  const toTokenAmount = config.targetAssetAmount ?? 0;
9847
9972
  const fromTokenAmount = checkoutItem.sourceAssetAmount ?? 0;
@@ -9861,7 +9986,8 @@ async function getCheckoutBaseQuote(checkoutItem, userId, walletAddress, apiKey,
9861
9986
  senderAddress,
9862
9987
  fromTokenAmount,
9863
9988
  fromTokenDecimals,
9864
- isExactIn: isWithdrawal
9989
+ isExactIn: isWithdrawal,
9990
+ tickSize: lighterTickSize
9865
9991
  }) : await getApiCheckoutQuote({
9866
9992
  userId,
9867
9993
  fromChainId,
@@ -9875,12 +10001,6 @@ async function getCheckoutBaseQuote(checkoutItem, userId, walletAddress, apiKey,
9875
10001
  config: checkoutItem.initSettings.config,
9876
10002
  walletAddress
9877
10003
  }),
9878
- // Ensure we are sending in a number
9879
- expirationTimestampMs: Number.parseInt(
9880
- String(
9881
- checkoutItem.initSettings.config.expirationTimestampMs || 15 * 60 * 1e3
9882
- )
9883
- ),
9884
10004
  // as part of deprecating funWallet, we set sponsorInitialTransferGasLimit to 0
9885
10005
  sponsorInitialTransferGasLimit: "0",
9886
10006
  apiKey,
@@ -10218,7 +10338,7 @@ function useWithdrawalQuote({
10218
10338
 
10219
10339
  // src/hooks/queries/useWithdrawalRisk.ts
10220
10340
  import { useQuery as useQuery7 } from "@tanstack/react-query";
10221
- import { useEffect as useEffect24, useRef as useRef11 } from "react";
10341
+ import { useEffect as useEffect23, useRef as useRef11 } from "react";
10222
10342
  import { isAddress as isAddress2 } from "viem";
10223
10343
  var useWithdrawalRisk = (apiKey, receiveAddress) => {
10224
10344
  const lastRiskyAddressRef = useRef11(null);
@@ -10240,7 +10360,7 @@ var useWithdrawalRisk = (apiKey, receiveAddress) => {
10240
10360
  refetchOnReconnect: false,
10241
10361
  refetchOnWindowFocus: false
10242
10362
  });
10243
- useEffect24(() => {
10363
+ useEffect23(() => {
10244
10364
  if (query.data !== true) {
10245
10365
  return;
10246
10366
  }
@@ -10382,13 +10502,13 @@ var useAssetSymbolPrice = ({
10382
10502
  };
10383
10503
 
10384
10504
  // src/hooks/useTokenChain.ts
10385
- import { FlagKey as FlagKey10 } from "@funkit/utils";
10386
- import { useEffect as useEffect25, useState as useState21 } from "react";
10505
+ import { FlagKey as FlagKey9 } from "@funkit/utils";
10506
+ import { useEffect as useEffect24, useState as useState21 } from "react";
10387
10507
  import { polygon as polygon2 } from "viem/chains";
10388
10508
 
10389
10509
  // src/hooks/useEnabledTokenTransferChainTokens.ts
10390
10510
  import { bitcoinChain as bitcoinChain2, solanaChain as solanaChain2 } from "@funkit/chains";
10391
- import { FlagKey as FlagKey9 } from "@funkit/utils";
10511
+ import { FlagKey as FlagKey8 } from "@funkit/utils";
10392
10512
  import { base as base4 } from "viem/chains";
10393
10513
 
10394
10514
  // src/hooks/useIsUsUser.ts
@@ -10405,14 +10525,14 @@ function useIsUsBankrUser() {
10405
10525
  // src/hooks/useEnabledTokenTransferChainTokens.ts
10406
10526
  function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
10407
10527
  const isBankrUsUser = useIsUsBankrUser();
10408
- const enableBitcoin = useFlag(FlagKey9.EnableBitcoin);
10528
+ const enableBitcoin = useFlag(FlagKey8.EnableBitcoin);
10409
10529
  const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
10410
10530
  const depositAssets = useFlag(
10411
- FlagKey9.TokenTransferSourceChainsAndAssets,
10531
+ FlagKey8.TokenTransferSourceChainsAndAssets,
10412
10532
  void 0,
10413
10533
  addBitcoinToSourceChainsAndAssetsMiddleware
10414
10534
  );
10415
- const withdrawalAssets = useFlag(FlagKey9.WithdrawalChainsAndAssets);
10535
+ const withdrawalAssets = useFlag(FlagKey8.WithdrawalChainsAndAssets);
10416
10536
  const assetsJsonString = isWithdrawal ? withdrawalAssets : depositAssets;
10417
10537
  const assets = safeJSONParse(assetsJsonString);
10418
10538
  if (!assets) {
@@ -10449,14 +10569,14 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
10449
10569
  transferInit ?? null,
10450
10570
  isWithdrawal
10451
10571
  );
10452
- const defaultChainIdFlag = useFlag(FlagKey10.TokenTransferDefaultChainId);
10572
+ const defaultChainIdFlag = useFlag(FlagKey9.TokenTransferDefaultChainId);
10453
10573
  const defaultChainId = defaultValues?.chainId ?? Number(defaultChainIdFlag);
10454
10574
  const validDefaultChainId = filteredAssets[defaultChainId] !== void 0 ? defaultChainId : polygon2.id;
10455
10575
  const [selectedChainId, setSelectedChainId] = useState21(validDefaultChainId);
10456
10576
  const selectedChainName = chainMetadataById[selectedChainId]?.name ?? "";
10457
10577
  const defaultSelectedToken = defaultValues?.token ?? filteredAssets?.[selectedChainId]?.[0] ?? "";
10458
10578
  const [selectedToken, setSelectedToken] = useState21(defaultSelectedToken);
10459
- useEffect25(
10579
+ useEffect24(
10460
10580
  () => setSelectedChainId(validDefaultChainId),
10461
10581
  [validDefaultChainId]
10462
10582
  );
@@ -10748,11 +10868,11 @@ function usePreparedWalletConnectors() {
10748
10868
  import { useState as useState26 } from "react";
10749
10869
 
10750
10870
  // src/hooks/useAutoClearState.ts
10751
- import { useCallback as useCallback15, useEffect as useEffect26, useRef as useRef12, useState as useState22 } from "react";
10871
+ import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef12, useState as useState22 } from "react";
10752
10872
  function useAutoClearState(initialValue = null) {
10753
10873
  const [state, setState] = useState22(initialValue);
10754
10874
  const timeoutRef = useRef12();
10755
- useEffect26(() => {
10875
+ useEffect25(() => {
10756
10876
  return () => {
10757
10877
  if (timeoutRef.current !== void 0) {
10758
10878
  clearTimeout(timeoutRef.current);
@@ -10778,72 +10898,6 @@ function useAutoClearState(initialValue = null) {
10778
10898
  import { ClientError as ClientError2 } from "@funkit/utils";
10779
10899
  import { useState as useState25 } from "react";
10780
10900
 
10781
- // src/hooks/statsig/useDynamicConfig.ts
10782
- import { useDynamicConfig as useStatsigDynamicConfig } from "@statsig/react-bindings";
10783
-
10784
- // src/__generated__/default_configs.ts
10785
- var default_configs_default = {
10786
- addressblacklist: {
10787
- value: [
10788
- "0x7b97b46D35a28B561d47F50CFB9a2735E506e59d",
10789
- "0x409ad08cc6CA757f69Fb80250a424B9eFeB99807",
10790
- "0x02A86f51aA7B8b1c17c30364748d5Ae4a0727E23",
10791
- "0x64131b60502C01362639CC5cfE1a1efB6Be1165A",
10792
- "0xb84440Ee8BAD69c14755bBb7093f861c3512E3D1"
10793
- ]
10794
- },
10795
- array_of_strings: {
10796
- value: []
10797
- },
10798
- blockedcountries: {
10799
- value: [
10800
- "AF",
10801
- "BY",
10802
- "MM",
10803
- "CF",
10804
- "CU",
10805
- "CD",
10806
- "IR",
10807
- "LB",
10808
- "LY",
10809
- "NI",
10810
- "KP",
10811
- "UA",
10812
- "SO",
10813
- "SS",
10814
- "SY",
10815
- "VE"
10816
- ]
10817
- },
10818
- boolean: {
10819
- value: false
10820
- },
10821
- brokerage_hide_you_receive: {
10822
- value: false
10823
- },
10824
- showinfobanner: {
10825
- value: {
10826
- message: "",
10827
- expireAtMs: 1,
10828
- type: "announcement"
10829
- }
10830
- },
10831
- showpoweredtagline: {
10832
- value: false
10833
- },
10834
- supportedexchangesv2: {
10835
- value: []
10836
- }
10837
- };
10838
-
10839
- // src/hooks/statsig/useDynamicConfig.ts
10840
- var useDynamicConfig = (name) => {
10841
- const config = useStatsigDynamicConfig(name);
10842
- const fallback2 = default_configs_default[name];
10843
- const value = config.get("value", fallback2.value);
10844
- return value;
10845
- };
10846
-
10847
10901
  // src/hooks/useIsBlacklisted.ts
10848
10902
  var useIsBlacklisted = (walletAddress, customRecipient) => {
10849
10903
  const addressblacklist = useDynamicConfig("addressblacklist");
@@ -10860,7 +10914,7 @@ import React70, {
10860
10914
  createContext as createContext13,
10861
10915
  useCallback as useCallback17,
10862
10916
  useContext as useContext13,
10863
- useEffect as useEffect28,
10917
+ useEffect as useEffect27,
10864
10918
  useState as useState24
10865
10919
  } from "react";
10866
10920
  import { useConfig as useConfig3 } from "wagmi";
@@ -10925,7 +10979,7 @@ import {
10925
10979
  monadChain,
10926
10980
  solanaChain as solanaChain3
10927
10981
  } from "@funkit/chains";
10928
- import { FlagKey as FlagKey11 } from "@funkit/utils";
10982
+ import { FlagKey as FlagKey10 } from "@funkit/utils";
10929
10983
  import { useMemo as useMemo16 } from "react";
10930
10984
  import { arbitrum as arbitrum2, mainnet as mainnet6, polygon as polygon4 } from "viem/chains";
10931
10985
 
@@ -10950,7 +11004,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
10950
11004
  const { apiKey } = useFunkitConfig();
10951
11005
  const { checkoutItem } = useCheckoutContext();
10952
11006
  const enableUniversal = useFlag(
10953
- FlagKey11.EnableTokenTransferUniversalDepositAddress,
11007
+ FlagKey10.EnableTokenTransferUniversalDepositAddress,
10954
11008
  false
10955
11009
  );
10956
11010
  const estPriceImpact = usePriceImpactEstimation(
@@ -11004,7 +11058,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
11004
11058
  };
11005
11059
  var useMinTransferLimits = () => {
11006
11060
  const { userIpInfo } = useFunkitUserIp();
11007
- const minTransferValueJsonString = useFlag(FlagKey11.MinTokenTransferValue);
11061
+ const minTransferValueJsonString = useFlag(FlagKey10.MinTokenTransferValue);
11008
11062
  const minTransferValue = safeJSONParse(
11009
11063
  minTransferValueJsonString
11010
11064
  );
@@ -11304,7 +11358,7 @@ import {
11304
11358
  import { safeParseJson as safeParseJson3 } from "@funkit/utils";
11305
11359
  import React69, {
11306
11360
  useContext as useContext12,
11307
- useEffect as useEffect27,
11361
+ useEffect as useEffect26,
11308
11362
  useMemo as useMemo17,
11309
11363
  useRef as useRef13,
11310
11364
  useState as useState23
@@ -11356,11 +11410,11 @@ var FunkitBrokerageProvider = ({
11356
11410
  const [isConnected, setIsConnected] = useState23(
11357
11411
  () => initialIsConnected
11358
11412
  );
11359
- useEffect27(() => {
11413
+ useEffect26(() => {
11360
11414
  const initialConnections = getAuthConnectedExchanges();
11361
11415
  setAuthConnections(initialConnections);
11362
11416
  }, []);
11363
- useEffect27(() => {
11417
+ useEffect26(() => {
11364
11418
  if (bluvoClient.withdrawal?.status === "completed") {
11365
11419
  setSelectedBrokerageAsset(null);
11366
11420
  }
@@ -11692,7 +11746,7 @@ function FunkitQuoteProvider({ children }) {
11692
11746
  const [quoteErrorMessage, setQuoteErrorMessage] = useState24("");
11693
11747
  const { getBluvoCheckoutQuote } = useBluvoCheckoutQuote();
11694
11748
  const { selectedBrokerageAsset } = useFunkitBrokerageContext();
11695
- useEffect28(() => {
11749
+ useEffect27(() => {
11696
11750
  if (isNotNullish3(logoutSymbol)) {
11697
11751
  setLatestQuote(null);
11698
11752
  setQuoteProgress({
@@ -12244,7 +12298,7 @@ function useWithdrawalAssets(config) {
12244
12298
  },
12245
12299
  true
12246
12300
  );
12247
- const excludedTokenStr = useFlag(FlagKey12.WithdrawalExcludeTokens);
12301
+ const excludedTokenStr = useFlag(FlagKey11.WithdrawalExcludeTokens);
12248
12302
  const excludedTokens = safeJSONParse(excludedTokenStr);
12249
12303
  if (excludedTokens) {
12250
12304
  for (const chainIdStr of Object.keys(excludedTokens)) {
@@ -12350,7 +12404,7 @@ function useShowConnectWallet({
12350
12404
  const withdrawalWalletAddress = "wallet" in config ? config.wallet.address() : "0x";
12351
12405
  const { isConnected, address: connectedWalletAddress } = useAccount4();
12352
12406
  const showUseConnected = !config.disableConnectedWallet && isConnected && connectedWalletAddress && withdrawalWalletAddress.toLowerCase() !== connectedWalletAddress.toLowerCase();
12353
- useEffect29(() => {
12407
+ useEffect28(() => {
12354
12408
  logger.debug("withdrawalContent:showUseConnected", {
12355
12409
  isConnected,
12356
12410
  connectedWalletAddress,
@@ -12417,12 +12471,12 @@ var WithdrawContent = ({
12417
12471
  refetchInterval: PRICE_REFRESH_INTERVAL
12418
12472
  });
12419
12473
  const targetAssetAmount = targetUnitPrice ? Number(debouncedUSD) / targetUnitPrice : void 0;
12420
- useEffect29(() => {
12474
+ useEffect28(() => {
12421
12475
  setTimeout(() => {
12422
12476
  updateTargetAssetAmount(targetAssetAmount ?? 0);
12423
12477
  }, 0);
12424
12478
  }, [targetAssetAmount, updateTargetAssetAmount]);
12425
- useEffect29(() => {
12479
+ useEffect28(() => {
12426
12480
  if (!targetAssetInfo) {
12427
12481
  return;
12428
12482
  }
@@ -12456,7 +12510,7 @@ var WithdrawContent = ({
12456
12510
  onContinue(withdrawal, txHash);
12457
12511
  }
12458
12512
  });
12459
- useEffect29(() => {
12513
+ useEffect28(() => {
12460
12514
  if (!isPlaceholderData && !isQuoteLoading && isInstantQuoting && confirmingQuote) {
12461
12515
  setTimeout(() => {
12462
12516
  setConfirmingQuote(false);
@@ -12540,7 +12594,7 @@ var WithdrawContent = ({
12540
12594
  const lastQuoteErrorRef = useRef14(null);
12541
12595
  const lastRiskyRecipientRef = useRef14(null);
12542
12596
  const lastBlacklistedRecipientRef = useRef14(null);
12543
- useEffect29(() => {
12597
+ useEffect28(() => {
12544
12598
  if (!targetAssetFetchError) {
12545
12599
  return;
12546
12600
  }
@@ -12555,7 +12609,7 @@ var WithdrawContent = ({
12555
12609
  });
12556
12610
  lastTargetAssetErrorRef.current = errorKey;
12557
12611
  }, [targetAssetFetchError, selectedChainId, selectedToken]);
12558
- useEffect29(() => {
12612
+ useEffect28(() => {
12559
12613
  if (!quoteErrorObject) {
12560
12614
  return;
12561
12615
  }
@@ -12581,7 +12635,7 @@ var WithdrawContent = ({
12581
12635
  recipientAddress,
12582
12636
  debouncedUSD
12583
12637
  ]);
12584
- useEffect29(() => {
12638
+ useEffect28(() => {
12585
12639
  if (!isRisky) {
12586
12640
  return;
12587
12641
  }
@@ -12596,7 +12650,7 @@ var WithdrawContent = ({
12596
12650
  });
12597
12651
  lastRiskyRecipientRef.current = warningKey;
12598
12652
  }, [isRisky, recipientAddress, selectedChainId, selectedToken]);
12599
- useEffect29(() => {
12653
+ useEffect28(() => {
12600
12654
  if (!isReceipentBlacklisted) {
12601
12655
  return;
12602
12656
  }
@@ -12645,6 +12699,8 @@ var WithdrawContent = ({
12645
12699
  [quoteErrorObject, targetAssetFetchError, withdrawalError, t]
12646
12700
  );
12647
12701
  const isRiskyAddress = !!isRisky && !isCheckingAddressRisk;
12702
+ const isSolanaChain = selectedChainId === solanaChain4.id;
12703
+ const recipientAddressPlaceholder = isSolanaChain ? t("withdrawal.enterRecipientAddress")[0] + t("withdrawal.enterRecipientAddress").slice(1).toLowerCase() : "0x...";
12648
12704
  return /* @__PURE__ */ React72.createElement(Box, { id: "withdrawal-flow", display: "flex", flexDirection: "column", gap: "18" }, /* @__PURE__ */ React72.createElement(
12649
12705
  WithdrawRecipientAddress,
12650
12706
  {
@@ -12653,7 +12709,8 @@ var WithdrawContent = ({
12653
12709
  setRecipientAddress,
12654
12710
  selectedToken,
12655
12711
  selectedChainId,
12656
- isRiskyAddress
12712
+ isRiskyAddress,
12713
+ placeholder: recipientAddressPlaceholder
12657
12714
  }
12658
12715
  ), /* @__PURE__ */ React72.createElement(
12659
12716
  WithdrawAmountInput,
@@ -12730,7 +12787,8 @@ function WithdrawRecipientAddress({
12730
12787
  setRecipientAddress,
12731
12788
  selectedChainId,
12732
12789
  selectedToken,
12733
- isRiskyAddress
12790
+ isRiskyAddress,
12791
+ placeholder = "0x..."
12734
12792
  }) {
12735
12793
  const { t } = useFunkitTranslation();
12736
12794
  const isValidAddress = isAddressSupported(recipientAddress);
@@ -12771,7 +12829,7 @@ function WithdrawRecipientAddress({
12771
12829
  value: recipientAddress,
12772
12830
  onChange: handleAddressChange,
12773
12831
  onBlur: handleAddressBlur,
12774
- placeholder: "0x...",
12832
+ placeholder,
12775
12833
  error: showAddressError ? t("withdrawal.invalidWalletAddress") : void 0,
12776
12834
  suffix: showUseConnected ? /* @__PURE__ */ React72.createElement(
12777
12835
  Box,
@@ -12962,8 +13020,8 @@ import { useAccount as useAccount5 } from "wagmi";
12962
13020
 
12963
13021
  // src/components/FunPayments/FunPaymentMethods.tsx
12964
13022
  import { BridgeCustomerStatus as BridgeCustomerStatus3 } from "@funkit/api-base";
12965
- import { FlagKey as FlagKey14, formatCurrencyAndStringify as formatCurrencyAndStringify4 } from "@funkit/utils";
12966
- import React79, { useEffect as useEffect30 } from "react";
13023
+ import { FlagKey as FlagKey13, formatCurrencyAndStringify as formatCurrencyAndStringify4 } from "@funkit/utils";
13024
+ import React79, { useEffect as useEffect29 } from "react";
12967
13025
 
12968
13026
  // src/domains/bridge.ts
12969
13027
  import {
@@ -13063,7 +13121,7 @@ import {
13063
13121
  createBridgeBankAccount,
13064
13122
  getBridgeKycLink
13065
13123
  } from "@funkit/api-base";
13066
- import { FlagKey as FlagKey13 } from "@funkit/utils";
13124
+ import { FlagKey as FlagKey12 } from "@funkit/utils";
13067
13125
  import { useQuery as useQuery11, useQueryClient } from "@tanstack/react-query";
13068
13126
  import { useCallback as useCallback18 } from "react";
13069
13127
  var sepaCountryCode = [
@@ -13143,8 +13201,8 @@ function useFiatEnabled() {
13143
13201
  const isEuSepaUser = sepaCountryCode.includes(
13144
13202
  userIpInfo?.alpha2 || "PLACEHOLDER"
13145
13203
  );
13146
- const isTokenTransferEnabled = useFlag(FlagKey13.EnableTokenTransfer);
13147
- const isFiatEnabled = useFlag(FlagKey13.EnableFiatDeposit);
13204
+ const isTokenTransferEnabled = useIsQRCodeTransferEnabled();
13205
+ const isFiatEnabled = useFlag(FlagKey12.EnableFiatDeposit);
13148
13206
  return isEuSepaUser && isTokenTransferEnabled && isFiatEnabled;
13149
13207
  }
13150
13208
  function useFrogAccounts() {
@@ -13317,6 +13375,10 @@ var processWalletAssets = (walletAssets, targetChain) => {
13317
13375
  if (!isCheckoutOnMainnet && targetChain !== asset.chainId) {
13318
13376
  return result;
13319
13377
  }
13378
+ const MAINNET_WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
13379
+ if (asset.contractAddress.toLowerCase() === MAINNET_WETH_ADDRESS && asset.chainId === "1") {
13380
+ asset.symbol = "WETH";
13381
+ }
13320
13382
  const chainSymbol = combineChainSymbolOrAddress({
13321
13383
  chainId: asset.chainId,
13322
13384
  symbolOrAddress: asset.symbol
@@ -14550,7 +14612,7 @@ var ConnectedMeshPaymentMethodItem = ({
14550
14612
  const hasLowBalance = !isPending && sourceBalance < getUsdMinAmount();
14551
14613
  const isDisabled = isPending || !!isBalanceError || hasLowBalance;
14552
14614
  const icon = isPending ? /* @__PURE__ */ React79.createElement(SpinnerIcon, { size: 20 }) : label.icon;
14553
- useEffect30(() => {
14615
+ useEffect29(() => {
14554
14616
  if (isPending) {
14555
14617
  return;
14556
14618
  }
@@ -14654,12 +14716,12 @@ var TransferPaymentMethodItem = ({
14654
14716
  }) => {
14655
14717
  const { t } = useFunkitTranslation();
14656
14718
  const { textCustomizations } = useFunkitConfig();
14657
- const enableBitcoin = useFlag(FlagKey14.EnableBitcoin);
14658
- const bannerJson = useFlag(FlagKey14.NewTokenAssetSelectionBanner);
14719
+ const enableBitcoin = useFlag(FlagKey13.EnableBitcoin);
14720
+ const bannerJson = useFlag(FlagKey13.NewTokenAssetSelectionBanner);
14659
14721
  const bannerData = useSafeJSONParse(bannerJson);
14660
14722
  const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
14661
14723
  const depositAssetsJson = useFlag(
14662
- FlagKey14.TokenTransferSourceChainsAndAssets,
14724
+ FlagKey13.TokenTransferSourceChainsAndAssets,
14663
14725
  void 0,
14664
14726
  addBitcoinToSourceChainsAndAssetsMiddleware
14665
14727
  );
@@ -15208,7 +15270,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
15208
15270
 
15209
15271
  // src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
15210
15272
  import clsx18 from "clsx";
15211
- import React98, { useCallback as useCallback21, useEffect as useEffect34, useMemo as useMemo23, useState as useState31 } from "react";
15273
+ import React98, { useCallback as useCallback21, useEffect as useEffect33, useMemo as useMemo23, useState as useState31 } from "react";
15212
15274
 
15213
15275
  // src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
15214
15276
  import React88 from "react";
@@ -15260,13 +15322,13 @@ var selectWrapperStyle = "_163ehmk1";
15260
15322
  import {
15261
15323
  getCheckoutsByUserId as getCheckoutsByUserId2
15262
15324
  } from "@funkit/api-base";
15263
- import { FlagKey as FlagKey15 } from "@funkit/utils";
15325
+ import { FlagKey as FlagKey14 } from "@funkit/utils";
15264
15326
  import { useQuery as useQuery12 } from "@tanstack/react-query";
15265
15327
  var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
15266
15328
  var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
15267
15329
  var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
15268
15330
  function useCheckoutRefreshInterval() {
15269
- const str = useFlag(FlagKey15.CheckoutNotificationsRefreshInterval);
15331
+ const str = useFlag(FlagKey14.CheckoutNotificationsRefreshInterval);
15270
15332
  return safeJSONParse(str) || { listRefresh: 50 * 1e3, itemRefresh: 5 * 1e3 };
15271
15333
  }
15272
15334
  var useRecentCheckouts = ({
@@ -15376,10 +15438,10 @@ var useRecentDirectExecutions = ({
15376
15438
 
15377
15439
  // src/hooks/useOnNewNotification.ts
15378
15440
  import { safeParseJson as safeParseJson4 } from "@funkit/utils";
15379
- import { useEffect as useEffect31 } from "react";
15441
+ import { useEffect as useEffect30 } from "react";
15380
15442
  var storageKey3 = "fkc-processed-notifications";
15381
15443
  var useOnNewNotification = (combinedNotifications, cb) => {
15382
- useEffect31(() => {
15444
+ useEffect30(() => {
15383
15445
  const alreadyProcessed = safeParseJsonObject(
15384
15446
  sessionStorage.getItem(storageKey3)
15385
15447
  );
@@ -15429,7 +15491,7 @@ import { Trans as Trans3 } from "react-i18next";
15429
15491
  import { CheckoutState as CheckoutState3 } from "@funkit/api-base";
15430
15492
  import { SOLANA_MAINNET_CHAIN_ID } from "@funkit/chains";
15431
15493
  import { formatAddress as formatAddress4, formatTimestamp } from "@funkit/utils";
15432
- import React92, { useState as useState28, useRef as useRef16, useEffect as useEffect32 } from "react";
15494
+ import React92, { useState as useState28, useRef as useRef16, useEffect as useEffect31 } from "react";
15433
15495
 
15434
15496
  // src/utils/checkoutHistory.ts
15435
15497
  var storageKey4 = "fkc-last-report-submit-time";
@@ -15582,7 +15644,7 @@ function StatusTag({ state, refundState, isDelayed: isDelayed2 }) {
15582
15644
  const checkoutState = getCheckoutStateBooleans(state, refundState);
15583
15645
  const [delayedCheckoutState, setDelayedCheckoutState] = useState28(checkoutState);
15584
15646
  const { status, isCompleted, isRefundProceeded } = delayedCheckoutState;
15585
- useEffect32(() => {
15647
+ useEffect31(() => {
15586
15648
  const timeout = setTimeout(
15587
15649
  () => {
15588
15650
  setDelayedCheckoutState(getCheckoutStateBooleans(state, refundState));
@@ -15731,7 +15793,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f12m _1rsrm2f1f _1rsrm2f1c _1rsrm2fm4
15731
15793
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
15732
15794
  import clsx16 from "clsx";
15733
15795
  import { motion as motion7, useAnimate as useAnimate2 } from "motion/react";
15734
- import React93, { useCallback as useCallback19, useEffect as useEffect33, useRef as useRef17 } from "react";
15796
+ import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as useRef17 } from "react";
15735
15797
 
15736
15798
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
15737
15799
  var STATUS_SPINNER_BOTTOM_POSITION = -5;
@@ -16181,7 +16243,7 @@ var FunNotificationBannerIcon = ({
16181
16243
  ]);
16182
16244
  }, [animate]);
16183
16245
  const statusRef = useRef17(status);
16184
- useEffect33(() => {
16246
+ useEffect32(() => {
16185
16247
  if (statusRef.current !== status) {
16186
16248
  if (statusRef.current === "processing" && status === "completed") {
16187
16249
  triggerAnimationProcessingToCompleted();
@@ -17071,13 +17133,13 @@ var CheckoutNotifications = ({
17071
17133
  isVisible,
17072
17134
  memoizedFilterFunc: filterFunc
17073
17135
  });
17074
- useEffect34(() => {
17136
+ useEffect33(() => {
17075
17137
  if (initialCheckouts || !checkouts) {
17076
17138
  return;
17077
17139
  }
17078
17140
  setInitialCheckouts(checkouts);
17079
17141
  }, [initialCheckouts, checkouts]);
17080
- useEffect34(() => {
17142
+ useEffect33(() => {
17081
17143
  if (initialDirectExecutions || !directExecutions) {
17082
17144
  return;
17083
17145
  }
@@ -17266,11 +17328,11 @@ import React100, { useCallback as useCallback22, useMemo as useMemo24, useState
17266
17328
  import { createPortal as createPortal5 } from "react-dom";
17267
17329
 
17268
17330
  // src/hooks/useFunListeners.ts
17269
- import { useEffect as useEffect35, useRef as useRef19 } from "react";
17331
+ import { useEffect as useEffect34, useRef as useRef19 } from "react";
17270
17332
  function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
17271
17333
  const activeIntervalRef = useRef19();
17272
17334
  const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
17273
- useEffect35(() => {
17335
+ useEffect34(() => {
17274
17336
  if (activate) {
17275
17337
  const createdIntervalId = startCheckoutHistoryListener(
17276
17338
  /* singleDepositAddr */
@@ -17416,7 +17478,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
17416
17478
 
17417
17479
  // src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
17418
17480
  import { sendSupportMessage } from "@funkit/api-base";
17419
- import React104, { useEffect as useEffect36, useMemo as useMemo25, useRef as useRef20, useState as useState33 } from "react";
17481
+ import React104, { useEffect as useEffect35, useMemo as useMemo25, useRef as useRef20, useState as useState33 } from "react";
17420
17482
  import { createPortal as createPortal6 } from "react-dom";
17421
17483
 
17422
17484
  // src/components/FunInput/FunTextAreaInput.tsx
@@ -17607,7 +17669,7 @@ function FunCheckoutHistoryHelp({
17607
17669
  0 /* INPUT */
17608
17670
  );
17609
17671
  const wrapperRef = useRef20(null);
17610
- useEffect36(() => wrapperRef.current?.scrollIntoView(), []);
17672
+ useEffect35(() => wrapperRef.current?.scrollIntoView(), []);
17611
17673
  const handleShowErrorMessage = (message, timeMs = FIVE_SECONDS_MS) => {
17612
17674
  setErrorMessage(message);
17613
17675
  if (timeMs !== void 0) {
@@ -18068,7 +18130,7 @@ import React217, { useCallback as useCallback46, useState as useState69 } from "
18068
18130
 
18069
18131
  // src/components/FunCheckoutModalHeightAnimationWrapper/FunCheckoutModalHeightAnimationWrapper.tsx
18070
18132
  import { motion as motion15 } from "motion/react";
18071
- import React204, { useEffect as useEffect52, useRef as useRef27, useState as useState66 } from "react";
18133
+ import React204, { useEffect as useEffect51, useRef as useRef27, useState as useState66 } from "react";
18072
18134
 
18073
18135
  // src/modals/CheckoutModal/stepTransition.ts
18074
18136
  import {
@@ -19586,7 +19648,7 @@ import {
19586
19648
  DirectExecutionType as DirectExecutionType2,
19587
19649
  RelayExecutionStatus as RelayExecutionStatus3
19588
19650
  } from "@funkit/api-base";
19589
- import React130, { useCallback as useCallback27, useEffect as useEffect37, useMemo as useMemo28, useState as useState39 } from "react";
19651
+ import React130, { useCallback as useCallback27, useEffect as useEffect36, useMemo as useMemo28, useState as useState39 } from "react";
19590
19652
  var overrideAssetsData = (de, checkoutItem) => {
19591
19653
  return {
19592
19654
  ...de,
@@ -19684,7 +19746,7 @@ var BrokerageSuccess = ({
19684
19746
  const latestDirectExecution = useMemo28(() => {
19685
19747
  return directExecutions?.[0];
19686
19748
  }, [directExecutions?.[0]?.txHash]);
19687
- useEffect37(() => {
19749
+ useEffect36(() => {
19688
19750
  if (!latestDirectExecution) {
19689
19751
  return;
19690
19752
  }
@@ -20353,7 +20415,7 @@ var TwoFactorInput = ({
20353
20415
  };
20354
20416
 
20355
20417
  // src/modals/CheckoutModal/Brokerage/ConnectExchange.tsx
20356
- import React137, { useCallback as useCallback28, useEffect as useEffect38, useState as useState41 } from "react";
20418
+ import React137, { useCallback as useCallback28, useEffect as useEffect37, useState as useState41 } from "react";
20357
20419
  import { createPortal as createPortal11 } from "react-dom";
20358
20420
 
20359
20421
  // src/components/Icons/HandIcon.tsx
@@ -20458,7 +20520,7 @@ function ConnectExchange({
20458
20520
  setAuthError(errorMessage);
20459
20521
  setIsLoadingMeshModal(false);
20460
20522
  });
20461
- useEffect38(() => {
20523
+ useEffect37(() => {
20462
20524
  if (isConnected) {
20463
20525
  navigateToBrokerage();
20464
20526
  }
@@ -20793,11 +20855,11 @@ function CheckoutHelp({
20793
20855
  }
20794
20856
 
20795
20857
  // src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
20796
- import React156, { useEffect as useEffect44, useMemo as useMemo34, useState as useState51 } from "react";
20858
+ import React156, { useEffect as useEffect43, useMemo as useMemo34, useState as useState51 } from "react";
20797
20859
  import { createPortal as createPortal14 } from "react-dom";
20798
20860
 
20799
20861
  // src/providers/UserPresenceContext.tsx
20800
- import React143, { useEffect as useEffect39 } from "react";
20862
+ import React143, { useEffect as useEffect38 } from "react";
20801
20863
  import {
20802
20864
  createContext as createContext15,
20803
20865
  useContext as useContext15,
@@ -20809,7 +20871,7 @@ var UserPresenceContext = createContext15({
20809
20871
  });
20810
20872
  var UserPresenceProvider = ({ children }) => {
20811
20873
  const [isAway, setIsAway] = useState43(false);
20812
- useEffect39(() => {
20874
+ useEffect38(() => {
20813
20875
  let timeoutId;
20814
20876
  const handleVisibilityChange = () => {
20815
20877
  if (document.visibilityState === "visible") {
@@ -20839,13 +20901,13 @@ import React145 from "react";
20839
20901
  import React144, { useState as useState44 } from "react";
20840
20902
 
20841
20903
  // src/hooks/useInterval.ts
20842
- import { useEffect as useEffect40, useRef as useRef21 } from "react";
20904
+ import { useEffect as useEffect39, useRef as useRef21 } from "react";
20843
20905
  function useInterval(callback, delay) {
20844
20906
  const savedCallback = useRef21(callback);
20845
20907
  useIsomorphicLayoutEffect(() => {
20846
20908
  savedCallback.current = callback;
20847
20909
  }, [callback]);
20848
- useEffect40(() => {
20910
+ useEffect39(() => {
20849
20911
  const id = setInterval(() => {
20850
20912
  savedCallback.current();
20851
20913
  }, delay);
@@ -21486,7 +21548,7 @@ function KatanaBridgeAlert() {
21486
21548
  import { useState as useState46 } from "react";
21487
21549
 
21488
21550
  // src/modals/CheckoutModal/useSourceAssetConfirm.tsx
21489
- import { useEffect as useEffect41, useState as useState45 } from "react";
21551
+ import { useEffect as useEffect40, useState as useState45 } from "react";
21490
21552
  function preparePaymentMethodInfo(selectedPaymentMethodInfo) {
21491
21553
  switch (selectedPaymentMethodInfo?.paymentMethod) {
21492
21554
  case "balance" /* ACCOUNT_BALANCE */:
@@ -21547,7 +21609,7 @@ function useHackyTriggerWorkaroundReactDevBrainExplode() {
21547
21609
  function useTriggerQuoteAndOtherStuffsWithExtremeCaution(onResult, setPreloadedQuoteData) {
21548
21610
  const [assetRefresh, triggerAssetConfirm] = useHackyTriggerWorkaroundReactDevBrainExplode();
21549
21611
  const { isSourceAssetConfirming, onSourceAssetConfirmed } = useSourceAssetConfirm(setPreloadedQuoteData);
21550
- useEffect41(() => {
21612
+ useEffect40(() => {
21551
21613
  if (assetRefresh === 0) {
21552
21614
  return;
21553
21615
  }
@@ -21625,8 +21687,9 @@ import React153, { useState as useState47 } from "react";
21625
21687
  import { Trans as Trans10 } from "react-i18next";
21626
21688
 
21627
21689
  // src/modals/CheckoutModal/ConfirmationStep/useAccountBalanceTransfer.ts
21628
- import { ERC20_ABI, USDT_ABI } from "@funkit/core";
21690
+ import { USDT_ABI } from "@funkit/utils";
21629
21691
  import { useCallback as useCallback31 } from "react";
21692
+ import { erc20Abi as erc20Abi2 } from "viem";
21630
21693
  import { useAccount as useAccount6, useSendTransaction, useWriteContract } from "wagmi";
21631
21694
 
21632
21695
  // src/utils/isMainnetUsdt.ts
@@ -21708,7 +21771,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
21708
21771
  chainId: Number.parseInt(sourceAssetChainId),
21709
21772
  address: sourceAssetAddress,
21710
21773
  // USDT on mainnet has a different ABI
21711
- abi: isTokenMainnetUsdt ? USDT_ABI : ERC20_ABI,
21774
+ abi: isTokenMainnetUsdt ? USDT_ABI : erc20Abi2,
21712
21775
  functionName: "transfer",
21713
21776
  args: [depositAddress, sourceAssetAmountBaseUnit]
21714
21777
  };
@@ -21911,7 +21974,7 @@ function usePostCheckout({
21911
21974
  }
21912
21975
 
21913
21976
  // src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
21914
- import { useCallback as useCallback34, useEffect as useEffect43, useMemo as useMemo33, useRef as useRef22, useState as useState50 } from "react";
21977
+ import { useCallback as useCallback34, useEffect as useEffect42, useMemo as useMemo33, useRef as useRef22, useState as useState50 } from "react";
21915
21978
 
21916
21979
  // src/hooks/useCountdown.tsx
21917
21980
  import React155 from "react";
@@ -21919,7 +21982,7 @@ import { useCallback as useCallback33, useState as useState49 } from "react";
21919
21982
 
21920
21983
  // src/components/FunCountdown/FunCountdown.tsx
21921
21984
  import { noop as noop8 } from "@funkit/utils";
21922
- import React154, { useCallback as useCallback32, useEffect as useEffect42, useState as useState48 } from "react";
21985
+ import React154, { useCallback as useCallback32, useEffect as useEffect41, useState as useState48 } from "react";
21923
21986
 
21924
21987
  // src/components/FunCountdown/FunCountdown.css.ts
21925
21988
  var backgroundRing = "_1t0bc111 _1rsrm2f1os";
@@ -21962,7 +22025,7 @@ var FunCountdown = ({
21962
22025
  setRemainingSeconds((prev) => prev > 0 ? prev - 1 : prev);
21963
22026
  }, [isPaused]);
21964
22027
  useInterval(handleInterval, 1e3);
21965
- useEffect42(() => {
22028
+ useEffect41(() => {
21966
22029
  if (remainingSeconds === onBeforeCountdownEndsSeconds) {
21967
22030
  onBeforeCountdownEndsOnce();
21968
22031
  }
@@ -22183,7 +22246,7 @@ function useQuoteRefresh({
22183
22246
  }
22184
22247
  return null;
22185
22248
  }, [isQuoting, quoteErrorMessage]);
22186
- useEffect43(() => {
22249
+ useEffect42(() => {
22187
22250
  if (isPendingRefresh && !isOnHold) {
22188
22251
  setIsPendingRefresh(false);
22189
22252
  refreshQuote();
@@ -22299,7 +22362,7 @@ function ConfirmationStep({
22299
22362
  }
22300
22363
  }
22301
22364
  });
22302
- useEffect44(() => {
22365
+ useEffect43(() => {
22303
22366
  triggerNewQuote({ maxRetries: 1 });
22304
22367
  }, []);
22305
22368
  const isContinuing = isConfirming || isPostCheckoutLoading;
@@ -22597,7 +22660,7 @@ function DirectExecutionNotifCenter({
22597
22660
 
22598
22661
  // src/modals/CheckoutModal/InputAmount/InputAmount.tsx
22599
22662
  import { isMobile as isMobile7 } from "@funkit/utils";
22600
- import React173, { useEffect as useEffect46 } from "react";
22663
+ import React173, { useEffect as useEffect45 } from "react";
22601
22664
 
22602
22665
  // src/hooks/queries/useMeldCurrencies.ts
22603
22666
  import { getMeldSupportedFiat } from "@funkit/api-base";
@@ -22642,7 +22705,7 @@ import { getMeldDefaultFiat } from "@funkit/api-base";
22642
22705
  import { useQuery as useQuery16 } from "@tanstack/react-query";
22643
22706
 
22644
22707
  // src/hooks/queries/useMeldCryptoCurrencyCode.ts
22645
- import { FlagKey as FlagKey16 } from "@funkit/utils";
22708
+ import { FlagKey as FlagKey15 } from "@funkit/utils";
22646
22709
  import { arbitrum as arbitrum4, base as base6, polygon as polygon5 } from "viem/chains";
22647
22710
  var ARB_USDC = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase();
22648
22711
  var POLYGON_USDC = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359".toLowerCase();
@@ -22675,7 +22738,7 @@ function useMeldCryptoCurrencyCode() {
22675
22738
  return mappedCurrency;
22676
22739
  }
22677
22740
  function useIsMeldEnabled() {
22678
- const meldEnabled = useFlag(FlagKey16.EnableMeldPayment);
22741
+ const meldEnabled = useFlag(FlagKey15.EnableMeldPayment);
22679
22742
  const meldCurrencyCode = useMeldCryptoCurrencyCode();
22680
22743
  return meldEnabled && !!meldCurrencyCode;
22681
22744
  }
@@ -22872,7 +22935,7 @@ var useMeldLimitError = (amount, fiatCurrency) => {
22872
22935
 
22873
22936
  // src/modals/CheckoutModal/InputAmount/InputAmountLoaded.tsx
22874
22937
  import {
22875
- FlagKey as FlagKey19,
22938
+ FlagKey as FlagKey18,
22876
22939
  formatCryptoAndStringify as formatCryptoAndStringify5,
22877
22940
  formatCurrencyAndStringify as formatCurrencyAndStringify9,
22878
22941
  isTokenEquivalent as isTokenEquivalent4,
@@ -22884,13 +22947,13 @@ import React171, { useMemo as useMemo36 } from "react";
22884
22947
  // src/components/AnimatedWidthWrapper/AnimatedWidthWrapper.tsx
22885
22948
  import { motion as motion10 } from "motion/react";
22886
22949
  import React159 from "react";
22887
- import { useEffect as useEffect45, useRef as useRef23, useState as useState52 } from "react";
22950
+ import { useEffect as useEffect44, useRef as useRef23, useState as useState52 } from "react";
22888
22951
  function AnimatedWidthWrapper({ children }) {
22889
22952
  const containerRef = useRef23(null);
22890
22953
  const animationFrameRef = useRef23(null);
22891
22954
  const resizeObserverRef = useRef23(null);
22892
22955
  const [width, setWidth] = useState52("auto");
22893
- useEffect45(() => {
22956
+ useEffect44(() => {
22894
22957
  if (containerRef.current) {
22895
22958
  resizeObserverRef.current = new ResizeObserver((entries) => {
22896
22959
  animationFrameRef.current = requestAnimationFrame(() => {
@@ -22961,7 +23024,7 @@ var CurrencySelector = ({
22961
23024
  };
22962
23025
 
22963
23026
  // src/components/SourcePaymentMethodItem/SourcePaymentMethodItem.tsx
22964
- import { FlagKey as FlagKey17 } from "@funkit/utils";
23027
+ import { FlagKey as FlagKey16 } from "@funkit/utils";
22965
23028
  import clsx21 from "clsx";
22966
23029
  import { useAnimate as useAnimate3 } from "motion/react";
22967
23030
  import React162 from "react";
@@ -23567,8 +23630,8 @@ var SourcePaymentMethodItem = ({
23567
23630
  icon: /* @__PURE__ */ React162.createElement(MasterCardPillIcon, { key: "mastercard", backdropColor })
23568
23631
  }
23569
23632
  ];
23570
- const isMeldEnabled = useFlag(FlagKey17.EnableMeldPayment);
23571
- const isBrokerageEnabled = useFlag(FlagKey17.EnableBluvoBrokerage);
23633
+ const isMeldEnabled = useIsMeldEnabled();
23634
+ const isBrokerageEnabled = useFlag(FlagKey16.EnableBluvoBrokerage);
23572
23635
  const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
23573
23636
  if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isMeldEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
23574
23637
  return false;
@@ -23925,7 +23988,7 @@ function InputAmountLayout({
23925
23988
  }
23926
23989
 
23927
23990
  // src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
23928
- import { FlagKey as FlagKey18, clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify7 } from "@funkit/utils";
23991
+ import { FlagKey as FlagKey17, clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify7 } from "@funkit/utils";
23929
23992
  import React167 from "react";
23930
23993
  var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
23931
23994
  function deduplicateArray(arr) {
@@ -23933,7 +23996,7 @@ function deduplicateArray(arr) {
23933
23996
  }
23934
23997
  function useFiatAmountOptions(currency) {
23935
23998
  const isMeldEnabled = useIsMeldEnabled();
23936
- const currencyQuickOptionStr = useFlag(FlagKey18.MeldQuickOptions);
23999
+ const currencyQuickOptionStr = useFlag(FlagKey17.MeldQuickOptions);
23937
24000
  const currencyQuickOption = safeJSONParse(
23938
24001
  currencyQuickOptionStr
23939
24002
  );
@@ -24987,10 +25050,10 @@ import {
24987
25050
  hyperEvmChain as hyperEvmChain4,
24988
25051
  katanaChain
24989
25052
  } from "@funkit/chains";
24990
- import { getTokenAddressBySymbolAndChainId } from "@funkit/core";
24991
25053
  import { useCallback as useCallback37, useState as useState55 } from "react";
24992
25054
  import { mainnet as mainnet8, mantle, zksync as zksync2 } from "viem/chains";
24993
- var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
25055
+ import { getAssetErc20ByChainAndSymbol as getAssetErc20ByChainAndSymbol2 } from "@funkit/api-base";
25056
+ var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
24994
25057
  if (!checkoutItem?.initSettings.config.targetChain) {
24995
25058
  throw new Error("pickSourceAssetForCard: Missing targetChain");
24996
25059
  }
@@ -25006,7 +25069,11 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
25006
25069
  hyperEvmChain4.id.toString()
25007
25070
  ]
25008
25071
  );
25009
- const wethAddrOnTargetChain = (await getTokenAddressBySymbolAndChainId("weth", moonpayChainId)).toLowerCase();
25072
+ const wethAddrOnTargetChain = (await getAssetErc20ByChainAndSymbol2({
25073
+ chainId: moonpayChainId,
25074
+ symbol: "weth",
25075
+ apiKey
25076
+ })).address.toLowerCase();
25010
25077
  const isTargetAssetEthOrWeth = [NATIVE_TOKEN, wethAddrOnTargetChain].includes(
25011
25078
  checkoutItem.initSettings.config.targetAsset
25012
25079
  ) && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO10[moonpayChainId]?.nativeCurrency.symbol === "ETH" /* ETH */;
@@ -25024,10 +25091,11 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
25024
25091
  sourceTokenAddress = NATIVE_TOKEN;
25025
25092
  } else {
25026
25093
  sourceTokenTicker = "USDC" /* USDC */;
25027
- sourceTokenAddress = await getTokenAddressBySymbolAndChainId(
25028
- "USDC" /* USDC */,
25029
- sourceTokenChainId
25030
- );
25094
+ sourceTokenAddress = (await getAssetErc20ByChainAndSymbol2({
25095
+ chainId: sourceTokenChainId,
25096
+ symbol: "USDC" /* USDC */,
25097
+ apiKey
25098
+ })).address;
25031
25099
  }
25032
25100
  }
25033
25101
  logger.log("pickSourceAssetForCard:result", {
@@ -25048,11 +25116,16 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
25048
25116
  function useUpdateCardSourceAsset() {
25049
25117
  const { checkoutItem, updateSourceAsset } = useCheckoutContext();
25050
25118
  const { userIpInfo } = useFunkitUserIp();
25119
+ const { apiKey } = useFunkitConfig();
25051
25120
  const [isUpdating, setIsUpdating] = useState55(false);
25052
25121
  const onSelectCard = useCallback37(async () => {
25053
25122
  setIsUpdating(true);
25054
25123
  try {
25055
- const source = await pickSourceAssetForCard(checkoutItem, userIpInfo);
25124
+ const source = await pickSourceAssetForCard(
25125
+ checkoutItem,
25126
+ userIpInfo,
25127
+ apiKey
25128
+ );
25056
25129
  updateSourceAsset({
25057
25130
  tokenAddress: source.sourceTokenAddress,
25058
25131
  symbol: source.sourceTokenTicker,
@@ -25062,7 +25135,7 @@ function useUpdateCardSourceAsset() {
25062
25135
  } finally {
25063
25136
  setIsUpdating(false);
25064
25137
  }
25065
- }, [checkoutItem, updateSourceAsset, userIpInfo]);
25138
+ }, [checkoutItem, updateSourceAsset, userIpInfo, apiKey]);
25066
25139
  return { onSelectCard, isUpdating };
25067
25140
  }
25068
25141
 
@@ -25226,7 +25299,7 @@ function InputAmountLoaded({
25226
25299
  textCustomizations
25227
25300
  }) {
25228
25301
  const { t } = useFunkitTranslation();
25229
- const maxCheckoutUsdString = useFlag(FlagKey19.MaxCheckoutUsd);
25302
+ const maxCheckoutUsdString = useFlag(FlagKey18.MaxCheckoutUsd);
25230
25303
  const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
25231
25304
  const paymentMethodInfo = modalState.paymentMethodInfo;
25232
25305
  const { quote: manuallySelectedQuote } = modalState;
@@ -25714,14 +25787,14 @@ function InputAmountLoading({
25714
25787
  };
25715
25788
  }
25716
25789
  }, [sourceHoldingError, unitPriceError, t]);
25717
- const isCardCheckout = paymentMethodInfo.paymentMethod === "card" /* CARD */;
25718
- const isMeldCheckout = isCardCheckout && meldEnabled;
25790
+ const isMeldPaymentMethod = paymentMethodInfo.paymentMethod === "card" /* CARD */;
25791
+ const isMeldCheckout = isMeldPaymentMethod && meldEnabled;
25719
25792
  return /* @__PURE__ */ React172.createElement(
25720
25793
  InputAmountLayout,
25721
25794
  {
25722
25795
  actionButtonProps: { title: t("common.continue"), isDisabled: true },
25723
25796
  fiatCurrencySelector: isMeldCheckout && /* @__PURE__ */ React172.createElement(CurrencySelector, { isLoading: true }),
25724
- header: isCardCheckout && isSourceNavWidgetEnabled && /* @__PURE__ */ React172.createElement(Box, { width: "full" }, /* @__PURE__ */ React172.createElement(
25797
+ header: isMeldPaymentMethod && isSourceNavWidgetEnabled && /* @__PURE__ */ React172.createElement(Box, { width: "full" }, /* @__PURE__ */ React172.createElement(
25725
25798
  SourcePaymentMethodItem,
25726
25799
  {
25727
25800
  type: "card" /* CARD */,
@@ -25763,7 +25836,7 @@ function InputAmountLoading({
25763
25836
  )
25764
25837
  )
25765
25838
  ),
25766
- amountOptions: !isCardCheckout && /* @__PURE__ */ React172.createElement(QuickOptions, { disabled: true, options: USD_AMOUNT_OPTIONS_PCT, percentMode: true }),
25839
+ amountOptions: !isMeldPaymentMethod && /* @__PURE__ */ React172.createElement(QuickOptions, { disabled: true, options: USD_AMOUNT_OPTIONS_PCT, percentMode: true }),
25767
25840
  footer: isMeldCheckout ? /* @__PURE__ */ React172.createElement(Box, { paddingX: "6" }, /* @__PURE__ */ React172.createElement(SourceMeldQuoteItem, { isLoading: true })) : /* @__PURE__ */ React172.createElement(YouPayYouReceiveBottomBarLayoutWrapper, null, /* @__PURE__ */ React172.createElement(
25768
25841
  FunSkeletonBlock,
25769
25842
  {
@@ -25893,7 +25966,7 @@ function InputAmount(props) {
25893
25966
  const skipExchangeRates = paymentMethodInfo.paymentMethod !== "card" /* CARD */ || !isDefiMode;
25894
25967
  const exchangeRatesLoaded = !isCurrencyExchangeRatesLoading && !!currencyExchangeRates;
25895
25968
  const isLoaded = !!(checkoutItem && unitPrice && !sourceHoldingError && !isLoadingSourceHolding && !isMeldDefaultCurrencyLoading && (skipExchangeRates || exchangeRatesLoaded));
25896
- useEffect46(() => setCheckoutQuote(null), []);
25969
+ useEffect45(() => setCheckoutQuote(null), []);
25897
25970
  if (isLoaded) {
25898
25971
  return /* @__PURE__ */ React173.createElement(
25899
25972
  InputAmountLoaded,
@@ -25919,27 +25992,27 @@ function InputAmount(props) {
25919
25992
  }
25920
25993
 
25921
25994
  // src/modals/CheckoutModal/LoadingAccount.tsx
25922
- import React176, { useEffect as useEffect47 } from "react";
25995
+ import React176, { useEffect as useEffect46 } from "react";
25923
25996
 
25924
25997
  // src/hooks/usePaymentSources.ts
25925
- import { FlagKey as FlagKey20, isNotNullish as isNotNullish5 } from "@funkit/utils";
25998
+ import { FlagKey as FlagKey19, isNotNullish as isNotNullish5 } from "@funkit/utils";
25926
25999
  function usePaymentMethodEnablement({
25927
26000
  checkoutConfig
25928
26001
  }) {
25929
26002
  const { apiKey } = useFunkitConfig();
25930
- const isTokenTransferFlagEnabled = useFlag(FlagKey20.EnableTokenTransfer);
26003
+ const isTokenTransferFlagEnabled = useIsQRCodeTransferEnabled();
25931
26004
  const isFiatFlagEnabled = useFiatEnabled();
25932
- const isCardFlagEnabled = useFlag(FlagKey20.EnableMeldPayment);
25933
- const isBrokerageFlagEnabled = useFlag(FlagKey20.EnableBluvoBrokerage);
26005
+ const isMeldFlagEnabled = useIsMeldEnabled();
26006
+ const isBrokerageFlagEnabled = useFlag(FlagKey19.EnableBluvoBrokerage);
25934
26007
  const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
25935
26008
  const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
25936
26009
  const isTokenTransferEnabled = isTokenTransferFlagEnabled && !isKatanaEarnFlowAction;
25937
- const isCardEnabled = isCardFlagEnabled && !isKatanaEarnFlowAction;
26010
+ const isMeldEnabled = isMeldFlagEnabled && !isKatanaEarnFlowAction;
25938
26011
  const isBrokerageEnabled = isBrokerageFlagEnabled && isTokenTransferEnabled;
25939
26012
  return {
25940
26013
  isFiatEnabled,
25941
26014
  isTokenTransferEnabled,
25942
- isCardEnabled,
26015
+ isMeldEnabled,
25943
26016
  isBrokerageEnabled
25944
26017
  };
25945
26018
  }
@@ -25962,7 +26035,7 @@ var usePaymentSources = (paymentMethodInfo, targetChainId, checkoutConfig) => {
25962
26035
  const {
25963
26036
  isFiatEnabled,
25964
26037
  isTokenTransferEnabled,
25965
- isCardEnabled,
26038
+ isMeldEnabled,
25966
26039
  isBrokerageEnabled
25967
26040
  } = usePaymentMethodEnablement({ checkoutConfig });
25968
26041
  const accountPaymentMethodInfo = createPaymentMethodInfo({
@@ -25983,13 +26056,13 @@ var usePaymentSources = (paymentMethodInfo, targetChainId, checkoutConfig) => {
25983
26056
  virtualBankPaymentMethodInfo
25984
26057
  ].filter(isNotNullish5);
25985
26058
  const ignoreFallback = isConnected && !hasUsableBalance;
25986
- const fallback2 = connected.length === 0 && !ignoreFallback ? isTokenTransferEnabled ? ["token_transfer" /* TOKEN_TRANSFER */] : isCardEnabled ? ["card" /* CARD */] : ["balance" /* ACCOUNT_BALANCE */] : [];
26059
+ const fallback2 = connected.length === 0 && !ignoreFallback ? isTokenTransferEnabled ? ["token_transfer" /* TOKEN_TRANSFER */] : isMeldEnabled ? ["card" /* CARD */] : ["balance" /* ACCOUNT_BALANCE */] : [];
25987
26060
  const isTokenInNewSources = !fallback2.includes("token_transfer" /* TOKEN_TRANSFER */) && isTokenTransferEnabled;
25988
26061
  const isWalletInNewSources = !isConnected && !fallback2.includes("balance" /* ACCOUNT_BALANCE */);
25989
26062
  const isBankInNewSources = !matchingFiatAccount && isUserLoggedIn && isFiatEnabled;
25990
26063
  const newSources = [
25991
26064
  isTokenInNewSources && "token_transfer" /* TOKEN_TRANSFER */,
25992
- !fallback2.includes("card" /* CARD */) && isCardEnabled && "card" /* CARD */,
26065
+ !fallback2.includes("card" /* CARD */) && isMeldEnabled && "card" /* CARD */,
25993
26066
  isBankInNewSources && "virtual_bank" /* VIRTUAL_BANK */,
25994
26067
  isWalletInNewSources && "balance" /* ACCOUNT_BALANCE */,
25995
26068
  isBrokerageEnabled && "brokerage" /* BROKERAGE */
@@ -26263,7 +26336,7 @@ function LoadingAccount({
26263
26336
  const hasCustomStartingStep = !!checkoutConfig?.startingStep;
26264
26337
  const startsOnConfirmationStep = checkoutConfig?.startingStep === "confirmation" /* CONFIRMATION */;
26265
26338
  const startsOnSelectAssetStep = checkoutConfig?.startingStep === "select_asset" /* SELECT_ASSET */;
26266
- useEffect47(() => {
26339
+ useEffect46(() => {
26267
26340
  if (isLoadingFlags || isLoadingFiat || !checkoutConfig) {
26268
26341
  return;
26269
26342
  }
@@ -26605,7 +26678,7 @@ import {
26605
26678
  hyperEvmChain as hyperEvmChain5
26606
26679
  } from "@funkit/chains";
26607
26680
  import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent5 } from "@funkit/utils";
26608
- import React182, { useEffect as useEffect48, useMemo as useMemo41, useState as useState57 } from "react";
26681
+ import React182, { useEffect as useEffect47, useMemo as useMemo41, useState as useState57 } from "react";
26609
26682
  import { createPortal as createPortal18 } from "react-dom";
26610
26683
  import { mainnet as mainnet9 } from "viem/chains";
26611
26684
 
@@ -26703,7 +26776,7 @@ var ReceiveTokenDropdown = ({
26703
26776
  // src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
26704
26777
  import React181 from "react";
26705
26778
  import { Trans as Trans11 } from "react-i18next";
26706
- import { FlagKey as FlagKey21 } from "@funkit/utils";
26779
+ import { FlagKey as FlagKey20 } from "@funkit/utils";
26707
26780
  var FunLinkButtonComponent2 = ({
26708
26781
  children,
26709
26782
  onClick,
@@ -26723,9 +26796,9 @@ var NewTokenDepositAlert = ({
26723
26796
  onClick
26724
26797
  }) => {
26725
26798
  const { t } = useFunkitTranslation();
26726
- const alertJson = useFlag(FlagKey21.NewTokenAssetSelectionBanner);
26799
+ const alertJson = useFlag(FlagKey20.NewTokenAssetSelectionBanner);
26727
26800
  const alertData = useSafeJSONParse(alertJson);
26728
- const isTokenTransferEnabled = useFlag(FlagKey21.EnableTokenTransfer);
26801
+ const isTokenTransferEnabled = useIsQRCodeTransferEnabled();
26729
26802
  if (!alertData || !isTokenTransferEnabled) {
26730
26803
  return null;
26731
26804
  }
@@ -26850,6 +26923,7 @@ function useEnrichedAccountHoldings({
26850
26923
  accountHoldings,
26851
26924
  targetAssetInfo
26852
26925
  }) {
26926
+ const { apiKey } = useFunkitConfig();
26853
26927
  const { t } = useFunkitTranslation();
26854
26928
  const { isAllowed, isLoading } = useAllowedAssets();
26855
26929
  const { walletAddress } = useGeneralWallet();
@@ -26866,6 +26940,7 @@ function useEnrichedAccountHoldings({
26866
26940
  minUsdRequired = minUsd;
26867
26941
  }
26868
26942
  const usableForCheckout = isAssetUsableToPayForCheckout({
26943
+ apiKey,
26869
26944
  config: checkoutConfig,
26870
26945
  targetTokenAddress: targetAssetInfo.tokenAddress,
26871
26946
  targetChainId: targetAssetInfo.tokenChainId,
@@ -26884,6 +26959,7 @@ function useEnrichedAccountHoldings({
26884
26959
  return { asset, usableForCheckout };
26885
26960
  });
26886
26961
  }, [
26962
+ apiKey,
26887
26963
  accountHoldings,
26888
26964
  checkoutConfig,
26889
26965
  isAllowed,
@@ -26959,7 +27035,7 @@ function useAssetOptions({
26959
27035
  return assetOptions;
26960
27036
  }
26961
27037
  function useScrollToSelectedAsset(selectedChainTokenSymbol) {
26962
- useEffect48(() => {
27038
+ useEffect47(() => {
26963
27039
  const optionEl = document.getElementById(
26964
27040
  `option-${selectedChainTokenSymbol}`
26965
27041
  );
@@ -27103,11 +27179,32 @@ function AccountSelectAsset({
27103
27179
  const isAssetsEmpty = assetOptions.length === 0;
27104
27180
  const isDisabled = isAssetsEmpty || !selectedChainTokenSymbol || isLoading;
27105
27181
  const onBalanceTopUpSwitch = checkoutItem?.initSettings.onBalanceTopUpSwitch;
27182
+ const showLighterEthMessage = isLighterEthSpot(apiKey, checkoutConfig) && assetOptions.every((asset) => asset.isDisabled);
27106
27183
  const assetList = isLoading ? /* @__PURE__ */ React182.createElement(FunAssetLoading, { count: 5 }) : isAssetsEmpty ? /* @__PURE__ */ React182.createElement(
27107
27184
  FunNoResults,
27108
27185
  {
27109
- text: t("checkout.noAvailableTokensMessage"),
27110
27186
  title: t("checkout.noAvailableTokens"),
27187
+ text: t("checkout.noAvailableTokensMessage"),
27188
+ variant: "actionable",
27189
+ actionButton: onBalanceTopUpSwitch ? /* @__PURE__ */ React182.createElement(
27190
+ FunButton,
27191
+ {
27192
+ type: "tertiary",
27193
+ onClick: () => {
27194
+ if (onBalanceTopUpSwitch) {
27195
+ onBalanceTopUpSwitch();
27196
+ }
27197
+ onClose?.();
27198
+ },
27199
+ title: t("checkout.topUpWallet")
27200
+ }
27201
+ ) : void 0
27202
+ }
27203
+ ) : showLighterEthMessage ? /* @__PURE__ */ React182.createElement(
27204
+ FunNoResults,
27205
+ {
27206
+ title: t("checkout.insufficientEth"),
27207
+ text: t("checkout.insufficientEthMessage"),
27111
27208
  variant: "actionable",
27112
27209
  actionButton: onBalanceTopUpSwitch ? /* @__PURE__ */ React182.createElement(
27113
27210
  FunButton,
@@ -27378,7 +27475,7 @@ function showsNativeTokensOnTop(apiKey) {
27378
27475
 
27379
27476
  // src/modals/CheckoutModal/SourceChange/SourceChange.tsx
27380
27477
  import { BridgeCustomerStatus as BridgeCustomerStatus6, MeldServiceProvider as MeldServiceProvider4 } from "@funkit/api-base";
27381
- import React184, { useCallback as useCallback40, useEffect as useEffect49, useState as useState58 } from "react";
27478
+ import React184, { useCallback as useCallback40, useEffect as useEffect48, useState as useState58 } from "react";
27382
27479
  import { createPortal as createPortal19 } from "react-dom";
27383
27480
 
27384
27481
  // src/modals/CheckoutModal/SourceChange/DefiPurchaseSection.tsx
@@ -27565,7 +27662,6 @@ function PayPal() {
27565
27662
  function SourceChange({
27566
27663
  modalState,
27567
27664
  onNext,
27568
- onClose,
27569
27665
  setModalState
27570
27666
  }) {
27571
27667
  const { paymentMethodInfo, targetChainId } = modalState;
@@ -27576,16 +27672,14 @@ function SourceChange({
27576
27672
  const { data: fiatAccounts } = useVirtualFiatAccounts();
27577
27673
  const matchingFiatAccount = useMatchingVirtualFiatAccount(fiatAccounts);
27578
27674
  const { apiKey, textCustomizations } = useFunkitConfig();
27579
- const enableMeldPayment = useIsMeldEnabled();
27580
27675
  const isDefiMode = checkoutItem?.initSettings.config.isDefiMode;
27581
27676
  const hasAutoContinue = !isOstiumCustomer(apiKey) && !isDefiMode;
27582
- useEffect49(() => {
27677
+ useEffect48(() => {
27583
27678
  if (!paymentMethodInfo) {
27584
27679
  return;
27585
27680
  }
27586
27681
  updateSelectedPaymentMethodInfo(paymentMethodInfo);
27587
27682
  }, [paymentMethodInfo, updateSelectedPaymentMethodInfo]);
27588
- const { onSelectCard } = useUpdateCardSourceAsset();
27589
27683
  const bluvo = useBluvo();
27590
27684
  const handleConnectedSourceContinue = (source, isConfirmed = false) => {
27591
27685
  setConnectedSource(source);
@@ -27625,19 +27719,11 @@ function SourceChange({
27625
27719
  return;
27626
27720
  }
27627
27721
  if (newSource2 === "card" /* CARD */) {
27628
- if (isPolymarketCustomer(apiKey) && !enableMeldPayment) {
27629
- checkoutItem?.initSettings.onPolymarketCardSwitch?.({});
27630
- onClose();
27631
- return;
27632
- }
27633
27722
  const paymentMethodInfo2 = createPaymentMethodInfo({
27634
27723
  paymentMethod: "card" /* CARD */,
27635
27724
  titleCustomization: textCustomizations.debitOrCredit
27636
27725
  });
27637
27726
  updateSelectedPaymentMethodInfo(paymentMethodInfo2);
27638
- if (!enableMeldPayment) {
27639
- await onSelectCard();
27640
- }
27641
27727
  onNext({
27642
27728
  connectNew: true,
27643
27729
  reverseAnimation: true,
@@ -27685,7 +27771,7 @@ function SourceChange({
27685
27771
  });
27686
27772
  }
27687
27773
  };
27688
- useEffect49(() => {
27774
+ useEffect48(() => {
27689
27775
  if (connectionStatus !== "disconnected" && connectionStatus !== "loading") {
27690
27776
  onCloseConnectModal();
27691
27777
  }
@@ -27780,7 +27866,7 @@ import { truncateMiddleOfAddress } from "@funkit/utils";
27780
27866
  import React185, { useCallback as useCallback42, useState as useState60 } from "react";
27781
27867
 
27782
27868
  // src/hooks/useCopyToClipboard.ts
27783
- import { useCallback as useCallback41, useEffect as useEffect50, useState as useState59 } from "react";
27869
+ import { useCallback as useCallback41, useEffect as useEffect49, useState as useState59 } from "react";
27784
27870
  var useCopyToClipboard = (text, delay = 1500) => {
27785
27871
  const [isCopied, setCopied] = useState59(false);
27786
27872
  const handleCopy = useCallback41(() => {
@@ -27790,7 +27876,7 @@ var useCopyToClipboard = (text, delay = 1500) => {
27790
27876
  navigator.clipboard.writeText(text);
27791
27877
  setCopied(true);
27792
27878
  }, [text]);
27793
- useEffect50(() => {
27879
+ useEffect49(() => {
27794
27880
  if (!isCopied) {
27795
27881
  return;
27796
27882
  }
@@ -27889,12 +27975,12 @@ function CopyInputDisplayedAddress(props) {
27889
27975
  }
27890
27976
 
27891
27977
  // src/components/FunInfoBanner/ChainInfoBanners.tsx
27892
- import { FlagKey as FlagKey22 } from "@funkit/utils";
27978
+ import { FlagKey as FlagKey21 } from "@funkit/utils";
27893
27979
  import React186 from "react";
27894
27980
  var ChainInfoBanners = ({
27895
27981
  chainId
27896
27982
  }) => {
27897
- const chainInfoBanners = useFlag(FlagKey22.ChainInfoBanners);
27983
+ const chainInfoBanners = useFlag(FlagKey21.ChainInfoBanners);
27898
27984
  const chainInfoBannersData = useSafeJSONParse(chainInfoBanners) ?? {};
27899
27985
  try {
27900
27986
  const chainBanners = chainInfoBannersData[chainId] ?? [];
@@ -29178,7 +29264,7 @@ var FiatAccountDetail = {
29178
29264
 
29179
29265
  // src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
29180
29266
  import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
29181
- import React203, { useCallback as useCallback43, useEffect as useEffect51, useMemo as useMemo43, useState as useState64 } from "react";
29267
+ import React203, { useCallback as useCallback43, useEffect as useEffect50, useMemo as useMemo43, useState as useState64 } from "react";
29182
29268
  function useIframeListener(listeners) {
29183
29269
  const handleMessage = useCallback43(
29184
29270
  (event) => {
@@ -29202,7 +29288,7 @@ function useIframeListener(listeners) {
29202
29288
  },
29203
29289
  [listeners]
29204
29290
  );
29205
- useEffect51(() => {
29291
+ useEffect50(() => {
29206
29292
  window.addEventListener("message", handleMessage);
29207
29293
  return () => {
29208
29294
  window.removeEventListener("message", handleMessage);
@@ -29591,7 +29677,7 @@ function FunCheckoutModalHeightAnimationWrapper({
29591
29677
  const animationFrameRef = useRef27(null);
29592
29678
  const resizeObserverRef = useRef27(null);
29593
29679
  const [height, setHeight] = useState66("auto");
29594
- useEffect52(() => {
29680
+ useEffect51(() => {
29595
29681
  if (containerRef.current) {
29596
29682
  resizeObserverRef.current = new ResizeObserver((entries) => {
29597
29683
  animationFrameRef.current = requestAnimationFrame(() => {
@@ -29649,7 +29735,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
29649
29735
  import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
29650
29736
  import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
29651
29737
  import clsx24 from "clsx";
29652
- import React213, { useEffect as useEffect53, useMemo as useMemo44, useRef as useRef28, useState as useState68 } from "react";
29738
+ import React213, { useEffect as useEffect52, useMemo as useMemo44, useRef as useRef28, useState as useState68 } from "react";
29653
29739
  import { Virtuoso } from "react-virtuoso";
29654
29740
  import { useAccount as useAccount7 } from "wagmi";
29655
29741
 
@@ -30192,7 +30278,7 @@ function Home({
30192
30278
  const { checkoutHistoryList, isCheckoutHistoryInited } = useCheckoutHistoryContext();
30193
30279
  const { returnViewPresets } = useActivityTraversal();
30194
30280
  const { animation: tabAnimation, navigateTo } = useAnimatedNavigation(setSelectedView);
30195
- useEffect53(() => {
30281
+ useEffect52(() => {
30196
30282
  const virtuosoDiv = virtuosoParentRef.current?.firstChild;
30197
30283
  virtuosoDiv?.classList.add(animateVirtuosoInClass);
30198
30284
  }, []);
@@ -30949,7 +31035,7 @@ import React231, { useRef as useRef29 } from "react";
30949
31035
  import React229, { useCallback as useCallback47, useMemo as useMemo45, useState as useState72 } from "react";
30950
31036
 
30951
31037
  // src/components/FunConnectOptions/FunConnectResultStep.tsx
30952
- import React224, { useEffect as useEffect54 } from "react";
31038
+ import React224, { useEffect as useEffect53 } from "react";
30953
31039
  var AUTO_CLOSE = 2e3;
30954
31040
  var messageMap = (hasQrCode) => ({
30955
31041
  error: {
@@ -30968,7 +31054,7 @@ var FunConnectResultStep = ({
30968
31054
  qrCodeUri
30969
31055
  }) => {
30970
31056
  const hasAutoclose = type === "success";
30971
- useEffect54(() => {
31057
+ useEffect53(() => {
30972
31058
  if (!hasAutoclose) {
30973
31059
  return;
30974
31060
  }
@@ -31787,7 +31873,7 @@ function ModalProvider({ children }) {
31787
31873
  onConnect: () => closeModals(isUnauthenticated),
31788
31874
  onDisconnect: closeModals
31789
31875
  });
31790
- useEffect55(() => {
31876
+ useEffect54(() => {
31791
31877
  if (isUnauthenticated) {
31792
31878
  closeModals();
31793
31879
  }
@@ -31883,7 +31969,7 @@ function useConnectModal(onClose) {
31883
31969
  const { connectModalOpen, openConnectModal } = useContext16(ModalContext);
31884
31970
  const { isWalletConnectModalOpen } = useWalletConnectOpenState();
31885
31971
  const effectiveConnectModalOpen = connectModalOpen || isWalletConnectModalOpen;
31886
- useEffect55(() => {
31972
+ useEffect54(() => {
31887
31973
  if (!effectiveConnectModalOpen && onClose) {
31888
31974
  onClose();
31889
31975
  }
@@ -31958,7 +32044,7 @@ function FunkitCheckoutProvider({ children }) {
31958
32044
  },
31959
32045
  []
31960
32046
  );
31961
- useEffect56(() => {
32047
+ useEffect55(() => {
31962
32048
  if (isNotNullish8(logoutSymbol)) {
31963
32049
  setActiveCheckout(null);
31964
32050
  }
@@ -32458,7 +32544,7 @@ function useFunkitCheckout(props) {
32458
32544
  const { openWithdrawalModal } = useWithdrawalModal();
32459
32545
  const { connectModalOpen, openConnectModal } = useConnectModal();
32460
32546
  const { isUserLoggedIn } = useGeneralWallet();
32461
- const isCheckoutActivated = useFlag(FlagKey23.IsCheckoutActivated);
32547
+ const isCheckoutActivated = useFlag(FlagKey22.IsCheckoutActivated);
32462
32548
  const onErrorWrapper = useCallback49(
32463
32549
  (payload) => {
32464
32550
  logger.warn(payload.message, payload);
@@ -32564,13 +32650,13 @@ function useFunkitCheckout(props) {
32564
32650
  });
32565
32651
  openWithdrawalModal?.({ withdrawalId, ...config });
32566
32652
  });
32567
- useEffect56(() => {
32653
+ useEffect55(() => {
32568
32654
  if (isUserLoggedIn && pendingCheckoutConfig) {
32569
32655
  setPendingCheckoutConfig(void 0);
32570
32656
  beginCheckout(pendingCheckoutConfig);
32571
32657
  }
32572
32658
  }, [beginCheckout, isUserLoggedIn, pendingCheckoutConfig]);
32573
- useEffect56(() => {
32659
+ useEffect55(() => {
32574
32660
  if (pendingCheckoutConfig && !isUserLoggedIn && !connectModalOpen) {
32575
32661
  setPendingCheckoutConfig(void 0);
32576
32662
  }
@@ -32782,12 +32868,12 @@ async function getTokenDecimals(wagmiConfig, chainId, tokenAddress) {
32782
32868
  if (isNativeTokenAddress(tokenAddress)) {
32783
32869
  return FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO13[chainId]?.nativeCurrency?.decimals || 18;
32784
32870
  }
32785
- if (chainId === solanaChain4.id.toString()) {
32786
- return solanaChain4.nativeCurrency.decimals;
32871
+ if (chainId === solanaChain5.id.toString()) {
32872
+ return solanaChain5.nativeCurrency.decimals;
32787
32873
  }
32788
32874
  const decimals = await readContract(wagmiConfig, {
32789
32875
  address: tokenAddress,
32790
- abi: erc20Abi2,
32876
+ abi: erc20Abi3,
32791
32877
  chainId: Number.parseInt(chainId),
32792
32878
  functionName: "decimals"
32793
32879
  });
@@ -32806,6 +32892,16 @@ async function getTokenDecimals(wagmiConfig, chainId, tokenAddress) {
32806
32892
  }
32807
32893
  }
32808
32894
  }
32895
+ async function getLighterTickSize(wagmiConfig, chainId, assetIndex) {
32896
+ const assetConfig = await readContract(wagmiConfig, {
32897
+ address: LIGHTER_DEPOSIT_ADDRESS,
32898
+ abi: LIGHTER_DEPOSIT_ABI,
32899
+ functionName: "assetConfigs",
32900
+ args: [assetIndex],
32901
+ chainId: Number.parseInt(chainId)
32902
+ });
32903
+ return assetConfig[3];
32904
+ }
32809
32905
  async function evaluateCheckoutGenerateActionsParams(config) {
32810
32906
  if (!config.generateActionsParams) {
32811
32907
  return [];
@@ -32893,7 +32989,7 @@ function computeDisplayDestinationToken(checkoutConfig, displayAssetAmount) {
32893
32989
 
32894
32990
  // src/domains/feeEstimate.ts
32895
32991
  import { mainnet as mainnet10 } from "viem/chains";
32896
- var L1_FEES_ESTIMATE = 5;
32992
+ var L1_FEES_ESTIMATE = 1;
32897
32993
  var L2_FEES_ESTIMATE = 1;
32898
32994
  var BROKERAGE_FEES_ESTIMATE = 0;
32899
32995
  var getBaseFeeUsdEstimate = (targetChainId, assetChainId) => {
@@ -32918,7 +33014,7 @@ function isPreferredChain(chainId, additionalChains = []) {
32918
33014
  base7.id,
32919
33015
  arbitrum5.id,
32920
33016
  optimism.id,
32921
- solanaChain5.id,
33017
+ solanaChain6.id,
32922
33018
  ...additionalChains
32923
33019
  ]);
32924
33020
  return chains.has(chainId);
@@ -32931,6 +33027,7 @@ function isNativeTokenAddress(address) {
32931
33027
  }
32932
33028
  var isPolygonEcosystemToken = (chainId, tokenAddress) => chainId === polygon6.id.toString() && tokenAddress === "0x0000000000000000000000000000000000001010";
32933
33029
  var isAssetUsableToPayForCheckout = ({
33030
+ apiKey,
32934
33031
  config,
32935
33032
  payerAddress,
32936
33033
  paymentMethod,
@@ -32995,7 +33092,16 @@ var isAssetUsableToPayForCheckout = ({
32995
33092
  minUsdRequired: minValueThreshold + feeEstimate
32996
33093
  };
32997
33094
  }
32998
- const isSupported = isAllowedForCheckout && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO14[assetChainId]?.isCheckoutSupported;
33095
+ let isSupported = isAllowedForCheckout && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO14[assetChainId]?.isCheckoutSupported;
33096
+ const isLighterEth = isLighterEthSpot(apiKey, config);
33097
+ if (isSupported && isLighterEth) {
33098
+ isSupported = isTokenEquivalent7({
33099
+ firstTokenChainId: assetChainId,
33100
+ firstTokenAddress: assetTokenAddress,
33101
+ secondTokenChainId: mainnet11.id.toString(),
33102
+ secondTokenAddress: NATIVE_TOKEN
33103
+ });
33104
+ }
32999
33105
  return {
33000
33106
  isUsable: !!isSupported,
33001
33107
  reason: !isSupported ? t("payment.unsupported") : ""
@@ -33422,7 +33528,7 @@ function ConnectButton({
33422
33528
  const connectionStatus = useConnectionStatus();
33423
33529
  const { setShowBalance } = useShowBalance();
33424
33530
  const [ready, setReady] = useState75(false);
33425
- useEffect57(() => {
33531
+ useEffect56(() => {
33426
33532
  setShowBalance(showBalance);
33427
33533
  if (!ready) {
33428
33534
  setReady(true);
@@ -33925,9 +34031,9 @@ function cssStringFromTheme(theme, options = {}) {
33925
34031
  }
33926
34032
 
33927
34033
  // src/hooks/useFunkitMaxCheckoutUsdInfo.ts
33928
- import { FlagKey as FlagKey24, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
34034
+ import { FlagKey as FlagKey23, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
33929
34035
  var useFunkitMaxCheckoutUsdInfo = () => {
33930
- const maxCheckoutUsd = Number(useFlag(FlagKey24.MaxCheckoutUsd));
34036
+ const maxCheckoutUsd = Number(useFlag(FlagKey23.MaxCheckoutUsd));
33931
34037
  const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify16(maxCheckoutUsd, {
33932
34038
  decimalPrecisionForSuffix: 0,
33933
34039
  minimumSignificantDigits: 0,
@@ -34044,6 +34150,8 @@ var en_default = {
34044
34150
  checkout: {
34045
34151
  noAvailableTokens: "No available tokens",
34046
34152
  noAvailableTokensMessage: "You don't have any crypto tokens in your wallet. Top up or transfer crypto to your wallet to continue.",
34153
+ insufficientEth: "Insufficient ETH",
34154
+ insufficientEthMessage: "You don't have enough mainnet ETH in your wallet. You need at least 0.001 ETH to continue.",
34047
34155
  topUpWallet: "Top up wallet",
34048
34156
  refundProcessing: "Funds were withdrawn, but the transaction didn't complete. A refund is being processed.",
34049
34157
  orderRefunded: "Your order was refunded.",
@@ -34117,7 +34225,6 @@ var en_default = {
34117
34225
  fiveMinutes: "5 min"
34118
34226
  },
34119
34227
  common: {
34120
- privyIframeTitle: "Privy",
34121
34228
  haveQuestions: "Have questions?",
34122
34229
  getHelp: "Get help",
34123
34230
  depositsLive: "{{tokenName}} deposits are live!",
@@ -34148,16 +34255,11 @@ var en_default = {
34148
34255
  tryAgain: "Try again",
34149
34256
  getStarted: "Get started",
34150
34257
  back: "Back",
34151
- accountTypeEmail: "Email",
34152
- accountTypeTwitter: "Twitter ID",
34153
- accountTypeApple: "Apple ID",
34154
- accountTypeFarcaster: "Farcaster ID",
34155
34258
  close: "Close",
34156
34259
  copyAddress: "Copy address",
34157
34260
  copied: "Copied",
34158
34261
  auto: "Auto",
34159
- comingSoon: "Coming Soon",
34160
- or: "or"
34262
+ comingSoon: "Coming Soon"
34161
34263
  },
34162
34264
  disclaimer: {
34163
34265
  terms: "terms",
@@ -34170,13 +34272,7 @@ var en_default = {
34170
34272
  },
34171
34273
  connect: {
34172
34274
  confirmWalletOwnership: "Click sign in to confirm you own this wallet.",
34173
- connectWallet: "Connect wallet",
34174
- enterConfirmationCode: "Enter confirmation code",
34175
- checkEmailForCode: "Please check {{email}} for an email from {{authProvider}} and enter your code below.",
34176
- enterYourEmail: "Enter your email",
34177
- submit: "Submit",
34178
- openWarpcast: "Open Warpcast",
34179
- warpcastLink: "Warpcast Link"
34275
+ connectWallet: "Connect wallet"
34180
34276
  },
34181
34277
  selectAsset: {
34182
34278
  yourTokens: "Your tokens",
@@ -34554,6 +34650,8 @@ var es_default = {
34554
34650
  checkout: {
34555
34651
  noAvailableTokens: "No hay tokens disponibles",
34556
34652
  noAvailableTokensMessage: "No tienes ning\xFAn token cripto en tu billetera. Recarga o transfiere cripto a tu billetera para continuar.",
34653
+ insufficientEth: "ETH insuficiente",
34654
+ insufficientEthMessage: "No tienes suficiente ETH de mainnet en tu billetera. Necesitas al menos 0.001 ETH para continuar.",
34557
34655
  topUpWallet: "Recargar billetera",
34558
34656
  refundProcessing: "Los fondos fueron retirados, pero la transacci\xF3n no se complet\xF3. Se est\xE1 procesando un reembolso.",
34559
34657
  orderRefunded: "Tu pedido fue reembolsado.",
@@ -34627,7 +34725,6 @@ var es_default = {
34627
34725
  fiveMinutes: "5 min"
34628
34726
  },
34629
34727
  common: {
34630
- privyIframeTitle: "Privy",
34631
34728
  haveQuestions: "\xBFTienes preguntas?",
34632
34729
  getHelp: "Obtener ayuda",
34633
34730
  depositsLive: "\xA1Los dep\xF3sitos de {{tokenName}} est\xE1n activos!",
@@ -34658,16 +34755,11 @@ var es_default = {
34658
34755
  tryAgain: "Intentar nuevamente",
34659
34756
  getStarted: "Comenzar",
34660
34757
  back: "Atr\xE1s",
34661
- accountTypeEmail: "Email",
34662
- accountTypeTwitter: "ID de Twitter",
34663
- accountTypeApple: "ID de Apple",
34664
- accountTypeFarcaster: "ID de Farcaster",
34665
34758
  close: "Cerrar",
34666
34759
  copyAddress: "Copiar direcci\xF3n",
34667
34760
  copied: "Copiado",
34668
34761
  auto: "Auto",
34669
- comingSoon: "Pr\xF3ximamente",
34670
- or: "o"
34762
+ comingSoon: "Pr\xF3ximamente"
34671
34763
  },
34672
34764
  disclaimer: {
34673
34765
  terms: "t\xE9rminos",
@@ -34680,13 +34772,7 @@ var es_default = {
34680
34772
  },
34681
34773
  connect: {
34682
34774
  confirmWalletOwnership: "Haz clic en iniciar sesi\xF3n para confirmar que eres due\xF1o de esta billetera.",
34683
- connectWallet: "Conectar billetera",
34684
- enterConfirmationCode: "Ingresa el c\xF3digo de confirmaci\xF3n",
34685
- checkEmailForCode: "Por favor revisa {{email}} para un correo de {{authProvider}} e ingresa tu c\xF3digo a continuaci\xF3n.",
34686
- enterYourEmail: "Ingresa tu email",
34687
- submit: "Enviar",
34688
- openWarpcast: "Abrir Warpcast",
34689
- warpcastLink: "Enlace de Warpcast"
34775
+ connectWallet: "Conectar billetera"
34690
34776
  },
34691
34777
  selectAsset: {
34692
34778
  yourTokens: "Tus tokens",
@@ -35059,11 +35145,513 @@ var es_default = {
35059
35145
  }
35060
35146
  };
35061
35147
 
35148
+ // src/locales/translations/fr.json
35149
+ var fr_default = {
35150
+ checkout: {
35151
+ noAvailableTokens: "Aucun actif disponible",
35152
+ noAvailableTokensMessage: "Vous n'avez aucun actif dans votre portefeuille. Approvisionnez ou transf\xE9rez des cryptomonnaies vers votre portefeuille pour continuer.",
35153
+ insufficientEth: "ETH insuffisant",
35154
+ insufficientEthMessage: "Vous n'avez pas assez d'ETH mainnet dans votre portefeuille. Vous avez besoin d'au moins 0,001 ETH pour continuer.",
35155
+ topUpWallet: "Approvisionner le portefeuille",
35156
+ refundProcessing: "Les fonds ont \xE9t\xE9 d\xE9bit\xE9s, mais la transaction n'a pas abouti. Un remboursement est en cours.",
35157
+ orderRefunded: "Votre commande a \xE9t\xE9 rembours\xE9e.",
35158
+ walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
35159
+ connectWalletLabelTemplate: "Connecter {{walletLabel}}"
35160
+ },
35161
+ inputAmount: {
35162
+ availableBalanceTooltip: "Votre solde disponible apr\xE8s frais",
35163
+ availableBalance: "{{amount}} disponibles\xA0\xA0\u24D8",
35164
+ insufficientBalanceSelectAnother: "Solde insuffisant. Veuillez s\xE9lectionner un autre actif.",
35165
+ depositMaxBalance: "D\xE9poser le solde maximum",
35166
+ updateOrder: "Mettre \xE0 jour la commande",
35167
+ insufficientBalance: "Solde insuffisant",
35168
+ maximumDeposit: "D\xE9p\xF4t maximum de {{amount}}",
35169
+ minimumDeposit: "D\xE9p\xF4t minimum de {{amount}}",
35170
+ amountBelowMinimum: "Montant inf\xE9rieur au minimum",
35171
+ amountAboveMaximum: "Montant sup\xE9rieur au maximum",
35172
+ inputAmountGreaterThan: "Saisissez un montant sup\xE9rieur \xE0 {{limit}}.",
35173
+ inputAmountLowerThan: "Saisissez un montant inf\xE9rieur \xE0 {{limit}}.",
35174
+ unableToRetrieveBalance: "Impossible d'obtenir le solde de votre compte. Essayez de reconnecter votre compte.",
35175
+ unableFetchPrice: "Impossible d'obtenir le prix de l'actif. Veuillez r\xE9essayer.",
35176
+ quickOptionsPercent: "{{percent}}%",
35177
+ quickOptionsMax: "Max"
35178
+ },
35179
+ postCheckout: {
35180
+ signatureDeclined: "Signature refus\xE9e. Veuillez confirmer \xE0 nouveau la commande pour r\xE9essayer.",
35181
+ unableToSwitchChains: "Impossible de changer de cha\xEEne. Assurez-vous que votre portefeuille prend en charge cette cha\xEEne.",
35182
+ errorFundingCheckout: "Une erreur s'est produite lors du financement du paiement.",
35183
+ insufficientBalance: "Solde insuffisant.",
35184
+ insufficientAmount: "Montant insuffisant.",
35185
+ errorFundingCheckoutMessage: "Une erreur s'est produite lors du financement du paiement.<br />Veuillez r\xE9essayer ou <ContactSupportLink>contacter le support</ContactSupportLink> pour obtenir de l'aide.",
35186
+ genericErrorMessage: "Une erreur s'est produite. Veuillez r\xE9essayer."
35187
+ },
35188
+ checkoutConfirmation: {
35189
+ quoteExpired: "Cotation expir\xE9e. Veuillez confirmer la nouvelle cotation.",
35190
+ riskErrorMessage: "D\xE9sol\xE9, le paiement {{orgName}} ne peut pas continuer pour des raisons de s\xE9curit\xE9.",
35191
+ signatureDeclined: "Signature refus\xE9e. Veuillez confirmer \xE0 nouveau la commande pour r\xE9essayer.",
35192
+ unableToSwitchChains: "Impossible de changer de cha\xEEne. Assurez-vous que votre portefeuille prend en charge cette cha\xEEne.",
35193
+ walletClientUndefined: "La connexion de votre portefeuille n'a pas r\xE9ussi. Veuillez r\xE9essayer.",
35194
+ genericErrorMessage: "Une erreur s'est produite lors du paiement. Veuillez r\xE9essayer.",
35195
+ confirmOrder: "Confirmer la commande",
35196
+ regeneratingQuote: "R\xE9g\xE9n\xE9ration de la cotation...",
35197
+ depositMaxBalance: "D\xE9poser le montant maximum",
35198
+ retry: "R\xE9essayer",
35199
+ preparingOrderData: "Pr\xE9paration des donn\xE9es de commande...",
35200
+ confirmingOrder: "Confirmation de la commande",
35201
+ confirmNetworkSwitch: "Confirmer le changement de r\xE9seau",
35202
+ waitingForSignature: "En attente de signature",
35203
+ waitingForConfirmation: "En attente de confirmation",
35204
+ signMessage: "Signer le message",
35205
+ confirmTokenTransfer: "Confirmer le transfert de {{tokenSymbol}}",
35206
+ estimateDisclaimer: "Le montant que vous recevrez est une estimation bas\xE9e sur l'heure actuelle et peut diff\xE9rer lors du traitement de la transaction."
35207
+ },
35208
+ funCheckoutBlocked: {
35209
+ geoblock: "D\xE9sol\xE9, le paiement {{orgName}} n'est pas disponible dans votre r\xE9gion.",
35210
+ security: 'D\xE9sol\xE9, le paiement {{orgName}} ne peut pas continuer pour des raisons de s\xE9curit\xE9. Si vous pensez avoir re\xE7u ce message par erreur, veuillez <ContactSupportLink text="contacter le support" />.'
35211
+ },
35212
+ payment: {
35213
+ depositWithPayPal: "D\xE9poser avec PayPal",
35214
+ depositWithCard: "D\xE9poser avec carte",
35215
+ fetchingBalance: "Lecture du solde...",
35216
+ couldntFetchBalance: "Impossible d'obtenir le solde",
35217
+ lowBalance: "Solde insuffisant",
35218
+ notApplicable: "Non applicable",
35219
+ unsupported: "Non pris en charge",
35220
+ disclaimerText: "{{limit}} \u2022 {{time}}",
35221
+ instant: "Instantan\xE9",
35222
+ noLimit: "Pas de limite",
35223
+ fiftyThousandDollars: "$50,000",
35224
+ tenThousandDollars: "$10,000",
35225
+ fiveMinutes: "5 min"
35226
+ },
35227
+ common: {
35228
+ haveQuestions: "Vous avez des questions ?",
35229
+ getHelp: "Obtenir de l'aide",
35230
+ depositsLive: "Les d\xE9p\xF4ts {{tokenName}} sont disponibles !",
35231
+ tryNow: "Essayer maintenant",
35232
+ experiencingProblemsFull: "Vous rencontrez des probl\xE8mes ? <HelpLink>Obtenir de l'aide.</HelpLink>",
35233
+ estimatedTime: "Temps estim\xE9",
35234
+ somethingWentWrong: "Une erreur s'est produite.",
35235
+ allChains: "Toutes les cha\xEEnes",
35236
+ token: "Actif",
35237
+ tokenNotSupportedOnChain: "{{tokenName}} n'est pas pris en charge sur cette cha\xEEne",
35238
+ searchTokens: "Rechercher des actifs",
35239
+ noResultsFound: "Aucun r\xE9sultat trouv\xE9",
35240
+ button: "Bouton",
35241
+ recent: "R\xE9cent",
35242
+ connected: "Connect\xE9",
35243
+ switching: "Changement en cours",
35244
+ confirmInWallet: "Confirmer dans le portefeuille",
35245
+ haveQuestionsGetHelp: "Vous avez des questions ? <GetHelpLink>Obtenir de l'aide</GetHelpLink>",
35246
+ depositsLiveTryNow: "Les d\xE9p\xF4ts {{tokenName}} sont disponibles ! <TryNowLink>Essayer maintenant</TryNowLink>",
35247
+ estimatedGas: "Gaz estim\xE9",
35248
+ processingTime: "Temps de traitement :",
35249
+ learnMore: "En savoir plus",
35250
+ continue: "Continuer",
35251
+ pleaseTryAgainLater: "Veuillez r\xE9essayer plus tard.",
35252
+ noOptionsFound: "Aucune option trouv\xE9e.",
35253
+ seeLess: "Voir moins",
35254
+ moreDetails: "Plus de d\xE9tails",
35255
+ tryAgain: "R\xE9essayer",
35256
+ getStarted: "Commencer",
35257
+ back: "Retour",
35258
+ close: "Fermer",
35259
+ copyAddress: "Copier l'adresse",
35260
+ copied: "Copi\xE9e",
35261
+ auto: "Auto",
35262
+ comingSoon: "Prochainement"
35263
+ },
35264
+ disclaimer: {
35265
+ terms: "conditions",
35266
+ cardDisclaimer: "Cette transaction se d\xE9roule en deux \xE9tapes. MoonPay alimente uniquement votre achat de {{depositToken}} ({{sourceChainName}}) que {{orgName}} {{tokenActionDescription}} ensuite.",
35267
+ tokenActionProcesses: "traite pour votre paiement",
35268
+ tokenActionConverts: "convertit en {{finalConvertedAssetName}} ({{toChainName}})",
35269
+ katanaEarn: "{{cardDisclaimer}}En cliquant sur {{continueText}}, vous acceptez les <TermsLink>conditions</TermsLink> de {{orgName}}, les <KatanaTermsLink>conditions</KatanaTermsLink> de Katana et les <YearnTermsLink>conditions</YearnTermsLink> applicables aux vaults tiers Yearn.",
35270
+ katana: "{{cardDisclaimer}}En cliquant sur {{continueText}}, vous acceptez les <TermsLink>conditions</TermsLink> de {{orgName}}, les <KatanaTermsLink>conditions</KatanaTermsLink> de Katana et Vaultbridge et les <MorphoTermsLink>conditions</MorphoTermsLink> applicables aux vaults tiers Morpho.",
35271
+ default: "{{cardDisclaimer}}En cliquant sur {{continueText}}, vous acceptez nos <TermsLink>conditions</TermsLink>."
35272
+ },
35273
+ connect: {
35274
+ confirmWalletOwnership: "Cliquez sur se connecter pour confirmer que vous \xEAtes propri\xE9taire de ce portefeuille.",
35275
+ connectWallet: "Connecter le portefeuille"
35276
+ },
35277
+ selectAsset: {
35278
+ yourTokens: "Vos actifs",
35279
+ lowBalanceTooltip: "Minimum requis : {{amount}}"
35280
+ },
35281
+ transferToken: {
35282
+ noLimit: "Pas de limite",
35283
+ receiveToken: "Devise re\xE7ue",
35284
+ supportedToken: "Devise prise en charge",
35285
+ supportedChain: "Cha\xEEne compatible",
35286
+ min: "Min",
35287
+ minAmount: "Min {{currency}}{{amount}}",
35288
+ minDepositAmountTooltip: "Montant de d\xE9p\xF4t minimum requis pour la cha\xEEne s\xE9lectionn\xE9e.",
35289
+ yourDepositAddress: "Votre adresse de d\xE9p\xF4t",
35290
+ termsApply: "Conditions applicables",
35291
+ depositAddressOriginalRecipient: "Envoyez n'importe quelle devise prise en charge \xE0 cette adresse",
35292
+ depositAddressUniversal: "Envoyez n'importe quelle devise prise en charge \xE0 cette adresse et elle sera automatiquement \xE9chang\xE9e contre {{targetToken}} dans votre compte"
35293
+ },
35294
+ transaction: {
35295
+ delayed: "Transaction lente",
35296
+ delayedDescription: "La transaction prend un peu plus de temps que pr\xE9vu.<br /><ContactSupportLink>Contactez-nous</ContactSupportLink> pour plus de d\xE9tails.",
35297
+ error: "Erreur de transaction",
35298
+ failedDescription: "Veuillez r\xE9essayer ou <ContactSupportLink>contacter le support</ContactSupportLink> si le probl\xE8me persiste.",
35299
+ pending: "Transaction en attente...",
35300
+ withdrawalSuccessful: "Retrait r\xE9ussi",
35301
+ withdrawalSuccessfulDescription: "Vos fonds ont \xE9t\xE9 retir\xE9s avec succ\xE8s.",
35302
+ depositSuccessful: "D\xE9p\xF4t r\xE9ussi",
35303
+ depositSuccessfulDescription: "Vos fonds ont \xE9t\xE9 d\xE9pos\xE9s avec succ\xE8s.",
35304
+ depositReceivedPending: "D\xE9p\xF4t re\xE7u et en attente...",
35305
+ depositCompleted: "D\xE9p\xF4t termin\xE9",
35306
+ didntComplete: "Non termin\xE9",
35307
+ depositReceivedProcessing: "D\xE9p\xF4t re\xE7u et en cours de traitement...",
35308
+ depositWillBeCredited: "Votre d\xE9p\xF4t sera cr\xE9dit\xE9 sur votre compte sous peu.",
35309
+ depositHasBeenCredited: "Votre d\xE9p\xF4t a \xE9t\xE9 cr\xE9dit\xE9 sur votre compte.",
35310
+ depositRefundedOrReprocessed: "Votre d\xE9p\xF4t a \xE9t\xE9 rembours\xE9 ou trait\xE9 \xE0 nouveau. N'h\xE9sitez pas \xE0 nous contacter pour une mise \xE0 jour.",
35311
+ issueOccurredWithDeposit: "Un probl\xE8me est survenu lors de votre d\xE9p\xF4t. Veuillez r\xE9essayer.",
35312
+ depositDidntCompleteFull: `Votre d\xE9p\xF4t n'a pas abouti. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35313
+ depositDelayedFundsSafeFull: `Votre d\xE9p\xF4t est retard\xE9 mais les fonds sont en s\xE9curit\xE9. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35314
+ depositExpired: "D\xE9p\xF4t expir\xE9",
35315
+ depositDidntCompleteError: "Votre d\xE9p\xF4t n'a pas abouti en raison d'une erreur.",
35316
+ depositDidntCompleteFundsSafe: "Votre d\xE9p\xF4t n'a pas abouti. Vos fonds sont en s\xE9curit\xE9 et votre commande sera trait\xE9e sous peu. N'h\xE9sitez pas \xE0 nous contacter pour une mise \xE0 jour.",
35317
+ depositBeingProcessedFull: `Votre d\xE9p\xF4t est en cours de traitement. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35318
+ transactionDelayedFundsSafeFull: `La transaction a \xE9t\xE9 retard\xE9e mais vos fonds sont en s\xE9curit\xE9. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35319
+ submittingTransaction: "Soumission de la transaction...",
35320
+ fillingTransactionOnBlockchain: "Ex\xE9cution de votre transaction sur la blockchain.",
35321
+ withdrawingFromAccount: "Retrait de votre compte...",
35322
+ fundsWillArriveInDuration: "Vos fonds arriveront dans quelques {{durationUnits}}.",
35323
+ depositingIntoAccount: "D\xE9p\xF4t sur votre compte...",
35324
+ willTakeDurationToFinalize: "Il faudra quelques {{durationUnits}} pour {{finalizeVerb}}.",
35325
+ waitingForExchangeToSendFunds: "En attente de l'envoi des fonds par {{exchangeName}}...",
35326
+ fundsAreSafeCanClose: "Vos fonds sont en s\xE9curit\xE9. Vous pouvez fermer cette fen\xEAtre.",
35327
+ contactUs: "Nous contacter",
35328
+ minutes: "minutes",
35329
+ seconds: "secondes",
35330
+ finalize: "finaliser",
35331
+ credit: "cr\xE9diter"
35332
+ },
35333
+ katanaBridge: {
35334
+ highCostsMessage: "Co\xFBts \xE9lev\xE9s ? Essayez <KatanaBridgeLink></KatanaBridgeLink>, plus lent mais moins cher pour le m\xEAme actif.",
35335
+ katanaNativeBridge: "Pont natif de Katana"
35336
+ },
35337
+ badge: {
35338
+ unsuccessful: "\xC9chou\xE9",
35339
+ approved: "Approuv\xE9",
35340
+ incomplete: "Incomplet",
35341
+ pending: "En attente",
35342
+ disabled: "D\xE9sactiv\xE9",
35343
+ failed: "\xC9chou\xE9",
35344
+ unknown: "Inconnu",
35345
+ native: "Natif",
35346
+ sameAsset: "M\xEAme actif",
35347
+ new: "NOUVEAU",
35348
+ icon: "ic\xF4ne de badge"
35349
+ },
35350
+ checkoutHistory: {
35351
+ processing: "En cours",
35352
+ incomplete: "Incomplet",
35353
+ expired: "Expir\xE9",
35354
+ successful: "R\xE9ussi",
35355
+ refunded: "Rembours\xE9",
35356
+ pending: "En attente",
35357
+ fillStatus: "Statut d'ex\xE9cution",
35358
+ totalTime: "Temps total",
35359
+ youReceive: "Vous recevez",
35360
+ moreDetails: "Plus de d\xE9tails",
35361
+ depositAddress: "Adresse de d\xE9p\xF4t",
35362
+ orderSubmitted: "Commande soumise",
35363
+ orderReceived: "Commande re\xE7ue",
35364
+ orderFilled: "Commande ex\xE9cut\xE9e",
35365
+ orderFailed: "Commande \xE9chou\xE9e",
35366
+ orderExpired: "Commande expir\xE9e",
35367
+ newDeposit: "Nouveau d\xE9p\xF4t",
35368
+ newWithdrawal: "Nouveau retrait",
35369
+ orderDelayedTechnicalIssues: "Votre commande a \xE9t\xE9 retard\xE9e en raison de probl\xE8mes techniques. {{orgName}} vous tiendra inform\xE9.",
35370
+ completed: "Termin\xE9",
35371
+ failed: "\xC9chou\xE9"
35372
+ },
35373
+ profile: {
35374
+ executeFirstCheckout: "Effectuez votre premier paiement sur {{appName}}",
35375
+ tokensTab: "Actifs",
35376
+ checkoutsTab: "Paiements",
35377
+ getHelp: "Obtenir de l'aide",
35378
+ address: "Adresse",
35379
+ disconnect: "D\xE9connecter"
35380
+ },
35381
+ withdrawal: {
35382
+ signatureDenied: "Signature refus\xE9e. Veuillez retirer pour r\xE9essayer",
35383
+ quoteError: "\xC9chec de la g\xE9n\xE9ration de la cotation. Veuillez r\xE9essayer.",
35384
+ amountTooLow: "Montant trop faible. Minimum de $1 requis.",
35385
+ chainDisabled: "R\xE9seau indisponible. Changez de r\xE9seau ou r\xE9essayez plus tard.",
35386
+ forbidden: "Acc\xE8s restreint. Compl\xE9tez la v\xE9rification pour continuer.",
35387
+ insufficientFunds: "Fonds insuffisants. R\xE9duisez le montant et r\xE9essayez.",
35388
+ insufficientLiquidity: "Liquidit\xE9 de l'actif faible. R\xE9duisez le montant ou essayez avec un autre actif.",
35389
+ invalidAddress: "Adresse de portefeuille invalide. V\xE9rifiez l'adresse et r\xE9essayez.",
35390
+ invalidInputCurrency: "Actif d'entr\xE9e non pris en charge. V\xE9rifiez l'adresse et r\xE9essayez.",
35391
+ invalidOutputCurrency: "Actif de sortie non pris en charge. V\xE9rifiez l'adresse et r\xE9essayez.",
35392
+ invalidSlippageTolerance: "Valeur de slippage invalide. Doit \xEAtre un nombre entier.",
35393
+ noInternalSwapRoutesFound: "Route indisponible. Essayez avec une autre paire d'actifs.",
35394
+ noQuotes: "Cotation indisponible. R\xE9essayez avec un montant ou actif diff\xE9rent.",
35395
+ noSwapRoutesFound: "Route indisponible. R\xE9essayez avec un montant ou actif diff\xE9rent.",
35396
+ routeTemporarilyRestricted: "Route temporairement indisponible. R\xE9essayez plus tard.",
35397
+ sanctionedCurrency: "Devise restreinte. S\xE9lectionnez un autre actif.",
35398
+ sanctionedWalletAddress: "Adresse bloqu\xE9e. Contactez le support pour examen.",
35399
+ swapImpactTooHigh: "Impact de l'\xE9change \xE9lev\xE9. Choisissez un autre actif ou r\xE9duisez le montant.",
35400
+ unauthorized: "Connectez le portefeuille pour continuer.",
35401
+ unsupportedChain: "Cha\xEEne non prise en charge. Changez de cha\xEEne et r\xE9essayez.",
35402
+ unsupportedCurrency: "Devise non prise en charge. Changez de devise et r\xE9essayez.",
35403
+ unsupportedExecutionType: "M\xE9thode de transaction non prise en charge. S\xE9lectionnez une autre m\xE9thode.",
35404
+ unsupportedRoute: "Paire d'actifs non prises en charge. Essayez des actifs diff\xE9rents.",
35405
+ userRecipientMismatch: "L'exp\xE9diteur et le destinataire doivent correspondre. V\xE9rifiez les adresses.",
35406
+ destinationTxFailed: "Transaction \xE9chou\xE9e. R\xE9essayez ou contactez le support.",
35407
+ erc20RouterAddressNotFound: "Une erreur s'est produite. Essayez une devise diff\xE9rente ou contactez le support.",
35408
+ unknownError: "Une erreur s'est produite. R\xE9essayez ou contactez le support.",
35409
+ swapQuoteFailed: "\xC9chec de la cotation. R\xE9essayez ou contactez le support.",
35410
+ permitFailed: "\xC9chec de la signature. Essayez de signer \xE0 nouveau ou reconnectez le portefeuille.",
35411
+ confirmingQuote: "Confirmation de la commande",
35412
+ processing: "Traitement en cours",
35413
+ enterRecipientAddress: "Entrez l'adresse du destinataire",
35414
+ unsupportedRecipientAddress: "Adresse du destinataire non prise en charge",
35415
+ enterWithdrawAmount: "Entrez le montant du retrait",
35416
+ enterValidAddress: "Entrez une adresse {{chainName}} valide",
35417
+ withdraw: "Retirer",
35418
+ ensureAddressSupportsToken: "Assurez-vous que l'adresse prend en charge la r\xE9ception de {{token}} sur {{chainName}}.",
35419
+ ensureAddressSupportsTokenNoChain: "Assurez-vous que l'adresse prend en charge la r\xE9ception de {{token}}.",
35420
+ failedToFetchAssetPrice: "Impossible d'obtenir le prix de l'actif",
35421
+ receiveToken: "Devise re\xE7ue",
35422
+ receiveChain: "Cha\xEEne de r\xE9ception",
35423
+ youWillReceive: "Vous recevrez",
35424
+ usdceWarning: "<strong>USDCe n'est pas pris en charge par la plupart des exchanges.</strong><br />L'envoi d'USDCe vers une plateforme ne le prenant pas en charge peut entra\xEEner une perte permanente de fonds. V\xE9rifiez toujours la compatibilit\xE9 des cryptomonnaies avant de transf\xE9rer.",
35425
+ recipientAddress: "Adresse du destinataire",
35426
+ invalidWalletAddress: "Adresse de portefeuille invalide",
35427
+ useConnected: "Utiliser connect\xE9",
35428
+ walletAddressRestricted: "Cette adresse de portefeuille ne peut pas \xEAtre utilis\xE9e en raison de restrictions.",
35429
+ amount: "Montant",
35430
+ insufficientBalance: "Solde insuffisant",
35431
+ minimumWithdrawAmount: "Le montant minimum de retrait est de {{amount}}",
35432
+ max: "Max",
35433
+ balance: "Solde : {{amount}} {{symbol}}"
35434
+ },
35435
+ directExecution: {
35436
+ fillStatus: "Statut d'ex\xE9cution",
35437
+ totalTime: "Temps total",
35438
+ moreDetails: "Plus de d\xE9tails",
35439
+ withdrawalTx: "Transaction de retrait",
35440
+ depositTx: "Transaction de d\xE9p\xF4t",
35441
+ completionTx: "Transaction de finalisation",
35442
+ orderSubmitted: "Commande soumise",
35443
+ orderStatus: "Commande {{status}}",
35444
+ statusFailed: "\xE9chou\xE9e",
35445
+ statusRefunded: "rembours\xE9e",
35446
+ statusFilled: "ex\xE9cut\xE9e"
35447
+ },
35448
+ directExecutionNotif: {
35449
+ depositTransactionInitiated: "Transaction de d\xE9p\xF4t initi\xE9e",
35450
+ depositCompletedNotification: "Vous recevrez une notification ici une fois le d\xE9p\xF4t termin\xE9.",
35451
+ withdrawalTransactionInitiated: "Transaction de retrait initi\xE9e",
35452
+ withdrawalCompletedNotification: "Vous recevrez une notification ici une fois le retrait termin\xE9."
35453
+ },
35454
+ fees: {
35455
+ cardProcessingFee: "Frais de traitement de carte",
35456
+ cardProcessingFeeTooltip: "Frais factur\xE9s par le fournisseur de carte pour le traitement de votre transaction.",
35457
+ moonpayCost: "Co\xFBt MoonPay",
35458
+ moonpayCostTooltip: "Frais factur\xE9s par MoonPay pour le traitement de votre transaction.",
35459
+ exchangeProcessingFee: "Frais de traitement d'exchange",
35460
+ exchangeProcessingFeeTooltip: "Frais factur\xE9s par l'exchange pour le traitement de votre transaction.",
35461
+ receiveAtLeast: "Vous recevrez au moins",
35462
+ exchangeRate: "Taux de change",
35463
+ networkCost: "Frais de r\xE9seau",
35464
+ totalCost: "Co\xFBt total",
35465
+ sourceChainGas: "Gaz de la cha\xEEne source",
35466
+ destinationChainGas: "Gaz de la cha\xEEne de destination",
35467
+ priceImpact: "Impact sur le prix",
35468
+ totalImpact: "Impact total",
35469
+ swapImpact: "Impact de l'\xE9change",
35470
+ funxyzFee: "Frais Fun.xyz",
35471
+ swapFee: "Frais d'\xE9change",
35472
+ instantLiquidityCost: "Co\xFBt de liquidit\xE9 instantan\xE9e",
35473
+ maxSlippage: "Slippage maximum",
35474
+ autoSlippageValue: "Auto \u2022 {{value}}",
35475
+ slippageTooltip: "Le slippage se produit en raison des changements de prix pendant l'ex\xE9cution de la transaction.",
35476
+ slippageTooltipWithMin: "Le slippage se produit en raison des changements de prix pendant l'ex\xE9cution de la transaction. Minimum re\xE7u : {{minReceived}}",
35477
+ marketMakerGasCosts: "Co\xFBts de gaz du teneur de march\xE9",
35478
+ marketMakerGasCostsTooltip: "Co\xFBt du traitement de la commande sur la blockchain, incluant le gaz et le routage requis.",
35479
+ lpCost: "Co\xFBt LP",
35480
+ lpCostTooltip: "Factur\xE9 pour couvrir les co\xFBts de fourniture de liquidit\xE9 sur la blockchain.",
35481
+ yourGasCosts: "Vos frais de gaz",
35482
+ yourGasCostsTooltip: "Montant pay\xE9 pour envoyer des actifs \xE0 votre adresse de d\xE9p\xF4t.",
35483
+ transactionBreakdown: "D\xE9tail de la transaction",
35484
+ priceImpactTooltip: "L'impact sur le prix est la diff\xE9rence entre le prix attendu et le prix d'ex\xE9cution, due \xE0 la taille de la transaction et \xE0 la liquidit\xE9.<br /><br />Le co\xFBt final peut varier en fonction des conditions du r\xE9seau. Les co\xFBts sont r\xE9duits pour les montants plus \xE9lev\xE9s. <LearnMoreLink>En savoir plus</LearnMoreLink> sur la r\xE9partition des prix.",
35485
+ slippageTooltipFull: "Le slippage tient compte des changements de prix pendant l'ex\xE9cution. Le slippage est ajust\xE9 par paire pour garantir une ex\xE9cution fiable.<br /><br />Le co\xFBt final peut varier en fonction des conditions du r\xE9seau. Les co\xFBts sont r\xE9duits pour les montants plus \xE9lev\xE9s. <LearnMoreLink>En savoir plus</LearnMoreLink> sur la r\xE9partition des prix."
35486
+ },
35487
+ paymentRoute: {
35488
+ wallet: "Portefeuille",
35489
+ source: "Source",
35490
+ destination: "Destination"
35491
+ },
35492
+ virtualFiatAccount: {
35493
+ walletAddressNotAvailable: "L'adresse du portefeuille n'est pas disponible",
35494
+ incorrectEmailFormat: "Format d'email incorrect",
35495
+ emailAlreadyInUse: "L'adresse email est d\xE9j\xE0 utilis\xE9e",
35496
+ firstName: "Pr\xE9nom",
35497
+ firstNamePlaceholder: "Jean",
35498
+ lastName: "Nom",
35499
+ lastNamePlaceholder: "Dupont",
35500
+ email: "Email",
35501
+ emailPlaceholder: "nom@email.com",
35502
+ consentText: 'Cette application utilise Bridge pour connecter des comptes de mani\xE8re s\xE9curis\xE9e et d\xE9placer des fonds. En cliquant sur "Accepter", vous acceptez les <TosLink></TosLink> et la <PrivacyLink></PrivacyLink> de Bridge',
35503
+ continue: "Continuer",
35504
+ accountNumber: "Num\xE9ro de compte",
35505
+ routingNumber: "Num\xE9ro de routage",
35506
+ iban: "IBAN",
35507
+ swiftBic: "SWIFT / BIC",
35508
+ accountHolderName: "Nom du titulaire du compte",
35509
+ beneficiaryName: "Nom du b\xE9n\xE9ficiaire",
35510
+ bankName: "Nom de la banque",
35511
+ bankAddress: "Adresse de la banque",
35512
+ currency: "Devise",
35513
+ loadingVerificationStatus: "Chargement du statut de v\xE9rification...",
35514
+ verificationUnsuccessfulTitle: "V\xE9rification \xE9chou\xE9e",
35515
+ verificationUnsuccessfulDescription: "Votre v\xE9rification KYC a \xE9chou\xE9. Veuillez v\xE9rifier les informations soumises et r\xE9essayer. Si le probl\xE8me persiste, <ContactSupportLink>contactez le support</ContactSupportLink> pour obtenir de l'aide.",
35516
+ verificationSuccessfulTitle: "V\xE9rification r\xE9ussie",
35517
+ verificationSuccessfulDescription: "Votre v\xE9rification KYC a \xE9t\xE9 compl\xE9t\xE9e avec succ\xE8s ! Vous \xEAtes maintenant v\xE9rifi\xE9 et pouvez continuer \xE0 utiliser nos services.",
35518
+ verifyYourIdentityTitle: "V\xE9rifiez votre identit\xE9",
35519
+ verifyYourIdentityDescription: "Avant d'utiliser les services fiat, vous devez compl\xE9ter la v\xE9rification d'identit\xE9 pour confirmer votre identit\xE9. Nous sommes l\xE9galement tenus de collecter ces informations.",
35520
+ accountPausedTitle: "Compte suspendu",
35521
+ accountPausedDescription: "Votre compte est temporairement suspendu en raison d'une activit\xE9 sur la plateforme. Si vous avez des questions ou besoin d'une assistance suppl\xE9mentaire, veuillez <ContactSupportLink>contacter notre support</ContactSupportLink> pour plus d'informations.",
35522
+ verificationPendingTitle: "V\xE9rification en attente",
35523
+ verificationPendingDescription: "Votre v\xE9rification KYC est actuellement en cours. Ce processus prend g\xE9n\xE9ralement quelques minutes, mais dans certains cas, cela peut prendre plus de temps. Merci de votre patience.",
35524
+ accountDisabledTitle: "Compte d\xE9sactiv\xE9",
35525
+ accountDisabledDescription: "Votre compte a \xE9t\xE9 d\xE9sactiv\xE9 en raison d'exigences de conformit\xE9 l\xE9gale. Si vous avez des questions ou besoin d'une assistance suppl\xE9mentaire, veuillez <ContactSupportLink>contacter notre support</ContactSupportLink> pour plus d'informations.",
35526
+ verificationFailedTitle: "V\xE9rification \xE9chou\xE9e",
35527
+ verificationFailedDescription: "Votre v\xE9rification KYC a \xE9chou\xE9. Pour plus d'informations, veuillez <ContactSupportLink>contacter le support</ContactSupportLink> pour obtenir de l'aide.",
35528
+ proofOfAddress: "Justificatif de domicile",
35529
+ governmentId: "Pi\xE8ce d'identit\xE9 gouvernementale",
35530
+ creatingVirtualAccount: "Cr\xE9ation du compte virtuel...",
35531
+ kycVerification: "V\xE9rification KYC",
35532
+ createVirtualAccount: "Cr\xE9ez votre compte fiat virtuel EUR",
35533
+ transferDetails: "Les d\xE9tails de transfert pour les paiements SEPA vous seront fournis. Une fois trait\xE9s, les fonds que vous enverrez au compte seront automatiquement d\xE9pos\xE9s sur votre compte {{appName}}.",
35534
+ takeLessThan3Mins: "Devrait prendre moins de 3 minutes"
35535
+ },
35536
+ brokerage: {
35537
+ verificationRequired: "V\xE9rification requise",
35538
+ enter2FACode: "Entrez votre code 2FA {{brokerName}}",
35539
+ enter2FADescription: "Entrez votre code d'authentification \xE0 deux facteurs. Ce code peut se trouver dans votre application d'authentification, email, PIN de trading ou SMS.",
35540
+ twoFASetupRequired: "Configuration 2FA requise",
35541
+ twoFASetupDescription: "Veuillez activer SMS ou l'application d'authentification comme m\xE9thode 2FA sur votre compte {{brokerName}} et r\xE9essayer.",
35542
+ kycRequired: "KYC requis",
35543
+ kycRequiredDescription: "{{brokerName}} exige que vous compl\xE9tiez la v\xE9rification KYC avant de pouvoir retirer. Veuillez v\xE9rifier votre identit\xE9 et r\xE9essayer.",
35544
+ somethingWentWrong: "Une erreur s'est produite. Veuillez r\xE9essayer.",
35545
+ invalid2FACode: "Code 2FA invalide. Veuillez r\xE9essayer.",
35546
+ withdrawalError: "Une erreur s'est produite lors du retrait. Veuillez r\xE9essayer.",
35547
+ meshExecutionError: "Une erreur s'est produite lors de l'ex\xE9cution Mesh.",
35548
+ meshExecutionErrorFull: "Une erreur s'est produite lors de l'ex\xE9cution Mesh.<br />Veuillez r\xE9essayer ou <ContactSupportLink></ContactSupportLink> pour obtenir de l'aide.",
35549
+ executingBrokerageTransfer: "Ex\xE9cution du transfert de courtage",
35550
+ goBack: "Retour",
35551
+ continue: "Continuer",
35552
+ credentialsNeverStored: "Vos identifiants de connexion ne sont jamais stock\xE9s",
35553
+ dataEncrypted: "Toutes les donn\xE9es sont chiffr\xE9es entre {{appName}} et {{exchangeName}}.",
35554
+ twoFaAlwaysRequired: "2FA toujours requis",
35555
+ transfersRequireApproval: "Les transferts ne peuvent pas \xEAtre effectu\xE9s sans votre approbation.",
35556
+ meshConnectionError: "Un probl\xE8me est survenu lors de la connexion \xE0 Mesh. Veuillez r\xE9essayer.",
35557
+ thirdPartyConnectionMessage: "{{appName}} utilisera un tiers pour connecter votre compte {{exchangeName}}."
35558
+ },
35559
+ sourceChange: {
35560
+ selectPaymentMethod: "S\xE9lectionnez le mode de paiement",
35561
+ moreOptions: "Plus d'options",
35562
+ more: "plus",
35563
+ walletDisplayLabel: "{{walletLabel}}",
35564
+ brokerageDisplayLabel: "{{brokerageLabel}}",
35565
+ virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
35566
+ },
35567
+ quote: {
35568
+ preparingYourQuote: "Pr\xE9paration de votre cotation...",
35569
+ verifyingWithProvider: "V\xE9rification avec le fournisseur {{provider}}...",
35570
+ estimatingGas: "Estimation du gaz...",
35571
+ finalizingYourQuote: "Finalisation de votre cotation...",
35572
+ defaultError: "Une erreur s'est produite lors de la g\xE9n\xE9ration de la cotation. Veuillez r\xE9essayer.",
35573
+ noRoutesFound: "Aucune route trouv\xE9e.",
35574
+ checkoutAmountTooLow: "Le montant du paiement est trop bas. Veuillez r\xE9essayer.",
35575
+ insufficientBalance: "Solde insuffisant pour effectuer le paiement avec les frais. Veuillez r\xE9essayer."
35576
+ },
35577
+ relay: {
35578
+ confirmTransaction: "Confirmez la transaction dans votre portefeuille",
35579
+ waitingForConfirmation: "En attente de confirmation de la transaction",
35580
+ transactionConfirmed: "Transaction confirm\xE9e"
35581
+ },
35582
+ textCustomizations: {
35583
+ virtualFiat: "D\xE9poser avec SEPA",
35584
+ brokerageOrExchange: "Connecter un exchange",
35585
+ debitOrCredit: "D\xE9poser avec carte",
35586
+ accountBalance: "Portefeuille",
35587
+ selectAccount: "S\xE9lectionner un exchange",
35588
+ sourceMethodTitle: "Votre source",
35589
+ tokensListTitle: "Vos actifs",
35590
+ transferTokens: "Transf\xE9rer des cryptos",
35591
+ receiveDropdownTitle: "",
35592
+ receiveDropdownLabel: "Actif \xE0 recevoir",
35593
+ payAmountLabel: "Vous envoyez",
35594
+ receiveAmountLabel: "Vous recevez"
35595
+ },
35596
+ time: {
35597
+ oneSecond: "1 seconde",
35598
+ lessThanOneMin: "< 1 min",
35599
+ seconds: "{{count}} secondes",
35600
+ minutes: "{{count}} min",
35601
+ hours: "{{count}} h",
35602
+ secondsShort: "{{count}} s"
35603
+ },
35604
+ meld: {
35605
+ provider: "Fournisseur",
35606
+ autoPickedForYou: "S\xE9lectionn\xE9 automatiquement pour vous",
35607
+ buyMore: "Acheter plus",
35608
+ noDocumentUpload: "Pas de documents requis",
35609
+ bestPrice: "Le meilleur prix",
35610
+ fastest: "Le plus rapide",
35611
+ bestPriceFastest: "Le meilleur prix, Le plus rapide",
35612
+ noQuotesFoundForProvider: "Aucune cotation trouv\xE9e pour le fournisseur et le montant s\xE9lectionn\xE9s.",
35613
+ errorNotified: "Il semble qu'une erreur est survenue. Notre \xE9quipe a \xE9t\xE9 notifi\xE9e du probl\xE8me",
35614
+ noQuotesFound: "Aucune cotation trouv\xE9e"
35615
+ },
35616
+ chainModal: {
35617
+ switchNetworks: "Changer de r\xE9seaux",
35618
+ wrongNetworkDetected: "Mauvais r\xE9seau d\xE9tect\xE9, changez ou d\xE9connectez-vous pour continuer.",
35619
+ disconnect: "Se d\xE9connecter",
35620
+ chainSelector: "S\xE9lecteur de cha\xEEne",
35621
+ wrongNetwork: "Mauvais r\xE9seau"
35622
+ },
35623
+ meldCurrencySelect: {
35624
+ searchCurrency: "Rechercher une devise",
35625
+ noResultsFound: "Aucun r\xE9sultat trouv\xE9"
35626
+ },
35627
+ meldRedirect: {
35628
+ completeTransactionWith: "Compl\xE9tez la transaction avec {{providerLabel}}",
35629
+ canCloseModal: "Vous pouvez fermer cette fen\xEAtre.",
35630
+ youBuy: "Vous achetez",
35631
+ intentAddressWarning: "L'adresse de destination affich\xE9e dans l'on-ramp est une adresse d'intention - pas votre adresse de compte personnel."
35632
+ },
35633
+ dev: {
35634
+ devEmbed: "Dev Embed"
35635
+ },
35636
+ support: {
35637
+ requestSent: "Demande envoy\xE9e",
35638
+ requestSentDescription: "Notre \xE9quipe a re\xE7u votre demande et vous contactera bient\xF4t. Nous appr\xE9cions votre patience.",
35639
+ tellUsMore: "Dites-nous en plus",
35640
+ tellUsMoreDescription: "Si vous rencontrez un probl\xE8me ou avez une question, veuillez remplir le formulaire ci-dessous et notre \xE9quipe de support vous r\xE9pondra d\xE8s que possible.",
35641
+ email: "Email*",
35642
+ subject: "Sujet*",
35643
+ description: "Description*",
35644
+ resolutionPreference: "Pr\xE9f\xE9rence de r\xE9solution*"
35645
+ }
35646
+ };
35647
+
35062
35648
  // src/locales/translations/ja.json
35063
35649
  var ja_default = {
35064
35650
  checkout: {
35065
35651
  noAvailableTokens: "\u5229\u7528\u53EF\u80FD\u306A\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308A\u307E\u305B\u3093",
35066
35652
  noAvailableTokensMessage: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u7D9A\u884C\u3059\u308B\u306B\u306F\u3001\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u3092\u30C1\u30E3\u30FC\u30B8\u307E\u305F\u306F\u9001\u91D1\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
35653
+ insufficientEth: "ETH\u6B8B\u9AD8\u4E0D\u8DB3",
35654
+ insufficientEthMessage: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30E1\u30A4\u30F3\u30CD\u30C3\u30C8ETH\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\u7D9A\u884C\u3059\u308B\u306B\u306F\u5C11\u306A\u304F\u3068\u30820.001 ETH\u304C\u5FC5\u8981\u3067\u3059\u3002",
35067
35655
  topUpWallet: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30C1\u30E3\u30FC\u30B8",
35068
35656
  refundProcessing: "\u8CC7\u91D1\u306F\u5F15\u304D\u51FA\u3055\u308C\u307E\u3057\u305F\u304C\u3001\u53D6\u5F15\u306F\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8FD4\u91D1\u51E6\u7406\u4E2D\u3067\u3059\u3002",
35069
35657
  orderRefunded: "\u3054\u6CE8\u6587\u306F\u8FD4\u91D1\u3055\u308C\u307E\u3057\u305F\u3002",
@@ -35137,7 +35725,6 @@ var ja_default = {
35137
35725
  fiveMinutes: "5\u5206"
35138
35726
  },
35139
35727
  common: {
35140
- privyIframeTitle: "Privy",
35141
35728
  haveQuestions: "\u3054\u8CEA\u554F\u304C\u3042\u308A\u307E\u3059\u304B\uFF1F",
35142
35729
  getHelp: "\u30D8\u30EB\u30D7\u3092\u898B\u308B",
35143
35730
  depositsLive: "{{tokenName}}\u306E\u5165\u91D1\u304C\u5229\u7528\u53EF\u80FD\u306B\u306A\u308A\u307E\u3057\u305F\uFF01",
@@ -35168,16 +35755,11 @@ var ja_default = {
35168
35755
  tryAgain: "\u518D\u8A66\u884C",
35169
35756
  getStarted: "\u59CB\u3081\u308B",
35170
35757
  back: "\u623B\u308B",
35171
- accountTypeEmail: "\u30E1\u30FC\u30EB",
35172
- accountTypeTwitter: "Twitter ID",
35173
- accountTypeApple: "Apple ID",
35174
- accountTypeFarcaster: "Farcaster ID",
35175
35758
  close: "\u9589\u3058\u308B",
35176
35759
  copyAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u30B3\u30D4\u30FC",
35177
35760
  copied: "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
35178
35761
  auto: "\u81EA\u52D5",
35179
- comingSoon: "\u8FD1\u65E5\u516C\u958B",
35180
- or: "\u307E\u305F\u306F"
35762
+ comingSoon: "\u8FD1\u65E5\u516C\u958B"
35181
35763
  },
35182
35764
  disclaimer: {
35183
35765
  terms: "\u5229\u7528\u898F\u7D04",
@@ -35190,13 +35772,7 @@ var ja_default = {
35190
35772
  },
35191
35773
  connect: {
35192
35774
  confirmWalletOwnership: "\u3053\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u304C\u3042\u306A\u305F\u306E\u3082\u306E\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3059\u308B\u305F\u3081\u306B\u30B5\u30A4\u30F3\u30A4\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
35193
- connectWallet: "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u63A5\u7D9A",
35194
- enterConfirmationCode: "\u78BA\u8A8D\u30B3\u30FC\u30C9\u3092\u5165\u529B",
35195
- checkEmailForCode: "{{authProvider}}\u304B\u3089{{email}}\u306B\u9001\u4FE1\u3055\u308C\u305F\u78BA\u8A8D\u30B3\u30FC\u30C9\u3092\u4EE5\u4E0B\u306B\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
35196
- enterYourEmail: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B",
35197
- submit: "\u9001\u4FE1",
35198
- openWarpcast: "Warpcast\u3092\u958B\u304F",
35199
- warpcastLink: "Warpcast\u30EA\u30F3\u30AF"
35775
+ connectWallet: "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u63A5\u7D9A"
35200
35776
  },
35201
35777
  selectAsset: {
35202
35778
  yourTokens: "\u3042\u306A\u305F\u306E\u30C8\u30FC\u30AF\u30F3",
@@ -35574,6 +36150,8 @@ var ko_default = {
35574
36150
  checkout: {
35575
36151
  noAvailableTokens: "\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
35576
36152
  noAvailableTokensMessage: "\uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0 \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uACC4\uC18D\uD558\uB824\uBA74 \uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0\uB97C \uCDA9\uC804\uD558\uAC70\uB098 \uC804\uC1A1\uD558\uC138\uC694.",
36153
+ insufficientEth: "ETH \uBD80\uC871",
36154
+ insufficientEthMessage: "\uC9C0\uAC11\uC5D0 \uBA54\uC778\uB137 ETH\uAC00 \uCDA9\uBD84\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uACC4\uC18D\uD558\uB824\uBA74 \uCD5C\uC18C 0.001 ETH\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.",
35577
36155
  topUpWallet: "\uC9C0\uAC11 \uCDA9\uC804",
35578
36156
  refundProcessing: "\uC790\uAE08\uC774 \uCD9C\uAE08\uB418\uC5C8\uC9C0\uB9CC \uAC70\uB798\uAC00 \uC644\uB8CC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD658\uBD88\uC774 \uCC98\uB9AC\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",
35579
36157
  orderRefunded: "\uC8FC\uBB38\uC774 \uD658\uBD88\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
@@ -35647,7 +36225,6 @@ var ko_default = {
35647
36225
  fiveMinutes: "5\uBD84"
35648
36226
  },
35649
36227
  common: {
35650
- privyIframeTitle: "Privy",
35651
36228
  haveQuestions: "\uC9C8\uBB38\uC774 \uC788\uC73C\uC2E0\uAC00\uC694?",
35652
36229
  getHelp: "\uB3C4\uC6C0\uBC1B\uAE30",
35653
36230
  depositsLive: "{{tokenName}} \uC785\uAE08\uC774 \uD65C\uC131\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4!",
@@ -35678,16 +36255,11 @@ var ko_default = {
35678
36255
  tryAgain: "\uB2E4\uC2DC \uC2DC\uB3C4",
35679
36256
  getStarted: "\uC2DC\uC791\uD558\uAE30",
35680
36257
  back: "\uB4A4\uB85C",
35681
- accountTypeEmail: "\uC774\uBA54\uC77C",
35682
- accountTypeTwitter: "Twitter ID",
35683
- accountTypeApple: "Apple ID",
35684
- accountTypeFarcaster: "Farcaster ID",
35685
36258
  close: "\uB2EB\uAE30",
35686
36259
  copyAddress: "\uC8FC\uC18C \uBCF5\uC0AC",
35687
36260
  copied: "\uBCF5\uC0AC\uB428",
35688
36261
  auto: "\uC790\uB3D9",
35689
- comingSoon: "\uACE7 \uCD9C\uC2DC",
35690
- or: "\uB610\uB294"
36262
+ comingSoon: "\uACE7 \uCD9C\uC2DC"
35691
36263
  },
35692
36264
  disclaimer: {
35693
36265
  terms: "\uC57D\uAD00",
@@ -35700,13 +36272,7 @@ var ko_default = {
35700
36272
  },
35701
36273
  connect: {
35702
36274
  confirmWalletOwnership: "\uC774 \uC9C0\uAC11\uC744 \uC18C\uC720\uD558\uACE0 \uC788\uC74C\uC744 \uD655\uC778\uD558\uB824\uBA74 \uB85C\uADF8\uC778\uC744 \uD074\uB9AD\uD558\uC138\uC694.",
35703
- connectWallet: "\uC9C0\uAC11 \uC5F0\uACB0",
35704
- enterConfirmationCode: "\uD655\uC778 \uCF54\uB4DC \uC785\uB825",
35705
- checkEmailForCode: "{{authProvider}}\uC5D0\uC11C {{email}}(\uC73C)\uB85C \uBCF4\uB0B8 \uC774\uBA54\uC77C\uC744 \uD655\uC778\uD558\uACE0 \uC544\uB798\uC5D0 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uC138\uC694.",
35706
- enterYourEmail: "\uC774\uBA54\uC77C \uC785\uB825",
35707
- submit: "\uC81C\uCD9C",
35708
- openWarpcast: "Warpcast \uC5F4\uAE30",
35709
- warpcastLink: "Warpcast \uB9C1\uD06C"
36275
+ connectWallet: "\uC9C0\uAC11 \uC5F0\uACB0"
35710
36276
  },
35711
36277
  selectAsset: {
35712
36278
  yourTokens: "\uB0B4 \uD1A0\uD070",
@@ -36084,6 +36650,8 @@ var ru_default = {
36084
36650
  checkout: {
36085
36651
  noAvailableTokens: "\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432",
36086
36652
  noAvailableTokensMessage: "\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u0432 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435. \u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443 \u0432 \u043A\u043E\u0448\u0435\u043B\u0451\u043A \u0434\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F.",
36653
+ insufficientEth: "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E ETH",
36654
+ insufficientEthMessage: "\u0412 \u0432\u0430\u0448\u0435\u043C \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435 \u043D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E ETH \u0432 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u0435\u0442\u0438. \u0414\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u043D\u0435 \u043C\u0435\u043D\u0435\u0435 0.001 ETH.",
36087
36655
  topUpWallet: "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A",
36088
36656
  refundProcessing: "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u043B\u0438 \u0432\u044B\u0432\u0435\u0434\u0435\u043D\u044B, \u043D\u043E \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044F \u043D\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430. \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0442.",
36089
36657
  orderRefunded: "\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0431\u044B\u043B \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D.",
@@ -36157,7 +36725,6 @@ var ru_default = {
36157
36725
  fiveMinutes: "5 \u043C\u0438\u043D"
36158
36726
  },
36159
36727
  common: {
36160
- privyIframeTitle: "Privy",
36161
36728
  haveQuestions: "\u0415\u0441\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441\u044B?",
36162
36729
  getHelp: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043F\u043E\u043C\u043E\u0449\u044C",
36163
36730
  depositsLive: "\u0414\u0435\u043F\u043E\u0437\u0438\u0442\u044B {{tokenName}} \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B!",
@@ -36188,16 +36755,11 @@ var ru_default = {
36188
36755
  tryAgain: "\u041F\u043E\u043F\u0440\u043E\u0431\u043E\u0432\u0430\u0442\u044C \u0441\u043D\u043E\u0432\u0430",
36189
36756
  getStarted: "\u041D\u0430\u0447\u0430\u0442\u044C",
36190
36757
  back: "\u041D\u0430\u0437\u0430\u0434",
36191
- accountTypeEmail: "Email",
36192
- accountTypeTwitter: "Twitter ID",
36193
- accountTypeApple: "Apple ID",
36194
- accountTypeFarcaster: "Farcaster ID",
36195
36758
  close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
36196
36759
  copyAddress: "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0430\u0434\u0440\u0435\u0441",
36197
36760
  copied: "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E",
36198
36761
  auto: "\u0410\u0432\u0442\u043E",
36199
- comingSoon: "\u0421\u043A\u043E\u0440\u043E",
36200
- or: "\u0438\u043B\u0438"
36762
+ comingSoon: "\u0421\u043A\u043E\u0440\u043E"
36201
36763
  },
36202
36764
  disclaimer: {
36203
36765
  terms: "\u0443\u0441\u043B\u043E\u0432\u0438\u044F",
@@ -36210,13 +36772,7 @@ var ru_default = {
36210
36772
  },
36211
36773
  connect: {
36212
36774
  confirmWalletOwnership: "\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0432\u043E\u0439\u0442\u0438, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C, \u0447\u0442\u043E \u0432\u044B \u0432\u043B\u0430\u0434\u0435\u0435\u0442\u0435 \u044D\u0442\u0438\u043C \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u043E\u043C.",
36213
- connectWallet: "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A",
36214
- enterConfirmationCode: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043E\u0434 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F",
36215
- checkEmailForCode: "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 {{email}} \u0434\u043B\u044F email \u043E\u0442 {{authProvider}} \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448 \u043A\u043E\u0434 \u043D\u0438\u0436\u0435.",
36216
- enterYourEmail: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448 email",
36217
- submit: "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",
36218
- openWarpcast: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C Warpcast",
36219
- warpcastLink: "\u0421\u0441\u044B\u043B\u043A\u0430 Warpcast"
36775
+ connectWallet: "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A"
36220
36776
  },
36221
36777
  selectAsset: {
36222
36778
  yourTokens: "\u0412\u0430\u0448\u0438 \u0442\u043E\u043A\u0435\u043D\u044B",
@@ -36594,6 +37150,8 @@ var tr_default = {
36594
37150
  checkout: {
36595
37151
  noAvailableTokens: "Kullan\u0131labilir token yok",
36596
37152
  noAvailableTokensMessage: "C\xFCzdan\u0131n\u0131zda kripto token bulunmamaktad\u0131r. Devam etmek i\xE7in c\xFCzdan\u0131n\u0131za para yat\u0131r\u0131n veya kripto transfer edin.",
37153
+ insufficientEth: "Yetersiz ETH",
37154
+ insufficientEthMessage: "C\xFCzdan\u0131n\u0131zda yeterli mainnet ETH bulunmuyor. Devam etmek i\xE7in en az 0.001 ETH gereklidir.",
36597
37155
  topUpWallet: "C\xFCzdana para y\xFCkle",
36598
37156
  refundProcessing: "\u0130ade edilecek fonlar haz\u0131rland\u0131, ancak i\u015Flem tamamlanmad\u0131. \u0130ade i\u015Flemi yap\u0131l\u0131yor.",
36599
37157
  orderRefunded: "Sipari\u015Finiz iade edildi.",
@@ -36667,7 +37225,6 @@ var tr_default = {
36667
37225
  fiveMinutes: "5 dk"
36668
37226
  },
36669
37227
  common: {
36670
- privyIframeTitle: "Privy",
36671
37228
  haveQuestions: "Sorular\u0131n\u0131z m\u0131 var?",
36672
37229
  getHelp: "Yard\u0131m al\u0131n",
36673
37230
  depositsLive: "{{tokenName}} yat\u0131r\u0131mlar\u0131 aktif!",
@@ -36698,16 +37255,11 @@ var tr_default = {
36698
37255
  tryAgain: "Tekrar dene",
36699
37256
  getStarted: "Ba\u015Flay\u0131n",
36700
37257
  back: "Geri",
36701
- accountTypeEmail: "E-posta",
36702
- accountTypeTwitter: "Twitter ID",
36703
- accountTypeApple: "Apple ID",
36704
- accountTypeFarcaster: "Farcaster ID",
36705
37258
  close: "Kapat",
36706
37259
  copyAddress: "Adresi kopyala",
36707
37260
  copied: "Kopyaland\u0131",
36708
37261
  auto: "Otomatik",
36709
- comingSoon: "\xC7ok Yak\u0131nda",
36710
- or: "veya"
37262
+ comingSoon: "\xC7ok Yak\u0131nda"
36711
37263
  },
36712
37264
  disclaimer: {
36713
37265
  terms: "\u015Fartlar",
@@ -36720,13 +37272,7 @@ var tr_default = {
36720
37272
  },
36721
37273
  connect: {
36722
37274
  confirmWalletOwnership: "Bu c\xFCzdan\u0131n sahibi oldu\u011Funuzu onaylamak i\xE7in giri\u015F yap\u0131n.",
36723
- connectWallet: "C\xFCzdan ba\u011Fla",
36724
- enterConfirmationCode: "Onay kodunu girin",
36725
- checkEmailForCode: "L\xFCtfen {{authProvider}} taraf\u0131ndan g\xF6nderilen e-postay\u0131 {{email}} adresinde kontrol edin ve kodunuzu a\u015Fa\u011F\u0131ya girin.",
36726
- enterYourEmail: "E-postan\u0131z\u0131 girin",
36727
- submit: "G\xF6nder",
36728
- openWarpcast: "Warpcast'i A\xE7",
36729
- warpcastLink: "Warpcast Ba\u011Flant\u0131s\u0131"
37275
+ connectWallet: "C\xFCzdan ba\u011Fla"
36730
37276
  },
36731
37277
  selectAsset: {
36732
37278
  yourTokens: "Token'lar\u0131n\u0131z",
@@ -37104,6 +37650,8 @@ var zh_default = {
37104
37650
  checkout: {
37105
37651
  noAvailableTokens: "\u6CA1\u6709\u53EF\u7528\u4EE3\u5E01",
37106
37652
  noAvailableTokensMessage: "\u60A8\u7684\u94B1\u5305\u4E2D\u6CA1\u6709\u4EFB\u4F55\u52A0\u5BC6\u4EE3\u5E01\u3002\u5145\u503C\u6216\u8F6C\u8D26\u52A0\u5BC6\u8D27\u5E01\u5230\u60A8\u7684\u94B1\u5305\u4EE5\u7EE7\u7EED\u3002",
37653
+ insufficientEth: "ETH \u4E0D\u8DB3",
37654
+ insufficientEthMessage: "\u60A8\u7684\u94B1\u5305\u4E2D\u6CA1\u6709\u8DB3\u591F\u7684\u4E3B\u7F51 ETH\u3002\u60A8\u81F3\u5C11\u9700\u8981 0.001 ETH \u624D\u80FD\u7EE7\u7EED\u3002",
37107
37655
  topUpWallet: "\u5145\u503C\u94B1\u5305",
37108
37656
  refundProcessing: "\u8D44\u91D1\u5DF2\u63D0\u53D6\uFF0C\u4F46\u4EA4\u6613\u672A\u5B8C\u6210\u3002\u6B63\u5728\u5904\u7406\u9000\u6B3E\u3002",
37109
37657
  orderRefunded: "\u60A8\u7684\u8BA2\u5355\u5DF2\u9000\u6B3E\u3002",
@@ -37177,7 +37725,6 @@ var zh_default = {
37177
37725
  fiveMinutes: "5\u5206\u949F"
37178
37726
  },
37179
37727
  common: {
37180
- privyIframeTitle: "Privy",
37181
37728
  haveQuestions: "\u6709\u7591\u95EE\uFF1F",
37182
37729
  getHelp: "\u83B7\u53D6\u5E2E\u52A9",
37183
37730
  depositsLive: "{{tokenName}} \u5B58\u6B3E\u5DF2\u4E0A\u7EBF\uFF01",
@@ -37208,16 +37755,11 @@ var zh_default = {
37208
37755
  tryAgain: "\u91CD\u8BD5",
37209
37756
  getStarted: "\u5F00\u59CB",
37210
37757
  back: "\u8FD4\u56DE",
37211
- accountTypeEmail: "\u7535\u5B50\u90AE\u4EF6",
37212
- accountTypeTwitter: "Twitter ID",
37213
- accountTypeApple: "Apple ID",
37214
- accountTypeFarcaster: "Farcaster ID",
37215
37758
  close: "\u5173\u95ED",
37216
37759
  copyAddress: "\u590D\u5236\u5730\u5740",
37217
37760
  copied: "\u5DF2\u590D\u5236",
37218
37761
  auto: "\u81EA\u52A8",
37219
- comingSoon: "\u5373\u5C06\u63A8\u51FA",
37220
- or: "\u6216"
37762
+ comingSoon: "\u5373\u5C06\u63A8\u51FA"
37221
37763
  },
37222
37764
  disclaimer: {
37223
37765
  terms: "\u6761\u6B3E",
@@ -37230,13 +37772,7 @@ var zh_default = {
37230
37772
  },
37231
37773
  connect: {
37232
37774
  confirmWalletOwnership: "\u70B9\u51FB\u767B\u5F55\u4EE5\u786E\u8BA4\u60A8\u62E5\u6709\u6B64\u94B1\u5305\u3002",
37233
- connectWallet: "\u8FDE\u63A5\u94B1\u5305",
37234
- enterConfirmationCode: "\u8F93\u5165\u786E\u8BA4\u7801",
37235
- checkEmailForCode: "\u8BF7\u68C0\u67E5 {{email}} \u7684\u7535\u5B50\u90AE\u4EF6\uFF0C\u67E5\u770B\u6765\u81EA {{authProvider}} \u7684\u90AE\u4EF6\uFF0C\u5E76\u5728\u4E0B\u65B9\u8F93\u5165\u60A8\u7684\u9A8C\u8BC1\u7801\u3002",
37236
- enterYourEmail: "\u8F93\u5165\u60A8\u7684\u7535\u5B50\u90AE\u4EF6",
37237
- submit: "\u63D0\u4EA4",
37238
- openWarpcast: "\u6253\u5F00 Warpcast",
37239
- warpcastLink: "Warpcast \u94FE\u63A5"
37775
+ connectWallet: "\u8FDE\u63A5\u94B1\u5305"
37240
37776
  },
37241
37777
  selectAsset: {
37242
37778
  yourTokens: "\u60A8\u7684\u4EE3\u5E01",
@@ -37606,8 +38142,7 @@ var zh_default = {
37606
38142
  subject: "\u4E3B\u9898*",
37607
38143
  description: "\u63CF\u8FF0*",
37608
38144
  resolutionPreference: "\u89E3\u51B3\u504F\u597D*"
37609
- },
37610
- errors: {}
38145
+ }
37611
38146
  };
37612
38147
 
37613
38148
  // src/locales/i18n.ts
@@ -37619,6 +38154,7 @@ var localeMapping = {
37619
38154
  tr: "tr",
37620
38155
  es: "es",
37621
38156
  ru: "ru",
38157
+ fr: "fr",
37622
38158
  buy_en: "buy_en"
37623
38159
  };
37624
38160
  var resources = {
@@ -37631,6 +38167,7 @@ var resources = {
37631
38167
  tr: { translation: tr_default },
37632
38168
  es: { translation: es_default },
37633
38169
  ru: { translation: ru_default },
38170
+ fr: { translation: fr_default },
37634
38171
  buy_en: { translation: buy_en_default }
37635
38172
  };
37636
38173
  i18n.use(initReactI18next).init({
@@ -37657,19 +38194,19 @@ import { QueryClientProvider } from "@tanstack/react-query";
37657
38194
  import React240, {
37658
38195
  createContext as createContext18,
37659
38196
  useContext as useContext18,
37660
- useEffect as useEffect60,
38197
+ useEffect as useEffect59,
37661
38198
  useMemo as useMemo47
37662
38199
  } from "react";
37663
38200
  import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
37664
38201
 
37665
38202
  // src/providers/FunkitI18nProvider.tsx
37666
- import React238, { useEffect as useEffect58 } from "react";
38203
+ import React238, { useEffect as useEffect57 } from "react";
37667
38204
  import { I18nextProvider } from "react-i18next";
37668
38205
  function FunkitI18nProvider({
37669
38206
  children,
37670
38207
  locale = "en"
37671
38208
  }) {
37672
- useEffect58(() => {
38209
+ useEffect57(() => {
37673
38210
  const targetLanguage = localeMapping[locale];
37674
38211
  if (i18n_default.language !== targetLanguage) {
37675
38212
  i18n_default.changeLanguage(targetLanguage);
@@ -37716,7 +38253,7 @@ function FunkitStatsigProvider({
37716
38253
 
37717
38254
  // src/providers/usePreloadImages.ts
37718
38255
  import { isNotNullish as isNotNullish9 } from "@funkit/utils";
37719
- import { useCallback as useCallback50, useEffect as useEffect59 } from "react";
38256
+ import { useCallback as useCallback50, useEffect as useEffect58 } from "react";
37720
38257
  function usePreloadImages() {
37721
38258
  const funkitConnectChains = useFunkitConnectChains();
37722
38259
  const walletConnectors = useWalletConnectors();
@@ -37726,7 +38263,7 @@ function usePreloadImages() {
37726
38263
  ...funkitConnectChains.map((chain) => chain.iconUrl).filter(isNotNullish9)
37727
38264
  );
37728
38265
  }, [walletConnectors, funkitConnectChains]);
37729
- useEffect59(() => {
38266
+ useEffect58(() => {
37730
38267
  preloadImages();
37731
38268
  }, [preloadImages]);
37732
38269
  }
@@ -37755,7 +38292,7 @@ function FunkitProvider(props) {
37755
38292
  }, [initialChainId, props.wagmiConfig, props.funkitConfig.appName]);
37756
38293
  const finalQueryClient = props.queryClient;
37757
38294
  const sdkVersion = useMemo47(() => getCurrentSdkVersion(), []);
37758
- useEffect60(() => {
38295
+ useEffect59(() => {
37759
38296
  logger.configure(props.funkitConfig.apiKey, !!props.debug, sdkVersion);
37760
38297
  }, [props.funkitConfig.apiKey, props.debug, sdkVersion]);
37761
38298
  const MainChild = /* @__PURE__ */ React240.createElement(FunkitThemeProvider, { theme: props.theme }, /* @__PURE__ */ React240.createElement(
@@ -37799,7 +38336,7 @@ function FunkitProviderInner({
37799
38336
  }, [activeTheme, selector]);
37800
38337
  const avatarContext = avatar ?? defaultAvatar;
37801
38338
  const isSandboxMode = !!sandbox;
37802
- const modalSizeFinal = modalSize || ModalSizeOptions.COMPACT;
38339
+ const modalSizeFinal = modalSize || ModalSizeOptions.MEDIUM;
37803
38340
  return /* @__PURE__ */ React240.createElement(FunkitI18nProvider, { locale }, /* @__PURE__ */ React240.createElement(FunkitStatsigProvider, { isDevelopment: debug }, /* @__PURE__ */ React240.createElement(FunkitConfigContext.Provider, { value: funkitConfig }, /* @__PURE__ */ React240.createElement(FunkitConnectChainProvider, { initialChain }, /* @__PURE__ */ React240.createElement(ModalSizeProvider, { modalSize: modalSizeFinal }, /* @__PURE__ */ React240.createElement(GeneralWalletProvider, null, /* @__PURE__ */ React240.createElement(FunkitFlagsProvider, null, /* @__PURE__ */ React240.createElement(FunkitCheckoutHistoryProvider, null, /* @__PURE__ */ React240.createElement(FunkitCheckoutProvider, null, /* @__PURE__ */ React240.createElement(FunkitSandboxContext.Provider, { value: isSandboxMode }, /* @__PURE__ */ React240.createElement(FunkitBrokerageProvider, null, /* @__PURE__ */ React240.createElement(FunkitQuoteProvider, null, /* @__PURE__ */ React240.createElement(AvatarContext.Provider, { value: avatarContext }, /* @__PURE__ */ React240.createElement(ThemeIdContext2.Provider, { value: id }, /* @__PURE__ */ React240.createElement(ShowBalanceProvider, null, /* @__PURE__ */ React240.createElement(UserPresenceProvider, null, /* @__PURE__ */ React240.createElement(ModalProvider, null, activeTheme ? /* @__PURE__ */ React240.createElement(
37804
38341
  "div",
37805
38342
  {
@@ -37855,7 +38392,6 @@ export {
37855
38392
  FunkitConnectAuthenticationProvider,
37856
38393
  FunkitPaymentsIconLine,
37857
38394
  FunkitProvider,
37858
- FunkitSocialLoginMethod,
37859
38395
  NATIVE_TOKEN,
37860
38396
  PaymentMethod,
37861
38397
  SelectedHomeTab,