@b3dotfun/sdk 0.0.87 → 0.0.88

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 (175) hide show
  1. package/README.md +2 -1
  2. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +5 -0
  3. package/dist/cjs/anyspend/react/components/AnySpend.js +77 -73
  4. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +0 -1
  5. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +1 -1
  6. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +1 -2
  7. package/dist/cjs/anyspend/react/components/AnySpendDeposit.d.ts +122 -0
  8. package/dist/cjs/anyspend/react/components/AnySpendDeposit.js +190 -0
  9. package/dist/cjs/anyspend/react/components/QRDeposit.d.ts +43 -0
  10. package/dist/cjs/anyspend/react/components/QRDeposit.js +146 -0
  11. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +17 -12
  12. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.d.ts +2 -0
  13. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +12 -5
  14. package/dist/cjs/anyspend/react/components/common/OrderStatus.js +2 -2
  15. package/dist/cjs/anyspend/react/components/common/WarningText.d.ts +32 -0
  16. package/dist/cjs/anyspend/react/components/common/WarningText.js +36 -0
  17. package/dist/cjs/anyspend/react/components/icons/CreditCardIcon.d.ts +6 -0
  18. package/dist/cjs/anyspend/react/components/icons/CreditCardIcon.js +6 -0
  19. package/dist/cjs/anyspend/react/components/icons/QrCodeIcon.d.ts +6 -0
  20. package/dist/cjs/anyspend/react/components/icons/QrCodeIcon.js +6 -0
  21. package/dist/cjs/anyspend/react/components/index.d.ts +2 -0
  22. package/dist/cjs/anyspend/react/components/index.js +3 -1
  23. package/dist/cjs/anyspend/react/hooks/index.d.ts +1 -0
  24. package/dist/cjs/anyspend/react/hooks/index.js +1 -0
  25. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +2 -2
  26. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +35 -11
  27. package/dist/cjs/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +24 -0
  28. package/dist/cjs/anyspend/react/hooks/useCreateDepositFirstOrder.js +86 -0
  29. package/dist/cjs/anyspend/react/hooks/useSigMint.d.ts +1 -1
  30. package/dist/cjs/anyspend/utils/format.js +28 -5
  31. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +2 -1
  32. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +17 -47
  33. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.native.js +6 -7
  34. package/dist/cjs/global-account/react/components/B3Provider/types.d.ts +0 -5
  35. package/dist/cjs/global-account/react/components/B3Provider/types.js +4 -4
  36. package/dist/cjs/global-account/react/components/B3Provider/useB3.d.ts +1 -0
  37. package/dist/cjs/global-account/react/components/B3Provider/useB3.js +1 -0
  38. package/dist/cjs/global-account/react/components/B3Provider/useB3Account.d.ts +1 -0
  39. package/dist/cjs/global-account/react/components/B3Provider/useB3Account.js +10 -0
  40. package/dist/cjs/global-account/react/components/B3Provider/useB3Config.d.ts +9 -0
  41. package/dist/cjs/global-account/react/components/B3Provider/useB3Config.js +23 -0
  42. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +1 -1
  43. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +1 -2
  44. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +2 -1
  45. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +2 -1
  46. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3.js +2 -1
  47. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +2 -1
  48. package/dist/cjs/global-account/react/components/index.d.ts +2 -0
  49. package/dist/cjs/global-account/react/components/index.js +7 -3
  50. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +3 -2
  51. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +1 -1
  52. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.d.ts +7 -0
  53. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.js +42 -0
  54. package/dist/cjs/global-account/react/hooks/useTurnkeyAuth.js +6 -4
  55. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +2 -2
  56. package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +1 -1
  57. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +4 -0
  58. package/dist/esm/anyspend/react/components/AnySpend.d.ts +5 -0
  59. package/dist/esm/anyspend/react/components/AnySpend.js +77 -73
  60. package/dist/esm/anyspend/react/components/AnySpendCustom.js +0 -1
  61. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +1 -1
  62. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +1 -2
  63. package/dist/esm/anyspend/react/components/AnySpendDeposit.d.ts +122 -0
  64. package/dist/esm/anyspend/react/components/AnySpendDeposit.js +187 -0
  65. package/dist/esm/anyspend/react/components/QRDeposit.d.ts +43 -0
  66. package/dist/esm/anyspend/react/components/QRDeposit.js +143 -0
  67. package/dist/esm/anyspend/react/components/common/OrderDetails.js +17 -12
  68. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.d.ts +2 -0
  69. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +12 -5
  70. package/dist/esm/anyspend/react/components/common/OrderStatus.js +2 -2
  71. package/dist/esm/anyspend/react/components/common/WarningText.d.ts +32 -0
  72. package/dist/esm/anyspend/react/components/common/WarningText.js +32 -0
  73. package/dist/esm/anyspend/react/components/icons/CreditCardIcon.d.ts +6 -0
  74. package/dist/esm/anyspend/react/components/icons/CreditCardIcon.js +2 -0
  75. package/dist/esm/anyspend/react/components/icons/QrCodeIcon.d.ts +6 -0
  76. package/dist/esm/anyspend/react/components/icons/QrCodeIcon.js +2 -0
  77. package/dist/esm/anyspend/react/components/index.d.ts +2 -0
  78. package/dist/esm/anyspend/react/components/index.js +1 -0
  79. package/dist/esm/anyspend/react/hooks/index.d.ts +1 -0
  80. package/dist/esm/anyspend/react/hooks/index.js +1 -0
  81. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +2 -2
  82. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +35 -11
  83. package/dist/esm/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +24 -0
  84. package/dist/esm/anyspend/react/hooks/useCreateDepositFirstOrder.js +83 -0
  85. package/dist/esm/anyspend/react/hooks/useSigMint.d.ts +1 -1
  86. package/dist/esm/anyspend/utils/format.js +28 -5
  87. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -2
  88. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +21 -51
  89. package/dist/esm/global-account/react/components/B3Provider/B3Provider.native.js +6 -7
  90. package/dist/esm/global-account/react/components/B3Provider/types.d.ts +0 -5
  91. package/dist/esm/global-account/react/components/B3Provider/types.js +4 -4
  92. package/dist/esm/global-account/react/components/B3Provider/useB3.d.ts +1 -0
  93. package/dist/esm/global-account/react/components/B3Provider/useB3.js +1 -0
  94. package/dist/esm/global-account/react/components/B3Provider/useB3Account.d.ts +1 -0
  95. package/dist/esm/global-account/react/components/B3Provider/useB3Account.js +6 -0
  96. package/dist/esm/global-account/react/components/B3Provider/useB3Config.d.ts +9 -0
  97. package/dist/esm/global-account/react/components/B3Provider/useB3Config.js +19 -0
  98. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +2 -2
  99. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +2 -3
  100. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +3 -2
  101. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +3 -2
  102. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3.js +3 -2
  103. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +3 -2
  104. package/dist/esm/global-account/react/components/index.d.ts +2 -0
  105. package/dist/esm/global-account/react/components/index.js +2 -0
  106. package/dist/esm/global-account/react/hooks/useAccountWallet.js +4 -3
  107. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +1 -1
  108. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.d.ts +7 -0
  109. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.js +39 -0
  110. package/dist/esm/global-account/react/hooks/useTurnkeyAuth.js +6 -4
  111. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +2 -2
  112. package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +1 -1
  113. package/dist/esm/global-account/react/stores/useModalStore.d.ts +4 -0
  114. package/dist/styles/index.css +1 -1
  115. package/dist/types/anyspend/react/components/AnySpend.d.ts +5 -0
  116. package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +1 -1
  117. package/dist/types/anyspend/react/components/AnySpendDeposit.d.ts +122 -0
  118. package/dist/types/anyspend/react/components/QRDeposit.d.ts +43 -0
  119. package/dist/types/anyspend/react/components/common/OrderDetailsCollapsible.d.ts +2 -0
  120. package/dist/types/anyspend/react/components/common/WarningText.d.ts +32 -0
  121. package/dist/types/anyspend/react/components/icons/CreditCardIcon.d.ts +6 -0
  122. package/dist/types/anyspend/react/components/icons/QrCodeIcon.d.ts +6 -0
  123. package/dist/types/anyspend/react/components/index.d.ts +2 -0
  124. package/dist/types/anyspend/react/hooks/index.d.ts +1 -0
  125. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +2 -2
  126. package/dist/types/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +24 -0
  127. package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
  128. package/dist/types/global-account/react/components/B3Provider/types.d.ts +0 -5
  129. package/dist/types/global-account/react/components/B3Provider/useB3.d.ts +1 -0
  130. package/dist/types/global-account/react/components/B3Provider/useB3Account.d.ts +1 -0
  131. package/dist/types/global-account/react/components/B3Provider/useB3Config.d.ts +9 -0
  132. package/dist/types/global-account/react/components/index.d.ts +2 -0
  133. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +1 -1
  134. package/dist/types/global-account/react/hooks/useAutoSelectWallet.d.ts +7 -0
  135. package/dist/types/global-account/react/hooks/useUserQuery.d.ts +1 -1
  136. package/dist/types/global-account/react/stores/useModalStore.d.ts +4 -0
  137. package/package.json +1 -1
  138. package/src/anyspend/react/components/AnySpend.tsx +105 -85
  139. package/src/anyspend/react/components/AnySpendCustom.tsx +0 -2
  140. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +2 -3
  141. package/src/anyspend/react/components/AnySpendDeposit.tsx +578 -0
  142. package/src/anyspend/react/components/QRDeposit.tsx +348 -0
  143. package/src/anyspend/react/components/common/OrderDetails.tsx +26 -8
  144. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +20 -8
  145. package/src/anyspend/react/components/common/OrderStatus.tsx +2 -2
  146. package/src/anyspend/react/components/common/WarningText.tsx +52 -0
  147. package/src/anyspend/react/components/icons/CreditCardIcon.tsx +25 -0
  148. package/src/anyspend/react/components/icons/QrCodeIcon.tsx +25 -0
  149. package/src/anyspend/react/components/icons/credit-card.svg +5 -0
  150. package/src/anyspend/react/components/icons/qr-code.svg +5 -0
  151. package/src/anyspend/react/components/index.ts +2 -0
  152. package/src/anyspend/react/hooks/index.ts +1 -0
  153. package/src/anyspend/react/hooks/useAnyspendFlow.ts +37 -12
  154. package/src/anyspend/react/hooks/useCreateDepositFirstOrder.ts +110 -0
  155. package/src/anyspend/utils/format.ts +33 -5
  156. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +10 -2
  157. package/src/global-account/react/components/B3Provider/B3Provider.native.tsx +6 -7
  158. package/src/global-account/react/components/B3Provider/B3Provider.tsx +20 -71
  159. package/src/global-account/react/components/B3Provider/types.ts +8 -9
  160. package/src/global-account/react/components/B3Provider/useB3.ts +1 -0
  161. package/src/global-account/react/components/B3Provider/useB3Account.ts +7 -0
  162. package/src/global-account/react/components/B3Provider/useB3Config.ts +34 -0
  163. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +2 -2
  164. package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +2 -3
  165. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +10 -2
  166. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +3 -2
  167. package/src/global-account/react/components/SignInWithB3/SignInWithB3.tsx +2 -2
  168. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +5 -2
  169. package/src/global-account/react/components/index.ts +2 -0
  170. package/src/global-account/react/hooks/useAccountWallet.tsx +4 -3
  171. package/src/global-account/react/hooks/useAutoSelectWallet.ts +51 -0
  172. package/src/global-account/react/hooks/useTurnkeyAuth.ts +7 -5
  173. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +2 -2
  174. package/src/global-account/react/stores/useModalStore.ts +4 -0
  175. package/src/styles/index.css +2 -0
