@b3dotfun/sdk 0.0.29-alpha.2 → 0.0.29-alpha.4

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.
Files changed (50) hide show
  1. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +3 -1
  2. package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.js +9 -1
  3. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +130 -41
  4. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +3 -3
  5. package/dist/cjs/anyspend/react/components/common/PaySection.js +6 -4
  6. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +29 -0
  7. package/dist/cjs/anyspend/react/hooks/useSigMint.d.ts +1 -1
  8. package/dist/cjs/bondkit/abis/BondkitTokenABI.d.ts +60 -12
  9. package/dist/cjs/bondkit/abis/BondkitTokenABI.js +39 -6
  10. package/dist/cjs/bondkit/abis/BondkitTokenFactoryABI.d.ts +0 -25
  11. package/dist/cjs/bondkit/abis/BondkitTokenFactoryABI.js +0 -9
  12. package/dist/cjs/bondkit/constants.js +1 -1
  13. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.d.ts +1 -0
  14. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +1 -0
  15. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +2 -2
  16. package/dist/cjs/shared/constants/chains/supported.d.ts +4 -4
  17. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +3 -1
  18. package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.js +6 -1
  19. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +133 -44
  20. package/dist/esm/anyspend/react/components/common/OrderDetails.js +3 -3
  21. package/dist/esm/anyspend/react/components/common/PaySection.js +7 -5
  22. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +30 -1
  23. package/dist/esm/anyspend/react/hooks/useSigMint.d.ts +1 -1
  24. package/dist/esm/bondkit/abis/BondkitTokenABI.d.ts +60 -12
  25. package/dist/esm/bondkit/abis/BondkitTokenABI.js +39 -6
  26. package/dist/esm/bondkit/abis/BondkitTokenFactoryABI.d.ts +0 -25
  27. package/dist/esm/bondkit/abis/BondkitTokenFactoryABI.js +0 -9
  28. package/dist/esm/bondkit/constants.js +1 -1
  29. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.d.ts +1 -0
  30. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +1 -0
  31. package/dist/esm/shared/constants/chains/b3Chain.d.ts +2 -2
  32. package/dist/esm/shared/constants/chains/supported.d.ts +4 -4
  33. package/dist/styles/index.css +1 -1
  34. package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
  35. package/dist/types/bondkit/abis/BondkitTokenABI.d.ts +60 -12
  36. package/dist/types/bondkit/abis/BondkitTokenFactoryABI.d.ts +0 -25
  37. package/dist/types/global-account/react/hooks/useUnifiedChainSwitchAndExecute.d.ts +1 -0
  38. package/dist/types/shared/constants/chains/b3Chain.d.ts +2 -2
  39. package/dist/types/shared/constants/chains/supported.d.ts +4 -4
  40. package/package.json +1 -1
  41. package/src/anyspend/react/components/AnyspendDepositHype.tsx +4 -0
  42. package/src/anyspend/react/components/common/ConnectWalletPayment.tsx +9 -0
  43. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +289 -103
  44. package/src/anyspend/react/components/common/OrderDetails.tsx +3 -3
  45. package/src/anyspend/react/components/common/PaySection.tsx +9 -7
  46. package/src/anyspend/react/hooks/useAnyspendFlow.ts +33 -1
  47. package/src/bondkit/abis/BondkitTokenABI.ts +39 -6
  48. package/src/bondkit/abis/BondkitTokenFactoryABI.ts +0 -9
  49. package/src/bondkit/constants.ts +1 -1
  50. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +1 -0
@@ -42,7 +42,7 @@ function AnySpendDepositHype(props) {
42
42
  }
43
43
  function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress, paymentType = "crypto", sourceTokenAddress, sourceTokenChainId, onSuccess, depositContractAddress, mainFooter, }) {
44
44
  // Use shared flow hook
45
- const { activePanel, setActivePanel, orderId, oat, selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, dstAmount, setIsSrcInputDirty, selectedCryptoPaymentMethod, setSelectedCryptoPaymentMethod, selectedFiatPaymentMethod, setSelectedFiatPaymentMethod, selectedRecipientAddress, setSelectedRecipientAddress, recipientName, globalAddress, anyspendQuote, isLoadingAnyspendQuote, getAnyspendQuoteError, activeInputAmountInWei, geoData, coinbaseAvailablePaymentMethods, stripeWeb2Support, createOrder, isCreatingOrder, createOnrampOrder, isCreatingOnrampOrder, } = (0, useAnyspendFlow_1.useAnyspendFlow)({
45
+ const { activePanel, setActivePanel, orderId, setOrderId, oat, selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, dstAmount, setIsSrcInputDirty, selectedCryptoPaymentMethod, setSelectedCryptoPaymentMethod, selectedFiatPaymentMethod, setSelectedFiatPaymentMethod, selectedRecipientAddress, setSelectedRecipientAddress, recipientName, globalAddress, anyspendQuote, isLoadingAnyspendQuote, getAnyspendQuoteError, activeInputAmountInWei, geoData, coinbaseAvailablePaymentMethods, stripeWeb2Support, createOrder, isCreatingOrder, createOnrampOrder, isCreatingOnrampOrder, } = (0, useAnyspendFlow_1.useAnyspendFlow)({
46
46
  paymentType,
47
47
  recipientAddress,
48
48
  loadOrder,
@@ -221,6 +221,7 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
221
221
  };
222
222
  // Order details view
223
223
  const orderDetailsView = ((0, jsx_runtime_1.jsx)("div", { className: "mx-auto w-[460px] max-w-full", children: (0, jsx_runtime_1.jsx)("div", { className: "relative flex flex-col gap-4", children: oat && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderStatus_1.OrderStatus, { order: oat.data.order, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod }), (0, jsx_runtime_1.jsx)(OrderDetails_1.OrderDetails, { mode: mode, order: oat.data.order, depositTxs: oat.data.depositTxs, relayTx: oat.data.relayTx, executeTx: oat.data.executeTx, refundTxs: oat.data.refundTxs, cryptoPaymentMethod: paymentType === "fiat" ? CryptoPaymentMethod_1.CryptoPaymentMethodType.NONE : selectedCryptoPaymentMethod, onBack: () => {
224
+ setOrderId(undefined);
224
225
  setActivePanel(useAnyspendFlow_1.PanelView.MAIN);
225
226
  onSuccess?.();
226
227
  } })] })) }) }));
