@kimafinance/kima-transaction-widget 1.3.5 → 1.3.7

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.cjs CHANGED
@@ -1071,7 +1071,7 @@ var USD = ({ width = 24, height = 24, ...rest }) => {
1071
1071
  /* @__PURE__ */ import_react34.default.createElement("g", null, /* @__PURE__ */ import_react34.default.createElement(
1072
1072
  "path",
1073
1073
  {
1074
- d: "M24.26,20.34c0,3.42-2.423,6.342-6.845,7.111v3.92h-3.768v-3.648c-2.578-0.117-5.076-0.811-6.537-1.654l1.154-4.5\r\n c1.615,0.886,3.883,1.693,6.383,1.693c2.191,0,3.691-0.848,3.691-2.385c0-1.461-1.23-2.389-4.077-3.348\r\n c-4.112-1.385-6.921-3.306-6.921-7.033c0-3.386,2.385-6.035,6.499-6.845V0h3.767v3.383c2.576,0.115,4.309,0.652,5.576,1.268\r\n l-1.115,4.348C21.07,8.575,19.3,7.688,16.531,7.688c-2.5,0-3.307,1.076-3.307,2.154c0,1.268,1.346,2.074,4.613,3.307\r\n C22.416,14.762,24.26,16.877,24.26,20.34z"
1074
+ d: "M24.26,20.34c0,3.42-2.423,6.342-6.845,7.111v3.92h-3.768v-3.648c-2.578-0.117-5.076-0.811-6.537-1.654l1.154-4.5\n c1.615,0.886,3.883,1.693,6.383,1.693c2.191,0,3.691-0.848,3.691-2.385c0-1.461-1.23-2.389-4.077-3.348\n c-4.112-1.385-6.921-3.306-6.921-7.033c0-3.386,2.385-6.035,6.499-6.845V0h3.767v3.383c2.576,0.115,4.309,0.652,5.576,1.268\n l-1.115,4.348C21.07,8.575,19.3,7.688,16.531,7.688c-2.5,0-3.307,1.076-3.307,2.154c0,1.268,1.346,2.074,4.613,3.307\n C22.416,14.762,24.26,16.877,24.26,20.34z"
1075
1075
  }
1076
1076
  ))
1077
1077
  )