@@ -50,7 +50,7 @@ export function AnySpend(props) {
50
50
  const fingerprintConfig = getFingerprintConfig();
51
51
  return (_jsx(AnySpendFingerprintWrapper, { fingerprint: fingerprintConfig, children: _jsx(AnySpendInner, { ...props }) }));
52
52
  }
53
- function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode = "modal", defaultActiveTab = "crypto", loadOrder, hideTransactionHistoryButton, recipientAddress: recipientAddressFromProps, onTokenSelect, onSuccess, customUsdInputValues, }) {
53
+ function AnySpendInner({ sourceChainId, destinationTokenAddress, destinationTokenChainId, mode = "modal", defaultActiveTab = "crypto", loadOrder, hideTransactionHistoryButton, recipientAddress: recipientAddressFromProps, onTokenSelect, onSuccess, customUsdInputValues, hideHeader, hideBottomNavigation = false, disableUrlParamManagement = false, }) {
54
54
  const searchParams = useSearchParamsSSR();
55
55
  const router = useRouter();
56
56
  const { partnerId } = useB3();
@@ -90,7 +90,7 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
90
90
  // const [newRecipientAddress, setNewRecipientAddress] = useState("");
91
91
  // const recipientInputRef = useRef<HTMLInputElement>(null);
92
92
  // Get initial chain IDs from URL or defaults
93
- const initialSrcChainId = parseInt(searchParams.get("fromChainId") || "0") || mainnet.id;
93
+ const initialSrcChainId = sourceChainId || parseInt(searchParams.get("fromChainId") || "0") || mainnet.id;
94
94
  const initialDstChainId = parseInt(searchParams.get("toChainId") || "0") || (isBuyMode ? destinationTokenChainId : base.id);
95
95
  // State for source chain/token selection
96
96
  const [selectedSrcChainId, setSelectedSrcChainId] = useState(initialSrcChainId);
@@ -183,8 +183,8 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
183
183
  }, [selectedDstToken.address, selectedDstToken.chainId]);
