@b3dotfun/sdk 0.0.33 → 0.0.34-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/cjs/anyspend/react/components/AnySpend.js +2 -2
  2. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +1 -1
  3. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +0 -1
  4. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +5 -36
  5. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.d.ts +12 -0
  6. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +25 -0
  7. package/dist/cjs/anyspend/react/components/common/OrderDetails.d.ts +3 -3
  8. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +65 -60
  9. package/dist/cjs/anyspend/react/components/common/OrderStatus.js +2 -2
  10. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -4
  11. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +4 -2
  12. package/dist/cjs/anyspend/react/hooks/useAnyspendOrderAndTransactions.d.ts +6 -6
  13. package/dist/cjs/anyspend/react/hooks/useAnyspendOrderHistory.d.ts +54 -10
  14. package/dist/cjs/anyspend/react/hooks/useAnyspendQuote.js +1 -1
  15. package/dist/cjs/anyspend/types/api.d.ts +130 -14
  16. package/dist/cjs/anyspend/utils/chain.js +1 -1
  17. package/dist/cjs/anyspend/utils/format.js +1 -0
  18. package/dist/cjs/anyspend/utils/orderPayload.js +7 -0
  19. package/dist/cjs/global-account/react/components/B3DynamicModal.js +1 -4
  20. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +14 -0
  21. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  22. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +17 -1
  23. package/dist/cjs/global-account/react/components/index.d.ts +8 -9
  24. package/dist/cjs/global-account/react/components/index.js +25 -28
  25. package/dist/cjs/global-account/react/index.native.d.ts +2 -1
  26. package/dist/cjs/global-account/react/index.native.js +5 -3
  27. package/dist/cjs/global-account/react/stores/index.d.ts +1 -1
  28. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +2 -22
  29. package/dist/esm/anyspend/react/components/AnySpend.js +2 -2
  30. package/dist/esm/anyspend/react/components/AnySpendCustom.js +1 -1
  31. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +0 -1
  32. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +6 -37
  33. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.d.ts +12 -0
  34. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +22 -0
  35. package/dist/esm/anyspend/react/components/common/OrderDetails.d.ts +3 -3
  36. package/dist/esm/anyspend/react/components/common/OrderDetails.js +48 -43
  37. package/dist/esm/anyspend/react/components/common/OrderStatus.js +2 -2
  38. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -4
  39. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +4 -2
  40. package/dist/esm/anyspend/react/hooks/useAnyspendOrderAndTransactions.d.ts +6 -6
  41. package/dist/esm/anyspend/react/hooks/useAnyspendOrderHistory.d.ts +54 -10
  42. package/dist/esm/anyspend/react/hooks/useAnyspendQuote.js +1 -1
  43. package/dist/esm/anyspend/types/api.d.ts +130 -14
  44. package/dist/esm/anyspend/utils/chain.js +1 -1
  45. package/dist/esm/anyspend/utils/format.js +1 -0
  46. package/dist/esm/anyspend/utils/orderPayload.js +7 -0
  47. package/dist/esm/global-account/react/components/B3DynamicModal.js +1 -4
  48. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +11 -0
  49. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  50. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +17 -1
  51. package/dist/esm/global-account/react/components/index.d.ts +8 -9
  52. package/dist/esm/global-account/react/components/index.js +8 -10
  53. package/dist/esm/global-account/react/index.native.d.ts +2 -1
  54. package/dist/esm/global-account/react/index.native.js +2 -1
  55. package/dist/esm/global-account/react/stores/index.d.ts +1 -1
  56. package/dist/esm/global-account/react/stores/useModalStore.d.ts +2 -22
  57. package/dist/styles/index.css +1 -1
  58. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +0 -1
  59. package/dist/types/anyspend/react/components/common/InsufficientDepositPayment.d.ts +12 -0
  60. package/dist/types/anyspend/react/components/common/OrderDetails.d.ts +3 -3
  61. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -4
  62. package/dist/types/anyspend/react/hooks/useAnyspendOrderAndTransactions.d.ts +6 -6
  63. package/dist/types/anyspend/react/hooks/useAnyspendOrderHistory.d.ts +54 -10
  64. package/dist/types/anyspend/types/api.d.ts +130 -14
  65. package/dist/types/global-account/react/components/index.d.ts +8 -9
  66. package/dist/types/global-account/react/index.native.d.ts +2 -1
  67. package/dist/types/global-account/react/stores/index.d.ts +1 -1
  68. package/dist/types/global-account/react/stores/useModalStore.d.ts +2 -22
  69. package/package.json +2 -4
  70. package/src/anyspend/react/components/AnySpend.tsx +2 -1
  71. package/src/anyspend/react/components/AnySpendCustom.tsx +1 -1
  72. package/src/anyspend/react/components/AnyspendDepositHype.tsx +5 -43
  73. package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +144 -0
  74. package/src/anyspend/react/components/common/OrderDetails.tsx +95 -71
  75. package/src/anyspend/react/components/common/OrderStatus.tsx +2 -2
  76. package/src/anyspend/react/hooks/useAnyspendFlow.ts +5 -3
  77. package/src/anyspend/react/hooks/useAnyspendQuote.ts +1 -1
  78. package/src/anyspend/types/api.ts +131 -11
  79. package/src/anyspend/utils/chain.ts +1 -1
  80. package/src/anyspend/utils/format.ts +1 -0
  81. package/src/anyspend/utils/orderPayload.ts +7 -0
  82. package/src/global-account/react/components/B3DynamicModal.tsx +0 -4
  83. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +10 -0
  84. package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +6 -6
  85. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +17 -1
  86. package/src/global-account/react/components/index.ts +13 -16
  87. package/src/global-account/react/index.native.ts +2 -1
  88. package/src/global-account/react/stores/index.ts +1 -2
  89. package/src/global-account/react/stores/useModalStore.ts +1 -23
  90. package/dist/cjs/global-account/react/components/Transak/TransakModal.d.ts +0 -1
  91. package/dist/cjs/global-account/react/components/Transak/TransakModal.js +0 -110
  92. package/dist/esm/global-account/react/components/Transak/TransakModal.d.ts +0 -1
  93. package/dist/esm/global-account/react/components/Transak/TransakModal.js +0 -104
  94. package/dist/types/global-account/react/components/Transak/TransakModal.d.ts +0 -1
  95. package/src/global-account/react/components/Transak/TransakModal.tsx +0 -131
@@ -657,12 +657,12 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
657
657
  window.scrollTo({ top: 0, behavior: "smooth" });
658
658
  }, [activePanel]);
659
659
  const historyView = ((0, jsx_runtime_1.jsx)("div", { className: "mx-auto flex w-[560px] max-w-full flex-col items-center", children: (0, jsx_runtime_1.jsx)(OrderHistory_1.OrderHistory, { mode: mode, onBack: () => setActivePanel(PanelView.MAIN), onSelectOrder: onSelectOrder }) }));
660
- 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, onBack: () => {
660
+ 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, relayTxs: oat.data.relayTxs, executeTx: oat.data.executeTx, refundTxs: oat.data.refundTxs, onBack: () => {
661
661
  setOrderId(undefined);
662
662
  setActivePanel(PanelView.MAIN);
663
663
  setSelectedCryptoPaymentMethod(CryptoPaymentMethod_1.CryptoPaymentMethodType.NONE); // Reset payment method when going back
664
664
  } })] })) }) }));