@@ -239,6 +240,7 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
239
240
  setSelectedFiatPaymentMethod(method);
240
241
  setActivePanel(useAnyspendFlow_1.PanelView.MAIN);
241
242
  }, srcAmountOnRamp: srcAmount }));
243
+ console.log("activePanel", activePanel, orderId, oat);
242
244
  // If showing token selection, render with panel transitions
243
245
  return ((0, jsx_runtime_1.jsx)(react_1.StyleRoot, { children: (0, jsx_runtime_1.jsx)("div", { className: (0, cn_1.cn)("anyspend-container font-inter mx-auto w-full max-w-[460px]", mode === "page" &&
244
246
  "bg-as-surface-primary border-as-border-secondary overflow-hidden rounded-2xl border shadow-xl"), children: (0, jsx_runtime_1.jsx)(react_1.TransitionPanel, { activeIndex: orderId
@@ -1,17 +1,23 @@
1
1
  "use strict";
2
2
  "use client";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
3
6
  Object.defineProperty(exports, "__esModule", { value: true });
4
7
  exports.default = ConnectWalletPayment;
5
8
  const jsx_runtime_1 = require("react/jsx-runtime");
6
9
  const anyspend_1 = require("../../../../anyspend");
7
10
  const react_1 = require("../../../../global-account/react");
11
+ const centerTruncate_1 = __importDefault(require("../../../../shared/utils/centerTruncate"));
8
12
  const number_1 = require("../../../../shared/utils/number");
9
13
  const framer_motion_1 = require("framer-motion");
10
14
  const lucide_react_1 = require("lucide-react");
15
+ const wagmi_1 = require("wagmi");
11
16
  const OrderDetailsCollapsible_1 = require("./OrderDetailsCollapsible");
12
17
  function ConnectWalletPayment({ order, onPayment, txLoading, isSwitchingOrExecuting, phantomWalletAddress, tournament, nft, }) {
13
18
  const profile = (0, react_1.useProfile)({ address: order.recipientAddress });
14
19
  const recipientName = profile.data?.name?.replace(/\.b3\.fun/g, "");
20
+ const { address: connectedAddress } = (0, wagmi_1.useAccount)();
15
21
  const srcToken = order.metadata.srcToken;
16
22
  const dstToken = order.metadata.dstToken;
17
23
  const expectedDstAmount = order.type === "mint_nft" ||
@@ -26,5 +32,7 @@ function ConnectWalletPayment({ order, onPayment, txLoading, isSwitchingOrExecut
26
32
  }
27
33
  return ((0, jsx_runtime_1.jsx)("div", { className: "flex w-full flex-col items-center gap-6", children: (0, jsx_runtime_1.jsxs)(framer_motion_1.motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5 }, className: "flex w-full flex-col items-center gap-2", children: [(0, jsx_runtime_1.jsx)(react_1.ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "flex w-5/6 max-w-[400px] items-center gap-2 sm:px-0", disabled: txLoading || isSwitchingOrExecuting, onClick: onPayment, children: txLoading ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Transaction Pending", (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "ml-2 h-5 w-5 animate-spin" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: "whitespace-nowrap pl-4 text-lg md:text-sm", children: order.srcChain === anyspend_1.RELAY_SOLANA_MAINNET_CHAIN_ID && phantomWalletAddress
28
34
  ? "Pay from Phantom Wallet"
29
- : "Pay from Connected Wallet" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) }), (0, jsx_runtime_1.jsx)("div", { className: "mt-4", children: (0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }) })] }) }));
35
+ : "Pay from Connected Wallet" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) }), (0, jsx_runtime_1.jsxs)("span", { className: "label-style text-as-primary/50 text-xs", children: ["Connected to:", " ", order.srcChain === anyspend_1.RELAY_SOLANA_MAINNET_CHAIN_ID && phantomWalletAddress
36
+ ? (0, centerTruncate_1.default)(phantomWalletAddress, 6)
37
+ : (0, centerTruncate_1.default)(connectedAddress || "")] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-4", children: (0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }) })] }) }));
30
38
  }
@@ -5,16 +5,12 @@ exports.CryptoPaymentMethodType = void 0;
5
5
  exports.CryptoPaymentMethod = CryptoPaymentMethod;
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("../../../../global-account/react");
8
- const b3Chain_1 = require("../../../../shared/constants/chains/b3Chain");
9
8
  const cn_1 = require("../../../../shared/utils/cn");
10
9
  const formatAddress_1 = require("../../../../shared/utils/formatAddress");
11
- const thirdweb_1 = require("../../../../shared/utils/thirdweb");
12
10
  const lucide_react_1 = require("lucide-react");
13
11
  const react_2 = require("react");
14
12
  const react_dom_1 = require("react-dom");
15
13
  const sonner_1 = require("sonner");
16
- const react_3 = require("thirdweb/react");
17
- const wallets_1 = require("thirdweb/wallets");
18
14
  const wagmi_1 = require("wagmi");
19
15
  var CryptoPaymentMethodType;
20
16
  (function (CryptoPaymentMethodType) {
@@ -24,45 +20,138 @@ var CryptoPaymentMethodType;
24
20
  })(CryptoPaymentMethodType || (exports.CryptoPaymentMethodType = CryptoPaymentMethodType = {}));
25
21
  function CryptoPaymentMethod({ selectedPaymentMethod, setSelectedPaymentMethod, isCreatingOrder, onBack, onSelectPaymentMethod, }) {
26
22
  const { wallet: globalWallet } = (0, react_1.useAccountWallet)();
27
- const activeWallet = (0, react_3.useActiveWallet)();
23
+ const { address, isConnected, connector } = (0, wagmi_1.useAccount)();
24
+ const { connect, connectors, isPending } = (0, wagmi_1.useConnect)();
28
25
  const { disconnect } = (0, wagmi_1.useDisconnect)();
29
- const { disconnect: disconnectThirdweb } = (0, react_3.useDisconnect)();
26
+ const { data: walletClient } = (0, wagmi_1.useWalletClient)();
30
27
  const [showWalletModal, setShowWalletModal] = (0, react_2.useState)(false);
31
- // Define available wallets for the modal
32
- const availableWallets = [
33
- (0, wallets_1.createWallet)("io.metamask"),
34
- // createWallet("com.coinbase.wallet"),
35
- (0, wallets_1.createWallet)("me.rainbow"),
36
- (0, wallets_1.createWallet)("walletConnect"),
37
- (0, wallets_1.createWallet)("io.rabby"),
38
- (0, wallets_1.createWallet)("app.phantom"),
39
- ];
40
- return ((0, jsx_runtime_1.jsxs)("div", { className: "crypto-payment-method mx-auto h-fit w-[460px] max-w-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: (0, cn_1.cn)("relative flex flex-col gap-10"), children: [(0, jsx_runtime_1.jsx)("button", { onClick: onBack, className: "text-as-quaternary hover:text-as-primary absolute flex h-8 w-8 items-center justify-center rounded-lg transition-colors", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { className: "h-6 w-6" }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-around gap-4", children: (0, jsx_runtime_1.jsx)("div", { className: "flex-1 text-center", children: (0, jsx_runtime_1.jsx)("h2", { className: "text-as-primary text-lg font-semibold", children: "Choose payment method" }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "crypto-payment-methods flex flex-col gap-3", children: [!activeWallet ? (
41
- // Not connected - show single connect button
42
- (0, jsx_runtime_1.jsxs)("button", { onClick: () => setShowWalletModal(true), className: "crypto-payment-method-connect-wallet bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-blue-100", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Wallet, { className: "h-4 w-4 text-blue-600" }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-start text-left", children: [(0, jsx_runtime_1.jsx)("h4", { className: "text-as-primary font-semibold", children: "Connect wallet" }), (0, jsx_runtime_1.jsx)("p", { className: "text-as-primary/60 text-sm", children: "Choose from multiple wallet options" })] })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRightCircle, { className: "text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" })] })) : (
43
- // Connected - show wallet info
44
- (0, jsx_runtime_1.jsx)("div", { className: "crypto-payment-method-connect-wallet wallet-connected bg-as-surface-primary border-as-border-secondary rounded-xl border", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between p-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [globalWallet?.meta?.icon ? ((0, jsx_runtime_1.jsx)("img", { src: globalWallet.meta.icon, alt: "Connected Wallet", className: "h-8 w-8 rounded-full" })) : ((0, jsx_runtime_1.jsx)("div", { className: "wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-green-100", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Wallet, { className: "h-4 w-4 text-green-600" }) })), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-as-primary font-semibold", children: "Connected Wallet" }), (0, jsx_runtime_1.jsx)("span", { className: "text-as-primary/60 text-sm", children: (0, formatAddress_1.shortenAddress)(activeWallet.getAccount()?.address || "") })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => {
45
- setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
46
- onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
47
- }, className: "bg-as-brand hover:bg-as-brand/90 rounded-lg px-3 py-1.5 text-sm font-medium text-white transition-colors", children: "Use Wallet" }), (0, jsx_runtime_1.jsx)("button", { onClick: async () => {
48
- disconnect();
49
- disconnectThirdweb(activeWallet);
50
- sonner_1.toast.success("Wallet disconnected");
51
- if (selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
52
- setSelectedPaymentMethod(CryptoPaymentMethodType.NONE);
53
- }
54
- }, className: "text-as-primary/60 hover:text-as-primary/80 rounded-lg p-1.5 transition-colors", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "h-4 w-4" }) })] })] }) })), (0, jsx_runtime_1.jsxs)("button", { onClick: () => {
28
+ const [selectedWalletConnector, setSelectedWalletConnector] = (0, react_2.useState)(null);
29
+ const [modalStep, setModalStep] = (0, react_2.useState)("wallet-selection");
30
+ // Define available wallet connectors
31
+ const availableConnectors = connectors.filter(connector => ["MetaMask", "WalletConnect", "Coinbase Wallet", "Rainbow"].includes(connector.name));
32
+ // Define wallet options with icons and info
33
+ const walletOptions = [
34
+ {
35
+ id: "metamask",
36
+ name: "MetaMask",
37
+ icon: "🦊",
38
+ description: "Connect using MetaMask browser extension",
39
+ connector: availableConnectors.find(c => c.name === "MetaMask"),
40
+ },
41
+ {
42
+ id: "coinbase",
43
+ name: "Coinbase Wallet",
44
+ icon: "🔵",
45
+ description: "Connect using Coinbase Wallet",
46
+ connector: availableConnectors.find(c => c.name === "Coinbase Wallet"),
47
+ },
48
+ {
49
+ id: "rainbow",
50
+ name: "Rainbow",
51
+ icon: "🌈",
52
+ description: "Connect using Rainbow wallet",
53
+ connector: availableConnectors.find(c => c.name === "Rainbow"),
54
+ },
55
+ {
56
+ id: "walletconnect",
57
+ name: "WalletConnect",
58
+ icon: "🔗",
59
+ description: "Connect using WalletConnect protocol",
60
+ connector: availableConnectors.find(c => c.name === "WalletConnect"),
61
+ },
62
+ ].filter(wallet => wallet.connector); // Only show wallets that have available connectors
63
+ // Reset modal state when closing
64
+ const handleCloseModal = () => {
65
+ setShowWalletModal(false);
66
+ setModalStep("wallet-selection");
67
+ setSelectedWalletConnector(null);
68
+ };
69
+ // Function to request wallet permissions for specific wallet
70
+ const requestWalletPermissions = async (walletConnector) => {
71
+ try {
72
+ // If a specific wallet connector is provided and it's different from current
73
+ if (walletConnector && connector?.name !== walletConnector.name) {
74
+ // Disconnect current and connect to the selected wallet
75
+ // if (isConnected) {
76
+ // disconnect();
77
+ // // Small delay to ensure disconnection
78
+ // await new Promise(resolve => setTimeout(resolve, 100));
79
+ // }
80
+ await connect({ connector: walletConnector });
81
+ setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
82
+ onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
83
+ sonner_1.toast.success(`Connected to ${walletConnector.name}`);
84
+ return;
85
+ }
86
+ // If same wallet or no specific wallet, request permissions for account switching
87
+ if (walletClient && "request" in walletClient) {
88
+ await walletClient.request({
89
+ method: "wallet_requestPermissions",
90
+ params: [{ eth_accounts: {} }],
91
+ });
92
+ sonner_1.toast.success("Account selection completed");
93
+ setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
94
+ onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
95
+ }
96
+ else {
97
+ // Fallback: show modal for manual wallet selection
98
+ setShowWalletModal(true);
99
+ }
100
+ }
101
+ catch (error) {
102
+ console.error("Failed to request wallet permissions:", error);
103
+ if (error && typeof error === "object" && "message" in error) {
104
+ const errorMessage = error.message.toLowerCase();
105
+ if (errorMessage.includes("rejected") ||
106
+ errorMessage.includes("denied") ||
107
+ errorMessage.includes("cancelled")) {
108
+ sonner_1.toast.error("Account selection cancelled");
109
+ }
110
+ else {
111
+ sonner_1.toast.error("Failed to open account selection");
112
+ }
113
+ }
114
+ else {
115
+ sonner_1.toast.error("Failed to open account selection");
116
+ }
117
+ }
118
+ };
119
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "crypto-payment-method mx-auto h-fit w-[460px] max-w-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: (0, cn_1.cn)("relative flex flex-col gap-10"), children: [(0, jsx_runtime_1.jsx)("button", { onClick: onBack, className: "text-as-quaternary hover:text-as-primary absolute flex h-8 w-8 items-center justify-center rounded-lg transition-colors", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { className: "h-6 w-6" }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-around gap-4", children: (0, jsx_runtime_1.jsx)("div", { className: "flex-1 text-center", children: (0, jsx_runtime_1.jsx)("h2", { className: "text-as-primary text-lg font-semibold", children: "Select a payment method" }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "crypto-payment-methods flex flex-col gap-6", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => {
120
+ // Always show wallet selection modal first
121
+ setShowWalletModal(true);
122
+ }, className: "crypto-payment-method-connect-wallet bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-blue-100", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Wallet, { className: "h-4 w-4 text-blue-600" }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col items-start text-left", children: (0, jsx_runtime_1.jsx)("h4", { className: "text-as-primary font-semibold", children: "Connect wallet" }) })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRightCircle, { className: "text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" })] }), (0, jsx_runtime_1.jsxs)("button", { onClick: () => {
55
123
  setSelectedPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
56
124
  onSelectPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
57
- }, disabled: isCreatingOrder, className: "crypto-payment-method-transfer bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex flex-col items-start text-left", children: (0, jsx_runtime_1.jsx)("h4", { className: "text-as-primary font-semibold", children: "Transfer crypto" }) }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRightCircle, { className: "text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" })] })] })] }), showWalletModal &&
58
- (0, react_dom_1.createPortal)((0, jsx_runtime_1.jsx)("div", { className: "pointer-events-auto fixed inset-0 z-[9999] flex items-center justify-center bg-black/50", children: (0, jsx_runtime_1.jsxs)("div", { className: "max-h-[80vh] w-[400px] max-w-[90vw] overflow-auto rounded-xl bg-white p-6 dark:bg-gray-900", children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-4 flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-lg font-semibold text-gray-900 dark:text-white", children: "Connect Wallet" }), (0, jsx_runtime_1.jsx)("button", { onClick: () => setShowWalletModal(false), className: "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "h-5 w-5" }) })] }), (0, jsx_runtime_1.jsx)(react_3.ConnectEmbed, { client: thirdweb_1.client, chain: b3Chain_1.thirdwebB3Mainnet, wallets: availableWallets, showThirdwebBranding: false, theme: (0, react_3.lightTheme)(), onConnect: async (wallet) => {
59
- console.log("Wallet connected:", wallet);
60
- // setShowWalletModal(false);
61
- setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
62
- onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
63
- setShowWalletModal(false);
64
- }, style: {
65
- width: "100%",
66
- minHeight: "300px",
67
- } })] }) }), typeof window !== "undefined" ? document.getElementById("b3-root") || document.body : document.body)] }));
125
+ }, disabled: isCreatingOrder, className: "crypto-payment-method-transfer bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-orange-100", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ZapIcon, { className: "h-4 w-4" }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col items-start text-left", children: (0, jsx_runtime_1.jsx)("h4", { className: "text-as-primary font-semibold", children: "Transfer crypto" }) })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRightCircle, { className: "text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" })] }), isConnected && ((0, jsx_runtime_1.jsxs)("div", { className: "installed-wallets", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-as-primary/80 mb-3 text-sm font-medium", children: "Connected wallets" }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2", children: (0, jsx_runtime_1.jsx)("button", { onClick: () => {
126
+ setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
127
+ onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
128
+ sonner_1.toast.success(`Selected ${connector?.name || "wallet"}`);
129
+ }, className: (0, cn_1.cn)("crypto-payment-method-connect-wallet w-full rounded-xl border p-4 text-left transition-all hover:shadow-md", selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET
130
+ ? "connected-wallet border-as-brand bg-as-brand/5"
131
+ : "border-as-border-secondary bg-as-surface-primary hover:border-as-secondary/80"), children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [globalWallet?.meta?.icon ? ((0, jsx_runtime_1.jsx)("img", { src: globalWallet.meta.icon, alt: "Wallet", className: "h-10 w-10 rounded-full" })) : ((0, jsx_runtime_1.jsx)("div", { className: "wallet-icon flex h-10 w-10 items-center justify-center rounded-full bg-blue-100", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Wallet, { className: "h-5 w-5 text-blue-600" }) })), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-as-primary font-semibold", children: connector?.name || "Connected Wallet" }), (0, jsx_runtime_1.jsx)("span", { className: "text-as-primary/60 text-sm", children: (0, formatAddress_1.shortenAddress)(address || "") })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET && ((0, jsx_runtime_1.jsx)("div", { className: "h-2 w-2 rounded-full bg-green-500" })), (0, jsx_runtime_1.jsx)("button", { onClick: e => {
132
+ e.stopPropagation();
133
+ disconnect();
134
+ sonner_1.toast.success("Wallet disconnected");
135
+ if (selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
136
+ setSelectedPaymentMethod(CryptoPaymentMethodType.NONE);
137
+ }
138
+ }, className: "text-as-primary/60 hover:text-as-primary/80 rounded-lg p-1.5 transition-colors", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "h-4 w-4" }) })] })] }) }) })] }))] })] }), showWalletModal &&
139
+ (0, react_dom_1.createPortal)((0, jsx_runtime_1.jsx)("div", { className: "pointer-events-auto fixed inset-0 z-[9999] flex items-center justify-center bg-black/50", children: (0, jsx_runtime_1.jsxs)("div", { className: "max-h-[80vh] w-[400px] max-w-[90vw] overflow-auto rounded-xl bg-white p-6 dark:bg-gray-900", children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-4 flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [modalStep === "account-selection" && ((0, jsx_runtime_1.jsx)("button", { onClick: () => setModalStep("wallet-selection"), className: "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { className: "h-5 w-5" }) })), (0, jsx_runtime_1.jsx)("h3", { className: "text-lg font-semibold text-gray-900 dark:text-white", children: modalStep === "wallet-selection"
140
+ ? "Select a payment method"
141
+ : `Connect ${selectedWalletConnector?.name}` })] }), (0, jsx_runtime_1.jsx)("button", { onClick: handleCloseModal, className: "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "h-5 w-5" }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-4", children: modalStep === "wallet-selection" ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [(0, jsx_runtime_1.jsx)("h4", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: isConnected ? "Switch wallet or account" : "Choose wallet to connect" }), walletOptions.map(walletOption => {
142
+ const isCurrentWallet = isConnected && connector?.name === walletOption.connector?.name;
143
+ return ((0, jsx_runtime_1.jsx)("button", { onClick: async () => {
144
+ setSelectedWalletConnector(walletOption.connector);
145
+ setModalStep("account-selection");
146
+ }, disabled: isPending, className: `w-full rounded-xl border p-4 text-left transition-all hover:shadow-md disabled:opacity-50 ${isCurrentWallet
147
+ ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20"
148
+ : "border-gray-200 bg-white hover:border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:hover:border-gray-500"}`, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: `flex h-12 w-12 items-center justify-center rounded-xl text-xl ${isCurrentWallet ? "bg-blue-100 dark:bg-blue-800" : "bg-gray-100 dark:bg-gray-700"}`, children: walletOption.icon }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: walletOption.name }), isCurrentWallet && ((0, jsx_runtime_1.jsx)("span", { className: "rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-700 dark:bg-blue-800 dark:text-blue-200", children: "Connected" }))] }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-500 dark:text-gray-400", children: isCurrentWallet ? "Switch account or reconnect" : walletOption.description })] })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRightCircle, { className: "h-5 w-5 text-gray-400" })] }) }, walletOption.id));
149
+ })] }) })) : (
150
+ /* Account Selection Step */
151
+ (0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsxs)("p", { className: "text-sm text-gray-600 dark:text-gray-400", children: ["Connect to ", selectedWalletConnector?.name, " to view available accounts"] }), (0, jsx_runtime_1.jsx)("button", { onClick: async () => {
152
+ handleCloseModal();
153
+ await requestWalletPermissions(selectedWalletConnector);
154
+ }, disabled: isPending, className: "w-full rounded-lg border border-gray-200 bg-white p-4 text-center transition-all hover:border-gray-300 hover:shadow-md disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:hover:border-gray-500", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-center gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-gray-100 dark:bg-gray-700", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Wallet, { className: "h-5 w-5 text-gray-600 dark:text-gray-400" }) }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-sm font-medium text-gray-900 dark:text-white", children: isPending
155
+ ? `Connecting to ${selectedWalletConnector?.name}...`
156
+ : `Connect ${selectedWalletConnector?.name}` }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-500 dark:text-gray-400", children: isPending ? "Please check your wallet" : "Click to connect and select account" })] })] }) })] })) })] }) }), typeof window !== "undefined" ? document.getElementById("b3-root") || document.body : document.body)] }));
68
157
  }
@@ -145,7 +145,7 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
145
145
  const [txHash, setTxHash] = (0, react_5.useState)();
146
146
  const [showQRCode, setShowQRCode] = (0, react_5.useState)(false);
147
147
  const { isLoading: txLoading, isSuccess: txSuccess } = (0, wagmi_1.useWaitForTransactionReceipt)({ hash: txHash });
148
- const { switchChainAndExecute, isSwitchingOrExecuting } = (0, react_1.useUnifiedChainSwitchAndExecute)();
148
+ const { switchChainAndExecuteWithEOA, isSwitchingOrExecuting } = (0, react_1.useUnifiedChainSwitchAndExecute)();
149
149
  const { colorMode } = (0, react_2.useColorMode)();
150
150
  const roundedUpSrcAmount = (0, react_5.useMemo)(() => {
151
151
  // Display the full transfer amount without rounding since users need to see the exact value they're transferring.
@@ -175,11 +175,11 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
175
175
  to = order.srcTokenAddress;
176
176
  value = BigInt(0);
177
177
  }
178
- const txHash = await switchChainAndExecute(order.srcChain, { to, data: txData, value });
178
+ const txHash = await switchChainAndExecuteWithEOA(order.srcChain, { to, data: txData, value });
179
179
  if (txHash) {
180
180
  setTxHash(txHash);
181
181
  }
182
- }, [order, switchChainAndExecute]);
182
+ }, [order, switchChainAndExecuteWithEOA]);
183
183
  // Main payment handler that triggers chain switch and payment