184
184
  // Load swap configuration from URL on initial render
185
185
  useEffect(() => {
186
- // Skip if we've already processed the URL or if we have an order to load
187
- if (initialUrlProcessed.current || loadOrder)
186
+ // Skip if we've already processed the URL, if we have an order to load, or if URL param management is disabled
187
+ if (initialUrlProcessed.current || loadOrder || disableUrlParamManagement)
188
188
  return;
189
189
  try {
190
190
  const tabParam = searchParams.get("tab");
@@ -217,7 +217,7 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
217
217
  }
218
218
  // Mark that we've processed the initial URL
219
219
  initialUrlProcessed.current = true;
220
- }, [searchParams, loadOrder]);
220
+ }, [searchParams, loadOrder, disableUrlParamManagement]);
221
221
  // Update URL when swap configuration changes - but not on initial load
222
222
  const updateSwapParamsInURL = useCallback(() => {
223
223
  // Skip if:
@@ -228,7 +228,8 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
228
228
  activePanel !== PanelView.MAIN ||
229
229
  !initialUrlProcessed.current ||
230
230
  searchParams.has("orderId") ||
231
- mode === "modal")
231
+ mode === "modal" ||
232
+ disableUrlParamManagement)
232
233
  return;
233
234
  // Create a representation of the current state
234
235
  const currentState = {
@@ -288,6 +289,7 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
288
289
  dstAmount,
289
290
  router,
290
291
  srcAmountOnRamp,
292
+ disableUrlParamManagement,
291
293
  ]);
292
294
  // Update URL when relevant state changes - but only after initial render