665
- const mainView = ((0, jsx_runtime_1.jsxs)("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [isBuyMode && ((0, jsx_runtime_1.jsxs)("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: [selectedDstToken.metadata?.logoURI && ((0, jsx_runtime_1.jsx)("div", { className: "relative", children: (0, jsx_runtime_1.jsx)("img", { src: selectedDstToken.metadata.logoURI, alt: selectedDstToken.symbol, className: "border-as-stroke h-12 w-12 rounded-full border-2 shadow-md" }) })), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("h1", { className: "text-as-primary text-xl font-bold", children: ["Buy ", selectedDstToken.symbol] }) })] })), (0, jsx_runtime_1.jsx)(TabSection_1.TabSection, { activeTab: activeTab, setActiveTab: setActiveTab, setSelectedCryptoPaymentMethod: setSelectedCryptoPaymentMethod, setSelectedFiatPaymentMethod: setSelectedFiatPaymentMethod }), (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [activeTab === "crypto" ? ((0, jsx_runtime_1.jsx)(PaySection_1.PaySection, { paymentType: "crypto", selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, selectedFiatPaymentMethod: selectedFiatPaymentMethod, onSelectCryptoPaymentMethod: () => setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD), onSelectFiatPaymentMethod: () => setActivePanel(PanelView.FIAT_PAYMENT_METHOD), anyspendQuote: anyspendQuote })) : ((0, jsx_runtime_1.jsx)(react_3.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" }, children: (0, jsx_runtime_1.jsx)(PanelOnramp_1.PanelOnramp, { srcAmountOnRamp: srcAmountOnRamp, setSrcAmountOnRamp: setSrcAmountOnRamp, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: setActivePanel, _recipientAddress: recipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION }) })), (0, jsx_runtime_1.jsx)(react_2.Button, { variant: "ghost", className: (0, cn_1.cn)("border-as-stroke bg-as-surface-primary absolute left-1/2 top-1/2 z-10 h-10 w-10 -translate-x-1/2 -translate-y-1/2 rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl", isBuyMode && "top-[calc(50%+56px)] cursor-default", activeTab === "fiat" && "hidden"), onClick: () => {
665
+ const mainView = ((0, jsx_runtime_1.jsxs)("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [isBuyMode && ((0, jsx_runtime_1.jsxs)("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: [selectedDstToken.metadata?.logoURI && ((0, jsx_runtime_1.jsx)("div", { className: "relative", children: (0, jsx_runtime_1.jsx)("img", { src: selectedDstToken.metadata.logoURI, alt: selectedDstToken.symbol, className: "border-as-stroke h-12 w-12 rounded-full border-2 shadow-md" }) })), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("h1", { className: "text-as-primary text-xl font-bold", children: ["Buy ", selectedDstToken.symbol] }) })] })), (0, jsx_runtime_1.jsx)(TabSection_1.TabSection, { activeTab: activeTab, setActiveTab: setActiveTab, setSelectedCryptoPaymentMethod: setSelectedCryptoPaymentMethod, setSelectedFiatPaymentMethod: setSelectedFiatPaymentMethod }), (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [activeTab === "crypto" ? ((0, jsx_runtime_1.jsx)(PaySection_1.PaySection, { paymentType: "crypto", selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, selectedFiatPaymentMethod: selectedFiatPaymentMethod, onSelectCryptoPaymentMethod: () => setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD), onSelectFiatPaymentMethod: () => setActivePanel(PanelView.FIAT_PAYMENT_METHOD), anyspendQuote: anyspendQuote })) : ((0, jsx_runtime_1.jsx)(react_3.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" }, children: (0, jsx_runtime_1.jsx)(PanelOnramp_1.PanelOnramp, { srcAmountOnRamp: srcAmountOnRamp, setSrcAmountOnRamp: setSrcAmountOnRamp, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: setActivePanel, _recipientAddress: recipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, hideDstToken: isBuyMode }) })), (0, jsx_runtime_1.jsx)(react_2.Button, { variant: "ghost", className: (0, cn_1.cn)("border-as-stroke bg-as-surface-primary absolute left-1/2 top-1/2 z-10 h-10 w-10 -translate-x-1/2 -translate-y-1/2 rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl", isBuyMode && "top-[calc(50%+56px)] cursor-default", activeTab === "fiat" && "hidden"), onClick: () => {
666
666
  if (activeTab === "fiat" || isBuyMode) {
667
667
  return;
668
668
  }
@@ -419,7 +419,7 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
419
419
  const historyView = ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)("mx-auto flex w-full max-w-2xl flex-col items-center p-5", mode === "modal" && "bg-b3-react-background"), children: (0, jsx_runtime_1.jsx)(OrderHistory_1.OrderHistory, { mode: mode, onBack: () => {
420
420
  setActivePanel(PanelView.HISTORY);
421
421
  }, onSelectOrder: onSelectOrder }) }));