184
184
  const handlePayment = async () => {
185
185
  console.log("Initiating payment process. Target chain:", order.srcChain, "Current chain:", walletClient?.chain?.id);
@@ -9,13 +9,15 @@ const number_1 = require("../../../../shared/utils/number");
9
9
  const lucide_react_1 = require("lucide-react");
10
10
  const react_2 = require("motion/react");
11
11
  const react_3 = require("react");
12
+ const wagmi_1 = require("wagmi");
12
13
  const CryptoPaymentMethod_1 = require("./CryptoPaymentMethod");
13
14
  const FiatPaymentMethod_1 = require("./FiatPaymentMethod");
14
15
  const OrderTokenAmount_1 = require("./OrderTokenAmount");
15
16
  const TokenBalance_1 = require("./TokenBalance");
16
17
  function PaySection({ paymentType, selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, setIsSrcInputDirty, selectedCryptoPaymentMethod, selectedFiatPaymentMethod, onSelectCryptoPaymentMethod, onSelectFiatPaymentMethod, anyspendQuote, }) {
17
- const { address: globalAddress, wallet: globalWallet, ensName: connectedName } = (0, react_1.useAccountWallet)();
18
- const connectedAddress = globalWallet?.address;
18
+ const { address: connectedAddress, isConnected } = (0, wagmi_1.useAccount)();
19
+ const { data: profileData } = (0, react_1.useProfile)({ address: connectedAddress });
20
+ const connectedName = profileData?.displayName;
19
21
  const { data: srcTokenMetadata } = (0, react_1.useTokenData)(selectedSrcToken?.chainId, selectedSrcToken?.address);
20
22
  // Add ref to track if we've applied metadata
21
23
  const appliedSrcMetadataRef = (0, react_3.useRef)(false);
@@ -41,13 +43,13 @@ function PaySection({ paymentType, selectedSrcChainId, setSelectedSrcChainId, se
41
43
  (0, react_3.useEffect)(() => {
42
44
  appliedSrcMetadataRef.current = false;
43
45
  }, [selectedSrcToken.address, selectedSrcToken.chainId]);
44
- return ((0, jsx_runtime_1.jsxs)(react_2.motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, className: "bg-as-surface-secondary border-as-border-secondary relative flex w-full flex-col gap-2 rounded-2xl border p-4 sm:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary/50 flex h-7 items-center text-sm", children: "Pay" }), paymentType === "crypto" ? ((0, jsx_runtime_1.jsx)("button", { className: "text-as-tertiarry flex h-7 items-center gap-2 text-sm transition-colors", onClick: onSelectCryptoPaymentMethod, children: selectedCryptoPaymentMethod === CryptoPaymentMethod_1.CryptoPaymentMethodType.CONNECT_WALLET ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [globalAddress ? ((0, jsx_runtime_1.jsx)("div", { className: "flex items-center gap-1", children: connectedName ? (0, utils_1.formatUsername)(connectedName) : (0, formatAddress_1.shortenAddress)(connectedAddress || "") })) : ("Connect wallet"), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : selectedCryptoPaymentMethod === CryptoPaymentMethod_1.CryptoPaymentMethodType.TRANSFER_CRYPTO ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Transfer crypto", (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Select payment method", (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) })) : ((0, jsx_runtime_1.jsx)("button", { className: "text-as-tertiarry flex h-7 items-center gap-2 text-sm transition-colors", onClick: onSelectFiatPaymentMethod, children: selectedFiatPaymentMethod === FiatPaymentMethod_1.FiatPaymentMethod.COINBASE_PAY ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex h-5 w-5 items-center justify-center rounded-full bg-blue-600", children: (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-bold text-white", children: "C" }) }), "Coinbase Pay"] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : selectedFiatPaymentMethod === FiatPaymentMethod_1.FiatPaymentMethod.STRIPE ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex h-5 w-5 items-center justify-center rounded-full bg-blue-600", children: (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-bold text-white", children: "S" }) }), "Credit/Debit Card"] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Select payment method", (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) }))] }), paymentType === "crypto" ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderTokenAmount_1.OrderTokenAmount, { address: globalAddress, context: "from", inputValue: srcAmount, onChangeInput: value => {
46
+ return ((0, jsx_runtime_1.jsxs)(react_2.motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, className: "bg-as-surface-secondary border-as-border-secondary relative flex w-full flex-col gap-2 rounded-2xl border p-4 sm:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary/50 flex h-7 items-center text-sm", children: "Pay" }), paymentType === "crypto" ? ((0, jsx_runtime_1.jsx)("button", { className: "text-as-tertiarry flex h-7 items-center gap-2 text-sm transition-colors focus:!outline-none", onClick: onSelectCryptoPaymentMethod, children: selectedCryptoPaymentMethod === CryptoPaymentMethod_1.CryptoPaymentMethodType.CONNECT_WALLET ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isConnected ? ((0, jsx_runtime_1.jsx)("div", { className: "flex items-center gap-1", children: connectedName ? (0, utils_1.formatUsername)(connectedName) : (0, formatAddress_1.shortenAddress)(connectedAddress || "") })) : ("Connect wallet"), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : selectedCryptoPaymentMethod === CryptoPaymentMethod_1.CryptoPaymentMethodType.TRANSFER_CRYPTO ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Transfer crypto", (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Select payment method", (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) })) : ((0, jsx_runtime_1.jsx)("button", { className: "text-as-tertiarry flex h-7 items-center gap-2 text-sm transition-colors", onClick: onSelectFiatPaymentMethod, children: selectedFiatPaymentMethod === FiatPaymentMethod_1.FiatPaymentMethod.COINBASE_PAY ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex h-5 w-5 items-center justify-center rounded-full bg-blue-600", children: (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-bold text-white", children: "C" }) }), "Coinbase Pay"] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : selectedFiatPaymentMethod === FiatPaymentMethod_1.FiatPaymentMethod.STRIPE ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex h-5 w-5 items-center justify-center rounded-full bg-blue-600", children: (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-bold text-white", children: "S" }) }), "Credit/Debit Card"] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Select payment method", (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) }))] }), paymentType === "crypto" ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderTokenAmount_1.OrderTokenAmount, { address: connectedAddress, context: "from", inputValue: srcAmount, onChangeInput: value => {
45
47
  setIsSrcInputDirty(true);