293
295
  useEffect(() => {
@@ -473,20 +475,20 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
473
475
  setOrderId(orderId);
474
476
  // setNewRecipientAddress("");
475
477
  navigateToPanel(PanelView.ORDER_DETAILS, "forward");
476
- // Debug: Check payment method before setting URL
477
- console.log("Creating order - selectedCryptoPaymentMethod:", selectedCryptoPaymentMethod);
478
- // Add orderId and payment method to URL for persistence
479
- const params = new URLSearchParams(searchParams.toString()); // Preserve existing params
480
- params.set("orderId", orderId);
481
- if (effectiveCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
482
- console.log("Setting cryptoPaymentMethod in URL:", effectiveCryptoPaymentMethod);
483
- params.set("cryptoPaymentMethod", effectiveCryptoPaymentMethod);
484
- }
485
- else {
486
- console.log("Payment method is NONE, not setting in URL");
478
+ if (!disableUrlParamManagement) {
479
+ // Debug: Check payment method before setting URL
480
+ console.log("Creating order - selectedCryptoPaymentMethod:", selectedCryptoPaymentMethod);
481
+ // Add orderId and payment method to URL for persistence
482
+ const params = new URLSearchParams(searchParams.toString()); // Preserve existing params
483
+ params.set("orderId", orderId);
484
+ if (effectiveCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
485
+ params.set("cryptoPaymentMethod", effectiveCryptoPaymentMethod);
486
+ }
487
+ else {
488
+ console.log("Payment method is NONE, not setting in URL");
489
+ }
490
+ router.push(`${window.location.pathname}?${params.toString()}`);
487
491
  }
488
- console.log("Final URL params:", params.toString());
489
- router.push(`${window.location.pathname}?${params.toString()}`);
490
492
  },
491
493
  onError: error => {
492
494
  console.error(error);
@@ -499,11 +501,13 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
499
501
  const orderId = data.data.id;
500
502
  setOrderId(orderId);
501
503
  navigateToPanel(PanelView.ORDER_DETAILS, "forward");
502
- // Add orderId and payment method to URL for persistence
503
- const params = new URLSearchParams(searchParams.toString());
504
- params.set("orderId", orderId);
505
- params.set("paymentMethod", "fiat");
506
- router.push(`${window.location.pathname}?${params.toString()}`);
504
+ if (!disableUrlParamManagement) {
505
+ // Add orderId and payment method to URL for persistence
506
+ const params = new URLSearchParams(searchParams.toString());
507
+ params.set("orderId", orderId);
508
+ params.set("paymentMethod", "fiat");
509
+ router.push(`${window.location.pathname}?${params.toString()}`);
510
+ }
507
511
  },
508
512
  onError: error => {
509
513
  console.error(error);
@@ -631,11 +635,13 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
631
635
  type: "anySpendOrderHistory",
632
636
  showBackButton: false,
633
637
  });
634
- // Remove orderId and paymentMethod from URL when going back to history
635
- const params = new URLSearchParams(searchParams.toString());
636
- params.delete("orderId");
637
- params.delete("paymentMethod");
638
- router.push(`${window.location.pathname}?${params.toString()}`);
638
+ if (!disableUrlParamManagement) {
639
+ // Remove orderId and paymentMethod from URL when going back to history
640
+ const params = new URLSearchParams(searchParams.toString());
641
+ params.delete("orderId");
642
+ params.delete("paymentMethod");
643
+ router.push(`${window.location.pathname}?${params.toString()}`);
644
+ }
639
645
  };
640
646
  // Handle crypto swap creation
641
647
  const handleCryptoSwap = async (method) => {
@@ -744,22 +750,24 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
744
750
  // const setDynamicModalContentType = useModalStore(state => state.setB3ModalContentType);
745
751
  // Update useEffect for URL parameter to not override loadOrder
746
752
  useEffect(() => {
747
- if (loadOrder)
748
- return; // Skip if we have a loadOrder
753
+ if (loadOrder || disableUrlParamManagement)
754
+ return; // Skip if we have a loadOrder or URL param management is disabled
749
755
  const orderIdParam = searchParams.get("orderId");
750
756
  if (orderIdParam) {
751
757
  setOrderId(orderIdParam);
752
758
  setActivePanel(PanelView.ORDER_DETAILS);
753
759
  }
754
- }, [searchParams, loadOrder]);
760
+ }, [searchParams, loadOrder, disableUrlParamManagement]);
755
761
  const onSelectOrder = (selectedOrderId) => {
756
762
  setOrderId(selectedOrderId);
757
763
  navigateToPanel(PanelView.ORDER_DETAILS, "forward");
758
- // Update URL with the new orderId and preserve existing parameters
759
- const params = new URLSearchParams(searchParams.toString());
760
- params.set("orderId", selectedOrderId);
761
- // Keep existing paymentMethod if present
762
- router.push(`${window.location.pathname}?${params.toString()}`);
764
+ if (!disableUrlParamManagement) {
765
+ // Update URL with the new orderId and preserve existing parameters
766
+ const params = new URLSearchParams(searchParams.toString());
767
+ params.set("orderId", selectedOrderId);
768
+ // Keep existing paymentMethod if present
769
+ router.push(`${window.location.pathname}?${params.toString()}`);
770
+ }
763
771
  };
764
772
  // Save custom recipients to local storage when they change
765
773
  useEffect(() => {
@@ -811,7 +819,7 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
811
819
  // Reset payment methods when going back
812
820
  resetPaymentMethods();
813
821
  } })) }) }));