422
- const orderDetailsView = ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)("mx-auto flex w-full flex-col items-center gap-4", mode === "modal" && "bg-b3-react-background rounded-xl"), 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: activeTab === "fiat" ? CryptoPaymentMethod_1.CryptoPaymentMethodType.NONE : selectedCryptoPaymentMethod, onBack: () => {
422
+ const orderDetailsView = ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)("mx-auto flex w-full flex-col items-center gap-4", mode === "modal" && "bg-b3-react-background rounded-xl"), 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, relayTxs: oat.data.relayTxs, executeTx: oat.data.executeTx, refundTxs: oat.data.refundTxs, cryptoPaymentMethod: activeTab === "fiat" ? CryptoPaymentMethod_1.CryptoPaymentMethodType.NONE : selectedCryptoPaymentMethod, onBack: () => {
423
423
  setOrderId(undefined);
424
424
  setActivePanel(PanelView.CONFIRM_ORDER);
425
425
  // Remove orderId from URL when canceling
@@ -10,7 +10,6 @@ export interface AnySpendDepositHypeProps {
10
10
  sourceTokenAddress?: string;
11
11
  sourceTokenChainId?: number;
12
12
  onSuccess?: () => void;
13
- depositContractAddress?: string;
14
13
  mainFooter?: React.ReactNode;
15
14
  }
16
15
  export declare function AnySpendDepositHype(props: AnySpendDepositHypeProps): import("react/jsx-runtime").JSX.Element;
@@ -13,7 +13,6 @@ const invariant_1 = __importDefault(require("invariant"));
13
13
  const react_2 = require("motion/react");
14
14
  const react_3 = require("react");
15
15
  const sonner_1 = require("sonner");
16
- const viem_1 = require("viem");
17
16
  const chains_1 = require("viem/chains");
18
17
  const useAnyspendFlow_1 = require("../hooks/useAnyspendFlow");
19
18
  const AnySpendFingerprintWrapper_1 = require("./AnySpendFingerprintWrapper");
@@ -25,7 +24,6 @@ const OrderDetails_1 = require("./common/OrderDetails");
25
24
  const OrderStatus_1 = require("./common/OrderStatus");
26
25
  const PaySection_1 = require("./common/PaySection");
27
26
  const RecipientSelection_1 = require("./common/RecipientSelection");
28
- const escrow_1 = require("../../../anyspend/abis/escrow");
29
27
  const lucide_react_1 = require("lucide-react");
30
28
  const PanelOnramp_1 = require("./common/PanelOnramp");
31
29
  const SLIPPAGE_PERCENT = 3;
@@ -33,20 +31,11 @@ exports.HYPE_TOKEN_DETAILS = {
33
31
  SYMBOL: "HYPE",
34
32
  LOGO_URI: "https://cdn.hypeduel.com/hypes-coin.svg",
35
33
  };
36
- function generateEncodedDataForDepositHype(amount, beneficiary) {
37
- (0, invariant_1.default)(BigInt(amount) > 0, "Amount must be greater than zero");
38
- const encodedData = (0, viem_1.encodeFunctionData)({
39
- abi: escrow_1.ESCROW_ABI,
40
- functionName: "depositFor",
41
- args: [beneficiary, anyspend_1.B3_TOKEN.address, BigInt(amount)],
42
- });
43
- return encodedData;
44
- }
45
34
  function AnySpendDepositHype(props) {
46
35
  const fingerprintConfig = (0, AnySpendFingerprintWrapper_1.getFingerprintConfig)();
47
36
  return ((0, jsx_runtime_1.jsx)(AnySpendFingerprintWrapper_1.AnySpendFingerprintWrapper, { fingerprint: fingerprintConfig, children: (0, jsx_runtime_1.jsx)(AnySpendDepositHypeInner, { ...props }) }));
48
37
  }
49
- function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress, paymentType = "crypto", sourceTokenAddress, sourceTokenChainId, onSuccess, depositContractAddress, mainFooter, }) {
38
+ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress, paymentType = "crypto", sourceTokenAddress, sourceTokenChainId, onSuccess, mainFooter, }) {
50
39
  // Use shared flow hook
51
40
  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)({
52
41
  paymentType,
@@ -139,28 +128,17 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
139
128
  try {
140
129
  (0, invariant_1.default)(anyspendQuote, "Relay price is not found");
141
130
  (0, invariant_1.default)(selectedRecipientAddress, "Recipient address is not found");
142
- (0, invariant_1.default)(depositContractAddress, "Deposit contract address is not found");
143
131
  const srcAmountBigInt = BigInt(activeInputAmountInWei);
144
- // TODO: temp subtract 3% for slippage
145
- const originalDepositAmountWei = anyspendQuote.data?.currencyOut?.amount || "0";
146
- const depositAmountWei = ((BigInt(originalDepositAmountWei) * BigInt(100 - SLIPPAGE_PERCENT)) /
147
- BigInt(100)).toString();
148
- const encodedData = generateEncodedDataForDepositHype(depositAmountWei, selectedRecipientAddress);
149
132
  createOrder({
150
133
  recipientAddress: selectedRecipientAddress,
151
- orderType: "custom",
134
+ orderType: "hype_duel",
152
135
  srcChain: selectedSrcChainId,
153
136
  dstChain: chains_1.base.id,
154
137
  srcToken: selectedSrcToken,
155
138
  dstToken: anyspend_1.B3_TOKEN,
156
139
  srcAmount: srcAmountBigInt.toString(),
140
+ expectedDstAmount: anyspendQuote?.data?.currencyOut?.amount?.toString() || "0",
157
141
  creatorAddress: globalAddress,
158
- payload: {
159
- amount: depositAmountWei,
160
- data: encodedData,
161
- to: depositContractAddress,
162
- action: anyspend_1.DEPOSIT_HYPE_ACTION,
163
- },
164
142
  });
165
143
  }
166
144
  catch (err) {
@@ -173,7 +151,6 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
173
151
  try {
174
152
  (0, invariant_1.default)(anyspendQuote, "Relay price is not found");
175
153
  (0, invariant_1.default)(selectedRecipientAddress, "Recipient address is not found");
176
- (0, invariant_1.default)(depositContractAddress, "Deposit contract address is not found");
177
154
  if (!srcAmount || parseFloat(srcAmount) <= 0) {
178
155
  sonner_1.toast.error("Please enter a valid amount");
179
156
  return;
@@ -201,11 +178,9 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
201
178
  sonner_1.toast.error("Please select a payment method");
202
179
  return;
203
180
  }
204
- const depositAmountWei = anyspendQuote.data?.currencyOut?.amount || "0";
205
- const encodedData = generateEncodedDataForDepositHype(depositAmountWei, selectedRecipientAddress);
206
181
  createOnrampOrder({
207
182
  recipientAddress: selectedRecipientAddress,
208
- orderType: "custom",
183
+ orderType: "hype_duel",
209
184
  dstChain: chains_1.base.id,
210
185
  dstToken: anyspend_1.B3_TOKEN,
211
186
  srcFiatAmount: srcAmount,
@@ -217,12 +192,6 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
217
192
  },
218
193
  expectedDstAmount: anyspendQuote?.data?.currencyOut?.amount?.toString() || "0",
219
194
  creatorAddress: globalAddress,
220
- payload: {
221
- amount: depositAmountWei,
222
- data: encodedData,
223
- to: depositContractAddress,
224
- action: anyspend_1.DEPOSIT_HYPE_ACTION,
225
- },
226
195
  });
227
196
  }
228
197
  catch (err) {
@@ -231,7 +200,7 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
231
200
  }
232
201
  };
233
202
  // Order details view
234
- 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: () => {
203
+ 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, relayTxs: oat.data.relayTxs, executeTx: oat.data.executeTx, refundTxs: oat.data.refundTxs, cryptoPaymentMethod: paymentType === "fiat" ? CryptoPaymentMethod_1.CryptoPaymentMethodType.NONE : selectedCryptoPaymentMethod, onBack: () => {
235
204
  setOrderId(undefined);
236
205
  setActivePanel(useAnyspendFlow_1.PanelView.MAIN);
237
206
  }, disableUrlParamManagement: true })] })) }) }));