46
48
  setSrcAmount(value);
47
49
  }, chainId: selectedSrcChainId, setChainId: setSelectedSrcChainId, token: selectedSrcToken, setToken: setSelectedSrcToken }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary/50 flex h-5 items-center text-sm", children: (0, number_1.formatDisplayNumber)(anyspendQuote?.data?.currencyIn?.amountUsd, {
48
50
  style: "currency",
49
51
  fallback: "",
50
- }) }), (0, jsx_runtime_1.jsx)(TokenBalance_1.TokenBalance, { token: selectedSrcToken, walletAddress: globalAddress, onChangeInput: value => {
52
+ }) }), (0, jsx_runtime_1.jsx)(TokenBalance_1.TokenBalance, { token: selectedSrcToken, walletAddress: connectedAddress, onChangeInput: value => {
51
53
  setIsSrcInputDirty(true);
52
54
  setSrcAmount(value);
53
55
  } })] })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-center pb-2 pt-8", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex gap-1", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-as-tertiarry text-2xl font-bold", children: "$" }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "text", value: srcAmount, onChange: e => setSrcAmount(e.target.value.replace(/[^0-9.]/g, "")), placeholder: "5", className: "text-as-primary placeholder:text-as-primary/50 h-auto min-w-[70px] border-0 bg-transparent p-0 px-3 pt-1 text-4xl font-bold focus-visible:ring-0 focus-visible:ring-offset-0", style: {