814
- const mainView = (_jsxs("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2 pt-5", children: [_jsxs("div", { className: "flex w-full max-w-full flex-col items-center gap-2 px-5", children: [isBuyMode && (_jsxs("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: [selectedDstToken.metadata?.logoURI && (_jsx("div", { className: "relative", children: _jsx("img", { src: selectedDstToken.metadata.logoURI, alt: selectedDstToken.symbol, className: "border-as-stroke h-12 w-12 rounded-full border-2 shadow-md" }) })), _jsx("div", { children: _jsxs("h1", { className: "text-as-primary text-xl font-bold", children: ["Buy ", selectedDstToken.symbol] }) })] })), _jsx(TabSection, { activeTab: activeTab, setActiveTab: tab => {
822
+ const mainView = (_jsxs("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2 pt-5", children: [_jsxs("div", { className: "flex w-full max-w-full flex-col items-center gap-2 px-5", children: [isBuyMode && !hideHeader && (_jsxs("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: [selectedDstToken.metadata?.logoURI && (_jsx("div", { className: "relative", children: _jsx("img", { src: selectedDstToken.metadata.logoURI, alt: selectedDstToken.symbol, className: "border-as-stroke h-12 w-12 rounded-full border-2 shadow-md" }) })), _jsx("div", { children: _jsxs("h1", { className: "text-as-primary text-xl font-bold", children: ["Buy ", selectedDstToken.symbol] }) })] })), _jsx(TabSection, { activeTab: activeTab, setActiveTab: tab => {
815
823
  setActiveTab(tab);
816
824
  // Reset payment methods when switching tabs
817
825
  resetPaymentMethods();
@@ -825,30 +833,24 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
825
833
  else {
826
834
  setActivePanel(panelIndex);
827
835
  }
828
- }, _recipientAddress: effectiveRecipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, hideDstToken: isBuyMode, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward"), customUsdInputValues: customUsdInputValues }) })), _jsx(Button, { variant: "ghost", className: 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", selectedDstChainId === HYPERLIQUID_CHAIN_ID && "cursor-not-allowed opacity-50"), onClick: () => {
829
- if (activeTab === "fiat" || isBuyMode) {
830
- return;
831
- }
832
- // Prevent swapping if destination is Hyperliquid (only supported as destination, not source)
833
- if (selectedDstChainId === HYPERLIQUID_CHAIN_ID) {
834
- return;
835
- }
836
- // Swap chain selections
837
- const tempSrcChainId = selectedSrcChainId;
838
- const tempDstChainId = selectedDstChainId;
839
- setSelectedSrcChainId(tempDstChainId);
840
- setSelectedDstChainId(tempSrcChainId);
841
- // Swap token selections
842
- const tempSrcToken = selectedSrcToken;
843
- const tempDstToken = selectedDstToken;
844
- setSelectedSrcToken(tempDstToken);
845
- setSelectedDstToken(tempSrcToken);
846
- // Swap amounts
847
- const tempSrcAmount = srcAmount;
848
- const tempDstAmount = dstAmount;
849
- setSrcAmount(tempDstAmount);
850
- setDstAmount(tempSrcAmount);
851
- }, children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }), activeTab === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: isBuyMode, effectiveRecipientAddress: effectiveRecipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => navigateToPanel(PanelView.RECIPIENT_SELECTION, "forward"), dstAmount: dstAmount, dstToken: selectedDstToken, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: setSelectedDstChainId, setSelectedDstToken: setSelectedDstToken, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
836
+ }, _recipientAddress: effectiveRecipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, hideDstToken: isBuyMode, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward"), customUsdInputValues: customUsdInputValues }) })), activeTab === "crypto" && (_jsx("div", { className: "z-10 -my-6 flex justify-center", children: _jsx(Button, { variant: "ghost", className: cn("border-as-stroke bg-as-surface-primary h-10 w-10 rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl", isBuyMode && "cursor-default", selectedDstChainId === HYPERLIQUID_CHAIN_ID && "cursor-not-allowed opacity-50"), onClick: () => {
837
+ if (isBuyMode) {
838
+ return;
839
+ }
840
+ // Prevent swapping if destination is Hyperliquid (only supported as destination, not source)
841
+ if (selectedDstChainId === HYPERLIQUID_CHAIN_ID) {
842
+ return;
843
+ }
844
+ // Swap chain selections
845
+ setSelectedSrcChainId(selectedDstChainId);
846
+ setSelectedDstChainId(selectedSrcChainId);
847
+ // Swap token selections
848
+ setSelectedSrcToken(selectedDstToken);
849
+ setSelectedDstToken(selectedSrcToken);
850
+ // Swap amounts
851
+ setSrcAmount(dstAmount);
852
+ setDstAmount(srcAmount);
853
+ }, children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }) })), activeTab === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: isBuyMode, effectiveRecipientAddress: effectiveRecipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => navigateToPanel(PanelView.RECIPIENT_SELECTION, "forward"), dstAmount: dstAmount, dstToken: selectedDstToken, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: setSelectedDstChainId, setSelectedDstToken: setSelectedDstToken, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
852
854
  setIsSrcInputDirty(false);
853
855
  setDstAmount(value);
854
856
  }, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward") }))] }), _jsxs(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: cn("mt-4 flex w-full max-w-[460px] flex-col gap-2"), children: [_jsx(ShinyButton, { accentColor: "hsl(var(--as-brand))", disabled: btnInfo.disable, onClick: onMainButtonClick, className: cn("as-main-button relative w-full", btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand"), textClassName: cn(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white"), children: _jsxs("div", { className: "flex items-center justify-center gap-2", children: [btnInfo.loading && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), btnInfo.text] }) }), !hideTransactionHistoryButton && (globalAddress || effectiveRecipientAddress) ? (_jsxs(Button, { variant: "link", onClick: onClickHistory, className: "text-as-primary/50 hover:text-as-primary flex items-center gap-1 transition-colors", children: [_jsx(HistoryIcon, { className: "h-4 w-4" }), " ", _jsx("span", { className: "pr-4", children: "Transaction History" })] })) : null] })] }), _jsx("div", { className: "w-full", children: _jsx(TabsPrimitive, { defaultValue: "swap", onValueChange: value => {
@@ -866,21 +868,23 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
866
868
  type: "anySpend",
867
869
  });
868
870
  }
869
- }, children: mode !== "page" && _jsx(BottomNavigation, {}) }) })] }));
871
+ }, children: mode !== "page" && !hideBottomNavigation && _jsx(BottomNavigation, {}) }) })] }));
870
872
  const onrampPaymentView = (_jsx(PanelOnrampPayment, { srcAmountOnRamp: srcAmountOnRamp, recipientName: recipientName || undefined, recipientAddress: effectiveRecipientAddress, isBuyMode: isBuyMode, destinationTokenChainId: destinationTokenChainId, destinationTokenAddress: destinationTokenAddress, selectedDstChainId: selectedDstChainId, selectedDstToken: selectedDstToken, orderType: "swap", anyspendQuote: anyspendQuote, globalAddress: globalAddress, onOrderCreated: orderId => {
871
873
  setOrderId(orderId);
872
874
  navigateToPanel(PanelView.ORDER_DETAILS, "forward");
873
- // Add orderId and payment method to URL for persistence
874
- const params = new URLSearchParams(searchParams.toString()); // Preserve existing params
875
- params.set("orderId", orderId);
876
- // For fiat payments, the payment method is always fiat (but we use the active tab context)
877
- if (activeTab === "fiat") {
878
- params.set("paymentMethod", "fiat");
879
- }
880
- else if (selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
881
- params.set("paymentMethod", selectedCryptoPaymentMethod);
875
+ if (!disableUrlParamManagement) {
876
+ // Add orderId and payment method to URL for persistence
877
+ const params = new URLSearchParams(searchParams.toString()); // Preserve existing params
878
+ params.set("orderId", orderId);
879
+ // For fiat payments, the payment method is always fiat (but we use the active tab context)
880
+ if (activeTab === "fiat") {
881
+ params.set("paymentMethod", "fiat");
882
+ }
883
+ else if (selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
884
+ params.set("paymentMethod", selectedCryptoPaymentMethod);
885
+ }
886
+ router.push(`${window.location.pathname}?${params.toString()}`);
882
887
  }
883
- router.push(`${window.location.pathname}?${params.toString()}`);
884
888
  }, onBack: navigateBack, recipientEnsName: globalWallet?.ensName, recipientImageUrl: globalWalletImage }));
885
889
  const recipientSelectionView = (_jsx(RecipientSelection, { initialValue: effectiveRecipientAddress || "", onBack: navigateBack, onConfirm: address => {
886
890
  // User manually selected a recipient
@@ -180,7 +180,6 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
180
180
  }
181
181
  }
182
182
  }, [srcChainId, tokenList, getTokenWithBalance, nativeTokens, fungibleTokens, dirtySelectSrcToken, dstToken.address]);
183
- // const { account: isAuthenticated } = useB3();
184
183
  const getRelayQuoteRequest = useMemo(() => {
185
184
  return generateGetRelayQuoteRequest({
186
185
  orderType: orderType,
@@ -26,7 +26,7 @@ export interface AnySpendCustomExactInProps {
26
26
  customUsdInputValues?: string[];
27
27
  preferEoa?: boolean;
28
28
  customExactInConfig?: CustomExactInConfig;
29
- orderType?: "hype_duel" | "custom_exact_in";
29
+ orderType?: "hype_duel" | "custom_exact_in" | "swap";
30
30
  minDestinationAmount?: number;
31
31
  header?: ({ anyspendPrice, isLoadingAnyspendPrice, }: {
32
32
  anyspendPrice: GetQuoteResponse | undefined;
@@ -35,7 +35,6 @@ function AnySpendCustomExactInInner({ loadOrder, mode = "modal", recipientAddres
35
35
  paymentType,
36
36
  recipientAddress,
37
37
  loadOrder,
38
- isDepositMode: true,
39
38
  onTransactionSuccess: onSuccess,
40
39
  sourceTokenAddress,
41
40
  sourceTokenChainId,
@@ -176,7 +175,7 @@ function AnySpendCustomExactInInner({ loadOrder, mode = "modal", recipientAddres
176
175
  }
177
176
  };
178
177
  const headerContent = header ? (header({ anyspendPrice: anyspendQuote, isLoadingAnyspendPrice: isLoadingAnyspendQuote })) : (_jsx("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: _jsxs("div", { children: [_jsx("h1", { className: "text-as-primary text-xl font-bold", children: actionLabel }), _jsx("p", { className: "text-as-secondary text-sm", children: "Pay from any token to execute a custom exact-in transaction." })] }) }));
179
- const mainView = (_jsxs("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [headerContent, _jsx("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: _jsxs("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [paymentType === "crypto" ? (_jsx(CryptoPaySection, { selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, isSrcInputDirty: isSrcInputDirty, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: effectiveCryptoPaymentMethod, onSelectCryptoPaymentMethod: () => setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD), anyspendQuote: anyspendQuote, onTokenSelect: onTokenSelect })) : (_jsx(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: _jsx(PanelOnramp, { srcAmountOnRamp: srcAmount, setSrcAmountOnRamp: setSrcAmount, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: setActivePanel, _recipientAddress: selectedRecipientOrDefault, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, dstTokenSymbol: DESTINATION_TOKEN_DETAILS.SYMBOL, hideDstToken: true, destinationAmount: dstAmount, onDestinationTokenChange: () => { }, onDestinationChainChange: () => { }, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, anyspendQuote: anyspendQuote, onShowPointsDetail: () => setActivePanel(PanelView.POINTS_DETAIL), onShowFeeDetail: () => setActivePanel(PanelView.FEE_DETAIL), customUsdInputValues: customUsdInputValues }) })), _jsx("div", { className: cn("relative -my-1 flex h-0 items-center justify-center", paymentType === "fiat" && "hidden"), children: _jsx(Button, { variant: "ghost", className: cn("swap-direction-button border-as-stroke bg-as-surface-primary z-10 h-10 w-10 cursor-default rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl"), children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }) }), paymentType === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: true, effectiveRecipientAddress: selectedRecipientOrDefault, recipientName: recipientName || undefined, onSelectRecipient: () => setActivePanel(PanelView.RECIPIENT_SELECTION), dstAmount: dstAmount, dstToken: selectedDstToken, dstTokenSymbol: DESTINATION_TOKEN_DETAILS.SYMBOL, dstTokenLogoURI: DESTINATION_TOKEN_DETAILS.LOGO_URI, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: () => { }, setSelectedDstToken: () => { }, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
178
+ const mainView = (_jsxs("div", { className: "anyspend-custom-exact-in-container mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [headerContent, _jsx("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: _jsxs("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [paymentType === "crypto" ? (_jsx(CryptoPaySection, { selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, isSrcInputDirty: isSrcInputDirty, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: effectiveCryptoPaymentMethod, onSelectCryptoPaymentMethod: () => setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD), anyspendQuote: anyspendQuote, onTokenSelect: onTokenSelect })) : (_jsx(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: _jsx(PanelOnramp, { srcAmountOnRamp: srcAmount, setSrcAmountOnRamp: setSrcAmount, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: setActivePanel, _recipientAddress: selectedRecipientOrDefault, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, dstTokenSymbol: DESTINATION_TOKEN_DETAILS.SYMBOL, hideDstToken: true, destinationAmount: dstAmount, onDestinationTokenChange: () => { }, onDestinationChainChange: () => { }, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, anyspendQuote: anyspendQuote, onShowPointsDetail: () => setActivePanel(PanelView.POINTS_DETAIL), onShowFeeDetail: () => setActivePanel(PanelView.FEE_DETAIL), customUsdInputValues: customUsdInputValues }) })), _jsx("div", { className: cn("relative -my-1 flex h-0 items-center justify-center", paymentType === "fiat" && "hidden"), children: _jsx(Button, { variant: "ghost", className: cn("swap-direction-button border-as-stroke bg-as-surface-primary z-10 h-10 w-10 cursor-default rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl"), children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }) }), paymentType === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: true, effectiveRecipientAddress: selectedRecipientOrDefault, recipientName: recipientName || undefined, onSelectRecipient: () => setActivePanel(PanelView.RECIPIENT_SELECTION), dstAmount: dstAmount, dstToken: selectedDstToken, dstTokenSymbol: DESTINATION_TOKEN_DETAILS.SYMBOL, dstTokenLogoURI: DESTINATION_TOKEN_DETAILS.LOGO_URI, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: () => { }, setSelectedDstToken: () => { }, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
180
179
  setIsSrcInputDirty(false);
181
180
  setSrcAmount(value);
182
181
  }, anyspendQuote: anyspendQuote, onShowPointsDetail: () => setActivePanel(PanelView.POINTS_DETAIL), onShowFeeDetail: () => setActivePanel(PanelView.FEE_DETAIL) }))] }) }), _jsx(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: cn("mt-4 flex w-full max-w-[460px] flex-col gap-2"), children: _jsx(ShinyButton, { accentColor: "hsl(var(--as-brand))", disabled: btnInfo.disable, onClick: onMainButtonClick, className: cn("as-main-button relative w-full", btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand"), textClassName: cn(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white"), children: _jsxs("div", { className: "flex items-center justify-center gap-2", children: [btnInfo.loading && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), btnInfo.text] }) }) }), mainFooter ? mainFooter : null] }));
@@ -0,0 +1,122 @@
1
+ import { components } from "../../../anyspend/types/api";
2
+ import { GetQuoteResponse } from "../../../anyspend/types/api_req_res";
3
+ export interface DepositContractConfig {
4
+ /** Custom function ABI JSON string */
5
+ functionAbi: string;
6
+ /** The function name to call */
7
+ functionName: string;
8
+ /** Custom function arguments. Use "{{amount_out}}" for the deposit amount placeholder */
9
+ functionArgs: string[];
10
+ /** The contract address to deposit to */
11
+ to: string;
12
+ /** Optional spender address if different from contract address */
13
+ spenderAddress?: string;
14
+ /** Custom action label */
15
+ action?: string;
16
+ }
17
+ export interface ChainConfig {
18
+ /** Chain ID */
19
+ id: number;
20
+ /** Display name */
21
+ name: string;
22
+ /** Optional icon URL */
23
+ iconUrl?: string;
24
+ }
25
+ export interface AnySpendDepositProps {
26
+ /** Order ID to load an existing order */
27
+ loadOrder?: string;
28
+ /** Display mode */
29
+ mode?: "modal" | "page";
30
+ /** The recipient address for the deposit */
31
+ recipientAddress: string;
32
+ /** Payment type - crypto or fiat. If not set, shows chain selection first */
33
+ paymentType?: "crypto" | "fiat";
34
+ /** Source token address to pre-select */
35
+ sourceTokenAddress?: string;
36
+ /** Source chain ID to pre-select. If not provided, shows chain selection */
37
+ sourceTokenChainId?: number;
38
+ /** The destination token to receive */
39
+ destinationToken: components["schemas"]["Token"];
40
+ /** The destination chain ID */
41
+ destinationChainId: number;
42
+ /** Callback when deposit succeeds */
43
+ onSuccess?: (amount: string) => void;
44
+ /** Callback for opening a custom modal (e.g., for special token handling) */
45
+ onOpenCustomModal?: () => void;
46
+ /** Custom footer content */
47
+ mainFooter?: React.ReactNode;
48
+ /** Called when a token is selected. Call event.preventDefault() to prevent default behavior */
49
+ onTokenSelect?: (token: components["schemas"]["Token"], event: {
50
+ preventDefault: () => void;
51
+ }) => void;
52
+ /** Custom USD input value presets for fiat payment */
53
+ customUsdInputValues?: string[];
54
+ /** Whether to prefer using connected EOA wallet */
55
+ preferEoa?: boolean;
56
+ /** Minimum destination amount required */
57
+ minDestinationAmount?: number;
58
+ /** Custom header component */
59
+ header?: ({ anyspendPrice, isLoadingAnyspendPrice, }: {
60
+ anyspendPrice: GetQuoteResponse | undefined;
61
+ isLoadingAnyspendPrice: boolean;
62
+ }) => React.JSX.Element;
63
+ /** Order type for the deposit */
64
+ orderType?: "hype_duel" | "custom_exact_in" | "swap";
65
+ /** Custom action label displayed on buttons */
66
+ actionLabel?: string;
67
+ /** Configuration for depositing to a custom contract.
68
+ * If provided, creates a custom_exact_in order that calls the contract.
69
+ * If not provided, creates a simple hype_duel order for direct deposits.
70
+ */
71
+ depositContractConfig?: DepositContractConfig;
72
+ /** Whether to show chain selection step. Defaults to true if sourceTokenChainId is not provided */
73
+ showChainSelection?: boolean;
74
+ /** Custom list of supported chains. If not provided, uses default chains */
75
+ supportedChains?: ChainConfig[];
76
+ /** Minimum pool size for filtering tokens (default: 1,000,000) */
77
+ minPoolSize?: number;
78
+ /** Custom title for chain selection step */
79
+ chainSelectionTitle?: string;
80
+ /** Custom description for chain selection step */
81
+ chainSelectionDescription?: string;
82
+ /** Number of top chains to show (default: 3) */
83
+ topChainsCount?: number;
84
+ /** Callback when close button is clicked */
85
+ onClose?: () => void;
86
+ }
87
+ /**
88
+ * A flexible deposit component that wraps AnySpendCustomExactIn with optional chain selection.
89
+ *
90
+ * @example
91
+ * // Simple deposit with chain selection
92
+ * <AnySpendDeposit
93
+ * recipientAddress={userAddress}
94
+ * destinationToken={myToken}
95
+ * destinationChainId={base.id}
96
+ * onSuccess={(amount) => console.log(`Deposited ${amount}`)}
97
+ * />
98
+ *
99
+ * @example
100
+ * // Skip chain selection by providing sourceTokenChainId
101
+ * <AnySpendDeposit
102
+ * recipientAddress={userAddress}
103
+ * destinationToken={myToken}
104
+ * destinationChainId={base.id}
105
+ * sourceTokenChainId={base.id}
106
+ * onSuccess={(amount) => console.log(`Deposited ${amount}`)}
107
+ * />
108
+ *
109
+ * @example
110
+ * // Deposit with custom contract
111
+ * <AnySpendDeposit
112
+ * recipientAddress={userAddress}
113
+ * destinationToken={myToken}
114
+ * destinationChainId={base.id}
115
+ * depositContractConfig={{
116
+ * contractAddress: "0x...",
117
+ * functionName: "depositFor",
118
+ * }}
119
+ * onSuccess={(amount) => console.log(`Deposited ${amount}`)}
120
+ * />
121
+ */
122
+ export declare function AnySpendDeposit({ loadOrder, mode, recipientAddress, paymentType: initialPaymentType, sourceTokenAddress, sourceTokenChainId: initialSourceChainId, destinationToken, destinationChainId, onSuccess, onOpenCustomModal, mainFooter, onTokenSelect, customUsdInputValues, preferEoa, minDestinationAmount, header, orderType, depositContractConfig, showChainSelection, supportedChains, minPoolSize, topChainsCount, onClose, }: AnySpendDepositProps): import("react/jsx-runtime").JSX.Element | null;