@@ -0,0 +1,12 @@
1
+ import { components } from "../../../../anyspend/types/api";
2
+ interface InsufficientDepositPaymentProps {
3
+ order: components["schemas"]["Order"];
4
+ srcToken: components["schemas"]["Token"];
5
+ depositDeficit: bigint;
6
+ phantomWalletAddress: string | null;
7
+ txLoading: boolean;
8
+ isSwitchingOrExecuting: boolean;
9
+ onPayment: () => Promise<void>;
10
+ }
11
+ export declare function InsufficientDepositPayment({ order, srcToken, depositDeficit, phantomWalletAddress, txLoading, isSwitchingOrExecuting, onPayment, }: InsufficientDepositPaymentProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.InsufficientDepositPayment = InsufficientDepositPayment;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const anyspend_1 = require("../../../../anyspend");
7
+ const react_1 = require("../../../../global-account/react");
8
+ const utils_1 = require("../../../../shared/utils");
9
+ const chains_1 = require("viem/chains");
10
+ const number_1 = require("../../../../shared/utils/number");
11
+ const react_2 = require("@web3icons/react");
12
+ const lucide_react_1 = require("lucide-react");
13
+ const react_3 = require("motion/react");
14
+ const qrcode_react_1 = require("qrcode.react");
15
+ const sonner_1 = require("sonner");
16
+ function InsufficientDepositPayment({ order, srcToken, depositDeficit, phantomWalletAddress, txLoading, isSwitchingOrExecuting, onPayment, }) {
17
+ const depositDeficitAmount = (0, number_1.formatUnits)(depositDeficit.toString(), srcToken.decimals);
18
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "insufficient-deposit-payment relative flex w-full flex-1 flex-col", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-1", children: [(0, jsx_runtime_1.jsx)("span", { className: "insufficient-deposit-payment-text text-as-primary/50", children: "Please send remaining" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-full flex-wrap items-center gap-6 sm:justify-between sm:gap-0", children: [(0, jsx_runtime_1.jsx)(react_1.CopyToClipboard, { text: depositDeficitAmount, onCopy: () => {
19
+ sonner_1.toast.success("Copied to clipboard");
20
+ }, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsxs)("strong", { className: "border-as-brand text-as-primary border-b-2 pb-1 text-2xl font-semibold sm:text-xl", children: [depositDeficitAmount, " ", srcToken.symbol] }), (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { className: "text-as-primary/50 hover:text-as-primary h-5 w-5 cursor-pointer transition-all duration-200" })] }) }), (0, jsx_runtime_1.jsxs)(react_1.Badge, { variant: "outline", className: "flex h-10 items-center gap-2 px-3 py-1 pr-2 text-sm", children: ["on ", (0, anyspend_1.getChainName)(order.srcChain), (0, jsx_runtime_1.jsx)("img", { src: anyspend_1.ALL_CHAINS[order.srcChain].logoUrl, alt: (0, anyspend_1.getChainName)(order.srcChain), className: (0, utils_1.cn)("h-6 rounded-full", order.srcChain === chains_1.b3.id && "h-5 rounded-none") })] })] }), (0, jsx_runtime_1.jsx)("span", { className: "text-as-primary/50 mb-1 mt-2", children: " to the address:" })] }), (0, jsx_runtime_1.jsx)(react_1.CopyToClipboard, { text: order.globalAddress, onCopy: () => {
21
+ sonner_1.toast.success("Copied to clipboard");
22
+ }, children: (0, jsx_runtime_1.jsxs)("div", { className: "payment-address bg-b3-react-background border-b3-react-border hover:border-as-brand group flex cursor-pointer items-center justify-between gap-4 rounded-lg border p-3 px-4 shadow-md transition-all duration-200", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary overflow-hidden text-ellipsis whitespace-nowrap text-sm", children: order.globalAddress }), (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { className: "group-hover:text-as-brand text-as-primary/50 h-5 w-5 cursor-pointer transition-all duration-200" })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "payment-buttons mt-4 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
23
+ ? "Pay from Phantom Wallet"
24
+ : "Pay from Connected Wallet" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })) }), (0, jsx_runtime_1.jsx)("div", { children: "Or" }), (0, jsx_runtime_1.jsx)(react_3.motion.div, { initial: { opacity: 0, filter: "blur(10px)" }, animate: { opacity: 1, filter: "blur(0px)" }, transition: { duration: 0.5, ease: "easeInOut" }, className: "flex w-full items-center justify-evenly gap-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "qr-code flex flex-col items-center rounded-lg pb-3", children: [(0, jsx_runtime_1.jsx)(qrcode_react_1.QRCodeSVG, { value: (0, anyspend_1.getPaymentUrl)(order.globalAddress, BigInt(depositDeficit), order.srcTokenAddress === anyspend_1.RELAY_ETH_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress, order.srcChain, srcToken?.decimals), className: "max-w-[200px]" }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-3 flex items-center justify-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)("span", { className: "label-style text-as-brand/70 text-sm", children: "Scan with" }), (0, jsx_runtime_1.jsxs)(react_1.TextLoop, { interval: 3, children: [(0, jsx_runtime_1.jsx)(react_2.WalletMetamask, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletCoinbase, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletPhantom, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletTrust, { className: "h-5 w-5", variant: "branded" })] })] })] }) })] })] }));
25
+ }
@@ -3,10 +3,10 @@ import { CryptoPaymentMethodType } from "./CryptoPaymentMethod";
3
3
  interface OrderDetailsProps {
4
4
  mode?: "modal" | "page";
5
5
  order: components["schemas"]["Order"];
6
- depositTxs: components["schemas"]["DepositTx"][] | null;
7
- relayTx: components["schemas"]["RelayTx"] | null;
6
+ depositTxs: components["schemas"]["DepositTx"][];
7
+ relayTxs: components["schemas"]["RelayTx"][];
8
8
  executeTx: components["schemas"]["ExecuteTx"] | null;
9
- refundTxs: components["schemas"]["RefundTx"][] | null;
9
+ refundTxs: components["schemas"]["RefundTx"][];
10
10
  cryptoPaymentMethod?: CryptoPaymentMethodType;
11
11
  onBack?: () => void;
12
12
  disableUrlParamManagement?: boolean;
@@ -12,14 +12,13 @@ const hooks_1 = require("../../../../shared/react/hooks");
12
12
  const utils_1 = require("../../../../shared/utils");
13
13
  const centerTruncate_1 = __importDefault(require("../../../../shared/utils/centerTruncate"));
14
14
  const number_1 = require("../../../../shared/utils/number");
15
- const react_2 = require("@chakra-ui/react");
16
15
  const spl_token_1 = require("@solana/spl-token");
17
16
  const web3_js_1 = require("@solana/web3.js");
18
- const react_3 = require("@web3icons/react");
17
+ const react_2 = require("@web3icons/react");
19
18
  const lucide_react_1 = require("lucide-react");
20
- const react_4 = require("motion/react");
19
+ const react_3 = require("motion/react");
21
20
  const qrcode_react_1 = require("qrcode.react");
22
- const react_5 = require("react");
21
+ const react_4 = require("react");
23
22
  const react_timeago_1 = __importDefault(require("react-timeago"));
24
23
  const sonner_1 = require("sonner");
25
24
  const viem_1 = require("viem");
@@ -28,6 +27,7 @@ const wagmi_1 = require("wagmi");
28
27
  const Accordion_1 = require("./Accordion");
29
28
  const ConnectWalletPayment_1 = __importDefault(require("./ConnectWalletPayment"));
30
29
  const CryptoPaymentMethod_1 = require("./CryptoPaymentMethod");
30
+ const InsufficientDepositPayment_1 = require("./InsufficientDepositPayment");
31
31
  const OrderDetailsCollapsible_1 = require("./OrderDetailsCollapsible");
32
32
  const PaymentVendorUI_1 = __importDefault(require("./PaymentVendorUI"));
33
33
  const TransferCryptoDetails_1 = require("./TransferCryptoDetails");
@@ -54,6 +54,9 @@ function getOrderSuccessText({ order, tournament, formattedActualDstAmount, dstT
54
54
  }
55
55
  actionText = order.metadata.action || `executed contract`;
56
56
  return `Successfully ${actionText}`;
57
+ case "hype_duel":
58
+ actionText = `deposited ${formattedActualDstAmount || "--"} HYPE`;
59
+ return `Successfully ${actionText} to ${recipient}`;
57
60
  default:
58
61
  throw new Error("Invalid order type");
59
62
  }
@@ -130,9 +133,12 @@ function roundTokenAmount(amount) {
130
133
  const roundedDecimalPart = digits.join("");
131
134
  return `${wholePart}.${roundedDecimalPart}`;
132
135
  }
133
- exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal", order, depositTxs, relayTx, executeTx, refundTxs, cryptoPaymentMethod, onBack, disableUrlParamManagement = false, }) {
136
+ exports.OrderDetails = (0, react_4.memo)(function OrderDetails({ mode = "modal", order, depositTxs, relayTxs, executeTx, refundTxs, cryptoPaymentMethod, onBack, disableUrlParamManagement = false, }) {
134
137
  const router = (0, hooks_1.useRouter)();
135
138
  const searchParams = (0, hooks_1.useSearchParams)();
139
+ // Get theme from B3Provider context
140
+ const { theme } = (0, react_1.useB3)();
141
+ const colorMode = theme || "light";
136
142
  // Read crypto payment method from URL parameters
137
143
  const cryptoPaymentMethodFromUrl = searchParams.get("cryptoPaymentMethod");
138
144
  const effectiveCryptoPaymentMethod = cryptoPaymentMethod || cryptoPaymentMethodFromUrl || CryptoPaymentMethod_1.CryptoPaymentMethodType.NONE;
@@ -145,12 +151,11 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
145
151
  const recipientName = profile.data?.name?.replace(/\.b3\.fun/g, "");
146
152
  const account = (0, react_1.useAccountWallet)();
147
153
  const { data: walletClient } = (0, wagmi_1.useWalletClient)();
148
- const [txHash, setTxHash] = (0, react_5.useState)();
149
- const [showQRCode, setShowQRCode] = (0, react_5.useState)(false);
154
+ const [txHash, setTxHash] = (0, react_4.useState)();
155
+ const [showQRCode, setShowQRCode] = (0, react_4.useState)(false);
150
156
  const { isLoading: txLoading, isSuccess: txSuccess } = (0, wagmi_1.useWaitForTransactionReceipt)({ hash: txHash });
151
157
  const { switchChainAndExecuteWithEOA, isSwitchingOrExecuting } = (0, react_1.useUnifiedChainSwitchAndExecute)();
152
- const { colorMode } = (0, react_2.useColorMode)();
153
- const roundedUpSrcAmount = (0, react_5.useMemo)(() => {
158
+ const roundedUpSrcAmount = (0, react_4.useMemo)(() => {
154
159
  // Display the full transfer amount without rounding since users need to see the exact value they're transferring.
155
160
  // Use 21 significant digits (max allowed by Intl.NumberFormat)
156
161
  const formattedSrcAmount = srcToken
@@ -158,22 +163,37 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
158
163
  : undefined;
159
164
  return roundTokenAmount(formattedSrcAmount);
160
165
  }, [order.srcAmount, srcToken]);
166
+ // Calculate deposit amounts - moved here to be used in useCallback hooks
167
+ const depositedAmount = (0, react_4.useMemo)(() => {
168
+ return depositTxs ? depositTxs.reduce((acc, curr) => acc + BigInt(curr.amount), BigInt(0)) : BigInt(0);
169
+ }, [depositTxs]);
170
+ const depositDeficit = (0, react_4.useMemo)(() => {
171
+ return BigInt(order.srcAmount) - depositedAmount;
172
+ }, [order.srcAmount, depositedAmount]);
173
+ const depositEnoughAmount = (0, react_4.useMemo)(() => {
174
+ return depositDeficit <= BigInt(0);
175
+ }, [depositDeficit]);
176
+ const formattedDepositDeficit = (0, react_4.useMemo)(() => {
177
+ return (0, number_1.formatTokenAmount)(BigInt(depositDeficit), srcToken.decimals);
178
+ }, [depositDeficit, srcToken.decimals]);
161
179
  // Unified payment handler for both EOA and AA wallets
162
- const handleUnifiedPaymentProcess = (0, react_5.useCallback)(async () => {
180
+ const handleUnifiedPaymentProcess = (0, react_4.useCallback)(async () => {
163
181
  let txData;
164
182
  let value;
165
183
  let to;
184
+ // Use the existing depositDeficit calculation to determine amount to send
185
+ const amountToSend = depositDeficit > BigInt(0) ? depositDeficit : BigInt(order.srcAmount);
166
186
  if ((0, anyspend_1.isNativeToken)(order.srcTokenAddress)) {
167
187
  // Native token transfer
168
188
  to = order.globalAddress;
169
- value = BigInt(order.srcAmount);
189
+ value = amountToSend;
170
190
  }
171
191
  else {
172
192
  // ERC20 token transfer - encode the transfer function call using proper ABI
173
193
  txData = (0, viem_1.encodeFunctionData)({
174
194
  abi: viem_1.erc20Abi,
175
195
  functionName: "transfer",
176
- args: [order.globalAddress, BigInt(order.srcAmount)],
196
+ args: [order.globalAddress, amountToSend],
177
197
  });
178
198
  to = order.srcTokenAddress;
179
199
  value = BigInt(0);
@@ -182,12 +202,14 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
182
202
  if (txHash) {
183
203
  setTxHash(txHash);
184
204
  }
185
- }, [order, switchChainAndExecuteWithEOA]);
205
+ }, [order, switchChainAndExecuteWithEOA, depositDeficit]);
186
206
  // Main payment handler that triggers chain switch and payment
187
207
  const handlePayment = async () => {
188
208
  console.log("Initiating payment process. Target chain:", order.srcChain, "Current chain:", walletClient?.chain?.id);
189
209
  if (order.srcChain === anyspend_1.RELAY_SOLANA_MAINNET_CHAIN_ID) {
190
- await initiatePhantomTransfer(order.srcAmount, order.srcTokenAddress, order.globalAddress);
210
+ // Use the existing depositDeficit calculation to determine amount to send
211
+ const amountToSend = depositDeficit > BigInt(0) ? depositDeficit.toString() : order.srcAmount;
212
+ await initiatePhantomTransfer(amountToSend, order.srcTokenAddress, order.globalAddress);
191
213
  }
192
214
  else {
193
215
  // Use unified payment process for both EOA and AA wallets
@@ -195,7 +217,7 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
195
217
  }
196
218
  };
197
219
  // When waitingForDeposit is true, we show a message to the user to wait for the deposit to be processed.
198
- const setWaitingForDeposit = (0, react_5.useCallback)(() => {
220
+ const setWaitingForDeposit = (0, react_4.useCallback)(() => {
199
221
  if (disableUrlParamManagement)
200
222
  return;
201
223
  const params = new URLSearchParams(searchParams.toString());
@@ -203,7 +225,7 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
203
225
  router.push(`?${params}`);
204
226
  }, [router, searchParams, disableUrlParamManagement]);
205
227
  // Clean up URL parameters before closing modal or navigating back
206
- const cleanupUrlParams = (0, react_5.useCallback)(() => {
228
+ const cleanupUrlParams = (0, react_4.useCallback)(() => {
207
229
  if (disableUrlParamManagement)
208
230
  return;
209
231
  const params = new URLSearchParams(searchParams.toString());
@@ -216,25 +238,25 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
216
238
  }
217
239
  }, [router, searchParams, disableUrlParamManagement]);
218
240
  // Helper functions that clean up URL params before executing actions
219
- const handleCloseModal = (0, react_5.useCallback)(() => {
241
+ const handleCloseModal = (0, react_4.useCallback)(() => {
220
242
  cleanupUrlParams();
221
243
  setB3ModalOpen(false);
222
244
  }, [cleanupUrlParams, setB3ModalOpen]);
223
- const handleBack = (0, react_5.useCallback)(() => {
245
+ const handleBack = (0, react_4.useCallback)(() => {
224
246
  cleanupUrlParams();
225
247
  onBack?.();
226
248
  }, [cleanupUrlParams, onBack]);
227
- (0, react_5.useEffect)(() => {
249
+ (0, react_4.useEffect)(() => {
228
250
  if (txSuccess) {
229
251
  sonner_1.toast.success("Transaction successful! We are processing your order.", { duration: 10000 });
230
252
  setWaitingForDeposit();
231
253
  setTxHash(undefined);
232
254
  }
233
255
  }, [setWaitingForDeposit, txSuccess]);
234
- const isPhantomMobile = (0, react_5.useMemo)(() => navigator.userAgent.includes("Phantom"), []);
235
- const isPhantomBrowser = (0, react_5.useMemo)(() => window.phantom?.solana?.isPhantom, []);
256
+ const isPhantomMobile = (0, react_4.useMemo)(() => navigator.userAgent.includes("Phantom"), []);
257
+ const isPhantomBrowser = (0, react_4.useMemo)(() => window.phantom?.solana?.isPhantom, []);
236
258
  // Get connected Phantom wallet address if available
237
- const phantomWalletAddress = (0, react_5.useMemo)(() => {
259
+ const phantomWalletAddress = (0, react_4.useMemo)(() => {
238
260
  const phantom = window.phantom?.solana;
239
261
  if (phantom?.isConnected && phantom?.publicKey) {
240
262
  return phantom.publicKey.toString();
@@ -260,12 +282,6 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
260
282
  const formattedActualDstAmount = actualDstAmount
261
283
  ? (0, number_1.formatTokenAmount)(BigInt(actualDstAmount), dstToken.decimals)
262
284
  : undefined;
263
- const depositedAmount = depositTxs
264
- ? depositTxs.reduce((acc, curr) => acc + BigInt(curr.amount), BigInt(0))
265
- : BigInt(0);
266
- const depositDeficit = BigInt(order.srcAmount) - depositedAmount;
267
- const depositEnoughAmount = depositDeficit <= BigInt(0);
268
- const formattedDepositDeficit = (0, number_1.formatTokenAmount)(BigInt(depositDeficit), srcToken.decimals);
269
285
  const { text: statusText, status: statusDisplay } = (0, anyspend_1.getStatusDisplay)(order);
270
286
  const initiatePhantomTransfer = async (amountLamports, tokenAddress, recipientAddress) => {
271
287
  try {
@@ -398,8 +414,8 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
398
414
  }
399
415
  }
400
416
  };
401
- if (refundTxs) {
402
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "refund-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "Transaction Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_4.motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
417
+ if (refundTxs.length > 0) {
418
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "refund-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "Transaction Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { className: "pl-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_3.motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
403
419
  ? depositTxs.map(dTx => ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
404
420
  ? `Received payment`
405
421
  : `Received ${(0, number_1.formatTokenAmount)(BigInt(dTx.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTx, isProcessing: false }, dTx.txHash)))
@@ -408,11 +424,13 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
408
424
  : null] }) })] }) }), order.errorDetails && ((0, jsx_runtime_1.jsx)("div", { className: "flex justify-center", children: (0, jsx_runtime_1.jsx)("span", { className: "text-as-primary/50 text-center text-sm", style: { maxWidth: "40ch" }, children: (0, anyspend_1.getErrorDisplay)(order.errorDetails) }) })), (0, jsx_runtime_1.jsx)("button", { className: "order-close-button bg-as-brand flex w-full items-center justify-center gap-2 rounded-lg p-2 font-semibold text-white", onClick: mode === "page" ? handleBack : handleCloseModal, children: mode === "page" ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Return to Home ", (0, jsx_runtime_1.jsx)(lucide_react_1.Home, { className: "ml-2 h-4 w-4" })] })) : ("Close") })] }));
409
425
  }
410
426
  if (executeTx) {
411
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "execute-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "Transaction Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_4.motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
427
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "execute-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "Transaction Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { className: "pl-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_3.motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
412
428
  ? depositTxs.map(dTxs => ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
413
429
  ? `Received payment`
414
430
  : `Received ${(0, number_1.formatTokenAmount)(BigInt(dTxs.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTxs, isProcessing: false }, dTxs.txHash)))
415
- : null, (0, jsx_runtime_1.jsx)(TransactionDetails, { title: "Processed Transaction", chainId: order.srcChain, tx: relayTx, delay: 0.5, isProcessing: false }), (0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.type === "swap"
431
+ : null, relayTxs
432
+ ? relayTxs.map(relayTx => ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: "Processed Transaction", chainId: relayTx.chain, tx: relayTx, delay: 0.5, isProcessing: false }, relayTx.txHash)))
433
+ : null, (0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.type === "swap"
416
434
  ? "Processed Swap"
417
435
  : order.type === "mint_nft"
418
436
  ? "Minted NFT"
@@ -429,40 +447,27 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
429
447
  centerTruncate: centerTruncate_1.default,
430
448
  }), (0, jsx_runtime_1.jsx)(lucide_react_1.ExternalLink, { className: "ml-2 h-4 w-4" })] }) }) }), order.type === "join_tournament" && order.status === "executed" && ((0, jsx_runtime_1.jsxs)(react_1.ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "flex w-full items-center gap-2", disabled: txLoading || isSwitchingOrExecuting, onClick: handleCloseModal, children: [(0, jsx_runtime_1.jsx)("span", { className: "pl-4", children: "Continue to Tournament" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })), order.status === "executed" && ((0, jsx_runtime_1.jsx)("button", { className: "order-close-button bg-as-brand flex w-full items-center justify-center gap-2 rounded-lg p-2 font-semibold text-white", onClick: mode === "page" ? handleBack : handleCloseModal, children: mode === "page" ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Return to Home ", (0, jsx_runtime_1.jsx)(lucide_react_1.Home, { className: "ml-2 h-4 w-4" })] })) : ("Close") }))] }));
431
449
  }
432
- if (relayTx && relayTx.status === "success") {
433
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "more-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "More Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_4.motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
450
+ if (relayTxs.length > 0 && relayTxs.every(tx => tx.status === "success")) {
451
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "more-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "More Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { className: "pl-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_3.motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
434
452
  ? depositTxs.map(dTxs => ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
435
453
  ? `Received payment`
436
454
  : `Received ${(0, number_1.formatTokenAmount)(BigInt(dTxs.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTxs, isProcessing: false }, dTxs.txHash)))
437
- : null, order.srcChain === order.dstChain ? ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.type === "swap"
438
- ? "Processed Swap"
455
+ : null, relayTxs.map(relayTx => ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: "Processed Transaction", chainId: relayTx.chain, isProcessing: false, tx: relayTx, delay: 0.5 }))), order.status === "executing" && ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.type === "swap"
456
+ ? "Processing Swap"
439
457
  : order.type === "mint_nft"
440
- ? "Minted NFT"
458
+ ? "Minting NFT"
441
459
  : order.type === "join_tournament"
442
- ? "Joined Tournament"
460
+ ? "Joining Tournament"
443
461
  : order.type === "fund_tournament"
444
- ? "Funded Tournament"
445
- : "Processed Transaction", chainId: order.srcChain, isProcessing: false, tx: relayTx, delay: 0.5 })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(TransactionDetails, { title: "Processed Transaction", chainId: order.srcChain, isProcessing: false, tx: relayTx, delay: 0.5 }), (0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.type === "swap"
446
- ? "Processing Swap"
447
- : order.type === "mint_nft"
448
- ? "Minting NFT"
449
- : order.type === "join_tournament"
450
- ? "Joining Tournament"
451
- : order.type === "fund_tournament"
452
- ? "Funding Tournament"
453
- : "Processing Bridge", chainId: order.dstChain, isProcessing: true, tx: executeTx, delay: 1 })] }))] }) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex w-full flex-col gap-8", children: (0, jsx_runtime_1.jsx)(react_1.Button, { variant: "link", asChild: true, children: (0, jsx_runtime_1.jsxs)("a", { href: (0, anyspend_1.getExplorerTxUrl)(order.dstChain, relayTx.txHash), target: "_blank", className: "order-success-text text-as-primary/70 hover:text-as-primary", style: { whiteSpace: "normal" }, children: [getOrderSuccessText({
454
- order,
455
- tournament,
456
- formattedActualDstAmount,
457
- dstToken,
458
- recipientName,
459
- centerTruncate: centerTruncate_1.default,
460
- }), (0, jsx_runtime_1.jsx)(lucide_react_1.ExternalLink, { className: "ml-2 h-4 w-4" })] }) }) }), order.type === "join_tournament" && order.status === "executed" && ((0, jsx_runtime_1.jsxs)(react_1.ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "flex w-full items-center gap-2", disabled: txLoading || isSwitchingOrExecuting, onClick: handleCloseModal, children: [(0, jsx_runtime_1.jsx)("span", { className: "pl-4", children: "Continue to Tournament" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })), order.status === "executed" && ((0, jsx_runtime_1.jsx)("button", { className: "order-close-button bg-as-brand flex w-full items-center justify-center gap-2 rounded-lg p-2 font-semibold text-white", onClick: mode === "page" ? handleBack : handleCloseModal, children: mode === "page" ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Return to Home ", (0, jsx_runtime_1.jsx)(lucide_react_1.Home, { className: "ml-2 h-4 w-4" })] })) : ("Close") }))] }));
462
+ ? "Funding Tournament"
463
+ : order.type === "hype_duel"
464
+ ? "Depositing Hype Duel"
465
+ : "Processing Bridge", chainId: order.dstChain, isProcessing: true, tx: null, delay: 1 }))] }) })] }) }), order.type === "join_tournament" && order.status === "executed" && ((0, jsx_runtime_1.jsxs)(react_1.ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "flex w-full items-center gap-2", disabled: txLoading || isSwitchingOrExecuting, onClick: handleCloseModal, children: [(0, jsx_runtime_1.jsx)("span", { className: "pl-4", children: "Continue to Tournament" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] })), order.status === "executed" && ((0, jsx_runtime_1.jsx)("button", { className: "order-close-button bg-as-brand flex w-full items-center justify-center gap-2 rounded-lg p-2 font-semibold text-white", onClick: mode === "page" ? handleBack : handleCloseModal, children: mode === "page" ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Return to Home ", (0, jsx_runtime_1.jsx)(lucide_react_1.Home, { className: "ml-2 h-4 w-4" })] })) : ("Close") }))] }));
461
466
  }
462
467
  // This boolean indicates that user finish payment, and waiting for the deposit to be confirmed. We get this from query params (waitingForDeposit=true)
463
468
  const waitingForDeposit = new URLSearchParams(window.location.search).get("waitingForDeposit") === "true";
464
469
  if (depositTxs?.length || waitingForDeposit) {
465
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "deposit-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "Transaction Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_4.motion.div, { className: "from-as-brand/50 absolute left-[2px] top-0 z-10 w-[3px] bg-gradient-to-b from-20% via-purple-500/50 via-80% to-transparent", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1, ease: "easeInOut" } }) }), (depositTxs || []).map((dTxs, index) => ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
470
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), (0, jsx_runtime_1.jsx)(Accordion_1.Accordion, { type: "single", collapsible: true, className: "w-full", children: (0, jsx_runtime_1.jsxs)(Accordion_1.AccordionItem, { value: "deposit-details", children: [(0, jsx_runtime_1.jsx)(Accordion_1.AccordionTrigger, { children: "Transaction Details" }), (0, jsx_runtime_1.jsx)(Accordion_1.AccordionContent, { className: "pl-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-col gap-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: (0, jsx_runtime_1.jsx)(react_3.motion.div, { className: "from-as-brand/50 absolute left-[2px] top-0 z-10 w-[3px] bg-gradient-to-b from-20% via-purple-500/50 via-80% to-transparent", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1, ease: "easeInOut" } }) }), (depositTxs || []).map((dTxs, index) => ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
466
471
  ? `Received payment`
467
472
  : `Received ${(0, number_1.formatTokenAmount)(BigInt(dTxs.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTxs, isProcessing: index < (depositTxs || []).length - 1 ? false : !depositEnoughAmount }, dTxs.txHash))), statusDisplay === "failure" ? ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: statusText, chainId: order.srcChain, tx: null, isProcessing: false, delay: 0.5 })) : depositEnoughAmount ? ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.type === "swap"
468
473
  ? "Processing Swap"
@@ -474,7 +479,7 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
474
479
  ? "Funding Tournament"
475
480
  : "Processing Transaction", chainId: order.srcChain, tx: null, isProcessing: true, delay: 0.5 })) : ((0, jsx_runtime_1.jsx)(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
476
481
  ? `Waiting for payment`
477
- : `Waiting for deposit ${formattedDepositDeficit} ${srcToken.symbol}`, chainId: order.srcChain, tx: null, isProcessing: true, delay: 0.5 }))] }) })] }) })] }));
482
+ : `Waiting for deposit ${formattedDepositDeficit} ${srcToken.symbol}`, chainId: order.srcChain, tx: null, isProcessing: true, delay: 0.5 }))] }) })] }) }), !depositEnoughAmount && order.status !== "expired" && ((0, jsx_runtime_1.jsx)(InsufficientDepositPayment_1.InsufficientDepositPayment, { order: order, srcToken: srcToken, depositDeficit: depositDeficit, phantomWalletAddress: phantomWalletAddress, txLoading: txLoading, isSwitchingOrExecuting: isSwitchingOrExecuting, onPayment: handlePayment }))] }));
478
483
  }