@@ -23,6 +23,8 @@ var PanelView;
23
23
  PanelView[PanelView["LOADING"] = 5] = "LOADING";
24
24
  })(PanelView || (exports.PanelView = PanelView = {}));
25
25
  function useAnyspendFlow({ paymentType = "crypto", recipientAddress, loadOrder, isDepositMode = false, onOrderSuccess, onTransactionSuccess, sourceTokenAddress, sourceTokenChainId, }) {
26
+ const searchParams = (0, react_2.useSearchParamsSSR)();
27
+ const router = (0, react_2.useRouter)();
26
28
  // Panel and order state
27
29
  const [activePanel, setActivePanel] = (0, react_3.useState)(loadOrder ? PanelView.ORDER_DETAILS : PanelView.MAIN);
28
30
  const [orderId, setOrderId] = (0, react_3.useState)(loadOrder);
@@ -49,6 +51,11 @@ function useAnyspendFlow({ paymentType = "crypto", recipientAddress, loadOrder,
49
51
  setSelectedRecipientAddress(globalAddress);
50
52
  }
51
53
  }, [selectedRecipientAddress, globalAddress]);
54
+ (0, react_3.useEffect)(() => {
55
+ if (paymentType === "crypto") {
56
+ setSelectedCryptoPaymentMethod(CryptoPaymentMethod_1.CryptoPaymentMethodType.CONNECT_WALLET);
57
+ }
58
+ }, [paymentType]);
52
59
  // Fetch specific token when sourceTokenAddress and sourceTokenChainId are provided