@@ -2627,6 +2627,12 @@ var checkPoolBalance = ({
2627
2627
  const targetToken = poolTokens.find(
2628
2628
  (token) => token.tokenSymbol === finalTargetCurrency
2629
2629
  );
2630
+ if (!targetToken) {
2631
+ return {
2632
+ isPoolAvailable: false,
2633
+ error: `${CHAIN_NAMES_TO_STRING[targetChain]} has no ${targetCurrency} pool!`
2634
+ };
2635
+ }
2630
2636
  const { amount: targetTokenBalance } = targetToken;
2631
2637
  if (parseFloat(amount) > parseFloat(targetTokenBalance))
2632
2638
  return {
@@ -2774,6 +2780,34 @@ function useEvmAllowance() {
2774
2780
  refetchInterval: 60 * 1e3,
2775
2781
  enabled
2776
2782
  });
2783
+ const signMessage = async (data) => {
2784
+ if (!walletProvider) {
2785
+ console.error("No available provider");
2786
+ return;
2787
+ }
2788
+ if (!allowanceData?.decimals) {
2789
+ console.warn("useEvmAllowance: Missing required data");
2790
+ return;
2791
+ }
2792
+ try {
2793
+ const walletClient = (0, import_viem5.createWalletClient)({
2794
+ account: walletAddress,
2795
+ chain: sourceChain,
2796
+ transport: (0, import_viem5.custom)(window.ethereum)
2797
+ // WARNING: NEED TO MAKE SURE THIS USING THE ETHEREUM OBJECT IS STABLE ENOUGH
2798
+ });
2799
+ return await walletClient.signMessage({
2800
+ account: walletAddress,
2801
+ message: `Amount: ${allowanceNumber}
2802
+ Target Address: ${data.targetAddress}
2803
+ Target Chain: ${data.targetChain}
2804
+ Target Symbol: ${data.targetSymbol}`
2805
+ });
2806
+ } catch (error) {
2807
+ console.error("useEvmAllowance: Error on signing message:", error);
2808
+ throw new Error("Error on signing message");
2809
+ }
2810
+ };
2777
2811
  const approveErc20TokenTransfer = async (isCancel = false) => {
2778
2812
  if (!walletProvider) {
2779
2813
  console.error("No available provider");
@@ -2839,6 +2873,7 @@ function useEvmAllowance() {
2839
2873
  isApproved: allowanceData?.allowance ? allowanceData.allowance >= allowanceNumber : false,
2840
2874
  approve: approveErc20TokenTransfer,
2841
2875
  isLoading,
2876
+ signMessage,
2842
2877
  refetch
2843
2878
  };
2844
2879
  }
@@ -2922,6 +2957,7 @@ var WalletProvider2 = ({
2922
2957
  return /* @__PURE__ */ import_react82.default.createElement(import_wallet_adapter_react.ConnectionProvider, { endpoint }, /* @__PURE__ */ import_react82.default.createElement(
2923
2958
  import_wallet_adapter_react.WalletProvider,
2924
2959
  {
2960
+ autoConnect: false,
2925
2961
  wallets: [
2926
2962
  new import_wallet_adapter_wallets.PhantomWalletAdapter(),
2927
2963
  new import_wallet_adapter_wallets.SolflareWalletAdapter(),
@@ -3031,7 +3067,8 @@ function useSolanaAllowance() {
3031
3067
  const { connection: internalConnection } = (0, import_wallet_adapter_react3.useConnection)();
3032
3068
  const {
3033
3069
  publicKey: internalPublicKey,
3034
- signTransaction: internalSignTransaction
3070
+ signTransaction: internalSignTransaction,
3071
+ signMessage: internalSignMessage
3035
3072
  } = (0, import_wallet_adapter_react3.useWallet)();
3036
3073
  const selectedCoin = (0, import_react_redux7.useSelector)(selectSourceCurrency);
3037
3074
  const tokenOptions = (0, import_react_redux7.useSelector)(selectTokenOptions);
@@ -3040,6 +3077,7 @@ function useSolanaAllowance() {
3040
3077
  const isSolanaProvider = sourceChain.shortName === "SOL" && externalProvider?.type === "solana" && externalProvider.provider && externalProvider.signer instanceof import_web38.PublicKey;
3041
3078
  const userPublicKey = isSolanaProvider ? externalProvider.signer : sourceChain.shortName === "SOL" ? internalPublicKey : void 0;
3042
3079
  const signTransaction = isSolanaProvider && externalProvider.provider.signTransaction ? externalProvider.provider.signTransaction : sourceChain.shortName === "SOL" ? internalSignTransaction : void 0;
3080
+ const signMessage = isSolanaProvider && externalProvider.provider.signMessage ? externalProvider.provider.signMessage : sourceChain.shortName === "SOL" ? internalSignMessage : void 0;
3043
3081
  const connection = isSolanaProvider && externalProvider.provider.connection ? externalProvider.provider.connection : sourceChain.shortName === "SOL" ? internalConnection : void 0;
3044
3082
  const {
3045
3083
  data: allowanceData,
@@ -3068,6 +3106,24 @@ function useSolanaAllowance() {
3068
3106
  staleTime: 1e3 * 60
3069
3107
  // 1 min
3070
3108
  });
3109
+ const signSolanaMessage = async (data) => {
3110
+ if (!signMessage) {
3111
+ console.warn("useSolanaAllowance: Missing Solana provider setup");
3112
+ return;
3113
+ }
3114
+ try {
3115
+ const message = `Amount: ${allowanceNumber}
3116
+ Target Address: ${data.targetAddress}
3117
+ Target Chain: ${data.targetChain}
3118
+ Target Symbol: ${data.targetSymbol}`;
3119
+ const encodedMessage = new TextEncoder().encode(message);
3120
+ const signature = await signMessage(encodedMessage);
3121
+ return signature;
3122
+ } catch (error2) {
3123
+ console.error("Error signing message:", error2);
3124
+ throw error2;
3125
+ }
3126
+ };
3071
3127
  const approveSPLTokenTransfer = async (isCancel = false) => {
3072
3128
  if (!allowanceAmount) {
3073
3129
  console.warn("useSolanaAllowance: Missing allowance amount");
@@ -3125,7 +3181,8 @@ function useSolanaAllowance() {
3125
3181
  return {
3126
3182
  ...allowanceData,
3127
3183
  isApproved: allowanceData?.allowance ? allowanceData.allowance >= allowanceNumber : false,
3128
- approve: approveSPLTokenTransfer
3184
+ approve: approveSPLTokenTransfer,
3185
+ signMessage: signSolanaMessage
3129
3186
  };
3130
3187
  }
3131
3188
 
@@ -3252,7 +3309,8 @@ var WalletProvider3 = ({ children, networkOption }) => {
3252
3309
  {
3253
3310
  adapters,
3254
3311
  onError,
3255
- onChainChanged
3312
+ onChainChanged,
3313
+ autoConnect: false
3256
3314
  },
3257
3315
  children
3258
3316
  );
@@ -3599,7 +3657,8 @@ function useTronAllowance() {
3599
3657
  const { pools } = useGetPools_default(backendUrl, networkOption);
3600
3658
  const {
3601
3659
  address: internalUserAddress,
3602
- signTransaction: internalSignTronTransaction
3660
+ signTransaction: internalSignTronTransaction,
3661
+ signMessage: internalSignMessage
3603
3662
  } = (0, import_tronwallet_adapter_react_hooks3.useWallet)();
3604
3663
  const [approvalsCount, setApprovalsCount] = (0, import_react88.useState)(0);
3605
3664
  const isTronProvider2 = sourceChain.shortName === "TRX" && externalProvider?.type === "tron" && externalProvider.provider.tronWeb instanceof import_tronweb5.TronWeb && typeof externalProvider.signer === "string";
@@ -3611,6 +3670,7 @@ function useTronAllowance() {
3611
3670
  isTronProvider2 && tronWeb.setAddress(TRON_USDK_OWNER_ADDRESS);
3612
3671
  const userAddress = isTronProvider2 ? externalProvider.signer : internalUserAddress;
3613
3672
  const signTronTransaction = isTronProvider2 ? externalProvider.provider.signTransaction : internalSignTronTransaction;
3673
+ const signMessage = isTronProvider2 ? externalProvider.provider.signMessage : internalSignMessage;
3614
3674
  const {
3615
3675
  data: allowanceData,
3616
3676
  isLoading,
@@ -3631,6 +3691,23 @@ function useTronAllowance() {
3631
3691
  staleTime: 1e3 * 60
3632
3692
  // 1 min
3633
3693
  });
3694
+ const signTronMessage = async (data) => {
3695
+ if (!tronWeb) {
3696
+ console.warn("TronWeb not initialized");
3697
+ return;
3698
+ }
3699
+ try {
3700
+ const message = `Amount: ${allowanceNumber}
3701
+ Target Address: ${data.targetAddress}
3702
+ Target Chain: ${data.targetChain}
3703
+ Target Symbol: ${data.targetSymbol}`;
3704
+ const signedMessage = await signMessage(message);
3705
+ return signedMessage;
3706
+ } catch (error2) {
3707
+ console.error("Error signing message:", error2);
3708
+ throw error2;
3709
+ }
3710
+ };
3634
3711
  const approveTrc20TokenTransfer = async (isCancel = false) => {
3635
3712
  if (!userAddress || !pools || !tronWeb || !tokenOptions || !selectedCoin || !allowanceAmount) {
3636
3713
  console.warn("Missing required data for approveTrc20TokenTransfer");
@@ -3669,7 +3746,8 @@ function useTronAllowance() {
3669
3746
  return {
3670
3747
  ...allowanceData,
3671
3748
  isApproved: allowanceData?.allowance ? allowanceData.allowance >= allowanceNumber : false,
3672
- approve: approveTrc20TokenTransfer
3749
+ approve: approveTrc20TokenTransfer,
3750
+ signMessage: signTronMessage
3673
3751
  };
3674
3752
  }
3675
3753
 
@@ -3836,10 +3914,10 @@ var KimaProvider = ({
3836
3914
  var KimaProvider_default = KimaProvider;
3837
3915
 
3838
3916
  // src/components/KimaTransactionWidget.tsx
3839
- var import_react135 = __toESM(require("react"), 1);
3917
+ var import_react136 = __toESM(require("react"), 1);
3840
3918
 
3841
3919
  // src/components/KimaWidgetWrapper.tsx
3842
- var import_react133 = __toESM(require("react"), 1);
3920
+ var import_react134 = __toESM(require("react"), 1);
3843
3921
  var import_react_redux52 = require("react-redux");
3844
3922
 
3845
3923
  // src/components/TransactionWidget.tsx
@@ -4596,12 +4674,13 @@ var AddressInput = ({
4596
4674
  const targetChain = (0, import_react_redux29.useSelector)(selectTargetChain);
4597
4675
  const { walletAddress: sourceAddress, isReady } = useIsWalletReady4();
4598
4676
  const targetAddress = (0, import_react_redux29.useSelector)(selectTargetAddress);
4599
- const isEvm = (chain) => {
4600
- return chain !== "SOL" && chain !== "TRX" && chain !== "BTC";
4677
+ const isCompatible = (sourceChain2, targetChain2) => {
4678
+ return sourceChain2.compatibility === targetChain2.compatibility;
4601
4679
  };
4602
4680
  (0, import_react113.useEffect)(() => {
4603
4681
  if (mode === "payment" /* payment */) return;
4604
- if (isEvm(sourceChain) && isEvm(targetChain)) {
4682
+ if (isCompatible(sourceChain, targetChain)) {
4683
+ if (targetAddress !== "") return;
4605
4684
  dispatch(setTargetAddress(isReady && sourceAddress ? sourceAddress : ""));
4606
4685
  return;
4607
4686
  }
@@ -5154,7 +5233,7 @@ var TransactionWidget = ({ theme }) => {
5154
5233
  };
5155
5234
 
5156
5235
  // src/components/TransferWidget.tsx
5157
- var import_react132 = __toESM(require("react"), 1);
5236
+ var import_react133 = __toESM(require("react"), 1);
5158
5237
  var import_react_redux51 = require("react-redux");
5159
5238
 
5160
5239
  // src/components/reusable/SingleForm.tsx
@@ -5325,18 +5404,8 @@ var NetworkSelector_default = import_react122.default.memo(NetworkSelector);
5325
5404
 
5326
5405
  // src/components/reusable/SingleForm.tsx
5327
5406
  var SingleForm = ({
5328
- allowance,
5329
5407
  balance,
5330
- decimals,
5331
- formStep,
5332
- onBack,
5333
- onCancelApprove,
5334
- onNext,
5335
- getButtonLabel,
5336
- isApproving,
5337
- isSigning,
5338
- isSubmitting,
5339
- isCancellingApprove
5408
+ decimals
5340
5409
  }) => {
5341
5410
  const dispatch = (0, import_react_redux43.useDispatch)();
5342
5411
  const mode = (0, import_react_redux43.useSelector)(selectMode);
@@ -5345,7 +5414,6 @@ var SingleForm = ({
5345
5414
  const { totalFeeUsd } = (0, import_react_redux43.useSelector)(selectServiceFee);
5346
5415
  const compliantOption = (0, import_react_redux43.useSelector)(selectCompliantOption);
5347
5416
  const targetCompliant = (0, import_react_redux43.useSelector)(selectTargetCompliant);
5348
- const transactionOption = (0, import_react_redux43.useSelector)(selectTransactionOption);
5349
5417
  const sourceNetwork = (0, import_react_redux43.useSelector)(selectSourceChain);
5350
5418
  const targetNetwork = (0, import_react_redux43.useSelector)(selectTargetChain);
5351
5419
  const { isReady } = useIsWalletReady4();
@@ -5379,23 +5447,16 @@ var SingleForm = ({
5379
5447
  const maxValue = (0, import_react123.useMemo)(() => {
5380
5448
  if (!balance) return 0;
5381
5449
  if (totalFeeUsd < 0) return balance;
5382
- const amountMinusFees = preciseSubtraction(balance, totalFeeUsd);
5383
- return amountMinusFees > 0 ? amountMinusFees : 0;
5450
+ return preciseSubtraction(balance, totalFeeUsd);
5384
5451
  }, [balance, totalFeeUsd, feeDeduct]);
5385
5452
  (0, import_react123.useEffect)(() => {
5386
5453
  if (!errorMessage) return;
5387
5454
  import_react_hot_toast4.toast.error(errorMessage);
5388
5455
  }, [errorMessage]);
5389
5456
  (0, import_react123.useEffect)(() => {
5390
- if (amountValue && amount != "") return;
5457
+ if (amountValue && amount !== "") return;
5391
5458
  setAmountValue(amount);
5392
5459
  }, [amount]);
5393
- (0, import_react123.useEffect)(() => {
5394
- if (!feeDeduct && maxValue < +amountValue) {
5395
- setAmountValue(maxValue.toString());
5396
- dispatch(setAmount(maxValue.toString()));
5397
- }
5398
- }, [feeDeduct]);
5399
5460
  return /* @__PURE__ */ import_react123.default.createElement("div", { className: "single-form" }, /* @__PURE__ */ import_react123.default.createElement("div", { className: "form-item" }, /* @__PURE__ */ import_react123.default.createElement("span", { className: "label" }, "Source Network:"), /* @__PURE__ */ import_react123.default.createElement("div", { className: "items" }, /* @__PURE__ */ import_react123.default.createElement(NetworkSelector_default, { type: "source" }), /* @__PURE__ */ import_react123.default.createElement(CoinDropdown_default, null))), /* @__PURE__ */ import_react123.default.createElement(
5400
5461
  "div",
5401
5462
  {
@@ -5416,27 +5477,21 @@ var SingleForm = ({
5416
5477
  theme: theme.colorMode,
5417
5478
  placeholder: "Target address"
5418
5479
  }
5419
- )) : null, mode === "bridge" /* bridge */ ? /* @__PURE__ */ import_react123.default.createElement("div", { className: `form-item ${theme.colorMode}` }, /* @__PURE__ */ import_react123.default.createElement("span", { className: "label" }, "Amount:"), /* @__PURE__ */ import_react123.default.createElement("div", { className: `amount-label-container items ${theme.colorMode}` }, /* @__PURE__ */ import_react123.default.createElement(
5480
+ )) : null, /* @__PURE__ */ import_react123.default.createElement("div", { className: `form-item ${theme.colorMode}` }, /* @__PURE__ */ import_react123.default.createElement("span", { className: "label" }, "Amount:"), /* @__PURE__ */ import_react123.default.createElement("div", { className: `amount-label-container items ${theme.colorMode}` }, /* @__PURE__ */ import_react123.default.createElement(
5420
5481
  "input",
5421
5482
  {
5422
5483
  className: `${theme.colorMode}`,
5423
5484
  type: "text",
5424
- placeholder: "Amount",
5485
+ placeholder: "Enter amount",
5425
5486
  value: amountValue || "",
5426
5487
  onChange: (e) => {
5427
5488
  const value = e.target.value;
5428
5489
  const maskedValue = value.replace(/[^0-9.]/g, "").replace(/(\..*?)\..*/g, "$1").replace(new RegExp(`(\\.\\d{${decimals}})\\d+`), "$1");
5429
- const numericValue = parseFloat(maskedValue);
5430
- if (!isNaN(numericValue) && numericValue > maxValue) {
5431
- setAmountValue(maxValue.toString());
5432
- dispatch(setAmount(maxValue.toString()));
5433
- } else {
5434
- setAmountValue(maskedValue);
5435
- dispatch(setAmount(maskedValue));
5436
- }
5490
+ setAmountValue(maskedValue);
5491
+ dispatch(setAmount(maskedValue));
5437
5492
  }
5438
5493
  }
5439
- ), /* @__PURE__ */ import_react123.default.createElement(
5494
+ ), /* @__PURE__ */ import_react123.default.createElement("div", { className: "max-disclaimer" }, /* @__PURE__ */ import_react123.default.createElement(
5440
5495
  "span",
5441
5496
  {
5442
5497
  className: "max-button",
@@ -5446,22 +5501,7 @@ var SingleForm = ({
5446
5501
  }
5447
5502
  },
5448
5503
  "Max"
5449
- ))) : /* @__PURE__ */ import_react123.default.createElement("div", { className: `form-item ${theme.colorMode}` }, /* @__PURE__ */ import_react123.default.createElement("span", { className: "label" }, "Amount:"), /* @__PURE__ */ import_react123.default.createElement("div", { className: `amount-label-container items ${theme.colorMode}` }, /* @__PURE__ */ import_react123.default.createElement(
5450
- "input",
5451
- {
5452
- className: `${theme.colorMode}`,
5453
- type: "number",
5454
- placeholder: "Amount",
5455
- value: transactionOption?.amount || amountValue || "",
5456
- onChange: (e) => {
5457
- let _amount = +e.target.value;
5458
- const decimal = sourceNetwork.shortName === "BTC" /* BTC */ || targetNetwork.shortName === "BTC" /* BTC */ ? 8 : 2;
5459
- setAmountValue(e.target.value);
5460
- dispatch(setAmount(_amount.toFixed(decimal)));
5461
- },
5462
- disabled: transactionOption?.amount !== void 0
5463
- }
5464
- ), /* @__PURE__ */ import_react123.default.createElement("div", { className: `coin-wrapper ${theme.colorMode}` }, /* @__PURE__ */ import_react123.default.createElement("div", { className: "icon-wrapper" }, /* @__PURE__ */ import_react123.default.createElement(TargetIcon, null)), targetCurrency))));
5504
+ ), totalFeeUsd !== -1 && /* @__PURE__ */ import_react123.default.createElement("p", null, "Est fees: $ ", totalFeeUsd, " USD")))));
5465
5505
  };
5466
5506
  var SingleForm_default = SingleForm;
5467
5507
 
@@ -5520,6 +5560,7 @@ var import_wallet_adapter_react7 = require("@solana/wallet-adapter-react");
5520
5560
  var import_wallet_adapter_base = require("@solana/wallet-adapter-base");
5521
5561
  var SolanaWalletSelect = () => {
5522
5562
  const theme = (0, import_react_redux44.useSelector)(selectTheme);
5563
+ const sourceChain = (0, import_react_redux44.useSelector)(selectSourceChain);
5523
5564
  const dispatch = (0, import_react_redux44.useDispatch)();
5524
5565
  const sliderRef = (0, import_react124.useRef)();
5525
5566
  const { wallet, wallets, select, connect, connected } = (0, import_wallet_adapter_react7.useWallet)();
@@ -5563,17 +5604,30 @@ var SolanaWalletSelect = () => {
5563
5604
  }, []);
5564
5605
  const handleWalletClick = (0, import_react124.useCallback)(
5565
5606
  (walletName) => {
5607
+ console.log(
5608
+ "SolanaWalletSelect: handleWalletClick: walletName: ",
5609
+ walletName
5610
+ );
5566
5611
  select(walletName);
5567
5612
  },
5568
5613
  [select]
5569
5614
  );
5570
5615
  (0, import_react124.useEffect)(() => {
5571
- if (connected) return;
5572
- if (wallet) {
5573
- connect();
5574
- dispatch(setSolanaConnectModal(false));
5616
+ console.log("SolanaWalletSelect: useEffect: wallet: ", wallet);
5617
+ if (!wallet) return;
5618
+ if (sourceChain.shortName !== "SOL") {
5619
+ console.log("SolanaWalletSelect: source chain is not sol...");
5620
+ return;
5621
+ }
5622
+ if (!connected) {
5623
+ console.log(
5624
+ "SolanaWalletSelect: Wallet exists but not connected, connecting wallet:",
5625
+ wallet
5626
+ );
5627
+ connect().catch((err) => console.error("Solana connect error:", err));
5575
5628
  }
5576
- }, [wallet]);
5629
+ dispatch(setSolanaConnectModal(false));
5630
+ }, [wallet, sourceChain]);
5577
5631
  return /* @__PURE__ */ import_react124.default.createElement("div", { className: `wallet-select` }, /* @__PURE__ */ import_react124.default.createElement("div", { className: "slide-area hide-scrollbar", ref: sliderRef }, /* @__PURE__ */ import_react124.default.createElement("div", { className: "wallet-container" }, detected.map((wallet2, index) => /* @__PURE__ */ import_react124.default.createElement(
5578
5632
  "div",
5579
5633
  {
@@ -5615,7 +5669,7 @@ var AccountDetailsModal = () => {
5615
5669
  solanaWalletDisconnect();
5616
5670
  dispatch(setAccountDetailsModal(false));
5617
5671
  };
5618
- if (sourceChain !== "SOL") return;
5672
+ if (sourceChain.shortName !== "SOL") return;
5619
5673
  return /* @__PURE__ */ import_react125.default.createElement(
5620
5674
  "div",
5621
5675
  {
@@ -5687,7 +5741,7 @@ var AccountDetailsModal2 = () => {
5687
5741
  const { balance: tronBalance } = useGetTrxBalance_default();
5688
5742
  const selectedNetwork = (0, import_react_redux47.useSelector)(selectSourceChain);
5689
5743
  const networkDetails = (0, import_react127.useMemo)(
5690
- () => networkOptions.find(({ id }) => id === selectedNetwork),
5744
+ () => networkOptions.find(({ id }) => id === selectedNetwork.shortName),
5691
5745
  [selectedNetwork]
5692
5746
  );
5693
5747
  const explorerUrl = (0, import_react127.useMemo)(() => {
@@ -5697,7 +5751,7 @@ var AccountDetailsModal2 = () => {
5697
5751
  tronWalletDisconnect();
5698
5752
  dispatch(setAccountDetailsModal(false));
5699
5753
  };
5700
- if (sourcheChain !== "TRX") return;
5754
+ if (sourcheChain.shortName !== "TRX") return;
5701
5755
  return /* @__PURE__ */ import_react127.default.createElement(
5702
5756
  "div",
5703
5757
  {
@@ -5716,7 +5770,7 @@ var AccountDetailsModal2 = () => {
5716
5770
  fill: theme.colorMode === "light" ? "black" : "white"
5717
5771
  }
5718
5772
  )
5719
- )))), /* @__PURE__ */ import_react127.default.createElement("div", { className: "modal-content" }, /* @__PURE__ */ import_react127.default.createElement("div", { className: "summary" }, networkDetails && /* @__PURE__ */ import_react127.default.createElement(networkDetails.icon, { width: 60, height: 60 }), /* @__PURE__ */ import_react127.default.createElement("div", { className: "address" }, /* @__PURE__ */ import_react127.default.createElement("h2", null, getShortenedAddress(walletAddress || "")), /* @__PURE__ */ import_react127.default.createElement(CopyButton_default, { text: walletAddress })), /* @__PURE__ */ import_react127.default.createElement("h3", null, tronBalance, " ", selectedNetwork)), /* @__PURE__ */ import_react127.default.createElement(SecondaryButton_default, { className: "block-explorer" }, /* @__PURE__ */ import_react127.default.createElement(ExternalLink_default, { className: "link", to: explorerUrl }, /* @__PURE__ */ import_react127.default.createElement(Explorer_default, { fill: "#778DA3" }), /* @__PURE__ */ import_react127.default.createElement("p", null, "Block explorer"), /* @__PURE__ */ import_react127.default.createElement(ExternalUrl_default, { fill: "#778DA3" }))), /* @__PURE__ */ import_react127.default.createElement(PrimaryButton_default, { clickHandler: handleDisconnect }, "Disconnect")))
5773
+ )))), /* @__PURE__ */ import_react127.default.createElement("div", { className: "modal-content" }, /* @__PURE__ */ import_react127.default.createElement("div", { className: "summary" }, networkDetails && /* @__PURE__ */ import_react127.default.createElement(networkDetails.icon, { width: 60, height: 60 }), /* @__PURE__ */ import_react127.default.createElement("div", { className: "address" }, /* @__PURE__ */ import_react127.default.createElement("h2", null, getShortenedAddress(walletAddress || "")), /* @__PURE__ */ import_react127.default.createElement(CopyButton_default, { text: walletAddress })), /* @__PURE__ */ import_react127.default.createElement("h3", null, tronBalance, " ", selectedNetwork.shortName)), /* @__PURE__ */ import_react127.default.createElement(SecondaryButton_default, { className: "block-explorer" }, /* @__PURE__ */ import_react127.default.createElement(ExternalLink_default, { className: "link", to: explorerUrl }, /* @__PURE__ */ import_react127.default.createElement(Explorer_default, { fill: "#778DA3" }), /* @__PURE__ */ import_react127.default.createElement("p", null, "Block explorer"), /* @__PURE__ */ import_react127.default.createElement(ExternalUrl_default, { fill: "#778DA3" }))), /* @__PURE__ */ import_react127.default.createElement(PrimaryButton_default, { clickHandler: handleDisconnect }, "Disconnect")))
5720
5774
  );
5721
5775
  };
5722
5776
  var AccountDetailsModal_default2 = AccountDetailsModal2;
@@ -5847,7 +5901,8 @@ var useValidateTransaction = ({
5847
5901
  sourceCompliant,
5848
5902
  targetCompliant,
5849
5903
  mode,
5850
- pools
5904
+ pools,
5905
+ formStep
5851
5906
  }) => {
5852
5907
  const maxValue = (0, import_react130.useMemo)(() => {
5853
5908
  if (!balance) return 0;
@@ -5895,24 +5950,22 @@ var useValidateTransaction = ({
5895
5950
  };
5896
5951
  }
5897
5952
  }
5898
- console.log("useValidate:amount: ", amount);
5899
- console.log("useValidate:maxValue ", maxValue);
5900
- if (+amount < totalFeeUsd) {
5953
+ if (+amount > balance && formStep === 0) {
5901
5954
  return {
5902
- error: "ValidationError" /* Error */,
5903
- message: "Fees are greater than the amount to transfer"
5955
+ error: "Warning" /* Warning */,
5956
+ message: "The entered amount exceeds your available balance. This transaction is likely to fail. Proceed with caution."
5904
5957
  };
5905
5958
  }
5906
- if (+amount > maxValue) {
5959
+ if (+amount > maxValue && formStep === 0) {
5907
5960
  return {
5908
- error: "ValidationError" /* Error */,
5909
- message: `Amount exceeds the maximum allowed value [$${maxValue}]`
5961
+ error: "Warning" /* Warning */,
5962
+ message: "The entered amount exceeds the maximum transferable amount (available balance minus transaction fees). Reduce the amount or allow fees to be deducted from the transferred amount. Otherwise, your transaction may fail. Proceed with caution."
5910
5963
  };
5911
5964
  }
5912
- if (balance < +amount) {
5965
+ if (+amount < totalFeeUsd && formStep === 0) {
5913
5966
  return {
5914
- error: "ValidationError" /* Error */,
5915
- message: "Insufficient balance for the transaction"
5967
+ error: "Warning" /* Warning */,
5968
+ message: "Transaction fees exceed the transfer amount. This may result in an ineffective transaction. Proceed with caution."
5916
5969
  };
5917
5970
  }
5918
5971
  if (!isApproved && isSubmitting) {
@@ -5957,7 +6010,7 @@ var useSubmitTransaction = ({
5957
6010
  }) => {
5958
6011
  const dispatch = (0, import_react_redux50.useDispatch)();
5959
6012
  const [isSubmitting, setSubmitting] = (0, import_react131.useState)(false);
5960
- const submitTransaction = async () => {
6013
+ const submitTransaction = async (signature) => {
5961
6014
  try {
5962
6015
  setSubmitting(true);
5963
6016
  const params = JSON.stringify({
@@ -5974,7 +6027,8 @@ var useSubmitTransaction = ({
5974
6027
  htlcCreationVout: 0,
5975
6028
  htlcExpirationTimestamp: "0",
5976
6029
  htlcVersion: "",
5977
- senderPubKey: ""
6030
+ senderPubKey: "",
6031
+ options: signature
5978
6032
  });
5979
6033
  const transactionResult = await fetchWrapper.post(
5980
6034
  `${backendUrl}/submit`,
@@ -6066,6 +6120,31 @@ function useDisconnectWallet4() {
6066
6120
  return mainConnection ? { disconnectWallet: mainConnection.disconnectWallet } : defaultDisconnect;
6067
6121
  }
6068
6122
 
6123
+ // src/components/reusable/WarningModal.tsx
6124
+ var import_react132 = __toESM(require("react"), 1);
6125
+ var WarningModal = ({
6126
+ message,
6127
+ onAcknowledge,
6128
+ onCancel
6129
+ }) => {
6130
+ return /* @__PURE__ */ import_react132.default.createElement("div", { className: "warning-modal-overlay" }, /* @__PURE__ */ import_react132.default.createElement("div", { className: "warning-modal" }, /* @__PURE__ */ import_react132.default.createElement("h3", null, "Warning"), /* @__PURE__ */ import_react132.default.createElement("p", null, message), /* @__PURE__ */ import_react132.default.createElement("div", { className: "warning-modal-buttons" }, /* @__PURE__ */ import_react132.default.createElement(
6131
+ SecondaryButton_default,
6132
+ {
6133
+ className: "warning-modal-cancel",
6134
+ clickHandler: onCancel
6135
+ },
6136
+ "Cancel"
6137
+ ), /* @__PURE__ */ import_react132.default.createElement(
6138
+ PrimaryButton_default,
6139
+ {
6140
+ className: "warning-modal-acknowledge",
6141
+ clickHandler: onAcknowledge
6142
+ },
6143
+ "Acknowledge"
6144
+ ))));
6145
+ };
6146
+ var WarningModal_default = WarningModal;
6147
+
6069
6148
  // src/components/TransferWidget.tsx
6070
6149
  var TransferWidget = ({
6071
6150
  theme,
@@ -6074,8 +6153,9 @@ var TransferWidget = ({
6074
6153
  paymentTitleOption
6075
6154
  }) => {
6076
6155
  const dispatch = (0, import_react_redux51.useDispatch)();
6077
- const mainRef = (0, import_react132.useRef)(null);
6078
- const [formStep, setFormStep] = (0, import_react132.useState)(0);
6156
+ const mainRef = (0, import_react133.useRef)(null);
6157
+ const [formStep, setFormStep] = (0, import_react133.useState)(0);
6158
+ const [warningModalOpen, setWarningModalOpen] = (0, import_react133.useState)(null);
6079
6159
  const dAppOption = (0, import_react_redux51.useSelector)(selectDappOption);
6080
6160
  const mode = (0, import_react_redux51.useSelector)(selectMode);
6081
6161
  const transactionOption = (0, import_react_redux51.useSelector)(selectTransactionOption);
@@ -6098,15 +6178,15 @@ var TransferWidget = ({
6098
6178
  const networkOptions3 = (0, import_react_redux51.useSelector)(selectNetworkOption);
6099
6179
  const feeDeduct = (0, import_react_redux51.useSelector)(selectFeeDeduct);
6100
6180
  const { keplrHandler, closeHandler } = useKimaContext();
6101
- const [isCancellingApprove, setCancellingApprove] = (0, import_react132.useState)(false);
6102
- const [isApproving, setApproving] = (0, import_react132.useState)(false);
6103
- const [isSigning, setSigning] = (0, import_react132.useState)(false);
6181
+ const [isCancellingApprove, setCancellingApprove] = (0, import_react133.useState)(false);
6182
+ const [isApproving, setApproving] = (0, import_react133.useState)(false);
6183
+ const [isSigning, setSigning] = (0, import_react133.useState)(false);
6104
6184
  const pendingTxs = (0, import_react_redux51.useSelector)(selectPendingTxs);
6105
6185
  const networks = (0, import_react_redux51.useSelector)(selectNetworks);
6106
6186
  const { width: windowWidth } = useWidth_default();
6107
6187
  const { disconnectWallet } = useDisconnectWallet4();
6108
6188
  const { balance } = useBalance2();
6109
- const { allowance, isApproved, approve, decimals } = useAllowance({
6189
+ const { allowance, isApproved, approve, decimals, signMessage } = useAllowance({
6110
6190
  setApproving,
6111
6191
  setCancellingApprove
6112
6192
  });
@@ -6137,7 +6217,8 @@ var TransferWidget = ({
6137
6217
  compliantOption,
6138
6218
  mode,
6139
6219
  pools,
6140
- feeDeduct
6220
+ feeDeduct,
6221
+ formStep
6141
6222
  });
6142
6223
  const { submitTransaction, isSubmitting } = useSubmitTransaction_default({
6143
6224
  amount: BigInt(submitAmount ?? "0"),
@@ -6154,7 +6235,7 @@ var TransferWidget = ({
6154
6235
  const handleSubmit = async () => {
6155
6236
  const { error, message: validationMessage } = validate(true);
6156
6237
  if (error === "ValidationError" /* Error */) {
6157
- return import_react_hot_toast5.toast.error(validationMessage, { icon: /* @__PURE__ */ import_react132.default.createElement(Error_default, null) });
6238
+ return import_react_hot_toast5.toast.error(validationMessage, { icon: /* @__PURE__ */ import_react133.default.createElement(Error_default, null) });
6158
6239
  }
6159
6240
  if (error === "ApprovalNeeded" /* ApprovalNeeded */) {
6160
6241
  return approve();
@@ -6163,18 +6244,30 @@ var TransferWidget = ({
6163
6244
  keplrHandler && keplrHandler(sourceAddress);
6164
6245
  return;
6165
6246
  }
6166
- const { success, message: submitMessage } = await submitTransaction();
6167
- if (!success) return import_react_hot_toast5.toast.error(submitMessage, { icon: /* @__PURE__ */ import_react132.default.createElement(Error_default, null) });
6247
+ const signature = await signMessage?.({
6248
+ targetAddress,
6249
+ targetChain: targetChain.shortName,
6250
+ targetSymbol: targetCurrency
6251
+ });
6252
+ const { success, message: submitMessage } = await submitTransaction(
6253
+ JSON.stringify({ signature })
6254
+ );
6255
+ if (!success) return import_react_hot_toast5.toast.error(submitMessage, { icon: /* @__PURE__ */ import_react133.default.createElement(Error_default, null) });
6168
6256
  };
6169
6257
  const onNext = () => {
6170
- const { error, message } = validate();
6258
+ const { error, message: validationMessage } = validate();
6259
+ if (error === "Warning" /* Warning */ && formStep === 0) {
6260
+ console.log("validationError: Warning: ", validationMessage);
6261
+ setWarningModalOpen({ message: validationMessage });
6262
+ return;
6263
+ }
6171
6264
  if (error !== "ValidationError" /* Error */ && !formStep) {
6172
6265
  return setFormStep(1);
6173
6266
  }
6174
6267
  if (error !== "ValidationError" /* Error */ && formStep > 0) {
6175
6268
  return handleSubmit();
6176
6269
  }
6177
- import_react_hot_toast5.toast.error(message, { icon: /* @__PURE__ */ import_react132.default.createElement(Error_default, null) });
6270
+ import_react_hot_toast5.toast.error(validationMessage, { icon: /* @__PURE__ */ import_react133.default.createElement(Error_default, null) });
6178
6271
  mainRef.current?.click();
6179
6272
  };
6180
6273
  const onBack = () => {
@@ -6231,10 +6324,10 @@ var TransferWidget = ({
6231
6324
  }
6232
6325
  await disconnectWallet();
6233
6326
  };
6234
- (0, import_react132.useEffect)(() => {
6327
+ (0, import_react133.useEffect)(() => {
6235
6328
  dispatch(setTheme(theme));
6236
6329
  }, [theme]);
6237
- return /* @__PURE__ */ import_react132.default.createElement(
6330
+ return /* @__PURE__ */ import_react133.default.createElement(
6238
6331
  "div",
6239
6332
  {
6240
6333
  className: `kima-card ${theme.colorMode}`,
@@ -6242,14 +6335,28 @@ var TransferWidget = ({
6242
6335
  background: theme.colorMode === "light" /* light */ ? theme.backgroundColorLight : theme.backgroundColorDark
6243
6336
  }
6244
6337
  },
6245
- mode === "payment" /* payment */ && !transactionOption && /* @__PURE__ */ import_react132.default.createElement("h2", { className: "invalid-option-banner" }, "We're unable to process your payment. Please ensure the necessary transaction details are provided. Contact support if the issue persists."),
6246
- /* @__PURE__ */ import_react132.default.createElement("div", { className: "transfer-card" }, /* @__PURE__ */ import_react132.default.createElement("div", { className: "kima-card-header" }, /* @__PURE__ */ import_react132.default.createElement("div", { className: "topbar" }, /* @__PURE__ */ import_react132.default.createElement("div", { className: "title" }, /* @__PURE__ */ import_react132.default.createElement("h3", null, formStep === 0 ? titleOption?.initialTitle ? titleOption.initialTitle : mode === "payment" /* payment */ ? "New Purchase" : "New Transfer" : titleOption?.confirmTitle ? titleOption.confirmTitle : mode === "payment" /* payment */ ? "Confirm Purchase" : "Transfer Details")), /* @__PURE__ */ import_react132.default.createElement("div", { className: "control-buttons" }, pendingTxs > 0 ? /* @__PURE__ */ import_react132.default.createElement(TxButton_default, { theme }) : null, /* @__PURE__ */ import_react132.default.createElement(
6338
+ warningModalOpen && /* @__PURE__ */ import_react133.default.createElement(
6339
+ WarningModal_default,
6340
+ {
6341
+ message: warningModalOpen.message,
6342
+ onAcknowledge: () => {
6343
+ setWarningModalOpen(null);
6344
+ setFormStep(1);
6345
+ },
6346
+ onCancel: () => {
6347
+ setWarningModalOpen(null);
6348
+ setFormStep(0);
6349
+ }
6350
+ }
6351
+ ),
6352
+ mode === "payment" /* payment */ && !transactionOption && /* @__PURE__ */ import_react133.default.createElement("h2", { className: "invalid-option-banner" }, "We're unable to process your payment. Please ensure the necessary transaction details are provided. Contact support if the issue persists."),
6353
+ /* @__PURE__ */ import_react133.default.createElement("div", { className: "transfer-card" }, /* @__PURE__ */ import_react133.default.createElement("div", { className: "kima-card-header" }, /* @__PURE__ */ import_react133.default.createElement("div", { className: "topbar" }, /* @__PURE__ */ import_react133.default.createElement("div", { className: "title" }, /* @__PURE__ */ import_react133.default.createElement("h3", null, formStep === 0 ? titleOption?.initialTitle ? titleOption.initialTitle : mode === "payment" /* payment */ ? "New Purchase" : "New Transfer" : titleOption?.confirmTitle ? titleOption.confirmTitle : mode === "payment" /* payment */ ? "Confirm Purchase" : "Transfer Details")), /* @__PURE__ */ import_react133.default.createElement("div", { className: "control-buttons" }, pendingTxs > 0 ? /* @__PURE__ */ import_react133.default.createElement(TxButton_default, { theme }) : null, /* @__PURE__ */ import_react133.default.createElement(
6247
6354
  ExternalLink_default,
6248
6355
  {
6249
6356
  to: helpURL ? helpURL : "https://docs.kima.network/kima-network/try-kima-with-the-demo-app"
6250
6357
  },
6251
- /* @__PURE__ */ import_react132.default.createElement("div", { className: "menu-button" }, "I need help")
6252
- ), formStep === 0 && mode !== "payment" /* payment */ && /* @__PURE__ */ import_react132.default.createElement(
6358
+ /* @__PURE__ */ import_react133.default.createElement("div", { className: "menu-button" }, "I need help")
6359
+ ), formStep === 0 && mode !== "payment" /* payment */ && /* @__PURE__ */ import_react133.default.createElement(
6253
6360
  "button",
6254
6361
  {
6255
6362
  className: "reset-button",
@@ -6257,7 +6364,7 @@ var TransferWidget = ({
6257
6364
  disabled: isApproving || isSubmitting || isSigning
6258
6365
  },
6259
6366
  "Reset"
6260
- ))), mode === "payment" /* payment */ && paymentTitleOption?.title && /* @__PURE__ */ import_react132.default.createElement("h4", { className: "subtitle" }, paymentTitleOption.title)), /* @__PURE__ */ import_react132.default.createElement("div", { className: "kima-card-content", ref: mainRef }, formStep === 0 ? /* @__PURE__ */ import_react132.default.createElement(
6367
+ ))), mode === "payment" /* payment */ && paymentTitleOption?.title && /* @__PURE__ */ import_react133.default.createElement("h4", { className: "subtitle" }, paymentTitleOption.title)), /* @__PURE__ */ import_react133.default.createElement("div", { className: "kima-card-content", ref: mainRef }, formStep === 0 ? /* @__PURE__ */ import_react133.default.createElement(
6261
6368
  SingleForm_default,
6262
6369
  {
6263
6370
  ...{
@@ -6275,7 +6382,7 @@ var TransferWidget = ({
6275
6382
  isCancellingApprove
6276
6383
  }
6277
6384
  }
6278
- ) : /* @__PURE__ */ import_react132.default.createElement(
6385
+ ) : /* @__PURE__ */ import_react133.default.createElement(
6279
6386
  ConfirmDetails_default,
6280
6387
  {
6281
6388
  ...{
@@ -6294,12 +6401,12 @@ var TransferWidget = ({
6294
6401
  isApproved
6295
6402
  }
6296
6403
  }
6297
- )), /* @__PURE__ */ import_react132.default.createElement(
6404
+ )), /* @__PURE__ */ import_react133.default.createElement(
6298
6405
  "div",
6299
6406
  {
6300
6407
  className: `kima-card-footer ${mode === "bridge" /* bridge */ && formStep !== 0 && "confirm"}`
6301
6408
  },
6302
- /* @__PURE__ */ import_react132.default.createElement("div", { className: `button-group` }, formStep !== 0 && /* @__PURE__ */ import_react132.default.createElement(
6409
+ /* @__PURE__ */ import_react133.default.createElement("div", { className: `button-group` }, formStep !== 0 && /* @__PURE__ */ import_react133.default.createElement(
6303
6410
  SecondaryButton_default,
6304
6411
  {
6305
6412
  clickHandler: onBack,
@@ -6307,7 +6414,7 @@ var TransferWidget = ({
6307
6414
  disabled: isApproving || isSubmitting || isSigning
6308
6415
  },
6309
6416
  formStep > 0 ? "Back" : "Cancel"
6310
- ), allowance > 0 && formStep !== 0 ? /* @__PURE__ */ import_react132.default.createElement(
6417
+ ), allowance > 0 && formStep !== 0 ? /* @__PURE__ */ import_react133.default.createElement(
6311
6418
  SecondaryButton_default,
6312
6419
  {
6313
6420
  clickHandler: onCancelApprove,
@@ -6316,7 +6423,7 @@ var TransferWidget = ({
6316
6423
  disabled: isCancellingApprove || isApproving || isSubmitting || isSigning
6317
6424
  },
6318
6425
  isCancellingApprove ? "Cancelling Approval" : "Cancel Approve"
6319
- ) : null, /* @__PURE__ */ import_react132.default.createElement(
6426
+ ) : null, /* @__PURE__ */ import_react133.default.createElement(
6320
6427
  PrimaryButton_default,
6321
6428
  {
6322
6429
  clickHandler: onNext,
@@ -6325,7 +6432,7 @@ var TransferWidget = ({
6325
6432
  },
6326
6433
  getButtonLabel()
6327
6434
  ))
6328
- ), /* @__PURE__ */ import_react132.default.createElement(SolanaWalletConnectModal_default, null), /* @__PURE__ */ import_react132.default.createElement(TronWalletConnectModal_default, null), /* @__PURE__ */ import_react132.default.createElement(
6435
+ ), /* @__PURE__ */ import_react133.default.createElement(SolanaWalletConnectModal_default, null), /* @__PURE__ */ import_react133.default.createElement(TronWalletConnectModal_default, null), /* @__PURE__ */ import_react133.default.createElement(
6329
6436
  import_react_hot_toast5.Toaster,
6330
6437
  {
6331
6438
  position: "top-right",
@@ -6350,12 +6457,12 @@ var TransferWidget = ({
6350
6457
  }
6351
6458
  }
6352
6459
  }
6353
- ), /* @__PURE__ */ import_react132.default.createElement("div", { className: "floating-footer" }, /* @__PURE__ */ import_react132.default.createElement("div", { className: `items ${theme.colorMode}` }, /* @__PURE__ */ import_react132.default.createElement("span", null, "Powered by"), /* @__PURE__ */ import_react132.default.createElement(FooterLogo_default, { width: 50, fill: "black" }), /* @__PURE__ */ import_react132.default.createElement("strong", null, "Network"))))
6460
+ ), /* @__PURE__ */ import_react133.default.createElement("div", { className: "floating-footer" }, /* @__PURE__ */ import_react133.default.createElement("div", { className: `items ${theme.colorMode}` }, /* @__PURE__ */ import_react133.default.createElement("span", null, "Powered by"), /* @__PURE__ */ import_react133.default.createElement(FooterLogo_default, { width: 50, fill: "black" }), /* @__PURE__ */ import_react133.default.createElement("strong", null, "Network"))))
6354
6461
  );
6355
6462
  };
6356
6463
 
6357
6464
  // src/components/KimaWidgetWrapper.tsx
6358
- var import_react134 = require("@reown/appkit/react");
6465
+ var import_react135 = require("@reown/appkit/react");
6359
6466
  var KimaWidgetWrapper = ({
6360
6467
  mode,
6361
6468
  txId,
@@ -6372,12 +6479,12 @@ var KimaWidgetWrapper = ({
6372
6479
  const { kimaBackendUrl } = useKimaContext();
6373
6480
  const submitted = (0, import_react_redux52.useSelector)(selectSubmitted);
6374
6481
  const dispatch = (0, import_react_redux52.useDispatch)();
6375
- const { setThemeMode, setThemeVariables } = (0, import_react134.useAppKitTheme)();
6482
+ const { setThemeMode, setThemeVariables } = (0, import_react135.useAppKitTheme)();
6376
6483
  const { data: chainData } = useChainData(kimaBackendUrl);
6377
6484
  const { data: envOptions } = useGetEnvOptions({ kimaBackendUrl });
6378
6485
  const networkOption = envOptions?.env;
6379
6486
  const kimaExplorer = envOptions?.kimaExplorer || "https://explorer.sardis.kima.network";
6380
- (0, import_react133.useEffect)(() => {
6487
+ (0, import_react134.useEffect)(() => {
6381
6488
  dispatch(setTheme(theme));
6382
6489
  setThemeMode(theme.colorMode === "light" /* light */ ? "light" : "dark");
6383
6490
  setThemeVariables({
@@ -6420,11 +6527,11 @@ var KimaWidgetWrapper = ({
6420
6527
  dispatch(setSubmitted(false));
6421
6528
  }
6422
6529
  }, [theme, transactionOption, mode, networkOption, chainData]);
6423
- (0, import_react133.useEffect)(() => {
6530
+ (0, import_react134.useEffect)(() => {
6424
6531
  if (!chainData?.length) return;
6425
6532
  indexPluginsByChain(chainData);
6426
6533
  }, [chainData]);
6427
- return submitted ? /* @__PURE__ */ import_react133.default.createElement(TransactionWidget, { theme }) : /* @__PURE__ */ import_react133.default.createElement(
6534
+ return submitted ? /* @__PURE__ */ import_react134.default.createElement(TransactionWidget, { theme }) : /* @__PURE__ */ import_react134.default.createElement(
6428
6535
  TransferWidget,
6429
6536
  {
6430
6537
  theme,
@@ -6457,13 +6564,13 @@ var KimaTransactionWidget = ({
6457
6564
  kimaBackendUrl
6458
6565
  });
6459
6566
  const { data: chainData, isLoading: isLoadingChainData } = useChainData(kimaBackendUrl);
6460
- (0, import_react135.useEffect)(() => {
6567
+ (0, import_react136.useEffect)(() => {
6461
6568
  if (!isLoadingChainData && chainData) {
6462
6569
  dispatch(setSourceChain(chainData[0]));
6463
6570
  dispatch(setTargetChain(chainData[1]));
6464
6571
  }
6465
6572
  }, [chainData]);
6466
- return isLoadingEnvs || isLoadingChainData ? /* @__PURE__ */ import_react135.default.createElement(ring_default, null) : /* @__PURE__ */ import_react135.default.createElement(
6573
+ return isLoadingEnvs || isLoadingChainData ? /* @__PURE__ */ import_react136.default.createElement(ring_default, null) : /* @__PURE__ */ import_react136.default.createElement(
6467
6574
  KimaWidgetWrapper_default,
6468
6575
  {
6469
6576
  ...{