479
484
  return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [statusDisplay === "processing" && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: order.onrampMetadata ? ((0, jsx_runtime_1.jsx)(PaymentVendorUI_1.default, { order: order, dstTokenSymbol: dstToken.symbol })) : effectiveCryptoPaymentMethod === CryptoPaymentMethod_1.CryptoPaymentMethodType.CONNECT_WALLET ? ((0, jsx_runtime_1.jsx)(ConnectWalletPayment_1.default, { order: order, onPayment: handlePayment, onCancel: handleBack, txLoading: txLoading, isSwitchingOrExecuting: isSwitchingOrExecuting, phantomWalletAddress: phantomWalletAddress, tournament: tournament, nft: nft })) : effectiveCryptoPaymentMethod === CryptoPaymentMethod_1.CryptoPaymentMethodType.TRANSFER_CRYPTO ? (
480
485
  // Transfer Crypto Payment Method - Show new card-based UI
@@ -486,11 +491,11 @@ exports.OrderDetails = (0, react_5.memo)(function OrderDetails({ mode = "modal",
486
491
  ? "Pay from Phantom Wallet"
487
492
  : "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
488
493
  ? (0, centerTruncate_1.default)(phantomWalletAddress, 6)
489
- : (0, centerTruncate_1.default)(account?.address || "", 6)] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-full flex-col items-center gap-2", children: [(0, jsx_runtime_1.jsxs)(react_1.ShinyButton, { accentColor: colorMode === "dark" ? "#ffffff" : "#000000", className: "flex w-5/6 items-center gap-2 sm:px-0", onClick: () => setShowQRCode(true), children: [(0, jsx_runtime_1.jsx)("span", { className: "pl-4 text-lg md:text-sm", children: "Pay from a different wallet" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(react_3.WalletMetamask, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_3.WalletCoinbase, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_3.WalletPhantom, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_3.WalletTrust, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_3.WalletWalletConnect, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)("span", { className: "label-style text-as-primary/30 text-xs", children: "& more" })] })] })] }) })) : (
494
+ : (0, centerTruncate_1.default)(account?.address || "", 6)] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-full flex-col items-center gap-2", children: [(0, jsx_runtime_1.jsxs)(react_1.ShinyButton, { accentColor: colorMode === "dark" ? "#ffffff" : "#000000", className: "flex w-5/6 items-center gap-2 sm:px-0", onClick: () => setShowQRCode(true), children: [(0, jsx_runtime_1.jsx)("span", { className: "pl-4 text-lg md:text-sm", children: "Pay from a different wallet" }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "h-4 w-4" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(react_2.WalletMetamask, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletCoinbase, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletPhantom, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletTrust, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletWalletConnect, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)("span", { className: "label-style text-as-primary/30 text-xs", children: "& more" })] })] })] }) })) : (
490
495
  // Default case - existing QR code flow
491
- (0, jsx_runtime_1.jsx)(react_4.motion.div, { initial: { opacity: 0, filter: "blur(10px)" }, animate: { opacity: 1, filter: "blur(0px)" }, transition: { duration: 0.5, ease: "easeInOut" }, className: "flex w-full items-center justify-evenly gap-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "mt-8 flex flex-col items-center rounded-lg bg-white p-6 pb-3", children: [(0, jsx_runtime_1.jsx)(qrcode_react_1.QRCodeSVG, { value: (0, anyspend_1.getPaymentUrl)(order.globalAddress, BigInt(order.srcAmount), order.srcTokenAddress === anyspend_1.RELAY_ETH_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress, order.srcChain, srcToken?.decimals), className: "max-w-[200px]" }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-3 flex items-center justify-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)("span", { className: "label-style text-as-brand/70 text-sm", children: "Scan with" }), (0, jsx_runtime_1.jsxs)(react_1.TextLoop, { interval: 3, children: [(0, jsx_runtime_1.jsx)(react_3.WalletMetamask, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_3.WalletCoinbase, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_3.WalletPhantom, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_3.WalletTrust, { className: "h-5 w-5", variant: "branded" })] })] })] }) }))] })) })), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-full items-center justify-center gap-1 text-sm", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary/30", children: "Time remaining:" }), (0, jsx_runtime_1.jsx)("div", { className: "text-as-primary", children: depositEnoughAmount ? ("Received") : order.status === "expired" ? ("Expired") : ((0, jsx_runtime_1.jsx)(react_timeago_1.default, { date: new Date(order.expiredAt), live: true })) })] }), statusDisplay !== "processing" && ((0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount })), (0, jsx_runtime_1.jsxs)("button", { className: "flex w-full items-center justify-center gap-2", onClick: handleBack, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.RefreshCcw, { className: "ml-2 h-4 w-4" }), " Cancel and start over"] })] }));
496
+ (0, jsx_runtime_1.jsx)(react_3.motion.div, { initial: { opacity: 0, filter: "blur(10px)" }, animate: { opacity: 1, filter: "blur(0px)" }, transition: { duration: 0.5, ease: "easeInOut" }, className: "flex w-full items-center justify-evenly gap-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "mt-8 flex flex-col items-center rounded-lg bg-white p-6 pb-3", children: [(0, jsx_runtime_1.jsx)(qrcode_react_1.QRCodeSVG, { value: (0, anyspend_1.getPaymentUrl)(order.globalAddress, BigInt(order.srcAmount), order.srcTokenAddress === anyspend_1.RELAY_ETH_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress, order.srcChain, srcToken?.decimals), className: "max-w-[200px]" }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-3 flex items-center justify-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)("span", { className: "label-style text-as-brand/70 text-sm", children: "Scan with" }), (0, jsx_runtime_1.jsxs)(react_1.TextLoop, { interval: 3, children: [(0, jsx_runtime_1.jsx)(react_2.WalletMetamask, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletCoinbase, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletPhantom, { className: "h-5 w-5", variant: "branded" }), (0, jsx_runtime_1.jsx)(react_2.WalletTrust, { className: "h-5 w-5", variant: "branded" })] })] })] }) }))] })) })), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-full items-center justify-center gap-1 text-sm", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary/30", children: "Time remaining:" }), (0, jsx_runtime_1.jsx)("div", { className: "text-as-primary", children: depositEnoughAmount ? ("Received") : order.status === "expired" ? ("Expired") : ((0, jsx_runtime_1.jsx)(react_timeago_1.default, { date: new Date(order.expiredAt), live: true })) })] }), statusDisplay !== "processing" && ((0, jsx_runtime_1.jsx)(OrderDetailsCollapsible_1.OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount })), (0, jsx_runtime_1.jsxs)("button", { className: "flex w-full items-center justify-center gap-2", onClick: handleBack, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.RefreshCcw, { className: "ml-2 h-4 w-4" }), " Cancel and start over"] })] }));
492
497
  });
493
498
  function TransactionDetails({ title, chainId, tx, isProcessing, delay, }) {
494
- return ((0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-1 items-center justify-between gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex grow items-center gap-4", children: [(0, jsx_runtime_1.jsx)(react_4.motion.div, { className: "bg-as-surface-secondary relative h-10 w-10 rounded-full", children: isProcessing ? ((0, jsx_runtime_1.jsx)(react_4.motion.div, { initial: { opacity: 0, scale: 0.3 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeInOut", delay }, className: "border-as-border-secondary absolute z-10 m-2 flex h-6 w-6 items-center justify-center rounded-full border-2 shadow-lg backdrop-blur-sm", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "text-as-primary h-4 w-4 animate-spin" }) })) : ((0, jsx_runtime_1.jsx)(react_4.motion.div, { initial: { opacity: 0, scale: 0.3 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeOut", delay }, className: "bg-as-success-secondary absolute z-10 m-2 flex h-6 w-6 items-center justify-center rounded-full border border-white/30 shadow-lg backdrop-blur-sm", children: (0, jsx_runtime_1.jsx)(lucide_react_1.CheckIcon, { className: "text-as-content-icon-success h-4 w-4" }) })) }), (0, jsx_runtime_1.jsx)(react_4.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, transition: { duration: 0.3, ease: "easeInOut", delay }, className: "shrink-0 text-base", children: isProcessing ? ((0, jsx_runtime_1.jsx)(react_1.TextShimmer, { duration: 1, children: title })) : ((0, jsx_runtime_1.jsx)("span", { className: "text-as-primary", children: title })) })] }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-1", children: tx ? ((0, jsx_runtime_1.jsx)(react_4.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, transition: { duration: 0.3, ease: "easeInOut", delay: (delay || 0) + 0.3 }, className: "flex items-center gap-3", children: (0, jsx_runtime_1.jsx)("a", { href: (0, anyspend_1.getExplorerTxUrl)(chainId, tx.txHash), target: "_blank", children: (0, jsx_runtime_1.jsx)("div", { className: "text-as-primary/30 font-mono text-xs", children: (0, centerTruncate_1.default)(tx?.txHash, 6) }) }) })) : null })] }));
499
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "relative flex w-full flex-1 items-center justify-between gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex grow items-center gap-4", children: [(0, jsx_runtime_1.jsx)(react_3.motion.div, { className: "bg-as-surface-secondary relative h-10 w-10 rounded-full", children: isProcessing ? ((0, jsx_runtime_1.jsx)(react_3.motion.div, { initial: { opacity: 0, scale: 0.3 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeInOut", delay }, className: "border-as-border-secondary absolute z-10 m-2 flex h-6 w-6 items-center justify-center rounded-full border-2 shadow-lg backdrop-blur-sm", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "text-as-primary h-4 w-4 animate-spin" }) })) : ((0, jsx_runtime_1.jsx)(react_3.motion.div, { initial: { opacity: 0, scale: 0.3 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeOut", delay }, className: "bg-as-success-secondary absolute z-10 m-2 flex h-6 w-6 items-center justify-center rounded-full border border-white/30 shadow-lg backdrop-blur-sm", children: (0, jsx_runtime_1.jsx)(lucide_react_1.CheckIcon, { className: "text-as-content-icon-success h-4 w-4" }) })) }), (0, jsx_runtime_1.jsx)(react_3.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, transition: { duration: 0.3, ease: "easeInOut", delay }, className: "shrink-0 text-base", children: isProcessing ? ((0, jsx_runtime_1.jsx)(react_1.TextShimmer, { duration: 1, children: title })) : ((0, jsx_runtime_1.jsx)("span", { className: "text-as-primary", children: title })) })] }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-1", children: tx ? ((0, jsx_runtime_1.jsx)(react_3.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, transition: { duration: 0.3, ease: "easeInOut", delay: (delay || 0) + 0.3 }, className: "flex items-center gap-3", children: (0, jsx_runtime_1.jsx)("a", { href: (0, anyspend_1.getExplorerTxUrl)(chainId, tx.txHash), target: "_blank", children: (0, jsx_runtime_1.jsx)("div", { className: "text-as-primary/30 font-mono text-xs", children: (0, centerTruncate_1.default)(tx?.txHash, 6) }) }) })) : null })] }));
495
500
  }