53
60
  (0, react_3.useEffect)(() => {
54
61
  const fetchSourceToken = async () => {
@@ -103,6 +110,16 @@ function useAnyspendFlow({ paymentType = "crypto", recipientAddress, loadOrder,
103
110
  setDstAmount("");
104
111
  }
105
112
  }, [anyspendQuote]);
113
+ // Update useEffect for URL parameter to not override loadOrder
114
+ (0, react_3.useEffect)(() => {
115
+ if (loadOrder)
116
+ return; // Skip if we have a loadOrder
117
+ const orderIdParam = searchParams.get("orderId");
118
+ if (orderIdParam) {
119
+ setOrderId(orderIdParam);
120
+ setActivePanel(PanelView.ORDER_DETAILS);
121
+ }
122
+ }, [searchParams, loadOrder]);
106
123
  // Order creation hooks
107
124
  const { createOrder, isCreatingOrder } = (0, react_1.useAnyspendCreateOrder)({
108
125
  onSuccess: data => {
@@ -110,6 +127,18 @@ function useAnyspendFlow({ paymentType = "crypto", recipientAddress, loadOrder,
110
127
  setOrderId(newOrderId);
111
128
  setActivePanel(PanelView.ORDER_DETAILS);
112
129
  onOrderSuccess?.(newOrderId);
130
+ // Add orderId and payment method to URL for persistence
131
+ const params = new URLSearchParams(searchParams.toString()); // Preserve existing params
132
+ params.set("orderId", newOrderId);
133
+ if (selectedCryptoPaymentMethod !== CryptoPaymentMethod_1.CryptoPaymentMethodType.NONE) {
134
+ console.log("Setting cryptoPaymentMethod in URL:", selectedCryptoPaymentMethod);
135
+ params.set("cryptoPaymentMethod", selectedCryptoPaymentMethod);
136
+ }
137
+ else {
138
+ console.log("Payment method is NONE, not setting in URL");
139
+ }
140
+ console.log("Final URL params:", params.toString());
141
+ router.push(`${window.location.pathname}?${params.toString()}`);
113
142
  },
114
143
  onError: error => {
115
144
  console.error(error);
@@ -48,8 +48,8 @@ export declare const useGenerateSigMintData: ({ recipientAddress, contractAddres
48
48
  creatorMap?: {} | undefined;
49
49
  chainId: number;
50
50
  address: string;
51
- _id: string | {};
52
51
  title: string;
52
+ _id: string | {};
53
53
  };
54
54
  } | null;
55
55
  error: Error | null;
@@ -286,14 +286,6 @@ export declare const BondkitTokenABI: readonly [{
286
286
  }];
287
287
  readonly name: "ValidationInvalidLPSplitRatio";
288
288
  readonly type: "error";
289
- }, {
290
- readonly inputs: readonly [{
291
- readonly internalType: "address";
292
- readonly name: "providedAddress";
293
- readonly type: "address";
294
- }];
295
- readonly name: "ValidationInvalidMigrationAdminAddress";
296
- readonly type: "error";
297
289
  }, {
298
290
  readonly inputs: readonly [{
299
291
  readonly internalType: "uint24";
@@ -330,6 +322,21 @@ export declare const BondkitTokenABI: readonly [{
330
322
  }];
331
323
  readonly name: "Approval";
332
324
  readonly type: "event";
325
+ }, {
326
+ readonly anonymous: false;
327
+ readonly inputs: readonly [{
328
+ readonly indexed: true;
329
+ readonly internalType: "address";
330
+ readonly name: "previousAdmin";
331
+ readonly type: "address";
332
+ }, {
333
+ readonly indexed: true;
334
+ readonly internalType: "address";
335
+ readonly name: "newAdmin";
336
+ readonly type: "address";
337
+ }];
338
+ readonly name: "B3AdminUpdated";
339
+ readonly type: "event";
333
340
  }, {
334
341
  readonly anonymous: false;
335
342
  readonly inputs: readonly [{
@@ -465,6 +472,21 @@ export declare const BondkitTokenABI: readonly [{
465
472
  }];
466
473
  readonly name: "BondkitTokenMigrated";
467
474
  readonly type: "event";
475
+ }, {
476
+ readonly anonymous: false;
477
+ readonly inputs: readonly [{
478
+ readonly indexed: false;
479
+ readonly internalType: "uint256";
480
+ readonly name: "totalRaisedBonding";
481
+ readonly type: "uint256";
482
+ }, {
483
+ readonly indexed: false;
484
+ readonly internalType: "uint256";
485
+ readonly name: "targetAmount";
486
+ readonly type: "uint256";
487
+ }];
488
+ readonly name: "DexTriggerThresholdMet";
489
+ readonly type: "event";
468
490
  }, {
469
491
  readonly anonymous: false;
470
492
  readonly inputs: readonly [{
@@ -591,6 +613,16 @@ export declare const BondkitTokenABI: readonly [{
591
613
  }];
592
614
  readonly stateMutability: "nonpayable";
593
615
  readonly type: "function";
616
+ }, {
617
+ readonly inputs: readonly [];
618
+ readonly name: "b3Admin";
619
+ readonly outputs: readonly [{
620
+ readonly internalType: "address";
621
+ readonly name: "";
622
+ readonly type: "address";
623
+ }];
624
+ readonly stateMutability: "view";
625
+ readonly type: "function";
594
626
  }, {
595
627
  readonly inputs: readonly [{
596
628
  readonly internalType: "address";
@@ -743,6 +775,16 @@ export declare const BondkitTokenABI: readonly [{
743
775
  }];
744
776
  readonly stateMutability: "view";
745
777
  readonly type: "function";
778
+ }, {
779
+ readonly inputs: readonly [];
780
+ readonly name: "getB3Admin";
781
+ readonly outputs: readonly [{
782
+ readonly internalType: "address";
783
+ readonly name: "";
784
+ readonly type: "address";
785
+ }];
786
+ readonly stateMutability: "view";
787
+ readonly type: "function";
746
788
  }, {
747
789
  readonly inputs: readonly [];
748
790
  readonly name: "getBondingCurveConfig";
@@ -979,10 +1021,6 @@ export declare const BondkitTokenABI: readonly [{
979
1021
  readonly internalType: "address";
980
1022
  readonly name: "tradingToken";
981
1023
  readonly type: "address";
982
- }, {
983
- readonly internalType: "address";
984
- readonly name: "migrationAdminAddress";
985
- readonly type: "address";
986
1024
  }, {
987
1025
  readonly internalType: "address";
988
1026
  readonly name: "bondingPhaseSplitter";
@@ -1182,6 +1220,16 @@ export declare const BondkitTokenABI: readonly [{
1182
1220
  readonly outputs: readonly [];
1183
1221
  readonly stateMutability: "nonpayable";
1184
1222
  readonly type: "function";
1223
+ }, {
1224
+ readonly inputs: readonly [{
1225
+ readonly internalType: "address";
1226
+ readonly name: "_newAdmin";
1227
+ readonly type: "address";
1228
+ }];
1229
+ readonly name: "updateB3Admin";
1230
+ readonly outputs: readonly [];
1231
+ readonly stateMutability: "nonpayable";
1232
+ readonly type: "function";
1185
1233
  }, {
1186
1234
  readonly inputs: readonly [{
1187
1235
  readonly internalType: "address";