@rash2x/bridge-widget 0.6.62 → 0.6.64

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.
@@ -940,6 +940,179 @@ function useChainStrategies() {
940
940
  }
941
941
  return context;
942
942
  }
943
+ const truncateToDecimals = (num, decimals) => {
944
+ if (!isFinite(num) || isNaN(num)) return "0";
945
+ const multiplier = Math.pow(10, decimals);
946
+ const truncated = Math.floor(num * multiplier) / multiplier;
947
+ return truncated.toFixed(decimals).replace(/\.?0+$/, "");
948
+ };
949
+ const formatTokenAmount = (amount, symbol, options) => {
950
+ const normalizedSymbol = (symbol ?? "").toUpperCase();
951
+ if (["USDT", "USDC", "DAI", "BUSD"].includes(normalizedSymbol) && amount >= 1) {
952
+ return `${Math.floor(amount)} ${normalizedSymbol}`;
953
+ }
954
+ if (options?.decimals !== void 0) {
955
+ return `${amount.toFixed(options.decimals)} ${normalizedSymbol}`;
956
+ }
957
+ if (amount >= 1) {
958
+ return `${amount.toFixed(0)} ${normalizedSymbol}`;
959
+ } else if (amount >= 1e-3) {
960
+ return `${amount.toFixed(3)} ${normalizedSymbol}`;
961
+ } else {
962
+ return `${amount.toFixed(6)} ${normalizedSymbol}`;
963
+ }
964
+ };
965
+ const formatUsd = (value) => {
966
+ if (!value || !isFinite(value)) return "$0";
967
+ if (value >= 1) return `$${value.toFixed(2)}`;
968
+ return `$${value.toFixed(6).replace(/0+$/, "").replace(/\.$/, "")}`;
969
+ };
970
+ const formatPercentage = (bps, decimals = 2) => {
971
+ return `${(bps / 100).toFixed(decimals).replace(/0+$/, "").replace(/\.$/, "")}%`;
972
+ };
973
+ const formatBalance = (amount, decimals = 2) => {
974
+ if (!isFinite(amount) || isNaN(amount) || amount <= 0) {
975
+ return "0.00";
976
+ }
977
+ return amount.toFixed(decimals);
978
+ };
979
+ const formatHash = (hash, startChars = 4, endChars = 4) => {
980
+ if (!hash) return "";
981
+ if (hash.length <= startChars + endChars) return hash;
982
+ return `${hash.slice(0, startChars)}...${hash.slice(-endChars)}`;
983
+ };
984
+ const formatAddress = formatHash;
985
+ function getQuoteAmounts(quote, srcToken, dstToken) {
986
+ if (!quote || !srcToken || !dstToken) {
987
+ return {
988
+ inputHuman: 0,
989
+ outputHuman: 0,
990
+ outputHumanRounded: "0",
991
+ minReceivedHuman: 0
992
+ };
993
+ }
994
+ const inputHuman = fromLD(quote.srcAmount, srcToken.decimals);
995
+ const outputHuman = fromLD(quote.dstAmount, dstToken.decimals);
996
+ const outputHumanRounded = truncateToDecimals(outputHuman, 2);
997
+ const minReceivedHuman = fromLD(quote.dstAmountMin || "0", dstToken.decimals);
998
+ return {
999
+ inputHuman,
1000
+ outputHuman,
1001
+ outputHumanRounded,
1002
+ minReceivedHuman
1003
+ };
1004
+ }
1005
+ function getQuoteFees(quote, tokens, chains, srcToken, dstToken) {
1006
+ if (!quote || !tokens || !chains) {
1007
+ return {
1008
+ fees: { usd: /* @__PURE__ */ new Map(), original: /* @__PURE__ */ new Map(), formatted: /* @__PURE__ */ new Map() },
1009
+ inSrcToken: void 0,
1010
+ inDstToken: void 0
1011
+ };
1012
+ }
1013
+ const feeData = computeFeesUsdFromArray(quote.fees, tokens, chains);
1014
+ let inSrcToken = void 0;
1015
+ let inDstToken = void 0;
1016
+ if (srcToken && quote.srcChainKey) {
1017
+ const feeInSrcLD = sumFeeByTokenLD(
1018
+ quote.fees,
1019
+ srcToken.address,
1020
+ quote.srcChainKey
1021
+ );
1022
+ const feeInSrcHuman = fromLD(feeInSrcLD, srcToken.decimals);
1023
+ if (feeInSrcHuman > 0) {
1024
+ inSrcToken = Number(truncateToDecimals(feeInSrcHuman, 8));
1025
+ } else if ((feeData.usd.get("total") || 0) > 0 && srcToken.price?.usd) {
1026
+ const feeInSrcApprox = (feeData.usd.get("total") || 0) / srcToken.price.usd;
1027
+ inSrcToken = Number(truncateToDecimals(feeInSrcApprox, 8));
1028
+ }
1029
+ }
1030
+ if (dstToken && quote.dstChainKey) {
1031
+ const feeInDstLD = sumFeeByTokenLD(
1032
+ quote.fees,
1033
+ dstToken.address,
1034
+ quote.dstChainKey
1035
+ );
1036
+ const feeInDstHuman = fromLD(feeInDstLD, dstToken.decimals);
1037
+ if (feeInDstHuman > 0) {
1038
+ inDstToken = Number(truncateToDecimals(feeInDstHuman, 8));
1039
+ }
1040
+ }
1041
+ return {
1042
+ fees: feeData,
1043
+ inSrcToken,
1044
+ inDstToken
1045
+ };
1046
+ }
1047
+ function calculateMinReceived(quote, slippageBps, dstToken) {
1048
+ if (!quote || !dstToken) return 0;
1049
+ const dstAmountLD = BigInt(quote.dstAmount);
1050
+ const minAmountLD = dstAmountLD * BigInt(1e4 - slippageBps) / BigInt(1e4);
1051
+ return fromLD(minAmountLD.toString(), dstToken.decimals);
1052
+ }
1053
+ function getQuoteDetails(quote, srcToken, dstToken, tokens, chains, slippageBps) {
1054
+ const amounts = getQuoteAmounts(quote, srcToken, dstToken);
1055
+ const fees = getQuoteFees(quote, tokens, chains, srcToken, dstToken);
1056
+ const minimumReceived = calculateMinReceived(quote, slippageBps, dstToken);
1057
+ return {
1058
+ inputAmount: amounts.inputHuman,
1059
+ outputAmount: amounts.outputHuman,
1060
+ outputAmountRounded: amounts.outputHumanRounded,
1061
+ minimumReceived,
1062
+ etaSeconds: quote?.duration?.estimated,
1063
+ fees
1064
+ };
1065
+ }
1066
+ function getRouteDisplayName(route) {
1067
+ if (!route) return "Stargate Bridge";
1068
+ const routeLower = route.toLowerCase();
1069
+ if (routeLower.includes("taxi")) return "Stargate V2 Fast";
1070
+ if (routeLower.includes("bus")) return "Stargate V2 Economy";
1071
+ if (routeLower.includes("oft")) return "OFT Bridge";
1072
+ if (routeLower.includes("v2")) return "Stargate V2";
1073
+ return route.split(/[/\-_]/).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
1074
+ }
1075
+ async function addNetworkFeesToQuote(quote, chainRegistry, chains) {
1076
+ if (!quote || !chains) {
1077
+ return quote;
1078
+ }
1079
+ const chainKeys = /* @__PURE__ */ new Set();
1080
+ quote.steps.forEach((step) => {
1081
+ if (step.chainKey) {
1082
+ chainKeys.add(step.chainKey);
1083
+ }
1084
+ });
1085
+ const networkFees = [];
1086
+ for (const chainKey of chainKeys) {
1087
+ const strategy = chainRegistry.getStrategy(chainKey);
1088
+ if (!strategy) continue;
1089
+ const chain2 = chains.find((c2) => c2.chainKey === chainKey);
1090
+ if (!chain2) continue;
1091
+ const stepsForChain = quote.steps.filter((step) => step.chainKey === chainKey);
1092
+ if (!stepsForChain.length) continue;
1093
+ try {
1094
+ const networkFeeHuman = await strategy.estimateNetworkFee(stepsForChain);
1095
+ if (networkFeeHuman > 0) {
1096
+ const networkFeeLD = toLD(
1097
+ networkFeeHuman.toString(),
1098
+ chain2.nativeCurrency.decimals
1099
+ );
1100
+ networkFees.push({
1101
+ token: chain2.nativeCurrency.address,
1102
+ chainKey,
1103
+ amount: networkFeeLD,
1104
+ type: "network"
1105
+ });
1106
+ }
1107
+ } catch (error) {
1108
+ console.warn(`Failed to estimate network fee for chain ${chainKey}:`, error);
1109
+ }
1110
+ }
1111
+ return {
1112
+ ...quote,
1113
+ fees: [...quote.fees, ...networkFees]
1114
+ };
1115
+ }
943
1116
  const toSharedDecimals = (amount, fromDecimals, toDecimals) => {
944
1117
  const value = BigInt(amount);
945
1118
  const diff = BigInt(toDecimals) - BigInt(fromDecimals);
@@ -1062,7 +1235,13 @@ function useBridgeQuote() {
1062
1235
  return;
1063
1236
  }
1064
1237
  if (cancelled) return;
1065
- setQuote(quoteRoute);
1238
+ const quoteWithNetworkFees = await addNetworkFeesToQuote(
1239
+ quoteRoute,
1240
+ chainRegistry,
1241
+ chains
1242
+ );
1243
+ if (cancelled) return;
1244
+ setQuote(quoteWithNetworkFees);
1066
1245
  } catch {
1067
1246
  if (!cancelled) {
1068
1247
  resetUi();
@@ -2261,48 +2440,6 @@ const useWalletSelectModal = create((set2) => ({
2261
2440
  onOpen: (addressType) => set2({ isOpen: true, addressType }),
2262
2441
  onClose: () => set2({ isOpen: false, addressType: void 0 })
2263
2442
  }));
2264
- const truncateToDecimals = (num, decimals) => {
2265
- if (!isFinite(num) || isNaN(num)) return "0";
2266
- const multiplier = Math.pow(10, decimals);
2267
- const truncated = Math.floor(num * multiplier) / multiplier;
2268
- return truncated.toFixed(decimals).replace(/\.?0+$/, "");
2269
- };
2270
- const formatTokenAmount = (amount, symbol, options) => {
2271
- const normalizedSymbol = (symbol ?? "").toUpperCase();
2272
- if (["USDT", "USDC", "DAI", "BUSD"].includes(normalizedSymbol) && amount >= 1) {
2273
- return `${Math.floor(amount)} ${normalizedSymbol}`;
2274
- }
2275
- if (options?.decimals !== void 0) {
2276
- return `${amount.toFixed(options.decimals)} ${normalizedSymbol}`;
2277
- }
2278
- if (amount >= 1) {
2279
- return `${amount.toFixed(0)} ${normalizedSymbol}`;
2280
- } else if (amount >= 1e-3) {
2281
- return `${amount.toFixed(3)} ${normalizedSymbol}`;
2282
- } else {
2283
- return `${amount.toFixed(6)} ${normalizedSymbol}`;
2284
- }
2285
- };
2286
- const formatUsd = (value) => {
2287
- if (!value || !isFinite(value)) return "$0";
2288
- if (value >= 1) return `$${value.toFixed(2)}`;
2289
- return `$${value.toFixed(6).replace(/0+$/, "").replace(/\.$/, "")}`;
2290
- };
2291
- const formatPercentage = (bps, decimals = 2) => {
2292
- return `${(bps / 100).toFixed(decimals).replace(/0+$/, "").replace(/\.$/, "")}%`;
2293
- };
2294
- const formatBalance = (amount, decimals = 2) => {
2295
- if (!isFinite(amount) || isNaN(amount) || amount <= 0) {
2296
- return "0.00";
2297
- }
2298
- return amount.toFixed(decimals);
2299
- };
2300
- const formatHash = (hash, startChars = 4, endChars = 4) => {
2301
- if (!hash) return "";
2302
- if (hash.length <= startChars + endChars) return hash;
2303
- return `${hash.slice(0, startChars)}...${hash.slice(-endChars)}`;
2304
- };
2305
- const formatAddress = formatHash;
2306
2443
  const EditIcon = (props) => {
2307
2444
  return /* @__PURE__ */ jsxs(
2308
2445
  "svg",
@@ -2752,96 +2889,6 @@ const TokenSymbol = ({
2752
2889
  const src2 = `${BASE_URL}/${normalizedSymbol}.svg`;
2753
2890
  return /* @__PURE__ */ jsx("img", { src: src2, alt: alt ?? symbol, className });
2754
2891
  };
2755
- function getQuoteAmounts(quote, srcToken, dstToken) {
2756
- if (!quote || !srcToken || !dstToken) {
2757
- return {
2758
- inputHuman: 0,
2759
- outputHuman: 0,
2760
- outputHumanRounded: "0",
2761
- minReceivedHuman: 0
2762
- };
2763
- }
2764
- const inputHuman = fromLD(quote.srcAmount, srcToken.decimals);
2765
- const outputHuman = fromLD(quote.dstAmount, dstToken.decimals);
2766
- const outputHumanRounded = truncateToDecimals(outputHuman, 2);
2767
- const minReceivedHuman = fromLD(quote.dstAmountMin || "0", dstToken.decimals);
2768
- return {
2769
- inputHuman,
2770
- outputHuman,
2771
- outputHumanRounded,
2772
- minReceivedHuman
2773
- };
2774
- }
2775
- function getQuoteFees(quote, tokens, chains, srcToken, dstToken) {
2776
- if (!quote || !tokens || !chains) {
2777
- return {
2778
- fees: { usd: /* @__PURE__ */ new Map(), original: /* @__PURE__ */ new Map(), formatted: /* @__PURE__ */ new Map() },
2779
- inSrcToken: void 0,
2780
- inDstToken: void 0
2781
- };
2782
- }
2783
- const feeData = computeFeesUsdFromArray(quote.fees, tokens, chains);
2784
- let inSrcToken = void 0;
2785
- let inDstToken = void 0;
2786
- if (srcToken && quote.srcChainKey) {
2787
- const feeInSrcLD = sumFeeByTokenLD(
2788
- quote.fees,
2789
- srcToken.address,
2790
- quote.srcChainKey
2791
- );
2792
- const feeInSrcHuman = fromLD(feeInSrcLD, srcToken.decimals);
2793
- if (feeInSrcHuman > 0) {
2794
- inSrcToken = Number(truncateToDecimals(feeInSrcHuman, 8));
2795
- } else if ((feeData.usd.get("total") || 0) > 0 && srcToken.price?.usd) {
2796
- const feeInSrcApprox = (feeData.usd.get("total") || 0) / srcToken.price.usd;
2797
- inSrcToken = Number(truncateToDecimals(feeInSrcApprox, 8));
2798
- }
2799
- }
2800
- if (dstToken && quote.dstChainKey) {
2801
- const feeInDstLD = sumFeeByTokenLD(
2802
- quote.fees,
2803
- dstToken.address,
2804
- quote.dstChainKey
2805
- );
2806
- const feeInDstHuman = fromLD(feeInDstLD, dstToken.decimals);
2807
- if (feeInDstHuman > 0) {
2808
- inDstToken = Number(truncateToDecimals(feeInDstHuman, 8));
2809
- }
2810
- }
2811
- return {
2812
- fees: feeData,
2813
- inSrcToken,
2814
- inDstToken
2815
- };
2816
- }
2817
- function calculateMinReceived(quote, slippageBps, dstToken) {
2818
- if (!quote || !dstToken) return 0;
2819
- const dstAmountLD = BigInt(quote.dstAmount);
2820
- const minAmountLD = dstAmountLD * BigInt(1e4 - slippageBps) / BigInt(1e4);
2821
- return fromLD(minAmountLD.toString(), dstToken.decimals);
2822
- }
2823
- function getQuoteDetails(quote, srcToken, dstToken, tokens, chains, slippageBps) {
2824
- const amounts = getQuoteAmounts(quote, srcToken, dstToken);
2825
- const fees = getQuoteFees(quote, tokens, chains, srcToken, dstToken);
2826
- const minimumReceived = calculateMinReceived(quote, slippageBps, dstToken);
2827
- return {
2828
- inputAmount: amounts.inputHuman,
2829
- outputAmount: amounts.outputHuman,
2830
- outputAmountRounded: amounts.outputHumanRounded,
2831
- minimumReceived,
2832
- etaSeconds: quote?.duration?.estimated,
2833
- fees
2834
- };
2835
- }
2836
- function getRouteDisplayName(route) {
2837
- if (!route) return "Stargate Bridge";
2838
- const routeLower = route.toLowerCase();
2839
- if (routeLower.includes("taxi")) return "Stargate V2 Fast";
2840
- if (routeLower.includes("bus")) return "Stargate V2 Economy";
2841
- if (routeLower.includes("oft")) return "OFT Bridge";
2842
- if (routeLower.includes("v2")) return "Stargate V2";
2843
- return route.split(/[/\-_]/).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
2844
- }
2845
2892
  function useGasEstimate(amountNum) {
2846
2893
  const { fromChain } = useChainsStore();
2847
2894
  const { selectedAssetSymbol } = useTokensStore();
@@ -2851,9 +2898,6 @@ function useGasEstimate(amountNum) {
2851
2898
  srcAddress
2852
2899
  );
2853
2900
  const { quote } = useBridgeQuoteStore();
2854
- const { chainRegistry } = useChainStrategies();
2855
- const [networkFeeEstimate, setNetworkFeeEstimate] = useState(0);
2856
- const [networkFeeKnown, setNetworkFeeKnown] = useState(false);
2857
2901
  const balancesKnown = !balancesLoading;
2858
2902
  const chainKey = fromChain?.chainKey;
2859
2903
  const nativeCurrencySymbol = fromChain?.nativeCurrency?.symbol;
@@ -2862,44 +2906,6 @@ function useGasEstimate(amountNum) {
2862
2906
  const quoteFees = quote?.fees;
2863
2907
  const quoteSrcChainKey = quote?.srcChainKey;
2864
2908
  const nativeBalanceValue = nativeCurrencySymbol ? Number(balances[nativeCurrencySymbol.toUpperCase()]?.balance ?? 0) : 0;
2865
- useEffect(() => {
2866
- let cancelled = false;
2867
- const estimate = async () => {
2868
- setNetworkFeeEstimate(0);
2869
- setNetworkFeeKnown(false);
2870
- if (!chainKey || !quote?.steps?.length) {
2871
- return;
2872
- }
2873
- const strategy = chainRegistry.getStrategy(chainKey);
2874
- if (!strategy) {
2875
- setNetworkFeeKnown(true);
2876
- return;
2877
- }
2878
- const steps = quote.steps.filter((step) => step.chainKey === chainKey);
2879
- if (!steps.length) {
2880
- setNetworkFeeKnown(true);
2881
- return;
2882
- }
2883
- try {
2884
- const estimateValue = await strategy.estimateNetworkFee(steps);
2885
- if (cancelled) return;
2886
- setNetworkFeeEstimate(
2887
- Number.isFinite(estimateValue) ? estimateValue : 0
2888
- );
2889
- } catch {
2890
- if (cancelled) return;
2891
- setNetworkFeeEstimate(0);
2892
- } finally {
2893
- if (!cancelled) {
2894
- setNetworkFeeKnown(true);
2895
- }
2896
- }
2897
- };
2898
- void estimate();
2899
- return () => {
2900
- cancelled = true;
2901
- };
2902
- }, [chainKey, quote?.steps, chainRegistry]);
2903
2909
  const result = useMemo(() => {
2904
2910
  if (!chainKey || !nativeCurrencySymbol) {
2905
2911
  return {
@@ -2916,6 +2922,7 @@ function useGasEstimate(amountNum) {
2916
2922
  const isNativeSelected = nativeSym === (selectedAssetSymbol || "").toUpperCase();
2917
2923
  let requiredNative = 0;
2918
2924
  let quoteFeesAvailable = false;
2925
+ console.log(quoteFees);
2919
2926
  if (quoteFees && quoteSrcChainKey === chainKey) {
2920
2927
  const fees = quoteFees;
2921
2928
  const feesInNative = fees.filter(
@@ -2928,16 +2935,16 @@ function useGasEstimate(amountNum) {
2928
2935
  requiredNative = Number(feesInNative) / Math.pow(10, decimals);
2929
2936
  quoteFeesAvailable = true;
2930
2937
  }
2931
- if (networkFeeKnown) {
2932
- requiredNative += networkFeeEstimate;
2933
- }
2934
2938
  let hasEnoughGas = true;
2935
2939
  if (isNativeSelected) {
2936
2940
  hasEnoughGas = nativeBalance - (amountNum ?? 0) >= requiredNative;
2937
2941
  } else {
2938
2942
  hasEnoughGas = nativeBalance >= requiredNative;
2939
2943
  }
2940
- const shouldCheckGas = balancesKnown && quoteFeesAvailable && networkFeeKnown;
2944
+ console.log("nativeBalance", nativeBalance);
2945
+ console.log("requiredNative", requiredNative);
2946
+ console.log("nativeBalance - (amountNum ?? 0)", nativeBalance - (amountNum ?? 0));
2947
+ const shouldCheckGas = balancesKnown && quoteFeesAvailable;
2941
2948
  return {
2942
2949
  nativeSym,
2943
2950
  nativeBalance,
@@ -2956,9 +2963,7 @@ function useGasEstimate(amountNum) {
2956
2963
  quoteSrcChainKey,
2957
2964
  amountNum,
2958
2965
  balancesKnown,
2959
- nativeBalanceValue,
2960
- networkFeeEstimate,
2961
- networkFeeKnown
2966
+ nativeBalanceValue
2962
2967
  ]);
2963
2968
  return result;
2964
2969
  }
@@ -3670,6 +3675,8 @@ function useBalanceCheck(amountNum, gas) {
3670
3675
  };
3671
3676
  }
3672
3677
  const hasEnoughGasForTx = gas.nativeBalance >= gasReserve;
3678
+ console.log("rawBalance", rawBalance);
3679
+ console.log("amountNum", amountNum);
3673
3680
  return {
3674
3681
  availableBalance: rawBalance,
3675
3682
  hasInsufficientBalance: amountNum > rawBalance || !hasEnoughGasForTx,
@@ -4238,7 +4245,7 @@ const ProgressStep = ({
4238
4245
  title: t2("transaction.steps.completed")
4239
4246
  }
4240
4247
  ];
4241
- return /* @__PURE__ */ jsx(DialogContent, { showCloseButton: false, className: "overflow-hidden md:max-w-[420px] p-0", children: /* @__PURE__ */ jsxs("div", { className: "flex relative flex-col gap-6 flex-1 items-center justify-start text-center bg-background noise p-10", children: [
4248
+ return /* @__PURE__ */ jsx(DialogContent, { showCloseButton: false, className: "overflow-hidden md:max-w-[420px] p-0 fixed top-0 left-0 right-0 bottom-0 translate-x-0 translate-y-0 md:left-[50%] md:top-[50%] md:translate-x-[-50%] md:translate-y-[-50%] rounded-none md:rounded-lg", children: /* @__PURE__ */ jsxs("div", { className: "flex relative flex-col gap-6 flex-1 items-center justify-center md:justify-start text-center bg-background noise p-10", children: [
4242
4249
  icon,
4243
4250
  /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 pt-4 pb-2 text-center", children: /* @__PURE__ */ jsx(DialogTitle, { children: t2("transaction.inProgress") }) }),
4244
4251
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
@@ -4265,8 +4272,8 @@ const FailedStep = ({
4265
4272
  }) => {
4266
4273
  const { current, reset } = useTransactionStore();
4267
4274
  const { t: t2 } = useBridgeTranslation();
4268
- return /* @__PURE__ */ jsxs(DialogContent, { showCloseButton: true, className: "overflow-hidden md:max-w-[420px] p-0", children: [
4269
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col relative gap-4 flex-1 items-center justify-start text-center noise p-10 pb-0", children: [
4275
+ return /* @__PURE__ */ jsxs(DialogContent, { showCloseButton: true, className: "overflow-hidden md:max-w-[420px] p-0 fixed top-0 left-0 right-0 bottom-0 translate-x-0 translate-y-0 md:left-[50%] md:top-[50%] md:translate-x-[-50%] md:translate-y-[-50%] rounded-none md:rounded-lg", children: [
4276
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col relative gap-4 flex-1 items-center justify-center md:justify-start text-center noise p-10 pb-0", children: [
4270
4277
  icon,
4271
4278
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 pt-4 pb-2 text-center", children: [
4272
4279
  /* @__PURE__ */ jsx(DialogTitle, { children: t2("transaction.failed") }),
@@ -4457,9 +4464,9 @@ const SuccessStep = ({
4457
4464
  DialogContent,
4458
4465
  {
4459
4466
  showCloseButton: true,
4460
- className: "overflow-hidden md:max-w-[420px] p-0",
4467
+ className: "overflow-hidden md:max-w-[420px] p-0 fixed top-0 left-0 right-0 bottom-0 translate-x-0 translate-y-0 md:left-[50%] md:top-[50%] md:translate-x-[-50%] md:translate-y-[-50%] rounded-none md:rounded-lg",
4461
4468
  children: [
4462
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 flex-1 justify-start items-center text-center bg-background noise p-10 pb-0", children: [
4469
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 flex-1 justify-center md:justify-start items-center text-center bg-background noise p-10 pb-0", children: [
4463
4470
  icon,
4464
4471
  /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 pt-4 text-center", children: /* @__PURE__ */ jsx(DialogTitle, { className: "text-[28px]", children: t2("transaction.success") }) }),
4465
4472
  /* @__PURE__ */ jsxs("div", { className: "w-full space-y-2 mt-3 relative z-10 pb-14", children: [
@@ -4544,7 +4551,7 @@ const ConfirmStep = ({
4544
4551
  }) => {
4545
4552
  const { t: t2 } = useBridgeTranslation();
4546
4553
  const { formatTime } = useCountdown(90);
4547
- return /* @__PURE__ */ jsx(DialogContent, { showCloseButton: false, className: "overflow-hidden md:max-w-[420px] p-0", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col relative gap-4 flex-1 items-center justify-start text-center noise p-10", children: [
4554
+ return /* @__PURE__ */ jsx(DialogContent, { className: "overflow-hidden md:max-w-[420px] p-0 fixed top-0 left-0 right-0 bottom-0 translate-x-0 translate-y-0 md:left-[50%] md:top-[50%] md:translate-x-[-50%] md:translate-y-[-50%] rounded-none md:rounded-lg", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col relative gap-4 flex-1 items-center justify-center md:justify-start text-center noise p-10", children: [
4548
4555
  icon,
4549
4556
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 pt-4 pb-2 text-center", children: [
4550
4557
  /* @__PURE__ */ jsx(DialogTitle, { children: t2("transaction.confirm") }),
@@ -6939,7 +6946,7 @@ const TokenSelectModal = ({
6939
6946
  return /* @__PURE__ */ jsx(Dialog, { open: isOpen, onOpenChange: (open) => !open && handleClose(), children: /* @__PURE__ */ jsxs(
6940
6947
  DialogContent,
6941
6948
  {
6942
- className: "md:max-h-[90dvh] md:h-[90dvh] overflow-hidden flex flex-col fixed top-0 left-0 right-0 bottom-0 translate-x-0 translate-y-0 md:left-[50%] md:top-[50%] md:translate-x-[-50%] md:translate-y-[-50%] p-6 md:p-10 md:pt-8 rounded-none md:rounded-lg",
6949
+ className: "md:max-h-[90dvh] md:h-[90dvh] overflow-hidden flex flex-col fixed top-0 left-0 right-0 bottom-0 translate-x-0 translate-y-0 md:left-[50%] md:top-[50%] md:translate-x-[-50%] md:translate-y-[-50%] rounded-none md:rounded-lg p-6 md:p-10 md:pt-8",
6943
6950
  closeButtonClassName: "right-6 md:right-10",
6944
6951
  children: [
6945
6952
  /* @__PURE__ */ jsx(DialogHeader, { className: "text-left pb-2", children: /* @__PURE__ */ jsx(DialogTitle, { className: "text-2xl leading-8", children: t2("bridge.selectToken") }) }),
@@ -25822,7 +25829,7 @@ class WalletConnectModal {
25822
25829
  }
25823
25830
  async initUi() {
25824
25831
  if (typeof window !== "undefined") {
25825
- await import("./index-CcNV1b5l.js");
25832
+ await import("./index-7Pgd_WWn.js");
25826
25833
  const modal = document.createElement("wcm-modal");
25827
25834
  document.body.insertAdjacentElement("beforeend", modal);
25828
25835
  OptionsCtrl.setIsUiLoaded(true);
@@ -26529,41 +26536,42 @@ async function pollUntilDelivered(args) {
26529
26536
  }
26530
26537
  }
26531
26538
  export {
26532
- getQuotesByPriority as $,
26539
+ getDestTokens as $,
26533
26540
  getQuoteDetails as A,
26534
26541
  getRouteDisplayName as B,
26535
26542
  ConfigCtrl as C,
26536
- toLD as D,
26543
+ addNetworkFeesToQuote as D,
26537
26544
  EventsCtrl as E,
26538
- fromLD as F,
26539
- buildAssetMatrix as G,
26540
- listAssetsForSelect as H,
26541
- resolveTokenOnChain as I,
26542
- resolveTokenOnChainFromMatrix$2 as J,
26543
- DEFAULT_SLIPPAGE_BPS as K,
26544
- tonNorm as L,
26545
+ toLD as F,
26546
+ fromLD as G,
26547
+ buildAssetMatrix as H,
26548
+ listAssetsForSelect as I,
26549
+ resolveTokenOnChain as J,
26550
+ resolveTokenOnChainFromMatrix$2 as K,
26551
+ DEFAULT_SLIPPAGE_BPS as L,
26545
26552
  ModalCtrl as M,
26546
- isZeroAddr as N,
26553
+ tonNorm as N,
26547
26554
  OptionsCtrl as O,
26548
- addrForApi as P,
26549
- isNativeAddrEqual as Q,
26555
+ isZeroAddr as P,
26556
+ addrForApi as Q,
26550
26557
  RouterCtrl as R,
26551
- findNativeMeta as S,
26558
+ isNativeAddrEqual as S,
26552
26559
  ToastCtrl as T,
26553
- lookupTokenMeta as U,
26554
- computeFeesUsdFromArray as V,
26555
- sumFeeByTokenLD as W,
26556
- normalizeTickerSymbol$1 as X,
26557
- getChains as Y,
26558
- getTokens as Z,
26559
- getDestTokens as _,
26560
+ findNativeMeta as U,
26561
+ lookupTokenMeta as V,
26562
+ computeFeesUsdFromArray as W,
26563
+ sumFeeByTokenLD as X,
26564
+ normalizeTickerSymbol$1 as Y,
26565
+ getChains as Z,
26566
+ getTokens as _,
26560
26567
  ThemeCtrl as a,
26561
- isNativeAddress as a0,
26562
- getEvmBalances as a1,
26563
- getTonBalances as a2,
26564
- getTronBalances as a3,
26565
- getDeliveryStatus as a4,
26566
- pollUntilDelivered as a5,
26568
+ getQuotesByPriority as a0,
26569
+ isNativeAddress as a1,
26570
+ getEvmBalances as a2,
26571
+ getTonBalances as a3,
26572
+ getTronBalances as a4,
26573
+ getDeliveryStatus as a5,
26574
+ pollUntilDelivered as a6,
26567
26575
  ExplorerCtrl as b,
26568
26576
  CoreUtil as c,
26569
26577
  EvaaBridge as d,
@@ -26590,4 +26598,4 @@ export {
26590
26598
  getQuoteFees as y,
26591
26599
  calculateMinReceived as z
26592
26600
  };
26593
- //# sourceMappingURL=index-C0BTirT_.js.map
26601
+ //# sourceMappingURL=index-BEeiBKNi.js.map