496
501
  exports.OrderDetailsLoadingView = ((0, jsx_runtime_1.jsxs)("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-4", children: [(0, jsx_runtime_1.jsxs)(react_1.Badge, { variant: "default", className: "hover:bg-b3-react-background flex items-center gap-3 border-white/20 bg-white/10 px-4 py-1 text-base transition-colors", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "text-as-primary h-4 w-4 animate-spin" }), (0, jsx_runtime_1.jsx)(react_1.TextShimmer, { duration: 1, className: "font-sf-rounded text-base font-semibold", children: "Loading..." })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-full flex-1 flex-col", children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-4 flex flex-col gap-1", children: [(0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "h-4 w-24" }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-2 flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "h-8 w-48" }), (0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "ml-4 h-8 w-32" })] }), (0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "mt-4 h-8 w-24" })] }), (0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "mb-4 h-12 w-full" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-full items-center justify-between gap-4", children: [(0, jsx_runtime_1.jsxs)(react_1.Skeleton, { className: "rounded-lg p-6 pb-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "h-[200px] w-[200px]" }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3 flex items-center justify-center gap-2", children: (0, jsx_runtime_1.jsx)("div", { className: "h-5 w-5 rounded-full" }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-1 flex-col gap-2", children: [1, 2, 3].map(i => ((0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "h-10 w-full" }, i))) })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-b3-react-background mt-8 w-full rounded-lg p-4", children: [(0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "mb-3 h-4 w-48" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-4", children: [(0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "h-10 flex-1" }), (0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "h-10 flex-1" })] })] }), (0, jsx_runtime_1.jsx)(react_1.Skeleton, { className: "h-10 w-full" })] }));
