@funkit/connect 7.0.0 → 7.0.2

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
@@ -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,
@@ -1322,20 +1040,13 @@ function reformatIntegerPart(integerPart, locale, preserveLeadingZeroes) {
1322
1040
 
1323
1041
  // src/utils/checkout.ts
1324
1042
  import {
1325
- CheckoutState as CheckoutState4,
1326
- getAssetPriceInfo as getAssetPriceInfo3
1043
+ CheckoutState as CheckoutState4
1327
1044
  } from "@funkit/api-base";
1328
1045
  import {
1329
1046
  FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS4,
1330
1047
  FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO13,
1331
- solanaChain as solanaChain4
1048
+ solanaChain as solanaChain5
1332
1049
  } from "@funkit/chains";
1333
- import {
1334
- CHECKOUT_SPONSOR_SUPPORT_CHAINS,
1335
- CONTRACT_ADDRESSES,
1336
- getEnvOptions,
1337
- getTokenAddressBySymbolAndChainId as getTokenAddressBySymbolAndChainId2
1338
- } from "@funkit/core";
1339
1050
  import { getRelayAssetInfo } from "@funkit/fun-relay";
1340
1051
  import {
1341
1052
  formatCryptoAndStringify as formatCryptoAndStringify9,
@@ -1345,30 +1056,7 @@ import {
1345
1056
  round as round3
1346
1057
  } from "@funkit/utils";
1347
1058
  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
- };
1059
+ import { erc20Abi as erc20Abi3, isAddress as isAddress3 } from "viem";
1372
1060
 
1373
1061
  // src/providers/FunkitCheckoutContext/index.tsx
1374
1062
  import {
@@ -1382,7 +1070,7 @@ import React234, {
1382
1070
  createContext as createContext17,
1383
1071
  useCallback as useCallback49,
1384
1072
  useContext as useContext17,
1385
- useEffect as useEffect56,
1073
+ useEffect as useEffect55,
1386
1074
  useState as useState74
1387
1075
  } from "react";
1388
1076
  import { flushSync } from "react-dom";
@@ -1659,7 +1347,6 @@ function generateClientMetadataForTokenTransfer() {
1659
1347
  targetAsset: "0x",
1660
1348
  targetChain: "",
1661
1349
  targetAssetTicker: "",
1662
- expirationTimestampMs: 0,
1663
1350
  checkoutItemTitle: ""
1664
1351
  }
1665
1352
  },
@@ -1684,23 +1371,186 @@ import {
1684
1371
  import { useCallback as useCallback4 } from "react";
1685
1372
 
1686
1373
  // src/providers/useFingerprint.ts
1687
- import { useCallback as useCallback3, useEffect as useEffect6 } from "react";
1374
+ import { useCallback as useCallback3, useEffect as useEffect5 } from "react";
1688
1375
  var storageKey = "funkit-connect-version";
1689
1376
  function setFunkitConnectVersion({ version }) {
1690
1377
  localStorage.setItem(storageKey, version);
1691
1378
  }
1692
1379
  function getCurrentSdkVersion() {
1693
- return "7.0.0";
1380
+ return "7.0.2";
1694
1381
  }
1695
1382
  function useFingerprint() {
1696
1383
  const fingerprint = useCallback3(() => {
1697
1384
  setFunkitConnectVersion({ version: getCurrentSdkVersion() });
1698
1385
  }, []);
1699
- useEffect6(() => {
1386
+ useEffect5(() => {
1700
1387
  fingerprint();
1701
1388
  }, [fingerprint]);
1702
1389
  }
1703
1390
 
1391
+ // src/utils/funLogger.ts
1392
+ import { datadogLogs } from "@datadog/browser-logs";
1393
+ import { DEV_API_KEY } from "@funkit/api-base";
1394
+ var DDOG_CLIENT_TOKEN = "pub4f86c6be8c792cb48dc156a8c17d9a47";
1395
+ var FUN_DEV_API_KEYS = [
1396
+ "hnHevQR0y394nBprGrvNx4HgoZHUwMet5mXTOBhf",
1397
+ "MYny3w7xJh6PRlRgkJ9604sHouY2MTke6lCPpSHq",
1398
+ DEV_API_KEY
1399
+ ];
1400
+ function setDdogEnv(environment) {
1401
+ datadogLogs.setGlobalContextProperty("env", environment);
1402
+ }
1403
+ var FunLogger = class {
1404
+ constructor() {
1405
+ setDdogEnv("development" /* DEVELOPMENT */);
1406
+ this.apiKey = null;
1407
+ this.isDebugMode = false;
1408
+ this.userId = null;
1409
+ this.userAddress = null;
1410
+ this.userName = null;
1411
+ this.userLoginType = null;
1412
+ this.sdkVersion = null;
1413
+ }
1414
+ getFunLogEnv() {
1415
+ if (!this.apiKey || FUN_DEV_API_KEYS.includes(this.apiKey)) {
1416
+ return "development" /* DEVELOPMENT */;
1417
+ }
1418
+ return "production" /* PRODUCTION */;
1419
+ }
1420
+ logDataDog(level, title, data, error) {
1421
+ if (typeof window === "undefined") {
1422
+ return;
1423
+ }
1424
+ const datadogData = {
1425
+ data,
1426
+ apiKey: this.apiKey,
1427
+ userId: this.userId,
1428
+ userName: this.userName,
1429
+ userAddress: this.userAddress,
1430
+ userLoginType: this.userLoginType,
1431
+ sdkVersion: this.sdkVersion
1432
+ };
1433
+ switch (level) {
1434
+ case "info":
1435
+ datadogLogs.logger.info(title, datadogData);
1436
+ break;
1437
+ case "debug":
1438
+ datadogLogs.logger.debug(title, datadogData);
1439
+ break;
1440
+ case "warn":
1441
+ datadogLogs.logger.warn(title, datadogData);
1442
+ break;
1443
+ case "error":
1444
+ datadogLogs.logger.error(title, datadogData, error);
1445
+ }
1446
+ }
1447
+ onDebug({ title, data }) {
1448
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1449
+ if (isProd) {
1450
+ this.logDataDog("debug", title, data);
1451
+ }
1452
+ if (!isProd || this.isDebugMode) {
1453
+ console.debug(title, data || "");
1454
+ }
1455
+ }
1456
+ onInfo({ title, data }) {
1457
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1458
+ if (isProd) {
1459
+ this.logDataDog("info", title, data);
1460
+ }
1461
+ if (!isProd || this.isDebugMode) {
1462
+ console.log(title, data || "");
1463
+ }
1464
+ }
1465
+ onWarn({ title, data }) {
1466
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1467
+ if (isProd) {
1468
+ this.logDataDog("warn", title, data);
1469
+ }
1470
+ if (!isProd || this.isDebugMode) {
1471
+ console.warn(title, data || "");
1472
+ }
1473
+ }
1474
+ onError({ title, error, data }) {
1475
+ const isProd = this.getFunLogEnv() === "production" /* PRODUCTION */;
1476
+ if (isProd) {
1477
+ this.logDataDog("error", title, data, error);
1478
+ }
1479
+ if (!isProd || this.isDebugMode) {
1480
+ console.error(title, data || "", error);
1481
+ }
1482
+ }
1483
+ extractError(error) {
1484
+ if (error instanceof Error) {
1485
+ return error;
1486
+ }
1487
+ if (typeof error === "object" && error !== null && "error" in error && error.error instanceof Error) {
1488
+ return error.error;
1489
+ }
1490
+ return null;
1491
+ }
1492
+ /**========================
1493
+ * PUBLIC LOGGER FUNCTIONS
1494
+ *=========================*/
1495
+ log(title, data) {
1496
+ this.onInfo({ title, data });
1497
+ }
1498
+ info(title, data) {
1499
+ this.onInfo({ title, data });
1500
+ }
1501
+ debug(title, data) {
1502
+ this.onDebug({ title, data });
1503
+ }
1504
+ warn(title, data) {
1505
+ this.onWarn({ title, data });
1506
+ }
1507
+ /**
1508
+ * @param errorOrData -
1509
+ * 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.
1510
+ * 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.
1511
+ */
1512
+ error(title, errorOrData, _data = {}) {
1513
+ const error = this.extractError(errorOrData) ?? void 0;
1514
+ const data = {
1515
+ ..._data,
1516
+ ...typeof errorOrData === "object" && errorOrData !== null ? errorOrData : {}
1517
+ };
1518
+ this.onError({ title, error, data });
1519
+ }
1520
+ configure(apiKey, isDebug, sdkVersion) {
1521
+ this.apiKey = apiKey;
1522
+ this.isDebugMode = isDebug;
1523
+ this.sdkVersion = sdkVersion;
1524
+ setDdogEnv(this.getFunLogEnv());
1525
+ }
1526
+ getUserId() {
1527
+ return this.userId;
1528
+ }
1529
+ getUserAddress() {
1530
+ return this.userAddress;
1531
+ }
1532
+ getUserName() {
1533
+ return this.userName;
1534
+ }
1535
+ getUserLoginType() {
1536
+ return this.userLoginType;
1537
+ }
1538
+ setUserInfo(userId, userAddress, userName, userLoginType) {
1539
+ this.userId = userId;
1540
+ this.userAddress = userAddress;
1541
+ this.userName = userName;
1542
+ this.userLoginType = userLoginType;
1543
+ }
1544
+ };
1545
+ datadogLogs.init({
1546
+ clientToken: DDOG_CLIENT_TOKEN,
1547
+ site: "datadoghq.com",
1548
+ forwardErrorsToLogs: false,
1549
+ sessionSampleRate: 100,
1550
+ service: "connect-sdk"
1551
+ });
1552
+ var logger = new FunLogger();
1553
+
1704
1554
  // src/hooks/track/useTrack.ts
1705
1555
  var stringifyValues = (metadata) => {
1706
1556
  const normalizedMetadata = {};
@@ -1800,13 +1650,119 @@ var getWeb3AccountBalanceMessage = (t) => ({
1800
1650
  [2 /* APPROVE_TRANSFER */]: (tokenSymbol) => t("checkoutConfirmation.confirmTokenTransfer", { tokenSymbol })
1801
1651
  });
1802
1652
 
1653
+ // src/providers/FunkitConfigContext.tsx
1654
+ import { createContext as createContext5, useContext as useContext5, useMemo as useMemo5 } from "react";
1655
+ var DEFAULT_TEXT_CUSTOMIZATIONS = {
1656
+ virtualFiat: "Deposit with SEPA",
1657
+ brokerageOrExchange: "Connect Exchange",
1658
+ debitOrCredit: "Deposit with Card",
1659
+ accountBalance: "Wallet",
1660
+ selectAccount: "Select an exchange",
1661
+ sourceMethodTitle: "Your source",
1662
+ tokensListTitle: "Your tokens",
1663
+ transferTokens: "Transfer Crypto",
1664
+ receiveDropdownTitle: "",
1665
+ // Default to empty
1666
+ receiveDropdownLabel: "Asset to Receive",
1667
+ confirmationScreen: {
1668
+ payAmountLabel: "You send",
1669
+ receiveAmountLabel: "You receive"
1670
+ }
1671
+ };
1672
+ var DEFAULT_UI_CUSTOMIZATIONS = {
1673
+ alignTitle: "center",
1674
+ callToActionsUppercase: false,
1675
+ confirmationScreen: {
1676
+ preferDestinationWhenSame: false,
1677
+ showPaymentAmountUsd: false,
1678
+ showReceiveAmountUsd: false,
1679
+ showTokenAmount: true,
1680
+ showTransactionDigest: "none"
1681
+ },
1682
+ inputAmountScreen: {
1683
+ allowTokenAmountInput: true
1684
+ },
1685
+ selectAssetScreen: {
1686
+ showTargetAssetSelection: false
1687
+ },
1688
+ transferCryptoScreen: {
1689
+ showYouSendYouReceive: false
1690
+ }
1691
+ };
1692
+ var DEFAULT_FUNKIT_CONFIG = {
1693
+ apiKey: "",
1694
+ appName: "",
1695
+ textCustomizations: DEFAULT_TEXT_CUSTOMIZATIONS,
1696
+ uiCustomizations: DEFAULT_UI_CUSTOMIZATIONS
1697
+ };
1698
+ var FunkitConfigContext = createContext5(
1699
+ DEFAULT_FUNKIT_CONFIG
1700
+ );
1701
+ function useFunkitConfig() {
1702
+ const originalFunkitConfig = useContext5(FunkitConfigContext);
1703
+ const { t } = useFunkitTranslation();
1704
+ const translatedDefaults = useMemo5(() => {
1705
+ return {
1706
+ virtualFiat: t("textCustomizations.virtualFiat"),
1707
+ brokerageOrExchange: t("textCustomizations.brokerageOrExchange"),
1708
+ debitOrCredit: t("textCustomizations.debitOrCredit"),
1709
+ accountBalance: t("textCustomizations.accountBalance"),
1710
+ selectAccount: t("textCustomizations.selectAccount"),
1711
+ sourceMethodTitle: t("textCustomizations.sourceMethodTitle"),
1712
+ tokensListTitle: t("textCustomizations.tokensListTitle"),
1713
+ transferTokens: t("textCustomizations.transferTokens"),
1714
+ receiveDropdownTitle: t("textCustomizations.receiveDropdownTitle"),
1715
+ receiveDropdownLabel: t("textCustomizations.receiveDropdownLabel"),
1716
+ confirmationScreen: {
1717
+ payAmountLabel: t("textCustomizations.payAmountLabel"),
1718
+ receiveAmountLabel: t("textCustomizations.receiveAmountLabel")
1719
+ }
1720
+ };
1721
+ }, [t]);
1722
+ const finalFunkitConfig = useMemo5(() => {
1723
+ return {
1724
+ ...DEFAULT_FUNKIT_CONFIG,
1725
+ ...originalFunkitConfig,
1726
+ textCustomizations: {
1727
+ ...translatedDefaults,
1728
+ ...originalFunkitConfig.textCustomizations,
1729
+ confirmationScreen: {
1730
+ ...translatedDefaults.confirmationScreen,
1731
+ ...originalFunkitConfig.textCustomizations?.confirmationScreen
1732
+ }
1733
+ },
1734
+ uiCustomizations: {
1735
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations,
1736
+ ...originalFunkitConfig.uiCustomizations,
1737
+ selectAssetScreen: {
1738
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.selectAssetScreen,
1739
+ ...originalFunkitConfig.uiCustomizations?.selectAssetScreen
1740
+ },
1741
+ confirmationScreen: {
1742
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.confirmationScreen,
1743
+ ...originalFunkitConfig.uiCustomizations?.confirmationScreen
1744
+ },
1745
+ inputAmountScreen: {
1746
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.inputAmountScreen,
1747
+ ...originalFunkitConfig.uiCustomizations?.inputAmountScreen
1748
+ },
1749
+ transferCryptoScreen: {
1750
+ ...DEFAULT_FUNKIT_CONFIG.uiCustomizations.transferCryptoScreen,
1751
+ ...originalFunkitConfig.uiCustomizations?.transferCryptoScreen
1752
+ }
1753
+ }
1754
+ };
1755
+ }, [originalFunkitConfig, translatedDefaults]);
1756
+ return finalFunkitConfig;
1757
+ }
1758
+
1803
1759
  // src/providers/GeneralWalletProvider.tsx
1804
1760
  import { formatAddress as formatAddress2 } from "@funkit/utils";
1805
1761
  import React17, {
1806
1762
  createContext as createContext6,
1807
1763
  useCallback as useCallback5,
1808
1764
  useContext as useContext6,
1809
- useEffect as useEffect7,
1765
+ useEffect as useEffect6,
1810
1766
  useMemo as useMemo6,
1811
1767
  useState as useState7
1812
1768
  } from "react";
@@ -1906,6 +1862,22 @@ function formatENS(name) {
1906
1862
  return `${parts.join(".")}.${last}`;
1907
1863
  }
1908
1864
 
1865
+ // src/consts/funkit.ts
1866
+ import { FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS } from "@funkit/chains";
1867
+ var NATIVE_TOKEN = FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS;
1868
+ var FUN_ORG_NAME = "Fun.xyz";
1869
+ var FUN_TERMS_URL = "https://fun.xyz/terms";
1870
+ var PLACEHOLDER_FUNKIT_USER_INFO = {
1871
+ id: "0x",
1872
+ address: "0x",
1873
+ name: "Guest",
1874
+ nameTruncated: "Guest",
1875
+ type: "unknown",
1876
+ typeLabel: "",
1877
+ iconSrc: "",
1878
+ isConnected: false
1879
+ };
1880
+
1909
1881
  // src/hooks/useSymbolRefresh.ts
1910
1882
  import { useState as useState6 } from "react";
1911
1883
  function useSymbolRefresh() {
@@ -1984,7 +1956,7 @@ function GeneralWalletProvider({ children }) {
1984
1956
  apiKey,
1985
1957
  externalUserId
1986
1958
  ]);
1987
- useEffect7(() => {
1959
+ useEffect6(() => {
1988
1960
  if (userInfo.id !== logger.getUserId() || userInfo.address !== logger.getUserAddress() || userInfo.name !== logger.getUserName() || userInfo.type !== logger.getUserLoginType()) {
1989
1961
  logger.log("settingUserInfo", userInfo);
1990
1962
  updateUserAsync(userInfo, apiKey).catch(
@@ -2202,7 +2174,7 @@ import { useQuery as useQuery2 } from "@tanstack/react-query";
2202
2174
  import React18, {
2203
2175
  createContext as createContext7,
2204
2176
  useContext as useContext7,
2205
- useEffect as useEffect8,
2177
+ useEffect as useEffect7,
2206
2178
  useMemo as useMemo8
2207
2179
  } from "react";
2208
2180
 
@@ -2372,12 +2344,12 @@ var flagConfig = {
2372
2344
  POLYMARKET_API_KEY2,
2373
2345
  KATANA_API_KEY2,
2374
2346
  HYPERBEAT_API_KEY2,
2375
- HYPERDASH_API_KEY2
2347
+ HYPERDASH_API_KEY2,
2348
+ FELIX_API_KEY
2376
2349
  ]
2377
2350
  }
2378
2351
  ],
2379
- // Turn off geoblock for PM / Katana on our end.
2380
- // These clients will handle the conditional display of the Deposit button.
2352
+ // Turn off geoblocks for client who will be handling the conditional display of the Deposit button.
2381
2353
  value: ""
2382
2354
  }
2383
2355
  ]
@@ -2967,10 +2939,10 @@ var flagConfig = {
2967
2939
  type: "string",
2968
2940
  default_value: JSON.stringify({
2969
2941
  // EXAMPLE:
2970
- // [bitcoinChain.id]: [
2942
+ // [solanaChain.id]: [
2971
2943
  // {
2972
2944
  // message:
2973
- // 'Bitcoin deposits currently have a limit of 1 BTC per transaction and take up to 1 hour to complete.',
2945
+ // 'Solana deposits are taking longer than usual to process. Your funds are safe.',
2974
2946
  // type: 'alert',
2975
2947
  // },
2976
2948
  // ],
@@ -3253,12 +3225,12 @@ function FunkitFlagsProvider({ children }) {
3253
3225
  isLoading
3254
3226
  };
3255
3227
  }, [error, flags, isLoading]);
3256
- useEffect8(() => {
3228
+ useEffect7(() => {
3257
3229
  if (!isLoading) {
3258
3230
  datadogLogs2.setGlobalContextProperty("flags", flags);
3259
3231
  }
3260
3232
  }, [flags, isLoading]);
3261
- useEffect8(() => {
3233
+ useEffect7(() => {
3262
3234
  if (error) {
3263
3235
  logger.error("flag_initError", error);
3264
3236
  }
@@ -3753,7 +3725,7 @@ import React19, {
3753
3725
  createContext as createContext8,
3754
3726
  useCallback as useCallback9,
3755
3727
  useContext as useContext8,
3756
- useEffect as useEffect9,
3728
+ useEffect as useEffect8,
3757
3729
  useRef as useRef2,
3758
3730
  useState as useState8
3759
3731
  } from "react";
@@ -4006,12 +3978,12 @@ function FunkitCheckoutHistoryProvider({
4006
3978
  isUserLoggedIn,
4007
3979
  userInfo
4008
3980
  ]);
4009
- useEffect9(() => {
3981
+ useEffect8(() => {
4010
3982
  if (isListening && (isUserLoggedIn || isGuestUserOnCheckoutHistory)) {
4011
3983
  _refreshCheckoutHistory();
4012
3984
  }
4013
3985
  }, [refreshSymbol, isUserLoggedIn]);
4014
- useEffect9(() => {
3986
+ useEffect8(() => {
4015
3987
  if (isNotNullish(logoutSymbol) && isInited) {
4016
3988
  setIsInited(false);
4017
3989
  setCheckoutHistoryList([]);
@@ -4127,7 +4099,7 @@ var useFunkitPostCheckoutInternal = (checkoutId) => {
4127
4099
  if (!checkoutId || !isHex(checkoutId)) {
4128
4100
  throw new Error("Invalid checkout ID");
4129
4101
  }
4130
- useEffect9(() => {
4102
+ useEffect8(() => {
4131
4103
  const setupCheckoutHistory = async () => {
4132
4104
  if (checkoutId === "0x") {
4133
4105
  return;
@@ -4193,7 +4165,7 @@ import React233, {
4193
4165
  createContext as createContext16,
4194
4166
  useCallback as useCallback48,
4195
4167
  useContext as useContext16,
4196
- useEffect as useEffect55,
4168
+ useEffect as useEffect54,
4197
4169
  useMemo as useMemo46,
4198
4170
  useState as useState73
4199
4171
  } from "react";
@@ -4274,7 +4246,7 @@ function getCheckoutStateBooleans(checkoutState, refundState) {
4274
4246
  }
4275
4247
 
4276
4248
  // src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
4277
- import React27, { useEffect as useEffect12, useMemo as useMemo12, useState as useState11 } from "react";
4249
+ import React27, { useEffect as useEffect11, useMemo as useMemo12, useState as useState11 } from "react";
4278
4250
 
4279
4251
  // src/components/TransactionStatus/TransactionStatus.tsx
4280
4252
  import {
@@ -4284,7 +4256,7 @@ import {
4284
4256
  } from "motion/react";
4285
4257
  import React26, {
4286
4258
  useCallback as useCallback10,
4287
- useEffect as useEffect11,
4259
+ useEffect as useEffect10,
4288
4260
  useMemo as useMemo11,
4289
4261
  useRef as useRef3,
4290
4262
  useState as useState10
@@ -4292,7 +4264,7 @@ import React26, {
4292
4264
  import { Trans } from "react-i18next";
4293
4265
 
4294
4266
  // src/providers/FunkitThemeProvider.tsx
4295
- import React20, { createContext as createContext9, useContext as useContext9, useEffect as useEffect10, useState as useState9 } from "react";
4267
+ import React20, { createContext as createContext9, useContext as useContext9, useEffect as useEffect9, useState as useState9 } from "react";
4296
4268
  var FUNKIT_THEME_CACHE_KEY = "funkit-connect-is-light";
4297
4269
  var DEFAULT_THEME_SET = {
4298
4270
  lightTheme: lightTheme(),
@@ -4375,7 +4347,7 @@ var FunkitThemeProvider = ({
4375
4347
  const [activeTheme, setActiveTheme] = useState9(
4376
4348
  getConfigTheme(themeOrThemeSet, systemColorScheme)
4377
4349
  );
4378
- useEffect10(() => {
4350
+ useEffect9(() => {
4379
4351
  const handler = (e) => {
4380
4352
  const colorScheme = e.matches ? "light" : "dark";
4381
4353
  setSystemColorScheme(colorScheme);
@@ -4392,7 +4364,7 @@ var FunkitThemeProvider = ({
4392
4364
  };
4393
4365
  }
4394
4366
  }, []);
4395
- useEffect10(() => {
4367
+ useEffect9(() => {
4396
4368
  setActiveTheme(getConfigTheme(themeOrThemeSet, systemColorScheme));
4397
4369
  }, [systemColorScheme, themeOrThemeSet]);
4398
4370
  const isFullThemeSet = isThemeSet(themeOrThemeSet);
@@ -5112,12 +5084,12 @@ function TransactionStatus({
5112
5084
  },
5113
5085
  [animate]
5114
5086
  );
5115
- useEffect11(() => {
5087
+ useEffect10(() => {
5116
5088
  if (initialStatus === "progress") {
5117
5089
  startSpinning(initialStep);
5118
5090
  }
5119
5091
  }, [initialStatus, initialStep, startSpinning]);
5120
- useEffect11(() => {
5092
+ useEffect10(() => {
5121
5093
  if (transitioningToStatus !== currentStatus || transitioningToStep !== currentStep) {
5122
5094
  return;
5123
5095
  }
@@ -5487,14 +5459,14 @@ function FunCheckoutStatusLoaded({
5487
5459
  [activeCheckoutItem, checkoutHistoryItem]
5488
5460
  );
5489
5461
  const [currentTimeMs, setCurrentTimeMs] = useState11(Date.now());
5490
- useEffect12(() => {
5462
+ useEffect11(() => {
5491
5463
  const interval = setInterval(() => setCurrentTimeMs(Date.now()), 1e3);
5492
5464
  return () => clearInterval(interval);
5493
5465
  }, []);
5494
5466
  const onOrderDelayedEvent = useEffectEvent(() => onOrderDelayed?.());
5495
5467
  const elapsedSeconds = (currentTimeMs - startTimeMs) / 1e3;
5496
5468
  const isNewlyDelayed = isProcessing && elapsedSeconds >= 60;
5497
- useEffect12(() => {
5469
+ useEffect11(() => {
5498
5470
  if (isNewlyDelayed) {
5499
5471
  onOrderDelayedEvent();
5500
5472
  }
@@ -5526,7 +5498,7 @@ function extractStartTimeMs(historyCheckoutItemId, activeCheckoutItem, { created
5526
5498
  }
5527
5499
 
5528
5500
  // src/components/FunCheckoutHistory/FunDirectExecutionStatus.tsx
5529
- import React28, { useEffect as useEffect13, useState as useState12 } from "react";
5501
+ import React28, { useEffect as useEffect12, useState as useState12 } from "react";
5530
5502
 
5531
5503
  // src/hooks/useCheckoutTimeEstimate.ts
5532
5504
  import { FlagKey as FlagKey5 } from "@funkit/utils";
@@ -5609,7 +5581,7 @@ function FunDirectExecutionStatusLoaded({
5609
5581
  const progress = getCheckoutProgress(directExecution.clientMetadata.id);
5610
5582
  const startTimeMs = directExecution.createdTimeMs;
5611
5583
  const [currentTimeMs, setCurrentTimeMs] = useState12(Date.now());
5612
- useEffect13(() => {
5584
+ useEffect12(() => {
5613
5585
  const interval = setInterval(() => setCurrentTimeMs(Date.now()), 1e3);
5614
5586
  return () => clearInterval(interval);
5615
5587
  }, []);
@@ -5868,7 +5840,7 @@ import clsx7 from "clsx";
5868
5840
  import React45, {
5869
5841
  useCallback as useCallback12,
5870
5842
  useContext as useContext10,
5871
- useEffect as useEffect18,
5843
+ useEffect as useEffect17,
5872
5844
  useRef as useRef7
5873
5845
  } from "react";
5874
5846
  import { createPortal } from "react-dom";
@@ -5876,13 +5848,13 @@ import { RemoveScroll } from "react-remove-scroll";
5876
5848
  import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
5877
5849
 
5878
5850
  // src/hooks/useScrollDivider.ts
5879
- import { useEffect as useEffect14, useRef as useRef5, useState as useState14 } from "react";
5851
+ import { useEffect as useEffect13, useRef as useRef5, useState as useState14 } from "react";
5880
5852
  var useScrollDivider = () => {
5881
5853
  const ref = useRef5(null);
5882
5854
  const [isTop, setIsTop] = useState14(true);
5883
5855
  const [isScrollable, setIsScrollable] = useState14(false);
5884
5856
  const [isScrolling, setIsScrolling] = useState14(false);
5885
- useEffect14(() => {
5857
+ useEffect13(() => {
5886
5858
  const content2 = ref.current;
5887
5859
  if (!content2 || !window.ResizeObserver) {
5888
5860
  return;
@@ -6495,11 +6467,17 @@ var FunTechnologyLogo = () => {
6495
6467
  );
6496
6468
  };
6497
6469
 
6470
+ // src/components/FunPoweredTagline/FunPoweredTagline.css.ts
6471
+ var taglineBorderTop = "_1wdgk6i0";
6472
+
6498
6473
  // src/components/FunPoweredTagline/FunPoweredTagline.tsx
6499
- function FunPoweredTagline() {
6474
+ function FunPoweredTagline({
6475
+ enableBorderTop = true
6476
+ }) {
6500
6477
  return /* @__PURE__ */ React39.createElement(
6501
6478
  Box,
6502
6479
  {
6480
+ className: enableBorderTop ? taglineBorderTop : void 0,
6503
6481
  display: "flex",
6504
6482
  flexDirection: "row",
6505
6483
  justifyContent: "center",
@@ -6677,7 +6655,7 @@ function FunDivider({
6677
6655
  }
6678
6656
 
6679
6657
  // src/components/Dialog/FocusTrap.tsx
6680
- import React44, { useCallback as useCallback11, useEffect as useEffect15, useRef as useRef6 } from "react";
6658
+ import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as useRef6 } from "react";
6681
6659
  var moveFocusWithin = (element2, position) => {
6682
6660
  const focusableElements = element2.querySelectorAll(
6683
6661
  "button:not(:disabled), a[href]"
@@ -6689,14 +6667,14 @@ var moveFocusWithin = (element2, position) => {
6689
6667
  };
6690
6668
  function FocusTrap(props) {
6691
6669
  const contentRef = useRef6(null);
6692
- useEffect15(() => {
6670
+ useEffect14(() => {
6693
6671
  const previouslyActiveElement = document.activeElement;
6694
6672
  return () => {
6695
6673
  ;
6696
6674
  previouslyActiveElement.focus?.();
6697
6675
  };
6698
6676
  }, []);
6699
- useEffect15(() => {
6677
+ useEffect14(() => {
6700
6678
  if (contentRef.current) {
6701
6679
  const elementToFocus = contentRef.current.querySelector("[data-auto-focus]");
6702
6680
  if (elementToFocus) {
@@ -6737,11 +6715,11 @@ function FocusTrap(props) {
6737
6715
  }
6738
6716
 
6739
6717
  // src/components/Dialog/hooks.ts
6740
- import { useEffect as useEffect17, useState as useState15 } from "react";
6718
+ import { useEffect as useEffect16, useState as useState15 } from "react";
6741
6719
 
6742
6720
  // src/hooks/useIsomorphicEffect.ts
6743
- import { useEffect as useEffect16, useLayoutEffect } from "react";
6744
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect16;
6721
+ import { useEffect as useEffect15, useLayoutEffect } from "react";
6722
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect15;
6745
6723
 
6746
6724
  // src/components/Dialog/hooks.ts
6747
6725
  var MODAL_BOTTOM_BAR_WRAPPER_ID = "fun-modal-bottom-bar-wrapper";
@@ -6818,7 +6796,7 @@ function useBottomBarHasNoChildren() {
6818
6796
  const withdrawalBottomBarElement = useWithdrawalBottomBarElement();
6819
6797
  const connectWalletBottomBarElement = useConnectWalletBottomBarElement();
6820
6798
  const [hasNoChildren, setHasNoChildren] = useState15(false);
6821
- useEffect17(() => {
6799
+ useEffect16(() => {
6822
6800
  const node = connectWalletBottomBarElement || checkoutBottomBarElement || withdrawalBottomBarElement || generalBottomBarElement;
6823
6801
  if (!node) {
6824
6802
  return;
@@ -6869,7 +6847,7 @@ function Dialog({
6869
6847
  withTransition = true,
6870
6848
  testId
6871
6849
  }) {
6872
- useEffect18(() => {
6850
+ useEffect17(() => {
6873
6851
  const handleEscape = (event) => open && event.key === "Escape" && onClose();
6874
6852
  if (isSmartCloseable) {
6875
6853
  document.addEventListener("keydown", handleEscape);
@@ -7221,13 +7199,16 @@ Dialog.BottomBar = FunBottomBar;
7221
7199
 
7222
7200
  // src/modals/WithdrwalModal/WithdrawalContent.tsx
7223
7201
  import { RelayQuoteError } from "@funkit/api-base";
7224
- import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO5 } from "@funkit/chains";
7202
+ import {
7203
+ FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO5,
7204
+ solanaChain as solanaChain4
7205
+ } from "@funkit/chains";
7225
7206
  import {
7226
7207
  FlagKey as FlagKey12,
7227
7208
  formatCryptoAndStringify as formatCryptoAndStringify2,
7228
7209
  formatCurrencyAndStringify as formatCurrencyAndStringify3
7229
7210
  } from "@funkit/utils";
7230
- import React72, { useEffect as useEffect29, useMemo as useMemo19, useRef as useRef14, useState as useState27 } from "react";
7211
+ import React72, { useEffect as useEffect28, useMemo as useMemo19, useRef as useRef14, useState as useState27 } from "react";
7231
7212
  import { createPortal as createPortal2 } from "react-dom";
7232
7213
  import { useDebounce } from "use-debounce";
7233
7214
  import { useAccount as useAccount4 } from "wagmi";
@@ -7242,7 +7223,7 @@ import React59 from "react";
7242
7223
  // src/components/FunTooltip/FunTooltip.tsx
7243
7224
  import React47, {
7244
7225
  useCallback as useCallback13,
7245
- useEffect as useEffect19,
7226
+ useEffect as useEffect18,
7246
7227
  useRef as useRef8,
7247
7228
  useState as useState16
7248
7229
  } from "react";
@@ -7348,13 +7329,13 @@ var FunTooltip = ({
7348
7329
  setIsDisplayed(false);
7349
7330
  }, hideDelay);
7350
7331
  }, [hideDelay]);
7351
- useEffect19(() => {
7332
+ useEffect18(() => {
7352
7333
  return () => {
7353
7334
  clearTimeout(delayRef.current);
7354
7335
  clearTimeout(startDelayRef.current);
7355
7336
  };
7356
7337
  }, []);
7357
- useEffect19(() => {
7338
+ useEffect18(() => {
7358
7339
  if (!wrapperElementRef?.current || !tooltipRef.current || !enableDynamicPositioning) {
7359
7340
  return;
7360
7341
  }
@@ -7423,7 +7404,7 @@ var FunTooltip = ({
7423
7404
  // src/components/Dropdown/BaseDropdown.tsx
7424
7405
  import { isMobile as isMobile4, noop as noop2 } from "@funkit/utils";
7425
7406
  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";
7407
+ import React56, { useCallback as useCallback14, useEffect as useEffect21, useMemo as useMemo13, useRef as useRef10, useState as useState18 } from "react";
7427
7408
 
7428
7409
  // src/consts/layout.ts
7429
7410
  var VERTICAL_SECTION_GAP = "18";
@@ -7437,7 +7418,7 @@ var DROPDOWN_Z_INDEX = 10;
7437
7418
  // src/components/FunInput/FunInput.tsx
7438
7419
  import React49, {
7439
7420
  forwardRef as forwardRef3,
7440
- useEffect as useEffect20,
7421
+ useEffect as useEffect19,
7441
7422
  useState as useState17
7442
7423
  } from "react";
7443
7424
  import clsx9 from "clsx";
@@ -7540,7 +7521,7 @@ var FunInput = forwardRef3(function FunInputWithRef({
7540
7521
  };
7541
7522
  };
7542
7523
  const textareaRef = React49.useRef(null);
7543
- useEffect20(() => {
7524
+ useEffect19(() => {
7544
7525
  if (allowMultiline) {
7545
7526
  adjustTextareaHeight(textareaRef.current);
7546
7527
  }
@@ -7850,13 +7831,13 @@ var FunNoResults = ({
7850
7831
 
7851
7832
  // src/components/FunSelect/FunClickOutside.tsx
7852
7833
  import React53 from "react";
7853
- import { useEffect as useEffect21, useRef as useRef9 } from "react";
7834
+ import { useEffect as useEffect20, useRef as useRef9 } from "react";
7854
7835
  function FunClickOutside({
7855
7836
  children,
7856
7837
  onClick
7857
7838
  }) {
7858
7839
  const wrapperRef = useRef9(null);
7859
- useEffect21(() => {
7840
+ useEffect20(() => {
7860
7841
  const handleClickListener = (event) => {
7861
7842
  const clickedInside = wrapperRef.current?.contains(
7862
7843
  event.target
@@ -8071,7 +8052,7 @@ function BaseDropdown({
8071
8052
  setIsOpened(true);
8072
8053
  onOpen?.();
8073
8054
  };
8074
- useEffect22(() => {
8055
+ useEffect21(() => {
8075
8056
  if (isOpened && !prevIsOpenedRef.current) {
8076
8057
  prevIsOpenedRef.current = true;
8077
8058
  if (selectedOption) {
@@ -9035,7 +9016,7 @@ import {
9035
9016
  formatPercent,
9036
9017
  noop as noop4
9037
9018
  } from "@funkit/utils";
9038
- import React67, { useEffect as useEffect23, useMemo as useMemo15, useState as useState20 } from "react";
9019
+ import React67, { useEffect as useEffect22, useMemo as useMemo15, useState as useState20 } from "react";
9039
9020
  import clsx14 from "clsx";
9040
9021
  import { motion as motion6, useAnimationControls } from "motion/react";
9041
9022
  import { mainnet as mainnet4 } from "viem/chains";
@@ -9516,7 +9497,7 @@ function PaymentFeesSummary({
9516
9497
  }
9517
9498
  }
9518
9499
  };
9519
- useEffect23(() => {
9500
+ useEffect22(() => {
9520
9501
  if (valuesNotAvailable && isExpanded) {
9521
9502
  setIsExpanded(false);
9522
9503
  }
@@ -9875,12 +9856,6 @@ async function getCheckoutBaseQuote(checkoutItem, userId, walletAddress, apiKey,
9875
9856
  config: checkoutItem.initSettings.config,
9876
9857
  walletAddress
9877
9858
  }),
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
9859
  // as part of deprecating funWallet, we set sponsorInitialTransferGasLimit to 0
9885
9860
  sponsorInitialTransferGasLimit: "0",
9886
9861
  apiKey,
@@ -10218,7 +10193,7 @@ function useWithdrawalQuote({
10218
10193
 
10219
10194
  // src/hooks/queries/useWithdrawalRisk.ts
10220
10195
  import { useQuery as useQuery7 } from "@tanstack/react-query";
10221
- import { useEffect as useEffect24, useRef as useRef11 } from "react";
10196
+ import { useEffect as useEffect23, useRef as useRef11 } from "react";
10222
10197
  import { isAddress as isAddress2 } from "viem";
10223
10198
  var useWithdrawalRisk = (apiKey, receiveAddress) => {
10224
10199
  const lastRiskyAddressRef = useRef11(null);
@@ -10240,7 +10215,7 @@ var useWithdrawalRisk = (apiKey, receiveAddress) => {
10240
10215
  refetchOnReconnect: false,
10241
10216
  refetchOnWindowFocus: false
10242
10217
  });
10243
- useEffect24(() => {
10218
+ useEffect23(() => {
10244
10219
  if (query.data !== true) {
10245
10220
  return;
10246
10221
  }
@@ -10383,7 +10358,7 @@ var useAssetSymbolPrice = ({
10383
10358
 
10384
10359
  // src/hooks/useTokenChain.ts
10385
10360
  import { FlagKey as FlagKey10 } from "@funkit/utils";
10386
- import { useEffect as useEffect25, useState as useState21 } from "react";
10361
+ import { useEffect as useEffect24, useState as useState21 } from "react";
10387
10362
  import { polygon as polygon2 } from "viem/chains";
10388
10363
 
10389
10364
  // src/hooks/useEnabledTokenTransferChainTokens.ts
@@ -10456,7 +10431,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
10456
10431
  const selectedChainName = chainMetadataById[selectedChainId]?.name ?? "";
10457
10432
  const defaultSelectedToken = defaultValues?.token ?? filteredAssets?.[selectedChainId]?.[0] ?? "";
10458
10433
  const [selectedToken, setSelectedToken] = useState21(defaultSelectedToken);
10459
- useEffect25(
10434
+ useEffect24(
10460
10435
  () => setSelectedChainId(validDefaultChainId),
10461
10436
  [validDefaultChainId]
10462
10437
  );
@@ -10748,11 +10723,11 @@ function usePreparedWalletConnectors() {
10748
10723
  import { useState as useState26 } from "react";
10749
10724
 
10750
10725
  // src/hooks/useAutoClearState.ts
10751
- import { useCallback as useCallback15, useEffect as useEffect26, useRef as useRef12, useState as useState22 } from "react";
10726
+ import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef12, useState as useState22 } from "react";
10752
10727
  function useAutoClearState(initialValue = null) {
10753
10728
  const [state, setState] = useState22(initialValue);
10754
10729
  const timeoutRef = useRef12();
10755
- useEffect26(() => {
10730
+ useEffect25(() => {
10756
10731
  return () => {
10757
10732
  if (timeoutRef.current !== void 0) {
10758
10733
  clearTimeout(timeoutRef.current);
@@ -10860,7 +10835,7 @@ import React70, {
10860
10835
  createContext as createContext13,
10861
10836
  useCallback as useCallback17,
10862
10837
  useContext as useContext13,
10863
- useEffect as useEffect28,
10838
+ useEffect as useEffect27,
10864
10839
  useState as useState24
10865
10840
  } from "react";
10866
10841
  import { useConfig as useConfig3 } from "wagmi";
@@ -11304,7 +11279,7 @@ import {
11304
11279
  import { safeParseJson as safeParseJson3 } from "@funkit/utils";
11305
11280
  import React69, {
11306
11281
  useContext as useContext12,
11307
- useEffect as useEffect27,
11282
+ useEffect as useEffect26,
11308
11283
  useMemo as useMemo17,
11309
11284
  useRef as useRef13,
11310
11285
  useState as useState23
@@ -11356,11 +11331,11 @@ var FunkitBrokerageProvider = ({
11356
11331
  const [isConnected, setIsConnected] = useState23(
11357
11332
  () => initialIsConnected
11358
11333
  );
11359
- useEffect27(() => {
11334
+ useEffect26(() => {
11360
11335
  const initialConnections = getAuthConnectedExchanges();
11361
11336
  setAuthConnections(initialConnections);
11362
11337
  }, []);
11363
- useEffect27(() => {
11338
+ useEffect26(() => {
11364
11339
  if (bluvoClient.withdrawal?.status === "completed") {
11365
11340
  setSelectedBrokerageAsset(null);
11366
11341
  }
@@ -11692,7 +11667,7 @@ function FunkitQuoteProvider({ children }) {
11692
11667
  const [quoteErrorMessage, setQuoteErrorMessage] = useState24("");
11693
11668
  const { getBluvoCheckoutQuote } = useBluvoCheckoutQuote();
11694
11669
  const { selectedBrokerageAsset } = useFunkitBrokerageContext();
11695
- useEffect28(() => {
11670
+ useEffect27(() => {
11696
11671
  if (isNotNullish3(logoutSymbol)) {
11697
11672
  setLatestQuote(null);
11698
11673
  setQuoteProgress({
@@ -12350,7 +12325,7 @@ function useShowConnectWallet({
12350
12325
  const withdrawalWalletAddress = "wallet" in config ? config.wallet.address() : "0x";
12351
12326
  const { isConnected, address: connectedWalletAddress } = useAccount4();
12352
12327
  const showUseConnected = !config.disableConnectedWallet && isConnected && connectedWalletAddress && withdrawalWalletAddress.toLowerCase() !== connectedWalletAddress.toLowerCase();
12353
- useEffect29(() => {
12328
+ useEffect28(() => {
12354
12329
  logger.debug("withdrawalContent:showUseConnected", {
12355
12330
  isConnected,
12356
12331
  connectedWalletAddress,
@@ -12417,12 +12392,12 @@ var WithdrawContent = ({
12417
12392
  refetchInterval: PRICE_REFRESH_INTERVAL
12418
12393
  });
12419
12394
  const targetAssetAmount = targetUnitPrice ? Number(debouncedUSD) / targetUnitPrice : void 0;
12420
- useEffect29(() => {
12395
+ useEffect28(() => {
12421
12396
  setTimeout(() => {
12422
12397
  updateTargetAssetAmount(targetAssetAmount ?? 0);
12423
12398
  }, 0);
12424
12399
  }, [targetAssetAmount, updateTargetAssetAmount]);
12425
- useEffect29(() => {
12400
+ useEffect28(() => {
12426
12401
  if (!targetAssetInfo) {
12427
12402
  return;
12428
12403
  }
@@ -12456,7 +12431,7 @@ var WithdrawContent = ({
12456
12431
  onContinue(withdrawal, txHash);
12457
12432
  }
12458
12433
  });
12459
- useEffect29(() => {
12434
+ useEffect28(() => {
12460
12435
  if (!isPlaceholderData && !isQuoteLoading && isInstantQuoting && confirmingQuote) {
12461
12436
  setTimeout(() => {
12462
12437
  setConfirmingQuote(false);
@@ -12540,7 +12515,7 @@ var WithdrawContent = ({
12540
12515
  const lastQuoteErrorRef = useRef14(null);
12541
12516
  const lastRiskyRecipientRef = useRef14(null);
12542
12517
  const lastBlacklistedRecipientRef = useRef14(null);
12543
- useEffect29(() => {
12518
+ useEffect28(() => {
12544
12519
  if (!targetAssetFetchError) {
12545
12520
  return;
12546
12521
  }
@@ -12555,7 +12530,7 @@ var WithdrawContent = ({
12555
12530
  });
12556
12531
  lastTargetAssetErrorRef.current = errorKey;
12557
12532
  }, [targetAssetFetchError, selectedChainId, selectedToken]);
12558
- useEffect29(() => {
12533
+ useEffect28(() => {
12559
12534
  if (!quoteErrorObject) {
12560
12535
  return;
12561
12536
  }
@@ -12581,7 +12556,7 @@ var WithdrawContent = ({
12581
12556
  recipientAddress,
12582
12557
  debouncedUSD
12583
12558
  ]);
12584
- useEffect29(() => {
12559
+ useEffect28(() => {
12585
12560
  if (!isRisky) {
12586
12561
  return;
12587
12562
  }
@@ -12596,7 +12571,7 @@ var WithdrawContent = ({
12596
12571
  });
12597
12572
  lastRiskyRecipientRef.current = warningKey;
12598
12573
  }, [isRisky, recipientAddress, selectedChainId, selectedToken]);
12599
- useEffect29(() => {
12574
+ useEffect28(() => {
12600
12575
  if (!isReceipentBlacklisted) {
12601
12576
  return;
12602
12577
  }
@@ -12645,6 +12620,8 @@ var WithdrawContent = ({
12645
12620
  [quoteErrorObject, targetAssetFetchError, withdrawalError, t]
12646
12621
  );
12647
12622
  const isRiskyAddress = !!isRisky && !isCheckingAddressRisk;
12623
+ const isSolanaChain = selectedChainId === solanaChain4.id;
12624
+ const recipientAddressPlaceholder = isSolanaChain ? t("withdrawal.enterRecipientAddress")[0] + t("withdrawal.enterRecipientAddress").slice(1).toLowerCase() : "0x...";
12648
12625
  return /* @__PURE__ */ React72.createElement(Box, { id: "withdrawal-flow", display: "flex", flexDirection: "column", gap: "18" }, /* @__PURE__ */ React72.createElement(
12649
12626
  WithdrawRecipientAddress,
12650
12627
  {
@@ -12653,7 +12630,8 @@ var WithdrawContent = ({
12653
12630
  setRecipientAddress,
12654
12631
  selectedToken,
12655
12632
  selectedChainId,
12656
- isRiskyAddress
12633
+ isRiskyAddress,
12634
+ placeholder: recipientAddressPlaceholder
12657
12635
  }
12658
12636
  ), /* @__PURE__ */ React72.createElement(
12659
12637
  WithdrawAmountInput,
@@ -12730,7 +12708,8 @@ function WithdrawRecipientAddress({
12730
12708
  setRecipientAddress,
12731
12709
  selectedChainId,
12732
12710
  selectedToken,
12733
- isRiskyAddress
12711
+ isRiskyAddress,
12712
+ placeholder = "0x..."
12734
12713
  }) {
12735
12714
  const { t } = useFunkitTranslation();
12736
12715
  const isValidAddress = isAddressSupported(recipientAddress);
@@ -12771,7 +12750,7 @@ function WithdrawRecipientAddress({
12771
12750
  value: recipientAddress,
12772
12751
  onChange: handleAddressChange,
12773
12752
  onBlur: handleAddressBlur,
12774
- placeholder: "0x...",
12753
+ placeholder,
12775
12754
  error: showAddressError ? t("withdrawal.invalidWalletAddress") : void 0,
12776
12755
  suffix: showUseConnected ? /* @__PURE__ */ React72.createElement(
12777
12756
  Box,
@@ -12963,7 +12942,7 @@ import { useAccount as useAccount5 } from "wagmi";
12963
12942
  // src/components/FunPayments/FunPaymentMethods.tsx
12964
12943
  import { BridgeCustomerStatus as BridgeCustomerStatus3 } from "@funkit/api-base";
12965
12944
  import { FlagKey as FlagKey14, formatCurrencyAndStringify as formatCurrencyAndStringify4 } from "@funkit/utils";
12966
- import React79, { useEffect as useEffect30 } from "react";
12945
+ import React79, { useEffect as useEffect29 } from "react";
12967
12946
 
12968
12947
  // src/domains/bridge.ts
12969
12948
  import {
@@ -14550,7 +14529,7 @@ var ConnectedMeshPaymentMethodItem = ({
14550
14529
  const hasLowBalance = !isPending && sourceBalance < getUsdMinAmount();
14551
14530
  const isDisabled = isPending || !!isBalanceError || hasLowBalance;
14552
14531
  const icon = isPending ? /* @__PURE__ */ React79.createElement(SpinnerIcon, { size: 20 }) : label.icon;
14553
- useEffect30(() => {
14532
+ useEffect29(() => {
14554
14533
  if (isPending) {
14555
14534
  return;
14556
14535
  }
@@ -15208,7 +15187,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
15208
15187
 
15209
15188
  // src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
15210
15189
  import clsx18 from "clsx";
15211
- import React98, { useCallback as useCallback21, useEffect as useEffect34, useMemo as useMemo23, useState as useState31 } from "react";
15190
+ import React98, { useCallback as useCallback21, useEffect as useEffect33, useMemo as useMemo23, useState as useState31 } from "react";
15212
15191
 
15213
15192
  // src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
15214
15193
  import React88 from "react";
@@ -15376,10 +15355,10 @@ var useRecentDirectExecutions = ({
15376
15355
 
15377
15356
  // src/hooks/useOnNewNotification.ts
15378
15357
  import { safeParseJson as safeParseJson4 } from "@funkit/utils";
15379
- import { useEffect as useEffect31 } from "react";
15358
+ import { useEffect as useEffect30 } from "react";
15380
15359
  var storageKey3 = "fkc-processed-notifications";
15381
15360
  var useOnNewNotification = (combinedNotifications, cb) => {
15382
- useEffect31(() => {
15361
+ useEffect30(() => {
15383
15362
  const alreadyProcessed = safeParseJsonObject(
15384
15363
  sessionStorage.getItem(storageKey3)
15385
15364
  );
@@ -15429,7 +15408,7 @@ import { Trans as Trans3 } from "react-i18next";
15429
15408
  import { CheckoutState as CheckoutState3 } from "@funkit/api-base";
15430
15409
  import { SOLANA_MAINNET_CHAIN_ID } from "@funkit/chains";
15431
15410
  import { formatAddress as formatAddress4, formatTimestamp } from "@funkit/utils";
15432
- import React92, { useState as useState28, useRef as useRef16, useEffect as useEffect32 } from "react";
15411
+ import React92, { useState as useState28, useRef as useRef16, useEffect as useEffect31 } from "react";
15433
15412
 
15434
15413
  // src/utils/checkoutHistory.ts
15435
15414
  var storageKey4 = "fkc-last-report-submit-time";
@@ -15582,7 +15561,7 @@ function StatusTag({ state, refundState, isDelayed: isDelayed2 }) {
15582
15561
  const checkoutState = getCheckoutStateBooleans(state, refundState);
15583
15562
  const [delayedCheckoutState, setDelayedCheckoutState] = useState28(checkoutState);
15584
15563
  const { status, isCompleted, isRefundProceeded } = delayedCheckoutState;
15585
- useEffect32(() => {
15564
+ useEffect31(() => {
15586
15565
  const timeout = setTimeout(
15587
15566
  () => {
15588
15567
  setDelayedCheckoutState(getCheckoutStateBooleans(state, refundState));
@@ -15731,7 +15710,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f12m _1rsrm2f1f _1rsrm2f1c _1rsrm2fm4
15731
15710
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
15732
15711
  import clsx16 from "clsx";
15733
15712
  import { motion as motion7, useAnimate as useAnimate2 } from "motion/react";
15734
- import React93, { useCallback as useCallback19, useEffect as useEffect33, useRef as useRef17 } from "react";
15713
+ import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as useRef17 } from "react";
15735
15714
 
15736
15715
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
15737
15716
  var STATUS_SPINNER_BOTTOM_POSITION = -5;
@@ -16181,7 +16160,7 @@ var FunNotificationBannerIcon = ({
16181
16160
  ]);
16182
16161
  }, [animate]);
16183
16162
  const statusRef = useRef17(status);
16184
- useEffect33(() => {
16163
+ useEffect32(() => {
16185
16164
  if (statusRef.current !== status) {
16186
16165
  if (statusRef.current === "processing" && status === "completed") {
16187
16166
  triggerAnimationProcessingToCompleted();
@@ -17071,13 +17050,13 @@ var CheckoutNotifications = ({
17071
17050
  isVisible,
17072
17051
  memoizedFilterFunc: filterFunc
17073
17052
  });
17074
- useEffect34(() => {
17053
+ useEffect33(() => {
17075
17054
  if (initialCheckouts || !checkouts) {
17076
17055
  return;
17077
17056
  }
17078
17057
  setInitialCheckouts(checkouts);
17079
17058
  }, [initialCheckouts, checkouts]);
17080
- useEffect34(() => {
17059
+ useEffect33(() => {
17081
17060
  if (initialDirectExecutions || !directExecutions) {
17082
17061
  return;
17083
17062
  }
@@ -17266,11 +17245,11 @@ import React100, { useCallback as useCallback22, useMemo as useMemo24, useState
17266
17245
  import { createPortal as createPortal5 } from "react-dom";
17267
17246
 
17268
17247
  // src/hooks/useFunListeners.ts
17269
- import { useEffect as useEffect35, useRef as useRef19 } from "react";
17248
+ import { useEffect as useEffect34, useRef as useRef19 } from "react";
17270
17249
  function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
17271
17250
  const activeIntervalRef = useRef19();
17272
17251
  const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
17273
- useEffect35(() => {
17252
+ useEffect34(() => {
17274
17253
  if (activate) {
17275
17254
  const createdIntervalId = startCheckoutHistoryListener(
17276
17255
  /* singleDepositAddr */
@@ -17416,7 +17395,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
17416
17395
 
17417
17396
  // src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
17418
17397
  import { sendSupportMessage } from "@funkit/api-base";
17419
- import React104, { useEffect as useEffect36, useMemo as useMemo25, useRef as useRef20, useState as useState33 } from "react";
17398
+ import React104, { useEffect as useEffect35, useMemo as useMemo25, useRef as useRef20, useState as useState33 } from "react";
17420
17399
  import { createPortal as createPortal6 } from "react-dom";
17421
17400
 
17422
17401
  // src/components/FunInput/FunTextAreaInput.tsx
@@ -17607,7 +17586,7 @@ function FunCheckoutHistoryHelp({
17607
17586
  0 /* INPUT */
17608
17587
  );
17609
17588
  const wrapperRef = useRef20(null);
17610
- useEffect36(() => wrapperRef.current?.scrollIntoView(), []);
17589
+ useEffect35(() => wrapperRef.current?.scrollIntoView(), []);
17611
17590
  const handleShowErrorMessage = (message, timeMs = FIVE_SECONDS_MS) => {
17612
17591
  setErrorMessage(message);
17613
17592
  if (timeMs !== void 0) {
@@ -18068,7 +18047,7 @@ import React217, { useCallback as useCallback46, useState as useState69 } from "
18068
18047
 
18069
18048
  // src/components/FunCheckoutModalHeightAnimationWrapper/FunCheckoutModalHeightAnimationWrapper.tsx
18070
18049
  import { motion as motion15 } from "motion/react";
18071
- import React204, { useEffect as useEffect52, useRef as useRef27, useState as useState66 } from "react";
18050
+ import React204, { useEffect as useEffect51, useRef as useRef27, useState as useState66 } from "react";
18072
18051
 
18073
18052
  // src/modals/CheckoutModal/stepTransition.ts
18074
18053
  import {
@@ -19586,7 +19565,7 @@ import {
19586
19565
  DirectExecutionType as DirectExecutionType2,
19587
19566
  RelayExecutionStatus as RelayExecutionStatus3
19588
19567
  } from "@funkit/api-base";
19589
- import React130, { useCallback as useCallback27, useEffect as useEffect37, useMemo as useMemo28, useState as useState39 } from "react";
19568
+ import React130, { useCallback as useCallback27, useEffect as useEffect36, useMemo as useMemo28, useState as useState39 } from "react";
19590
19569
  var overrideAssetsData = (de, checkoutItem) => {
19591
19570
  return {
19592
19571
  ...de,
@@ -19684,7 +19663,7 @@ var BrokerageSuccess = ({
19684
19663
  const latestDirectExecution = useMemo28(() => {
19685
19664
  return directExecutions?.[0];
19686
19665
  }, [directExecutions?.[0]?.txHash]);
19687
- useEffect37(() => {
19666
+ useEffect36(() => {
19688
19667
  if (!latestDirectExecution) {
19689
19668
  return;
19690
19669
  }
@@ -20353,7 +20332,7 @@ var TwoFactorInput = ({
20353
20332
  };
20354
20333
 
20355
20334
  // src/modals/CheckoutModal/Brokerage/ConnectExchange.tsx
20356
- import React137, { useCallback as useCallback28, useEffect as useEffect38, useState as useState41 } from "react";
20335
+ import React137, { useCallback as useCallback28, useEffect as useEffect37, useState as useState41 } from "react";
20357
20336
  import { createPortal as createPortal11 } from "react-dom";
20358
20337
 
20359
20338
  // src/components/Icons/HandIcon.tsx
@@ -20458,7 +20437,7 @@ function ConnectExchange({
20458
20437
  setAuthError(errorMessage);
20459
20438
  setIsLoadingMeshModal(false);
20460
20439
  });
20461
- useEffect38(() => {
20440
+ useEffect37(() => {
20462
20441
  if (isConnected) {
20463
20442
  navigateToBrokerage();
20464
20443
  }
@@ -20793,11 +20772,11 @@ function CheckoutHelp({
20793
20772
  }
20794
20773
 
20795
20774
  // src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
20796
- import React156, { useEffect as useEffect44, useMemo as useMemo34, useState as useState51 } from "react";
20775
+ import React156, { useEffect as useEffect43, useMemo as useMemo34, useState as useState51 } from "react";
20797
20776
  import { createPortal as createPortal14 } from "react-dom";
20798
20777
 
20799
20778
  // src/providers/UserPresenceContext.tsx
20800
- import React143, { useEffect as useEffect39 } from "react";
20779
+ import React143, { useEffect as useEffect38 } from "react";
20801
20780
  import {
20802
20781
  createContext as createContext15,
20803
20782
  useContext as useContext15,
@@ -20809,7 +20788,7 @@ var UserPresenceContext = createContext15({
20809
20788
  });
20810
20789
  var UserPresenceProvider = ({ children }) => {
20811
20790
  const [isAway, setIsAway] = useState43(false);
20812
- useEffect39(() => {
20791
+ useEffect38(() => {
20813
20792
  let timeoutId;
20814
20793
  const handleVisibilityChange = () => {
20815
20794
  if (document.visibilityState === "visible") {
@@ -20839,13 +20818,13 @@ import React145 from "react";
20839
20818
  import React144, { useState as useState44 } from "react";
20840
20819
 
20841
20820
  // src/hooks/useInterval.ts
20842
- import { useEffect as useEffect40, useRef as useRef21 } from "react";
20821
+ import { useEffect as useEffect39, useRef as useRef21 } from "react";
20843
20822
  function useInterval(callback, delay) {
20844
20823
  const savedCallback = useRef21(callback);
20845
20824
  useIsomorphicLayoutEffect(() => {
20846
20825
  savedCallback.current = callback;
20847
20826
  }, [callback]);
20848
- useEffect40(() => {
20827
+ useEffect39(() => {
20849
20828
  const id = setInterval(() => {
20850
20829
  savedCallback.current();
20851
20830
  }, delay);
@@ -21486,7 +21465,7 @@ function KatanaBridgeAlert() {
21486
21465
  import { useState as useState46 } from "react";
21487
21466
 
21488
21467
  // src/modals/CheckoutModal/useSourceAssetConfirm.tsx
21489
- import { useEffect as useEffect41, useState as useState45 } from "react";
21468
+ import { useEffect as useEffect40, useState as useState45 } from "react";
21490
21469
  function preparePaymentMethodInfo(selectedPaymentMethodInfo) {
21491
21470
  switch (selectedPaymentMethodInfo?.paymentMethod) {
21492
21471
  case "balance" /* ACCOUNT_BALANCE */:
@@ -21547,7 +21526,7 @@ function useHackyTriggerWorkaroundReactDevBrainExplode() {
21547
21526
  function useTriggerQuoteAndOtherStuffsWithExtremeCaution(onResult, setPreloadedQuoteData) {
21548
21527
  const [assetRefresh, triggerAssetConfirm] = useHackyTriggerWorkaroundReactDevBrainExplode();
21549
21528
  const { isSourceAssetConfirming, onSourceAssetConfirmed } = useSourceAssetConfirm(setPreloadedQuoteData);
21550
- useEffect41(() => {
21529
+ useEffect40(() => {
21551
21530
  if (assetRefresh === 0) {
21552
21531
  return;
21553
21532
  }
@@ -21625,8 +21604,9 @@ import React153, { useState as useState47 } from "react";
21625
21604
  import { Trans as Trans10 } from "react-i18next";
21626
21605
 
21627
21606
  // src/modals/CheckoutModal/ConfirmationStep/useAccountBalanceTransfer.ts
21628
- import { ERC20_ABI, USDT_ABI } from "@funkit/core";
21607
+ import { USDT_ABI } from "@funkit/utils";
21629
21608
  import { useCallback as useCallback31 } from "react";
21609
+ import { erc20Abi as erc20Abi2 } from "viem";
21630
21610
  import { useAccount as useAccount6, useSendTransaction, useWriteContract } from "wagmi";
21631
21611
 
21632
21612
  // src/utils/isMainnetUsdt.ts
@@ -21708,7 +21688,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
21708
21688
  chainId: Number.parseInt(sourceAssetChainId),
21709
21689
  address: sourceAssetAddress,
21710
21690
  // USDT on mainnet has a different ABI
21711
- abi: isTokenMainnetUsdt ? USDT_ABI : ERC20_ABI,
21691
+ abi: isTokenMainnetUsdt ? USDT_ABI : erc20Abi2,
21712
21692
  functionName: "transfer",
21713
21693
  args: [depositAddress, sourceAssetAmountBaseUnit]
21714
21694
  };
@@ -21911,7 +21891,7 @@ function usePostCheckout({
21911
21891
  }
21912
21892
 
21913
21893
  // 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";
21894
+ import { useCallback as useCallback34, useEffect as useEffect42, useMemo as useMemo33, useRef as useRef22, useState as useState50 } from "react";
21915
21895
 
21916
21896
  // src/hooks/useCountdown.tsx
21917
21897
  import React155 from "react";
@@ -21919,7 +21899,7 @@ import { useCallback as useCallback33, useState as useState49 } from "react";
21919
21899
 
21920
21900
  // src/components/FunCountdown/FunCountdown.tsx
21921
21901
  import { noop as noop8 } from "@funkit/utils";
21922
- import React154, { useCallback as useCallback32, useEffect as useEffect42, useState as useState48 } from "react";
21902
+ import React154, { useCallback as useCallback32, useEffect as useEffect41, useState as useState48 } from "react";
21923
21903
 
21924
21904
  // src/components/FunCountdown/FunCountdown.css.ts
21925
21905
  var backgroundRing = "_1t0bc111 _1rsrm2f1os";
@@ -21962,7 +21942,7 @@ var FunCountdown = ({
21962
21942
  setRemainingSeconds((prev) => prev > 0 ? prev - 1 : prev);
21963
21943
  }, [isPaused]);
21964
21944
  useInterval(handleInterval, 1e3);
21965
- useEffect42(() => {
21945
+ useEffect41(() => {
21966
21946
  if (remainingSeconds === onBeforeCountdownEndsSeconds) {
21967
21947
  onBeforeCountdownEndsOnce();
21968
21948
  }
@@ -22183,7 +22163,7 @@ function useQuoteRefresh({
22183
22163
  }
22184
22164
  return null;
22185
22165
  }, [isQuoting, quoteErrorMessage]);
22186
- useEffect43(() => {
22166
+ useEffect42(() => {
22187
22167
  if (isPendingRefresh && !isOnHold) {
22188
22168
  setIsPendingRefresh(false);
22189
22169
  refreshQuote();
@@ -22299,7 +22279,7 @@ function ConfirmationStep({
22299
22279
  }
22300
22280
  }
22301
22281
  });
22302
- useEffect44(() => {
22282
+ useEffect43(() => {
22303
22283
  triggerNewQuote({ maxRetries: 1 });
22304
22284
  }, []);
22305
22285
  const isContinuing = isConfirming || isPostCheckoutLoading;
@@ -22597,7 +22577,7 @@ function DirectExecutionNotifCenter({
22597
22577
 
22598
22578
  // src/modals/CheckoutModal/InputAmount/InputAmount.tsx
22599
22579
  import { isMobile as isMobile7 } from "@funkit/utils";
22600
- import React173, { useEffect as useEffect46 } from "react";
22580
+ import React173, { useEffect as useEffect45 } from "react";
22601
22581
 
22602
22582
  // src/hooks/queries/useMeldCurrencies.ts
22603
22583
  import { getMeldSupportedFiat } from "@funkit/api-base";
@@ -22884,13 +22864,13 @@ import React171, { useMemo as useMemo36 } from "react";
22884
22864
  // src/components/AnimatedWidthWrapper/AnimatedWidthWrapper.tsx
22885
22865
  import { motion as motion10 } from "motion/react";
22886
22866
  import React159 from "react";
22887
- import { useEffect as useEffect45, useRef as useRef23, useState as useState52 } from "react";
22867
+ import { useEffect as useEffect44, useRef as useRef23, useState as useState52 } from "react";
22888
22868
  function AnimatedWidthWrapper({ children }) {
22889
22869
  const containerRef = useRef23(null);
22890
22870
  const animationFrameRef = useRef23(null);
22891
22871
  const resizeObserverRef = useRef23(null);
22892
22872
  const [width, setWidth] = useState52("auto");
22893
- useEffect45(() => {
22873
+ useEffect44(() => {
22894
22874
  if (containerRef.current) {
22895
22875
  resizeObserverRef.current = new ResizeObserver((entries) => {
22896
22876
  animationFrameRef.current = requestAnimationFrame(() => {
@@ -23567,7 +23547,7 @@ var SourcePaymentMethodItem = ({
23567
23547
  icon: /* @__PURE__ */ React162.createElement(MasterCardPillIcon, { key: "mastercard", backdropColor })
23568
23548
  }
23569
23549
  ];
23570
- const isMeldEnabled = useFlag(FlagKey17.EnableMeldPayment);
23550
+ const isMeldEnabled = useIsMeldEnabled();
23571
23551
  const isBrokerageEnabled = useFlag(FlagKey17.EnableBluvoBrokerage);
23572
23552
  const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
23573
23553
  if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isMeldEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
@@ -24987,10 +24967,10 @@ import {
24987
24967
  hyperEvmChain as hyperEvmChain4,
24988
24968
  katanaChain
24989
24969
  } from "@funkit/chains";
24990
- import { getTokenAddressBySymbolAndChainId } from "@funkit/core";
24991
24970
  import { useCallback as useCallback37, useState as useState55 } from "react";
24992
24971
  import { mainnet as mainnet8, mantle, zksync as zksync2 } from "viem/chains";
24993
- var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
24972
+ import { getAssetErc20ByChainAndSymbol as getAssetErc20ByChainAndSymbol2 } from "@funkit/api-base";
24973
+ var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
24994
24974
  if (!checkoutItem?.initSettings.config.targetChain) {
24995
24975
  throw new Error("pickSourceAssetForCard: Missing targetChain");
24996
24976
  }
@@ -25006,7 +24986,11 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
25006
24986
  hyperEvmChain4.id.toString()
25007
24987
  ]
25008
24988
  );
25009
- const wethAddrOnTargetChain = (await getTokenAddressBySymbolAndChainId("weth", moonpayChainId)).toLowerCase();
24989
+ const wethAddrOnTargetChain = (await getAssetErc20ByChainAndSymbol2({
24990
+ chainId: moonpayChainId,
24991
+ symbol: "weth",
24992
+ apiKey
24993
+ })).address.toLowerCase();
25010
24994
  const isTargetAssetEthOrWeth = [NATIVE_TOKEN, wethAddrOnTargetChain].includes(
25011
24995
  checkoutItem.initSettings.config.targetAsset
25012
24996
  ) && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO10[moonpayChainId]?.nativeCurrency.symbol === "ETH" /* ETH */;
@@ -25024,10 +25008,11 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
25024
25008
  sourceTokenAddress = NATIVE_TOKEN;
25025
25009
  } else {
25026
25010
  sourceTokenTicker = "USDC" /* USDC */;
25027
- sourceTokenAddress = await getTokenAddressBySymbolAndChainId(
25028
- "USDC" /* USDC */,
25029
- sourceTokenChainId
25030
- );
25011
+ sourceTokenAddress = (await getAssetErc20ByChainAndSymbol2({
25012
+ chainId: sourceTokenChainId,
25013
+ symbol: "USDC" /* USDC */,
25014
+ apiKey
25015
+ })).address;
25031
25016
  }
25032
25017
  }
25033
25018
  logger.log("pickSourceAssetForCard:result", {
@@ -25048,11 +25033,16 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
25048
25033
  function useUpdateCardSourceAsset() {
25049
25034
  const { checkoutItem, updateSourceAsset } = useCheckoutContext();
25050
25035
  const { userIpInfo } = useFunkitUserIp();
25036
+ const { apiKey } = useFunkitConfig();
25051
25037
  const [isUpdating, setIsUpdating] = useState55(false);
25052
25038
  const onSelectCard = useCallback37(async () => {
25053
25039
  setIsUpdating(true);
25054
25040
  try {
25055
- const source = await pickSourceAssetForCard(checkoutItem, userIpInfo);
25041
+ const source = await pickSourceAssetForCard(
25042
+ checkoutItem,
25043
+ userIpInfo,
25044
+ apiKey
25045
+ );
25056
25046
  updateSourceAsset({
25057
25047
  tokenAddress: source.sourceTokenAddress,
25058
25048
  symbol: source.sourceTokenTicker,
@@ -25062,7 +25052,7 @@ function useUpdateCardSourceAsset() {
25062
25052
  } finally {
25063
25053
  setIsUpdating(false);
25064
25054
  }
25065
- }, [checkoutItem, updateSourceAsset, userIpInfo]);
25055
+ }, [checkoutItem, updateSourceAsset, userIpInfo, apiKey]);
25066
25056
  return { onSelectCard, isUpdating };
25067
25057
  }
25068
25058
 
@@ -25714,14 +25704,14 @@ function InputAmountLoading({
25714
25704
  };
25715
25705
  }
25716
25706
  }, [sourceHoldingError, unitPriceError, t]);
25717
- const isCardCheckout = paymentMethodInfo.paymentMethod === "card" /* CARD */;
25718
- const isMeldCheckout = isCardCheckout && meldEnabled;
25707
+ const isMeldPaymentMethod = paymentMethodInfo.paymentMethod === "card" /* CARD */;
25708
+ const isMeldCheckout = isMeldPaymentMethod && meldEnabled;
25719
25709
  return /* @__PURE__ */ React172.createElement(
25720
25710
  InputAmountLayout,
25721
25711
  {
25722
25712
  actionButtonProps: { title: t("common.continue"), isDisabled: true },
25723
25713
  fiatCurrencySelector: isMeldCheckout && /* @__PURE__ */ React172.createElement(CurrencySelector, { isLoading: true }),
25724
- header: isCardCheckout && isSourceNavWidgetEnabled && /* @__PURE__ */ React172.createElement(Box, { width: "full" }, /* @__PURE__ */ React172.createElement(
25714
+ header: isMeldPaymentMethod && isSourceNavWidgetEnabled && /* @__PURE__ */ React172.createElement(Box, { width: "full" }, /* @__PURE__ */ React172.createElement(
25725
25715
  SourcePaymentMethodItem,
25726
25716
  {
25727
25717
  type: "card" /* CARD */,
@@ -25763,7 +25753,7 @@ function InputAmountLoading({
25763
25753
  )
25764
25754
  )
25765
25755
  ),
25766
- amountOptions: !isCardCheckout && /* @__PURE__ */ React172.createElement(QuickOptions, { disabled: true, options: USD_AMOUNT_OPTIONS_PCT, percentMode: true }),
25756
+ amountOptions: !isMeldPaymentMethod && /* @__PURE__ */ React172.createElement(QuickOptions, { disabled: true, options: USD_AMOUNT_OPTIONS_PCT, percentMode: true }),
25767
25757
  footer: isMeldCheckout ? /* @__PURE__ */ React172.createElement(Box, { paddingX: "6" }, /* @__PURE__ */ React172.createElement(SourceMeldQuoteItem, { isLoading: true })) : /* @__PURE__ */ React172.createElement(YouPayYouReceiveBottomBarLayoutWrapper, null, /* @__PURE__ */ React172.createElement(
25768
25758
  FunSkeletonBlock,
25769
25759
  {
@@ -25893,7 +25883,7 @@ function InputAmount(props) {
25893
25883
  const skipExchangeRates = paymentMethodInfo.paymentMethod !== "card" /* CARD */ || !isDefiMode;
25894
25884
  const exchangeRatesLoaded = !isCurrencyExchangeRatesLoading && !!currencyExchangeRates;
25895
25885
  const isLoaded = !!(checkoutItem && unitPrice && !sourceHoldingError && !isLoadingSourceHolding && !isMeldDefaultCurrencyLoading && (skipExchangeRates || exchangeRatesLoaded));
25896
- useEffect46(() => setCheckoutQuote(null), []);
25886
+ useEffect45(() => setCheckoutQuote(null), []);
25897
25887
  if (isLoaded) {
25898
25888
  return /* @__PURE__ */ React173.createElement(
25899
25889
  InputAmountLoaded,
@@ -25919,7 +25909,7 @@ function InputAmount(props) {
25919
25909
  }
25920
25910
 
25921
25911
  // src/modals/CheckoutModal/LoadingAccount.tsx
25922
- import React176, { useEffect as useEffect47 } from "react";
25912
+ import React176, { useEffect as useEffect46 } from "react";
25923
25913
 
25924
25914
  // src/hooks/usePaymentSources.ts
25925
25915
  import { FlagKey as FlagKey20, isNotNullish as isNotNullish5 } from "@funkit/utils";
@@ -25929,17 +25919,17 @@ function usePaymentMethodEnablement({
25929
25919
  const { apiKey } = useFunkitConfig();
25930
25920
  const isTokenTransferFlagEnabled = useFlag(FlagKey20.EnableTokenTransfer);
25931
25921
  const isFiatFlagEnabled = useFiatEnabled();
25932
- const isCardFlagEnabled = useFlag(FlagKey20.EnableMeldPayment);
25922
+ const isMeldFlagEnabled = useIsMeldEnabled();
25933
25923
  const isBrokerageFlagEnabled = useFlag(FlagKey20.EnableBluvoBrokerage);
25934
25924
  const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
25935
25925
  const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
25936
25926
  const isTokenTransferEnabled = isTokenTransferFlagEnabled && !isKatanaEarnFlowAction;
25937
- const isCardEnabled = isCardFlagEnabled && !isKatanaEarnFlowAction;
25927
+ const isMeldEnabled = isMeldFlagEnabled && !isKatanaEarnFlowAction;
25938
25928
  const isBrokerageEnabled = isBrokerageFlagEnabled && isTokenTransferEnabled;
25939
25929
  return {
25940
25930
  isFiatEnabled,
25941
25931
  isTokenTransferEnabled,
25942
- isCardEnabled,
25932
+ isMeldEnabled,
25943
25933
  isBrokerageEnabled
25944
25934
  };
25945
25935
  }
@@ -25962,7 +25952,7 @@ var usePaymentSources = (paymentMethodInfo, targetChainId, checkoutConfig) => {
25962
25952
  const {
25963
25953
  isFiatEnabled,
25964
25954
  isTokenTransferEnabled,
25965
- isCardEnabled,
25955
+ isMeldEnabled,
25966
25956
  isBrokerageEnabled
25967
25957
  } = usePaymentMethodEnablement({ checkoutConfig });
25968
25958
  const accountPaymentMethodInfo = createPaymentMethodInfo({
@@ -25983,13 +25973,13 @@ var usePaymentSources = (paymentMethodInfo, targetChainId, checkoutConfig) => {
25983
25973
  virtualBankPaymentMethodInfo
25984
25974
  ].filter(isNotNullish5);
25985
25975
  const ignoreFallback = isConnected && !hasUsableBalance;
25986
- const fallback2 = connected.length === 0 && !ignoreFallback ? isTokenTransferEnabled ? ["token_transfer" /* TOKEN_TRANSFER */] : isCardEnabled ? ["card" /* CARD */] : ["balance" /* ACCOUNT_BALANCE */] : [];
25976
+ const fallback2 = connected.length === 0 && !ignoreFallback ? isTokenTransferEnabled ? ["token_transfer" /* TOKEN_TRANSFER */] : isMeldEnabled ? ["card" /* CARD */] : ["balance" /* ACCOUNT_BALANCE */] : [];
25987
25977
  const isTokenInNewSources = !fallback2.includes("token_transfer" /* TOKEN_TRANSFER */) && isTokenTransferEnabled;
25988
25978
  const isWalletInNewSources = !isConnected && !fallback2.includes("balance" /* ACCOUNT_BALANCE */);
25989
25979
  const isBankInNewSources = !matchingFiatAccount && isUserLoggedIn && isFiatEnabled;
25990
25980
  const newSources = [
25991
25981
  isTokenInNewSources && "token_transfer" /* TOKEN_TRANSFER */,
25992
- !fallback2.includes("card" /* CARD */) && isCardEnabled && "card" /* CARD */,
25982
+ !fallback2.includes("card" /* CARD */) && isMeldEnabled && "card" /* CARD */,
25993
25983
  isBankInNewSources && "virtual_bank" /* VIRTUAL_BANK */,
25994
25984
  isWalletInNewSources && "balance" /* ACCOUNT_BALANCE */,
25995
25985
  isBrokerageEnabled && "brokerage" /* BROKERAGE */
@@ -26263,7 +26253,7 @@ function LoadingAccount({
26263
26253
  const hasCustomStartingStep = !!checkoutConfig?.startingStep;
26264
26254
  const startsOnConfirmationStep = checkoutConfig?.startingStep === "confirmation" /* CONFIRMATION */;
26265
26255
  const startsOnSelectAssetStep = checkoutConfig?.startingStep === "select_asset" /* SELECT_ASSET */;
26266
- useEffect47(() => {
26256
+ useEffect46(() => {
26267
26257
  if (isLoadingFlags || isLoadingFiat || !checkoutConfig) {
26268
26258
  return;
26269
26259
  }
@@ -26605,7 +26595,7 @@ import {
26605
26595
  hyperEvmChain as hyperEvmChain5
26606
26596
  } from "@funkit/chains";
26607
26597
  import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent5 } from "@funkit/utils";
26608
- import React182, { useEffect as useEffect48, useMemo as useMemo41, useState as useState57 } from "react";
26598
+ import React182, { useEffect as useEffect47, useMemo as useMemo41, useState as useState57 } from "react";
26609
26599
  import { createPortal as createPortal18 } from "react-dom";
26610
26600
  import { mainnet as mainnet9 } from "viem/chains";
26611
26601
 
@@ -26959,7 +26949,7 @@ function useAssetOptions({
26959
26949
  return assetOptions;
26960
26950
  }
26961
26951
  function useScrollToSelectedAsset(selectedChainTokenSymbol) {
26962
- useEffect48(() => {
26952
+ useEffect47(() => {
26963
26953
  const optionEl = document.getElementById(
26964
26954
  `option-${selectedChainTokenSymbol}`
26965
26955
  );
@@ -27378,7 +27368,7 @@ function showsNativeTokensOnTop(apiKey) {
27378
27368
 
27379
27369
  // src/modals/CheckoutModal/SourceChange/SourceChange.tsx
27380
27370
  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";
27371
+ import React184, { useCallback as useCallback40, useEffect as useEffect48, useState as useState58 } from "react";
27382
27372
  import { createPortal as createPortal19 } from "react-dom";
27383
27373
 
27384
27374
  // src/modals/CheckoutModal/SourceChange/DefiPurchaseSection.tsx
@@ -27565,7 +27555,6 @@ function PayPal() {
27565
27555
  function SourceChange({
27566
27556
  modalState,
27567
27557
  onNext,
27568
- onClose,
27569
27558
  setModalState
27570
27559
  }) {
27571
27560
  const { paymentMethodInfo, targetChainId } = modalState;
@@ -27576,16 +27565,14 @@ function SourceChange({
27576
27565
  const { data: fiatAccounts } = useVirtualFiatAccounts();
27577
27566
  const matchingFiatAccount = useMatchingVirtualFiatAccount(fiatAccounts);
27578
27567
  const { apiKey, textCustomizations } = useFunkitConfig();
27579
- const enableMeldPayment = useIsMeldEnabled();
27580
27568
  const isDefiMode = checkoutItem?.initSettings.config.isDefiMode;
27581
27569
  const hasAutoContinue = !isOstiumCustomer(apiKey) && !isDefiMode;
27582
- useEffect49(() => {
27570
+ useEffect48(() => {
27583
27571
  if (!paymentMethodInfo) {
27584
27572
  return;
27585
27573
  }
27586
27574
  updateSelectedPaymentMethodInfo(paymentMethodInfo);
27587
27575
  }, [paymentMethodInfo, updateSelectedPaymentMethodInfo]);
27588
- const { onSelectCard } = useUpdateCardSourceAsset();
27589
27576
  const bluvo = useBluvo();
27590
27577
  const handleConnectedSourceContinue = (source, isConfirmed = false) => {
27591
27578
  setConnectedSource(source);
@@ -27625,19 +27612,11 @@ function SourceChange({
27625
27612
  return;
27626
27613
  }
27627
27614
  if (newSource2 === "card" /* CARD */) {
27628
- if (isPolymarketCustomer(apiKey) && !enableMeldPayment) {
27629
- checkoutItem?.initSettings.onPolymarketCardSwitch?.({});
27630
- onClose();
27631
- return;
27632
- }
27633
27615
  const paymentMethodInfo2 = createPaymentMethodInfo({
27634
27616
  paymentMethod: "card" /* CARD */,
27635
27617
  titleCustomization: textCustomizations.debitOrCredit
27636
27618
  });
27637
27619
  updateSelectedPaymentMethodInfo(paymentMethodInfo2);
27638
- if (!enableMeldPayment) {
27639
- await onSelectCard();
27640
- }
27641
27620
  onNext({
27642
27621
  connectNew: true,
27643
27622
  reverseAnimation: true,
@@ -27685,7 +27664,7 @@ function SourceChange({
27685
27664
  });
27686
27665
  }
27687
27666
  };
27688
- useEffect49(() => {
27667
+ useEffect48(() => {
27689
27668
  if (connectionStatus !== "disconnected" && connectionStatus !== "loading") {
27690
27669
  onCloseConnectModal();
27691
27670
  }
@@ -27780,7 +27759,7 @@ import { truncateMiddleOfAddress } from "@funkit/utils";
27780
27759
  import React185, { useCallback as useCallback42, useState as useState60 } from "react";
27781
27760
 
27782
27761
  // src/hooks/useCopyToClipboard.ts
27783
- import { useCallback as useCallback41, useEffect as useEffect50, useState as useState59 } from "react";
27762
+ import { useCallback as useCallback41, useEffect as useEffect49, useState as useState59 } from "react";
27784
27763
  var useCopyToClipboard = (text, delay = 1500) => {
27785
27764
  const [isCopied, setCopied] = useState59(false);
27786
27765
  const handleCopy = useCallback41(() => {
@@ -27790,7 +27769,7 @@ var useCopyToClipboard = (text, delay = 1500) => {
27790
27769
  navigator.clipboard.writeText(text);
27791
27770
  setCopied(true);
27792
27771
  }, [text]);
27793
- useEffect50(() => {
27772
+ useEffect49(() => {
27794
27773
  if (!isCopied) {
27795
27774
  return;
27796
27775
  }
@@ -29178,7 +29157,7 @@ var FiatAccountDetail = {
29178
29157
 
29179
29158
  // src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
29180
29159
  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";
29160
+ import React203, { useCallback as useCallback43, useEffect as useEffect50, useMemo as useMemo43, useState as useState64 } from "react";
29182
29161
  function useIframeListener(listeners) {
29183
29162
  const handleMessage = useCallback43(
29184
29163
  (event) => {
@@ -29202,7 +29181,7 @@ function useIframeListener(listeners) {
29202
29181
  },
29203
29182
  [listeners]
29204
29183
  );
29205
- useEffect51(() => {
29184
+ useEffect50(() => {
29206
29185
  window.addEventListener("message", handleMessage);
29207
29186
  return () => {
29208
29187
  window.removeEventListener("message", handleMessage);
@@ -29591,7 +29570,7 @@ function FunCheckoutModalHeightAnimationWrapper({
29591
29570
  const animationFrameRef = useRef27(null);
29592
29571
  const resizeObserverRef = useRef27(null);
29593
29572
  const [height, setHeight] = useState66("auto");
29594
- useEffect52(() => {
29573
+ useEffect51(() => {
29595
29574
  if (containerRef.current) {
29596
29575
  resizeObserverRef.current = new ResizeObserver((entries) => {
29597
29576
  animationFrameRef.current = requestAnimationFrame(() => {
@@ -29649,7 +29628,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
29649
29628
  import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
29650
29629
  import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
29651
29630
  import clsx24 from "clsx";
29652
- import React213, { useEffect as useEffect53, useMemo as useMemo44, useRef as useRef28, useState as useState68 } from "react";
29631
+ import React213, { useEffect as useEffect52, useMemo as useMemo44, useRef as useRef28, useState as useState68 } from "react";
29653
29632
  import { Virtuoso } from "react-virtuoso";
29654
29633
  import { useAccount as useAccount7 } from "wagmi";
29655
29634
 
@@ -30192,7 +30171,7 @@ function Home({
30192
30171
  const { checkoutHistoryList, isCheckoutHistoryInited } = useCheckoutHistoryContext();
30193
30172
  const { returnViewPresets } = useActivityTraversal();
30194
30173
  const { animation: tabAnimation, navigateTo } = useAnimatedNavigation(setSelectedView);
30195
- useEffect53(() => {
30174
+ useEffect52(() => {
30196
30175
  const virtuosoDiv = virtuosoParentRef.current?.firstChild;
30197
30176
  virtuosoDiv?.classList.add(animateVirtuosoInClass);
30198
30177
  }, []);
@@ -30949,7 +30928,7 @@ import React231, { useRef as useRef29 } from "react";
30949
30928
  import React229, { useCallback as useCallback47, useMemo as useMemo45, useState as useState72 } from "react";
30950
30929
 
30951
30930
  // src/components/FunConnectOptions/FunConnectResultStep.tsx
30952
- import React224, { useEffect as useEffect54 } from "react";
30931
+ import React224, { useEffect as useEffect53 } from "react";
30953
30932
  var AUTO_CLOSE = 2e3;
30954
30933
  var messageMap = (hasQrCode) => ({
30955
30934
  error: {
@@ -30968,7 +30947,7 @@ var FunConnectResultStep = ({
30968
30947
  qrCodeUri
30969
30948
  }) => {
30970
30949
  const hasAutoclose = type === "success";
30971
- useEffect54(() => {
30950
+ useEffect53(() => {
30972
30951
  if (!hasAutoclose) {
30973
30952
  return;
30974
30953
  }
@@ -31787,7 +31766,7 @@ function ModalProvider({ children }) {
31787
31766
  onConnect: () => closeModals(isUnauthenticated),
31788
31767
  onDisconnect: closeModals
31789
31768
  });
31790
- useEffect55(() => {
31769
+ useEffect54(() => {
31791
31770
  if (isUnauthenticated) {
31792
31771
  closeModals();
31793
31772
  }
@@ -31883,7 +31862,7 @@ function useConnectModal(onClose) {
31883
31862
  const { connectModalOpen, openConnectModal } = useContext16(ModalContext);
31884
31863
  const { isWalletConnectModalOpen } = useWalletConnectOpenState();
31885
31864
  const effectiveConnectModalOpen = connectModalOpen || isWalletConnectModalOpen;
31886
- useEffect55(() => {
31865
+ useEffect54(() => {
31887
31866
  if (!effectiveConnectModalOpen && onClose) {
31888
31867
  onClose();
31889
31868
  }
@@ -31958,7 +31937,7 @@ function FunkitCheckoutProvider({ children }) {
31958
31937
  },
31959
31938
  []
31960
31939
  );
31961
- useEffect56(() => {
31940
+ useEffect55(() => {
31962
31941
  if (isNotNullish8(logoutSymbol)) {
31963
31942
  setActiveCheckout(null);
31964
31943
  }
@@ -32564,13 +32543,13 @@ function useFunkitCheckout(props) {
32564
32543
  });
32565
32544
  openWithdrawalModal?.({ withdrawalId, ...config });
32566
32545
  });
32567
- useEffect56(() => {
32546
+ useEffect55(() => {
32568
32547
  if (isUserLoggedIn && pendingCheckoutConfig) {
32569
32548
  setPendingCheckoutConfig(void 0);
32570
32549
  beginCheckout(pendingCheckoutConfig);
32571
32550
  }
32572
32551
  }, [beginCheckout, isUserLoggedIn, pendingCheckoutConfig]);
32573
- useEffect56(() => {
32552
+ useEffect55(() => {
32574
32553
  if (pendingCheckoutConfig && !isUserLoggedIn && !connectModalOpen) {
32575
32554
  setPendingCheckoutConfig(void 0);
32576
32555
  }
@@ -32782,12 +32761,12 @@ async function getTokenDecimals(wagmiConfig, chainId, tokenAddress) {
32782
32761
  if (isNativeTokenAddress(tokenAddress)) {
32783
32762
  return FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO13[chainId]?.nativeCurrency?.decimals || 18;
32784
32763
  }
32785
- if (chainId === solanaChain4.id.toString()) {
32786
- return solanaChain4.nativeCurrency.decimals;
32764
+ if (chainId === solanaChain5.id.toString()) {
32765
+ return solanaChain5.nativeCurrency.decimals;
32787
32766
  }
32788
32767
  const decimals = await readContract(wagmiConfig, {
32789
32768
  address: tokenAddress,
32790
- abi: erc20Abi2,
32769
+ abi: erc20Abi3,
32791
32770
  chainId: Number.parseInt(chainId),
32792
32771
  functionName: "decimals"
32793
32772
  });
@@ -32893,7 +32872,7 @@ function computeDisplayDestinationToken(checkoutConfig, displayAssetAmount) {
32893
32872
 
32894
32873
  // src/domains/feeEstimate.ts
32895
32874
  import { mainnet as mainnet10 } from "viem/chains";
32896
- var L1_FEES_ESTIMATE = 5;
32875
+ var L1_FEES_ESTIMATE = 1;
32897
32876
  var L2_FEES_ESTIMATE = 1;
32898
32877
  var BROKERAGE_FEES_ESTIMATE = 0;
32899
32878
  var getBaseFeeUsdEstimate = (targetChainId, assetChainId) => {
@@ -32918,7 +32897,7 @@ function isPreferredChain(chainId, additionalChains = []) {
32918
32897
  base7.id,
32919
32898
  arbitrum5.id,
32920
32899
  optimism.id,
32921
- solanaChain5.id,
32900
+ solanaChain6.id,
32922
32901
  ...additionalChains
32923
32902
  ]);
32924
32903
  return chains.has(chainId);
@@ -33422,7 +33401,7 @@ function ConnectButton({
33422
33401
  const connectionStatus = useConnectionStatus();
33423
33402
  const { setShowBalance } = useShowBalance();
33424
33403
  const [ready, setReady] = useState75(false);
33425
- useEffect57(() => {
33404
+ useEffect56(() => {
33426
33405
  setShowBalance(showBalance);
33427
33406
  if (!ready) {
33428
33407
  setReady(true);
@@ -34117,7 +34096,6 @@ var en_default = {
34117
34096
  fiveMinutes: "5 min"
34118
34097
  },
34119
34098
  common: {
34120
- privyIframeTitle: "Privy",
34121
34099
  haveQuestions: "Have questions?",
34122
34100
  getHelp: "Get help",
34123
34101
  depositsLive: "{{tokenName}} deposits are live!",
@@ -34148,16 +34126,11 @@ var en_default = {
34148
34126
  tryAgain: "Try again",
34149
34127
  getStarted: "Get started",
34150
34128
  back: "Back",
34151
- accountTypeEmail: "Email",
34152
- accountTypeTwitter: "Twitter ID",
34153
- accountTypeApple: "Apple ID",
34154
- accountTypeFarcaster: "Farcaster ID",
34155
34129
  close: "Close",
34156
34130
  copyAddress: "Copy address",
34157
34131
  copied: "Copied",
34158
34132
  auto: "Auto",
34159
- comingSoon: "Coming Soon",
34160
- or: "or"
34133
+ comingSoon: "Coming Soon"
34161
34134
  },
34162
34135
  disclaimer: {
34163
34136
  terms: "terms",
@@ -34170,13 +34143,7 @@ var en_default = {
34170
34143
  },
34171
34144
  connect: {
34172
34145
  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"
34146
+ connectWallet: "Connect wallet"
34180
34147
  },
34181
34148
  selectAsset: {
34182
34149
  yourTokens: "Your tokens",
@@ -34627,7 +34594,6 @@ var es_default = {
34627
34594
  fiveMinutes: "5 min"
34628
34595
  },
34629
34596
  common: {
34630
- privyIframeTitle: "Privy",
34631
34597
  haveQuestions: "\xBFTienes preguntas?",
34632
34598
  getHelp: "Obtener ayuda",
34633
34599
  depositsLive: "\xA1Los dep\xF3sitos de {{tokenName}} est\xE1n activos!",
@@ -34658,16 +34624,11 @@ var es_default = {
34658
34624
  tryAgain: "Intentar nuevamente",
34659
34625
  getStarted: "Comenzar",
34660
34626
  back: "Atr\xE1s",
34661
- accountTypeEmail: "Email",
34662
- accountTypeTwitter: "ID de Twitter",
34663
- accountTypeApple: "ID de Apple",
34664
- accountTypeFarcaster: "ID de Farcaster",
34665
34627
  close: "Cerrar",
34666
34628
  copyAddress: "Copiar direcci\xF3n",
34667
34629
  copied: "Copiado",
34668
34630
  auto: "Auto",
34669
- comingSoon: "Pr\xF3ximamente",
34670
- or: "o"
34631
+ comingSoon: "Pr\xF3ximamente"
34671
34632
  },
34672
34633
  disclaimer: {
34673
34634
  terms: "t\xE9rminos",
@@ -34680,13 +34641,7 @@ var es_default = {
34680
34641
  },
34681
34642
  connect: {
34682
34643
  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"
34644
+ connectWallet: "Conectar billetera"
34690
34645
  },
34691
34646
  selectAsset: {
34692
34647
  yourTokens: "Tus tokens",
@@ -35059,6 +35014,504 @@ var es_default = {
35059
35014
  }
35060
35015
  };
35061
35016
 
35017
+ // src/locales/translations/fr.json
35018
+ var fr_default = {
35019
+ checkout: {
35020
+ noAvailableTokens: "Aucun actif disponible",
35021
+ noAvailableTokensMessage: "Vous n'avez aucun actif dans votre portefeuille. Approvisionnez ou transf\xE9rez des cryptomonnaies vers votre portefeuille pour continuer.",
35022
+ topUpWallet: "Approvisionner le portefeuille",
35023
+ refundProcessing: "Les fonds ont \xE9t\xE9 d\xE9bit\xE9s, mais la transaction n'a pas abouti. Un remboursement est en cours.",
35024
+ orderRefunded: "Votre commande a \xE9t\xE9 rembours\xE9e.",
35025
+ walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
35026
+ connectWalletLabelTemplate: "Connecter {{walletLabel}}"
35027
+ },
35028
+ inputAmount: {
35029
+ availableBalanceTooltip: "Votre solde disponible apr\xE8s frais",
35030
+ availableBalance: "{{amount}} disponibles\xA0\xA0\u24D8",
35031
+ insufficientBalanceSelectAnother: "Solde insuffisant. Veuillez s\xE9lectionner un autre actif.",
35032
+ depositMaxBalance: "D\xE9poser le solde maximum",
35033
+ updateOrder: "Mettre \xE0 jour la commande",
35034
+ insufficientBalance: "Solde insuffisant",
35035
+ maximumDeposit: "D\xE9p\xF4t maximum de {{amount}}",
35036
+ minimumDeposit: "D\xE9p\xF4t minimum de {{amount}}",
35037
+ amountBelowMinimum: "Montant inf\xE9rieur au minimum",
35038
+ amountAboveMaximum: "Montant sup\xE9rieur au maximum",
35039
+ inputAmountGreaterThan: "Saisissez un montant sup\xE9rieur \xE0 {{limit}}.",
35040
+ inputAmountLowerThan: "Saisissez un montant inf\xE9rieur \xE0 {{limit}}.",
35041
+ unableToRetrieveBalance: "Impossible d'obtenir le solde de votre compte. Essayez de reconnecter votre compte.",
35042
+ unableFetchPrice: "Impossible d'obtenir le prix de l'actif. Veuillez r\xE9essayer.",
35043
+ quickOptionsPercent: "{{percent}}%",
35044
+ quickOptionsMax: "Max"
35045
+ },
35046
+ postCheckout: {
35047
+ signatureDeclined: "Signature refus\xE9e. Veuillez confirmer \xE0 nouveau la commande pour r\xE9essayer.",
35048
+ unableToSwitchChains: "Impossible de changer de cha\xEEne. Assurez-vous que votre portefeuille prend en charge cette cha\xEEne.",
35049
+ errorFundingCheckout: "Une erreur s'est produite lors du financement du paiement.",
35050
+ insufficientBalance: "Solde insuffisant.",
35051
+ insufficientAmount: "Montant insuffisant.",
35052
+ 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.",
35053
+ genericErrorMessage: "Une erreur s'est produite. Veuillez r\xE9essayer."
35054
+ },
35055
+ checkoutConfirmation: {
35056
+ quoteExpired: "Cotation expir\xE9e. Veuillez confirmer la nouvelle cotation.",
35057
+ riskErrorMessage: "D\xE9sol\xE9, le paiement {{orgName}} ne peut pas continuer pour des raisons de s\xE9curit\xE9.",
35058
+ signatureDeclined: "Signature refus\xE9e. Veuillez confirmer \xE0 nouveau la commande pour r\xE9essayer.",
35059
+ unableToSwitchChains: "Impossible de changer de cha\xEEne. Assurez-vous que votre portefeuille prend en charge cette cha\xEEne.",
35060
+ walletClientUndefined: "La connexion de votre portefeuille n'a pas r\xE9ussi. Veuillez r\xE9essayer.",
35061
+ genericErrorMessage: "Une erreur s'est produite lors du paiement. Veuillez r\xE9essayer.",
35062
+ confirmOrder: "Confirmer la commande",
35063
+ regeneratingQuote: "R\xE9g\xE9n\xE9ration de la cotation...",
35064
+ depositMaxBalance: "D\xE9poser le montant maximum",
35065
+ retry: "R\xE9essayer",
35066
+ preparingOrderData: "Pr\xE9paration des donn\xE9es de commande...",
35067
+ confirmingOrder: "Confirmation de la commande",
35068
+ confirmNetworkSwitch: "Confirmer le changement de r\xE9seau",
35069
+ waitingForSignature: "En attente de signature",
35070
+ waitingForConfirmation: "En attente de confirmation",
35071
+ signMessage: "Signer le message",
35072
+ confirmTokenTransfer: "Confirmer le transfert de {{tokenSymbol}}",
35073
+ 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."
35074
+ },
35075
+ funCheckoutBlocked: {
35076
+ geoblock: "D\xE9sol\xE9, le paiement {{orgName}} n'est pas disponible dans votre r\xE9gion.",
35077
+ 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" />.'
35078
+ },
35079
+ payment: {
35080
+ depositWithPayPal: "D\xE9poser avec PayPal",
35081
+ depositWithCard: "D\xE9poser avec carte",
35082
+ fetchingBalance: "Lecture du solde...",
35083
+ couldntFetchBalance: "Impossible d'obtenir le solde",
35084
+ lowBalance: "Solde insuffisant",
35085
+ notApplicable: "Non applicable",
35086
+ unsupported: "Non pris en charge",
35087
+ disclaimerText: "{{limit}} \u2022 {{time}}",
35088
+ instant: "Instantan\xE9",
35089
+ noLimit: "Pas de limite",
35090
+ fiftyThousandDollars: "$50,000",
35091
+ tenThousandDollars: "$10,000",
35092
+ fiveMinutes: "5 min"
35093
+ },
35094
+ common: {
35095
+ haveQuestions: "Vous avez des questions ?",
35096
+ getHelp: "Obtenir de l'aide",
35097
+ depositsLive: "Les d\xE9p\xF4ts {{tokenName}} sont disponibles !",
35098
+ tryNow: "Essayer maintenant",
35099
+ experiencingProblemsFull: "Vous rencontrez des probl\xE8mes ? <HelpLink>Obtenir de l'aide.</HelpLink>",
35100
+ estimatedTime: "Temps estim\xE9",
35101
+ somethingWentWrong: "Une erreur s'est produite.",
35102
+ allChains: "Toutes les cha\xEEnes",
35103
+ token: "Actif",
35104
+ tokenNotSupportedOnChain: "{{tokenName}} n'est pas pris en charge sur cette cha\xEEne",
35105
+ searchTokens: "Rechercher des actifs",
35106
+ noResultsFound: "Aucun r\xE9sultat trouv\xE9",
35107
+ button: "Bouton",
35108
+ recent: "R\xE9cent",
35109
+ connected: "Connect\xE9",
35110
+ switching: "Changement en cours",
35111
+ confirmInWallet: "Confirmer dans le portefeuille",
35112
+ haveQuestionsGetHelp: "Vous avez des questions ? <GetHelpLink>Obtenir de l'aide</GetHelpLink>",
35113
+ depositsLiveTryNow: "Les d\xE9p\xF4ts {{tokenName}} sont disponibles ! <TryNowLink>Essayer maintenant</TryNowLink>",
35114
+ estimatedGas: "Gaz estim\xE9",
35115
+ processingTime: "Temps de traitement :",
35116
+ learnMore: "En savoir plus",
35117
+ continue: "Continuer",
35118
+ pleaseTryAgainLater: "Veuillez r\xE9essayer plus tard.",
35119
+ noOptionsFound: "Aucune option trouv\xE9e.",
35120
+ seeLess: "Voir moins",
35121
+ moreDetails: "Plus de d\xE9tails",
35122
+ tryAgain: "R\xE9essayer",
35123
+ getStarted: "Commencer",
35124
+ back: "Retour",
35125
+ close: "Fermer",
35126
+ copyAddress: "Copier l'adresse",
35127
+ copied: "Copi\xE9e",
35128
+ auto: "Auto",
35129
+ comingSoon: "Prochainement"
35130
+ },
35131
+ disclaimer: {
35132
+ terms: "conditions",
35133
+ cardDisclaimer: "Cette transaction se d\xE9roule en deux \xE9tapes. MoonPay alimente uniquement votre achat de {{depositToken}} ({{sourceChainName}}) que {{orgName}} {{tokenActionDescription}} ensuite.",
35134
+ tokenActionProcesses: "traite pour votre paiement",
35135
+ tokenActionConverts: "convertit en {{finalConvertedAssetName}} ({{toChainName}})",
35136
+ 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.",
35137
+ 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.",
35138
+ default: "{{cardDisclaimer}}En cliquant sur {{continueText}}, vous acceptez nos <TermsLink>conditions</TermsLink>."
35139
+ },
35140
+ connect: {
35141
+ confirmWalletOwnership: "Cliquez sur se connecter pour confirmer que vous \xEAtes propri\xE9taire de ce portefeuille.",
35142
+ connectWallet: "Connecter le portefeuille"
35143
+ },
35144
+ selectAsset: {
35145
+ yourTokens: "Vos actifs",
35146
+ lowBalanceTooltip: "Minimum requis : {{amount}}"
35147
+ },
35148
+ transferToken: {
35149
+ noLimit: "Pas de limite",
35150
+ receiveToken: "Devise re\xE7ue",
35151
+ supportedToken: "Devise prise en charge",
35152
+ supportedChain: "Cha\xEEne compatible",
35153
+ min: "Min",
35154
+ minAmount: "Min {{currency}}{{amount}}",
35155
+ minDepositAmountTooltip: "Montant de d\xE9p\xF4t minimum requis pour la cha\xEEne s\xE9lectionn\xE9e.",
35156
+ yourDepositAddress: "Votre adresse de d\xE9p\xF4t",
35157
+ termsApply: "Conditions applicables",
35158
+ depositAddressOriginalRecipient: "Envoyez n'importe quelle devise prise en charge \xE0 cette adresse",
35159
+ depositAddressUniversal: "Envoyez n'importe quelle devise prise en charge \xE0 cette adresse et elle sera automatiquement \xE9chang\xE9e contre {{targetToken}} dans votre compte"
35160
+ },
35161
+ transaction: {
35162
+ delayed: "Transaction lente",
35163
+ delayedDescription: "La transaction prend un peu plus de temps que pr\xE9vu.<br /><ContactSupportLink>Contactez-nous</ContactSupportLink> pour plus de d\xE9tails.",
35164
+ error: "Erreur de transaction",
35165
+ failedDescription: "Veuillez r\xE9essayer ou <ContactSupportLink>contacter le support</ContactSupportLink> si le probl\xE8me persiste.",
35166
+ pending: "Transaction en attente...",
35167
+ withdrawalSuccessful: "Retrait r\xE9ussi",
35168
+ withdrawalSuccessfulDescription: "Vos fonds ont \xE9t\xE9 retir\xE9s avec succ\xE8s.",
35169
+ depositSuccessful: "D\xE9p\xF4t r\xE9ussi",
35170
+ depositSuccessfulDescription: "Vos fonds ont \xE9t\xE9 d\xE9pos\xE9s avec succ\xE8s.",
35171
+ depositReceivedPending: "D\xE9p\xF4t re\xE7u et en attente...",
35172
+ depositCompleted: "D\xE9p\xF4t termin\xE9",
35173
+ didntComplete: "Non termin\xE9",
35174
+ depositReceivedProcessing: "D\xE9p\xF4t re\xE7u et en cours de traitement...",
35175
+ depositWillBeCredited: "Votre d\xE9p\xF4t sera cr\xE9dit\xE9 sur votre compte sous peu.",
35176
+ depositHasBeenCredited: "Votre d\xE9p\xF4t a \xE9t\xE9 cr\xE9dit\xE9 sur votre compte.",
35177
+ 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.",
35178
+ issueOccurredWithDeposit: "Un probl\xE8me est survenu lors de votre d\xE9p\xF4t. Veuillez r\xE9essayer.",
35179
+ depositDidntCompleteFull: `Votre d\xE9p\xF4t n'a pas abouti. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35180
+ depositDelayedFundsSafeFull: `Votre d\xE9p\xF4t est retard\xE9 mais les fonds sont en s\xE9curit\xE9. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35181
+ depositExpired: "D\xE9p\xF4t expir\xE9",
35182
+ depositDidntCompleteError: "Votre d\xE9p\xF4t n'a pas abouti en raison d'une erreur.",
35183
+ 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.",
35184
+ depositBeingProcessedFull: `Votre d\xE9p\xF4t est en cours de traitement. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35185
+ transactionDelayedFundsSafeFull: `La transaction a \xE9t\xE9 retard\xE9e mais vos fonds sont en s\xE9curit\xE9. <ContactSupportLink text="Contactez-nous" /> pour plus d'informations.`,
35186
+ submittingTransaction: "Soumission de la transaction...",
35187
+ fillingTransactionOnBlockchain: "Ex\xE9cution de votre transaction sur la blockchain.",
35188
+ withdrawingFromAccount: "Retrait de votre compte...",
35189
+ fundsWillArriveInDuration: "Vos fonds arriveront dans quelques {{durationUnits}}.",
35190
+ depositingIntoAccount: "D\xE9p\xF4t sur votre compte...",
35191
+ willTakeDurationToFinalize: "Il faudra quelques {{durationUnits}} pour {{finalizeVerb}}.",
35192
+ waitingForExchangeToSendFunds: "En attente de l'envoi des fonds par {{exchangeName}}...",
35193
+ fundsAreSafeCanClose: "Vos fonds sont en s\xE9curit\xE9. Vous pouvez fermer cette fen\xEAtre.",
35194
+ contactUs: "Nous contacter",
35195
+ minutes: "minutes",
35196
+ seconds: "secondes",
35197
+ finalize: "finaliser",
35198
+ credit: "cr\xE9diter"
35199
+ },
35200
+ katanaBridge: {
35201
+ highCostsMessage: "Co\xFBts \xE9lev\xE9s ? Essayez <KatanaBridgeLink></KatanaBridgeLink>, plus lent mais moins cher pour le m\xEAme actif.",
35202
+ katanaNativeBridge: "Pont natif de Katana"
35203
+ },
35204
+ badge: {
35205
+ unsuccessful: "\xC9chou\xE9",
35206
+ approved: "Approuv\xE9",
35207
+ incomplete: "Incomplet",
35208
+ pending: "En attente",
35209
+ disabled: "D\xE9sactiv\xE9",
35210
+ failed: "\xC9chou\xE9",
35211
+ unknown: "Inconnu",
35212
+ native: "Natif",
35213
+ sameAsset: "M\xEAme actif",
35214
+ new: "NOUVEAU",
35215
+ icon: "ic\xF4ne de badge"
35216
+ },
35217
+ checkoutHistory: {
35218
+ processing: "En cours",
35219
+ incomplete: "Incomplet",
35220
+ expired: "Expir\xE9",
35221
+ successful: "R\xE9ussi",
35222
+ refunded: "Rembours\xE9",
35223
+ pending: "En attente",
35224
+ fillStatus: "Statut d'ex\xE9cution",
35225
+ totalTime: "Temps total",
35226
+ youReceive: "Vous recevez",
35227
+ moreDetails: "Plus de d\xE9tails",
35228
+ depositAddress: "Adresse de d\xE9p\xF4t",
35229
+ orderSubmitted: "Commande soumise",
35230
+ orderReceived: "Commande re\xE7ue",
35231
+ orderFilled: "Commande ex\xE9cut\xE9e",
35232
+ orderFailed: "Commande \xE9chou\xE9e",
35233
+ orderExpired: "Commande expir\xE9e",
35234
+ newDeposit: "Nouveau d\xE9p\xF4t",
35235
+ newWithdrawal: "Nouveau retrait",
35236
+ orderDelayedTechnicalIssues: "Votre commande a \xE9t\xE9 retard\xE9e en raison de probl\xE8mes techniques. {{orgName}} vous tiendra inform\xE9.",
35237
+ completed: "Termin\xE9",
35238
+ failed: "\xC9chou\xE9"
35239
+ },
35240
+ profile: {
35241
+ executeFirstCheckout: "Effectuez votre premier paiement sur {{appName}}",
35242
+ tokensTab: "Actifs",
35243
+ checkoutsTab: "Paiements",
35244
+ getHelp: "Obtenir de l'aide",
35245
+ address: "Adresse",
35246
+ disconnect: "D\xE9connecter"
35247
+ },
35248
+ withdrawal: {
35249
+ signatureDenied: "Signature refus\xE9e. Veuillez retirer pour r\xE9essayer",
35250
+ quoteError: "\xC9chec de la g\xE9n\xE9ration de la cotation. Veuillez r\xE9essayer.",
35251
+ amountTooLow: "Montant trop faible. Minimum de $1 requis.",
35252
+ chainDisabled: "R\xE9seau indisponible. Changez de r\xE9seau ou r\xE9essayez plus tard.",
35253
+ forbidden: "Acc\xE8s restreint. Compl\xE9tez la v\xE9rification pour continuer.",
35254
+ insufficientFunds: "Fonds insuffisants. R\xE9duisez le montant et r\xE9essayez.",
35255
+ insufficientLiquidity: "Liquidit\xE9 de l'actif faible. R\xE9duisez le montant ou essayez avec un autre actif.",
35256
+ invalidAddress: "Adresse de portefeuille invalide. V\xE9rifiez l'adresse et r\xE9essayez.",
35257
+ invalidInputCurrency: "Actif d'entr\xE9e non pris en charge. V\xE9rifiez l'adresse et r\xE9essayez.",
35258
+ invalidOutputCurrency: "Actif de sortie non pris en charge. V\xE9rifiez l'adresse et r\xE9essayez.",
35259
+ invalidSlippageTolerance: "Valeur de slippage invalide. Doit \xEAtre un nombre entier.",
35260
+ noInternalSwapRoutesFound: "Route indisponible. Essayez avec une autre paire d'actifs.",
35261
+ noQuotes: "Cotation indisponible. R\xE9essayez avec un montant ou actif diff\xE9rent.",
35262
+ noSwapRoutesFound: "Route indisponible. R\xE9essayez avec un montant ou actif diff\xE9rent.",
35263
+ routeTemporarilyRestricted: "Route temporairement indisponible. R\xE9essayez plus tard.",
35264
+ sanctionedCurrency: "Devise restreinte. S\xE9lectionnez un autre actif.",
35265
+ sanctionedWalletAddress: "Adresse bloqu\xE9e. Contactez le support pour examen.",
35266
+ swapImpactTooHigh: "Impact de l'\xE9change \xE9lev\xE9. Choisissez un autre actif ou r\xE9duisez le montant.",
35267
+ unauthorized: "Connectez le portefeuille pour continuer.",
35268
+ unsupportedChain: "Cha\xEEne non prise en charge. Changez de cha\xEEne et r\xE9essayez.",
35269
+ unsupportedCurrency: "Devise non prise en charge. Changez de devise et r\xE9essayez.",
35270
+ unsupportedExecutionType: "M\xE9thode de transaction non prise en charge. S\xE9lectionnez une autre m\xE9thode.",
35271
+ unsupportedRoute: "Paire d'actifs non prises en charge. Essayez des actifs diff\xE9rents.",
35272
+ userRecipientMismatch: "L'exp\xE9diteur et le destinataire doivent correspondre. V\xE9rifiez les adresses.",
35273
+ destinationTxFailed: "Transaction \xE9chou\xE9e. R\xE9essayez ou contactez le support.",
35274
+ erc20RouterAddressNotFound: "Une erreur s'est produite. Essayez une devise diff\xE9rente ou contactez le support.",
35275
+ unknownError: "Une erreur s'est produite. R\xE9essayez ou contactez le support.",
35276
+ swapQuoteFailed: "\xC9chec de la cotation. R\xE9essayez ou contactez le support.",
35277
+ permitFailed: "\xC9chec de la signature. Essayez de signer \xE0 nouveau ou reconnectez le portefeuille.",
35278
+ confirmingQuote: "Confirmation de la commande",
35279
+ processing: "Traitement en cours",
35280
+ enterRecipientAddress: "Entrez l'adresse du destinataire",
35281
+ unsupportedRecipientAddress: "Adresse du destinataire non prise en charge",
35282
+ enterWithdrawAmount: "Entrez le montant du retrait",
35283
+ enterValidAddress: "Entrez une adresse {{chainName}} valide",
35284
+ withdraw: "Retirer",
35285
+ ensureAddressSupportsToken: "Assurez-vous que l'adresse prend en charge la r\xE9ception de {{token}} sur {{chainName}}.",
35286
+ ensureAddressSupportsTokenNoChain: "Assurez-vous que l'adresse prend en charge la r\xE9ception de {{token}}.",
35287
+ failedToFetchAssetPrice: "Impossible d'obtenir le prix de l'actif",
35288
+ receiveToken: "Devise re\xE7ue",
35289
+ receiveChain: "Cha\xEEne de r\xE9ception",
35290
+ youWillReceive: "Vous recevrez",
35291
+ 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.",
35292
+ recipientAddress: "Adresse du destinataire",
35293
+ invalidWalletAddress: "Adresse de portefeuille invalide",
35294
+ useConnected: "Utiliser connect\xE9",
35295
+ walletAddressRestricted: "Cette adresse de portefeuille ne peut pas \xEAtre utilis\xE9e en raison de restrictions.",
35296
+ amount: "Montant",
35297
+ insufficientBalance: "Solde insuffisant",
35298
+ minimumWithdrawAmount: "Le montant minimum de retrait est de {{amount}}",
35299
+ max: "Max",
35300
+ balance: "Solde : {{amount}} {{symbol}}"
35301
+ },
35302
+ directExecution: {
35303
+ fillStatus: "Statut d'ex\xE9cution",
35304
+ totalTime: "Temps total",
35305
+ moreDetails: "Plus de d\xE9tails",
35306
+ withdrawalTx: "Transaction de retrait",
35307
+ depositTx: "Transaction de d\xE9p\xF4t",
35308
+ completionTx: "Transaction de finalisation",
35309
+ orderSubmitted: "Commande soumise",
35310
+ orderStatus: "Commande {{status}}",
35311
+ statusFailed: "\xE9chou\xE9e",
35312
+ statusRefunded: "rembours\xE9e",
35313
+ statusFilled: "ex\xE9cut\xE9e"
35314
+ },
35315
+ directExecutionNotif: {
35316
+ depositTransactionInitiated: "Transaction de d\xE9p\xF4t initi\xE9e",
35317
+ depositCompletedNotification: "Vous recevrez une notification ici une fois le d\xE9p\xF4t termin\xE9.",
35318
+ withdrawalTransactionInitiated: "Transaction de retrait initi\xE9e",
35319
+ withdrawalCompletedNotification: "Vous recevrez une notification ici une fois le retrait termin\xE9."
35320
+ },
35321
+ fees: {
35322
+ cardProcessingFee: "Frais de traitement de carte",
35323
+ cardProcessingFeeTooltip: "Frais factur\xE9s par le fournisseur de carte pour le traitement de votre transaction.",
35324
+ moonpayCost: "Co\xFBt MoonPay",
35325
+ moonpayCostTooltip: "Frais factur\xE9s par MoonPay pour le traitement de votre transaction.",
35326
+ exchangeProcessingFee: "Frais de traitement d'exchange",
35327
+ exchangeProcessingFeeTooltip: "Frais factur\xE9s par l'exchange pour le traitement de votre transaction.",
35328
+ receiveAtLeast: "Vous recevrez au moins",
35329
+ exchangeRate: "Taux de change",
35330
+ networkCost: "Frais de r\xE9seau",
35331
+ totalCost: "Co\xFBt total",
35332
+ sourceChainGas: "Gaz de la cha\xEEne source",
35333
+ destinationChainGas: "Gaz de la cha\xEEne de destination",
35334
+ priceImpact: "Impact sur le prix",
35335
+ totalImpact: "Impact total",
35336
+ swapImpact: "Impact de l'\xE9change",
35337
+ funxyzFee: "Frais Fun.xyz",
35338
+ swapFee: "Frais d'\xE9change",
35339
+ instantLiquidityCost: "Co\xFBt de liquidit\xE9 instantan\xE9e",
35340
+ maxSlippage: "Slippage maximum",
35341
+ autoSlippageValue: "Auto \u2022 {{value}}",
35342
+ slippageTooltip: "Le slippage se produit en raison des changements de prix pendant l'ex\xE9cution de la transaction.",
35343
+ slippageTooltipWithMin: "Le slippage se produit en raison des changements de prix pendant l'ex\xE9cution de la transaction. Minimum re\xE7u : {{minReceived}}",
35344
+ marketMakerGasCosts: "Co\xFBts de gaz du teneur de march\xE9",
35345
+ marketMakerGasCostsTooltip: "Co\xFBt du traitement de la commande sur la blockchain, incluant le gaz et le routage requis.",
35346
+ lpCost: "Co\xFBt LP",
35347
+ lpCostTooltip: "Factur\xE9 pour couvrir les co\xFBts de fourniture de liquidit\xE9 sur la blockchain.",
35348
+ yourGasCosts: "Vos frais de gaz",
35349
+ yourGasCostsTooltip: "Montant pay\xE9 pour envoyer des actifs \xE0 votre adresse de d\xE9p\xF4t.",
35350
+ transactionBreakdown: "D\xE9tail de la transaction",
35351
+ 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.",
35352
+ 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."
35353
+ },
35354
+ paymentRoute: {
35355
+ wallet: "Portefeuille",
35356
+ source: "Source",
35357
+ destination: "Destination"
35358
+ },
35359
+ virtualFiatAccount: {
35360
+ walletAddressNotAvailable: "L'adresse du portefeuille n'est pas disponible",
35361
+ incorrectEmailFormat: "Format d'email incorrect",
35362
+ emailAlreadyInUse: "L'adresse email est d\xE9j\xE0 utilis\xE9e",
35363
+ firstName: "Pr\xE9nom",
35364
+ firstNamePlaceholder: "Jean",
35365
+ lastName: "Nom",
35366
+ lastNamePlaceholder: "Dupont",
35367
+ email: "Email",
35368
+ emailPlaceholder: "nom@email.com",
35369
+ 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',
35370
+ continue: "Continuer",
35371
+ accountNumber: "Num\xE9ro de compte",
35372
+ routingNumber: "Num\xE9ro de routage",
35373
+ iban: "IBAN",
35374
+ swiftBic: "SWIFT / BIC",
35375
+ accountHolderName: "Nom du titulaire du compte",
35376
+ beneficiaryName: "Nom du b\xE9n\xE9ficiaire",
35377
+ bankName: "Nom de la banque",
35378
+ bankAddress: "Adresse de la banque",
35379
+ currency: "Devise",
35380
+ loadingVerificationStatus: "Chargement du statut de v\xE9rification...",
35381
+ verificationUnsuccessfulTitle: "V\xE9rification \xE9chou\xE9e",
35382
+ 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.",
35383
+ verificationSuccessfulTitle: "V\xE9rification r\xE9ussie",
35384
+ 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.",
35385
+ verifyYourIdentityTitle: "V\xE9rifiez votre identit\xE9",
35386
+ 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.",
35387
+ accountPausedTitle: "Compte suspendu",
35388
+ 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.",
35389
+ verificationPendingTitle: "V\xE9rification en attente",
35390
+ 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.",
35391
+ accountDisabledTitle: "Compte d\xE9sactiv\xE9",
35392
+ 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.",
35393
+ verificationFailedTitle: "V\xE9rification \xE9chou\xE9e",
35394
+ verificationFailedDescription: "Votre v\xE9rification KYC a \xE9chou\xE9. Pour plus d'informations, veuillez <ContactSupportLink>contacter le support</ContactSupportLink> pour obtenir de l'aide.",
35395
+ proofOfAddress: "Justificatif de domicile",
35396
+ governmentId: "Pi\xE8ce d'identit\xE9 gouvernementale",
35397
+ creatingVirtualAccount: "Cr\xE9ation du compte virtuel...",
35398
+ kycVerification: "V\xE9rification KYC",
35399
+ createVirtualAccount: "Cr\xE9ez votre compte fiat virtuel EUR",
35400
+ 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}}.",
35401
+ takeLessThan3Mins: "Devrait prendre moins de 3 minutes"
35402
+ },
35403
+ brokerage: {
35404
+ verificationRequired: "V\xE9rification requise",
35405
+ enter2FACode: "Entrez votre code 2FA {{brokerName}}",
35406
+ 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.",
35407
+ twoFASetupRequired: "Configuration 2FA requise",
35408
+ twoFASetupDescription: "Veuillez activer SMS ou l'application d'authentification comme m\xE9thode 2FA sur votre compte {{brokerName}} et r\xE9essayer.",
35409
+ kycRequired: "KYC requis",
35410
+ kycRequiredDescription: "{{brokerName}} exige que vous compl\xE9tiez la v\xE9rification KYC avant de pouvoir retirer. Veuillez v\xE9rifier votre identit\xE9 et r\xE9essayer.",
35411
+ somethingWentWrong: "Une erreur s'est produite. Veuillez r\xE9essayer.",
35412
+ invalid2FACode: "Code 2FA invalide. Veuillez r\xE9essayer.",
35413
+ withdrawalError: "Une erreur s'est produite lors du retrait. Veuillez r\xE9essayer.",
35414
+ meshExecutionError: "Une erreur s'est produite lors de l'ex\xE9cution Mesh.",
35415
+ meshExecutionErrorFull: "Une erreur s'est produite lors de l'ex\xE9cution Mesh.<br />Veuillez r\xE9essayer ou <ContactSupportLink></ContactSupportLink> pour obtenir de l'aide.",
35416
+ executingBrokerageTransfer: "Ex\xE9cution du transfert de courtage",
35417
+ goBack: "Retour",
35418
+ continue: "Continuer",
35419
+ credentialsNeverStored: "Vos identifiants de connexion ne sont jamais stock\xE9s",
35420
+ dataEncrypted: "Toutes les donn\xE9es sont chiffr\xE9es entre {{appName}} et {{exchangeName}}.",
35421
+ twoFaAlwaysRequired: "2FA toujours requis",
35422
+ transfersRequireApproval: "Les transferts ne peuvent pas \xEAtre effectu\xE9s sans votre approbation.",
35423
+ meshConnectionError: "Un probl\xE8me est survenu lors de la connexion \xE0 Mesh. Veuillez r\xE9essayer.",
35424
+ thirdPartyConnectionMessage: "{{appName}} utilisera un tiers pour connecter votre compte {{exchangeName}}."
35425
+ },
35426
+ sourceChange: {
35427
+ selectPaymentMethod: "S\xE9lectionnez le mode de paiement",
35428
+ moreOptions: "Plus d'options",
35429
+ more: "plus",
35430
+ walletDisplayLabel: "{{walletLabel}}",
35431
+ brokerageDisplayLabel: "{{brokerageLabel}}",
35432
+ virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
35433
+ },
35434
+ quote: {
35435
+ preparingYourQuote: "Pr\xE9paration de votre cotation...",
35436
+ verifyingWithProvider: "V\xE9rification avec le fournisseur {{provider}}...",
35437
+ estimatingGas: "Estimation du gaz...",
35438
+ finalizingYourQuote: "Finalisation de votre cotation...",
35439
+ defaultError: "Une erreur s'est produite lors de la g\xE9n\xE9ration de la cotation. Veuillez r\xE9essayer.",
35440
+ noRoutesFound: "Aucune route trouv\xE9e.",
35441
+ checkoutAmountTooLow: "Le montant du paiement est trop bas. Veuillez r\xE9essayer.",
35442
+ insufficientBalance: "Solde insuffisant pour effectuer le paiement avec les frais. Veuillez r\xE9essayer."
35443
+ },
35444
+ relay: {
35445
+ confirmTransaction: "Confirmez la transaction dans votre portefeuille",
35446
+ waitingForConfirmation: "En attente de confirmation de la transaction",
35447
+ transactionConfirmed: "Transaction confirm\xE9e"
35448
+ },
35449
+ textCustomizations: {
35450
+ virtualFiat: "D\xE9poser avec SEPA",
35451
+ brokerageOrExchange: "Connecter un exchange",
35452
+ debitOrCredit: "D\xE9poser avec carte",
35453
+ accountBalance: "Portefeuille",
35454
+ selectAccount: "S\xE9lectionner un exchange",
35455
+ sourceMethodTitle: "Votre source",
35456
+ tokensListTitle: "Vos actifs",
35457
+ transferTokens: "Transf\xE9rer des cryptos",
35458
+ receiveDropdownTitle: "",
35459
+ receiveDropdownLabel: "Actif \xE0 recevoir",
35460
+ payAmountLabel: "Vous envoyez",
35461
+ receiveAmountLabel: "Vous recevez"
35462
+ },
35463
+ time: {
35464
+ oneSecond: "1 seconde",
35465
+ lessThanOneMin: "< 1 min",
35466
+ seconds: "{{count}} secondes",
35467
+ minutes: "{{count}} min",
35468
+ hours: "{{count}} h",
35469
+ secondsShort: "{{count}} s"
35470
+ },
35471
+ meld: {
35472
+ provider: "Fournisseur",
35473
+ autoPickedForYou: "S\xE9lectionn\xE9 automatiquement pour vous",
35474
+ buyMore: "Acheter plus",
35475
+ noDocumentUpload: "Pas de documents requis",
35476
+ bestPrice: "Le meilleur prix",
35477
+ fastest: "Le plus rapide",
35478
+ bestPriceFastest: "Le meilleur prix, Le plus rapide",
35479
+ noQuotesFoundForProvider: "Aucune cotation trouv\xE9e pour le fournisseur et le montant s\xE9lectionn\xE9s.",
35480
+ errorNotified: "Il semble qu'une erreur est survenue. Notre \xE9quipe a \xE9t\xE9 notifi\xE9e du probl\xE8me",
35481
+ noQuotesFound: "Aucune cotation trouv\xE9e"
35482
+ },
35483
+ chainModal: {
35484
+ switchNetworks: "Changer de r\xE9seaux",
35485
+ wrongNetworkDetected: "Mauvais r\xE9seau d\xE9tect\xE9, changez ou d\xE9connectez-vous pour continuer.",
35486
+ disconnect: "Se d\xE9connecter",
35487
+ chainSelector: "S\xE9lecteur de cha\xEEne",
35488
+ wrongNetwork: "Mauvais r\xE9seau"
35489
+ },
35490
+ meldCurrencySelect: {
35491
+ searchCurrency: "Rechercher une devise",
35492
+ noResultsFound: "Aucun r\xE9sultat trouv\xE9"
35493
+ },
35494
+ meldRedirect: {
35495
+ completeTransactionWith: "Compl\xE9tez la transaction avec {{providerLabel}}",
35496
+ canCloseModal: "Vous pouvez fermer cette fen\xEAtre.",
35497
+ youBuy: "Vous achetez",
35498
+ intentAddressWarning: "L'adresse de destination affich\xE9e dans l'on-ramp est une adresse d'intention - pas votre adresse de compte personnel."
35499
+ },
35500
+ dev: {
35501
+ devEmbed: "Dev Embed"
35502
+ },
35503
+ support: {
35504
+ requestSent: "Demande envoy\xE9e",
35505
+ requestSentDescription: "Notre \xE9quipe a re\xE7u votre demande et vous contactera bient\xF4t. Nous appr\xE9cions votre patience.",
35506
+ tellUsMore: "Dites-nous en plus",
35507
+ 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.",
35508
+ email: "Email*",
35509
+ subject: "Sujet*",
35510
+ description: "Description*",
35511
+ resolutionPreference: "Pr\xE9f\xE9rence de r\xE9solution*"
35512
+ }
35513
+ };
35514
+
35062
35515
  // src/locales/translations/ja.json
35063
35516
  var ja_default = {
35064
35517
  checkout: {
@@ -35137,7 +35590,6 @@ var ja_default = {
35137
35590
  fiveMinutes: "5\u5206"
35138
35591
  },
35139
35592
  common: {
35140
- privyIframeTitle: "Privy",
35141
35593
  haveQuestions: "\u3054\u8CEA\u554F\u304C\u3042\u308A\u307E\u3059\u304B\uFF1F",
35142
35594
  getHelp: "\u30D8\u30EB\u30D7\u3092\u898B\u308B",
35143
35595
  depositsLive: "{{tokenName}}\u306E\u5165\u91D1\u304C\u5229\u7528\u53EF\u80FD\u306B\u306A\u308A\u307E\u3057\u305F\uFF01",
@@ -35168,16 +35620,11 @@ var ja_default = {
35168
35620
  tryAgain: "\u518D\u8A66\u884C",
35169
35621
  getStarted: "\u59CB\u3081\u308B",
35170
35622
  back: "\u623B\u308B",
35171
- accountTypeEmail: "\u30E1\u30FC\u30EB",
35172
- accountTypeTwitter: "Twitter ID",
35173
- accountTypeApple: "Apple ID",
35174
- accountTypeFarcaster: "Farcaster ID",
35175
35623
  close: "\u9589\u3058\u308B",
35176
35624
  copyAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u30B3\u30D4\u30FC",
35177
35625
  copied: "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
35178
35626
  auto: "\u81EA\u52D5",
35179
- comingSoon: "\u8FD1\u65E5\u516C\u958B",
35180
- or: "\u307E\u305F\u306F"
35627
+ comingSoon: "\u8FD1\u65E5\u516C\u958B"
35181
35628
  },
35182
35629
  disclaimer: {
35183
35630
  terms: "\u5229\u7528\u898F\u7D04",
@@ -35190,13 +35637,7 @@ var ja_default = {
35190
35637
  },
35191
35638
  connect: {
35192
35639
  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"
35640
+ connectWallet: "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u63A5\u7D9A"
35200
35641
  },
35201
35642
  selectAsset: {
35202
35643
  yourTokens: "\u3042\u306A\u305F\u306E\u30C8\u30FC\u30AF\u30F3",
@@ -35647,7 +36088,6 @@ var ko_default = {
35647
36088
  fiveMinutes: "5\uBD84"
35648
36089
  },
35649
36090
  common: {
35650
- privyIframeTitle: "Privy",
35651
36091
  haveQuestions: "\uC9C8\uBB38\uC774 \uC788\uC73C\uC2E0\uAC00\uC694?",
35652
36092
  getHelp: "\uB3C4\uC6C0\uBC1B\uAE30",
35653
36093
  depositsLive: "{{tokenName}} \uC785\uAE08\uC774 \uD65C\uC131\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4!",
@@ -35678,16 +36118,11 @@ var ko_default = {
35678
36118
  tryAgain: "\uB2E4\uC2DC \uC2DC\uB3C4",
35679
36119
  getStarted: "\uC2DC\uC791\uD558\uAE30",
35680
36120
  back: "\uB4A4\uB85C",
35681
- accountTypeEmail: "\uC774\uBA54\uC77C",
35682
- accountTypeTwitter: "Twitter ID",
35683
- accountTypeApple: "Apple ID",
35684
- accountTypeFarcaster: "Farcaster ID",
35685
36121
  close: "\uB2EB\uAE30",
35686
36122
  copyAddress: "\uC8FC\uC18C \uBCF5\uC0AC",
35687
36123
  copied: "\uBCF5\uC0AC\uB428",
35688
36124
  auto: "\uC790\uB3D9",
35689
- comingSoon: "\uACE7 \uCD9C\uC2DC",
35690
- or: "\uB610\uB294"
36125
+ comingSoon: "\uACE7 \uCD9C\uC2DC"
35691
36126
  },
35692
36127
  disclaimer: {
35693
36128
  terms: "\uC57D\uAD00",
@@ -35700,13 +36135,7 @@ var ko_default = {
35700
36135
  },
35701
36136
  connect: {
35702
36137
  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"
36138
+ connectWallet: "\uC9C0\uAC11 \uC5F0\uACB0"
35710
36139
  },
35711
36140
  selectAsset: {
35712
36141
  yourTokens: "\uB0B4 \uD1A0\uD070",
@@ -36157,7 +36586,6 @@ var ru_default = {
36157
36586
  fiveMinutes: "5 \u043C\u0438\u043D"
36158
36587
  },
36159
36588
  common: {
36160
- privyIframeTitle: "Privy",
36161
36589
  haveQuestions: "\u0415\u0441\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441\u044B?",
36162
36590
  getHelp: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043F\u043E\u043C\u043E\u0449\u044C",
36163
36591
  depositsLive: "\u0414\u0435\u043F\u043E\u0437\u0438\u0442\u044B {{tokenName}} \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B!",
@@ -36188,16 +36616,11 @@ var ru_default = {
36188
36616
  tryAgain: "\u041F\u043E\u043F\u0440\u043E\u0431\u043E\u0432\u0430\u0442\u044C \u0441\u043D\u043E\u0432\u0430",
36189
36617
  getStarted: "\u041D\u0430\u0447\u0430\u0442\u044C",
36190
36618
  back: "\u041D\u0430\u0437\u0430\u0434",
36191
- accountTypeEmail: "Email",
36192
- accountTypeTwitter: "Twitter ID",
36193
- accountTypeApple: "Apple ID",
36194
- accountTypeFarcaster: "Farcaster ID",
36195
36619
  close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
36196
36620
  copyAddress: "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0430\u0434\u0440\u0435\u0441",
36197
36621
  copied: "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E",
36198
36622
  auto: "\u0410\u0432\u0442\u043E",
36199
- comingSoon: "\u0421\u043A\u043E\u0440\u043E",
36200
- or: "\u0438\u043B\u0438"
36623
+ comingSoon: "\u0421\u043A\u043E\u0440\u043E"
36201
36624
  },
36202
36625
  disclaimer: {
36203
36626
  terms: "\u0443\u0441\u043B\u043E\u0432\u0438\u044F",
@@ -36210,13 +36633,7 @@ var ru_default = {
36210
36633
  },
36211
36634
  connect: {
36212
36635
  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"
36636
+ connectWallet: "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A"
36220
36637
  },
36221
36638
  selectAsset: {
36222
36639
  yourTokens: "\u0412\u0430\u0448\u0438 \u0442\u043E\u043A\u0435\u043D\u044B",
@@ -36667,7 +37084,6 @@ var tr_default = {
36667
37084
  fiveMinutes: "5 dk"
36668
37085
  },
36669
37086
  common: {
36670
- privyIframeTitle: "Privy",
36671
37087
  haveQuestions: "Sorular\u0131n\u0131z m\u0131 var?",
36672
37088
  getHelp: "Yard\u0131m al\u0131n",
36673
37089
  depositsLive: "{{tokenName}} yat\u0131r\u0131mlar\u0131 aktif!",
@@ -36698,16 +37114,11 @@ var tr_default = {
36698
37114
  tryAgain: "Tekrar dene",
36699
37115
  getStarted: "Ba\u015Flay\u0131n",
36700
37116
  back: "Geri",
36701
- accountTypeEmail: "E-posta",
36702
- accountTypeTwitter: "Twitter ID",
36703
- accountTypeApple: "Apple ID",
36704
- accountTypeFarcaster: "Farcaster ID",
36705
37117
  close: "Kapat",
36706
37118
  copyAddress: "Adresi kopyala",
36707
37119
  copied: "Kopyaland\u0131",
36708
37120
  auto: "Otomatik",
36709
- comingSoon: "\xC7ok Yak\u0131nda",
36710
- or: "veya"
37121
+ comingSoon: "\xC7ok Yak\u0131nda"
36711
37122
  },
36712
37123
  disclaimer: {
36713
37124
  terms: "\u015Fartlar",
@@ -36720,13 +37131,7 @@ var tr_default = {
36720
37131
  },
36721
37132
  connect: {
36722
37133
  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"
37134
+ connectWallet: "C\xFCzdan ba\u011Fla"
36730
37135
  },
36731
37136
  selectAsset: {
36732
37137
  yourTokens: "Token'lar\u0131n\u0131z",
@@ -37177,7 +37582,6 @@ var zh_default = {
37177
37582
  fiveMinutes: "5\u5206\u949F"
37178
37583
  },
37179
37584
  common: {
37180
- privyIframeTitle: "Privy",
37181
37585
  haveQuestions: "\u6709\u7591\u95EE\uFF1F",
37182
37586
  getHelp: "\u83B7\u53D6\u5E2E\u52A9",
37183
37587
  depositsLive: "{{tokenName}} \u5B58\u6B3E\u5DF2\u4E0A\u7EBF\uFF01",
@@ -37208,16 +37612,11 @@ var zh_default = {
37208
37612
  tryAgain: "\u91CD\u8BD5",
37209
37613
  getStarted: "\u5F00\u59CB",
37210
37614
  back: "\u8FD4\u56DE",
37211
- accountTypeEmail: "\u7535\u5B50\u90AE\u4EF6",
37212
- accountTypeTwitter: "Twitter ID",
37213
- accountTypeApple: "Apple ID",
37214
- accountTypeFarcaster: "Farcaster ID",
37215
37615
  close: "\u5173\u95ED",
37216
37616
  copyAddress: "\u590D\u5236\u5730\u5740",
37217
37617
  copied: "\u5DF2\u590D\u5236",
37218
37618
  auto: "\u81EA\u52A8",
37219
- comingSoon: "\u5373\u5C06\u63A8\u51FA",
37220
- or: "\u6216"
37619
+ comingSoon: "\u5373\u5C06\u63A8\u51FA"
37221
37620
  },
37222
37621
  disclaimer: {
37223
37622
  terms: "\u6761\u6B3E",
@@ -37230,13 +37629,7 @@ var zh_default = {
37230
37629
  },
37231
37630
  connect: {
37232
37631
  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"
37632
+ connectWallet: "\u8FDE\u63A5\u94B1\u5305"
37240
37633
  },
37241
37634
  selectAsset: {
37242
37635
  yourTokens: "\u60A8\u7684\u4EE3\u5E01",
@@ -37606,8 +37999,7 @@ var zh_default = {
37606
37999
  subject: "\u4E3B\u9898*",
37607
38000
  description: "\u63CF\u8FF0*",
37608
38001
  resolutionPreference: "\u89E3\u51B3\u504F\u597D*"
37609
- },
37610
- errors: {}
38002
+ }
37611
38003
  };
37612
38004
 
37613
38005
  // src/locales/i18n.ts
@@ -37619,6 +38011,7 @@ var localeMapping = {
37619
38011
  tr: "tr",
37620
38012
  es: "es",
37621
38013
  ru: "ru",
38014
+ fr: "fr",
37622
38015
  buy_en: "buy_en"
37623
38016
  };
37624
38017
  var resources = {
@@ -37631,6 +38024,7 @@ var resources = {
37631
38024
  tr: { translation: tr_default },
37632
38025
  es: { translation: es_default },
37633
38026
  ru: { translation: ru_default },
38027
+ fr: { translation: fr_default },
37634
38028
  buy_en: { translation: buy_en_default }
37635
38029
  };
37636
38030
  i18n.use(initReactI18next).init({
@@ -37657,19 +38051,19 @@ import { QueryClientProvider } from "@tanstack/react-query";
37657
38051
  import React240, {
37658
38052
  createContext as createContext18,
37659
38053
  useContext as useContext18,
37660
- useEffect as useEffect60,
38054
+ useEffect as useEffect59,
37661
38055
  useMemo as useMemo47
37662
38056
  } from "react";
37663
38057
  import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
37664
38058
 
37665
38059
  // src/providers/FunkitI18nProvider.tsx
37666
- import React238, { useEffect as useEffect58 } from "react";
38060
+ import React238, { useEffect as useEffect57 } from "react";
37667
38061
  import { I18nextProvider } from "react-i18next";
37668
38062
  function FunkitI18nProvider({
37669
38063
  children,
37670
38064
  locale = "en"
37671
38065
  }) {
37672
- useEffect58(() => {
38066
+ useEffect57(() => {
37673
38067
  const targetLanguage = localeMapping[locale];
37674
38068
  if (i18n_default.language !== targetLanguage) {
37675
38069
  i18n_default.changeLanguage(targetLanguage);
@@ -37716,7 +38110,7 @@ function FunkitStatsigProvider({
37716
38110
 
37717
38111
  // src/providers/usePreloadImages.ts
37718
38112
  import { isNotNullish as isNotNullish9 } from "@funkit/utils";
37719
- import { useCallback as useCallback50, useEffect as useEffect59 } from "react";
38113
+ import { useCallback as useCallback50, useEffect as useEffect58 } from "react";
37720
38114
  function usePreloadImages() {
37721
38115
  const funkitConnectChains = useFunkitConnectChains();
37722
38116
  const walletConnectors = useWalletConnectors();
@@ -37726,7 +38120,7 @@ function usePreloadImages() {
37726
38120
  ...funkitConnectChains.map((chain) => chain.iconUrl).filter(isNotNullish9)
37727
38121
  );
37728
38122
  }, [walletConnectors, funkitConnectChains]);
37729
- useEffect59(() => {
38123
+ useEffect58(() => {
37730
38124
  preloadImages();
37731
38125
  }, [preloadImages]);
37732
38126
  }
@@ -37755,7 +38149,7 @@ function FunkitProvider(props) {
37755
38149
  }, [initialChainId, props.wagmiConfig, props.funkitConfig.appName]);
37756
38150
  const finalQueryClient = props.queryClient;
37757
38151
  const sdkVersion = useMemo47(() => getCurrentSdkVersion(), []);
37758
- useEffect60(() => {
38152
+ useEffect59(() => {
37759
38153
  logger.configure(props.funkitConfig.apiKey, !!props.debug, sdkVersion);
37760
38154
  }, [props.funkitConfig.apiKey, props.debug, sdkVersion]);
37761
38155
  const MainChild = /* @__PURE__ */ React240.createElement(FunkitThemeProvider, { theme: props.theme }, /* @__PURE__ */ React240.createElement(
@@ -37855,7 +38249,6 @@ export {
37855
38249
  FunkitConnectAuthenticationProvider,
37856
38250
  FunkitPaymentsIconLine,
37857
38251
  FunkitProvider,
37858
- FunkitSocialLoginMethod,
37859
38252
  NATIVE_TOKEN,
37860
38253
  PaymentMethod,
37861
38254
  SelectedHomeTab,