@@ -32,10 +32,10 @@ exports.OrderStatus = (0, react_2.memo)(function OrderStatus({ order, selectedCr
32
32
  return (0, jsx_runtime_1.jsx)(StepProgress_1.StepProgress, { steps: paymentSteps, currentStepIndex: 0 });
33
33
  }
34
34
  }
35
- if (["relay", "sending_token_from_vault"].includes(order.status)) {
35
+ if (["relay", "executing", "sending_token_from_vault"].includes(order.status)) {
36
36
  return (0, jsx_runtime_1.jsx)(StepProgress_1.StepProgress, { steps: paymentSteps, currentStepIndex: 1 });
37
37
  }
38
- if (!isComplete && displayStatus !== "failure") {
38
+ if (selectedCryptoPaymentMethod === "transfer_crypto" && order.status === "scanning_deposit_transaction") {
39
39
  return null;
40
40
  }
41
41
  return ((0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-center gap-2", children: isComplete ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center", children: [(0, jsx_runtime_1.jsx)("div", { className: `bg-as-success-secondary relative flex h-10 w-10 items-center justify-center rounded-full`, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Check, { className: "text-as-content-icon-success h-6 w-6" }) }), (0, jsx_runtime_1.jsx)("h2", { className: "text-as-primary mt-4 text-xl font-semibold", children: text }), (0, jsx_runtime_1.jsx)("div", { className: "text-as-tertiarry mt-1 text-center", children: description })] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-as-error-secondary flex h-10 w-10 items-center justify-center rounded-full text-base", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "text-as-content-icon-error h-5 w-5" }) }), (0, jsx_runtime_1.jsx)("div", { className: "font-sf-rounded text-as-content-primary mt-4 text-lg font-semibold", children: text }), (0, jsx_runtime_1.jsx)("div", { className: "text-as-tertiarry text-center", style: { whiteSpace: "normal" }, children: description })] })) }));