@b3dotfun/sdk 0.0.65-alpha.2 → 0.0.65-alpha.3

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.
@@ -1,28 +1,7 @@
1
1
  import { B3_TOKEN } from "@b3dotfun/sdk/anyspend";
2
2
  import { components } from "@b3dotfun/sdk/anyspend/types/api";
3
- import { Button, ShinyButton, StyleRoot, TransitionPanel, useAccountWallet } from "@b3dotfun/sdk/global-account/react";
4
- import { cn } from "@b3dotfun/sdk/shared/utils/cn";
5
- import invariant from "invariant";
6
- import { motion } from "motion/react";
7
- import { useEffect, useMemo, useRef } from "react";
8
- import { toast } from "sonner";
9
- import { useSetActiveWallet } from "thirdweb/react";
10
3
  import { base } from "viem/chains";
11
- import { PanelView, useAnyspendFlow } from "../hooks/useAnyspendFlow";
12
- import { AnySpendFingerprintWrapper, getFingerprintConfig } from "./AnySpendFingerprintWrapper";
13
- import { CryptoPaySection } from "./common/CryptoPaySection";
14
- import { CryptoPaymentMethod, CryptoPaymentMethodType } from "./common/CryptoPaymentMethod";
15
- import { CryptoReceiveSection } from "./common/CryptoReceiveSection";
16
- import { FeeDetailPanel } from "./common/FeeDetailPanel";
17
- import { FiatPaymentMethod, FiatPaymentMethodComponent } from "./common/FiatPaymentMethod";
18
- import { OrderDetails } from "./common/OrderDetails";
19
- import { PointsDetailPanel } from "./common/PointsDetailPanel";
20
- import { RecipientSelection } from "./common/RecipientSelection";
21
-
22
- import { ArrowDown, Loader2 } from "lucide-react";
23
- import { PanelOnramp } from "./common/PanelOnramp";
24
-
25
- const SLIPPAGE_PERCENT = 3;
4
+ import { AnySpendCustomExactIn } from "./AnySpendCustomExactIn";
26
5
 
27
6
  export const HYPE_TOKEN_DETAILS = {
28
7
  SYMBOL: "HYPE",
@@ -47,17 +26,7 @@ export interface AnySpendDepositHypeProps {
47
26
  preferEoa?: boolean;
48
27
  }
49
28
 
50
- export function AnySpendDepositHype(props: AnySpendDepositHypeProps) {
51
- const fingerprintConfig = getFingerprintConfig();
52
-
53
- return (
54
- <AnySpendFingerprintWrapper fingerprint={fingerprintConfig}>
55
- <AnySpendDepositHypeInner {...props} />
56
- </AnySpendFingerprintWrapper>
57
- );
58
- }
59
-
60
- function AnySpendDepositHypeInner({
29
+ export function AnySpendDepositHype({
61
30
  loadOrder,
62
31
  mode = "modal",
63
32
  recipientAddress,
@@ -70,506 +39,46 @@ function AnySpendDepositHypeInner({
70
39
  customUsdInputValues,
71
40
  preferEoa,
72
41
  }: AnySpendDepositHypeProps) {
73
- // Use shared flow hook
74
- const {
75
- activePanel,
76
- setActivePanel,
77
- orderId,
78
- setOrderId,
79
- oat,
80
- selectedSrcChainId,
81
- setSelectedSrcChainId,
82
- selectedSrcToken,
83
- setSelectedSrcToken,
84
- srcAmount,
85
- setSrcAmount,
86
- dstAmount,
87
- isSrcInputDirty,
88
- setIsSrcInputDirty,
89
- selectedCryptoPaymentMethod,
90
- effectiveCryptoPaymentMethod,
91
- setSelectedCryptoPaymentMethod,
92
- selectedFiatPaymentMethod,
93
- setSelectedFiatPaymentMethod,
94
- selectedRecipientAddress,
95
- setSelectedRecipientAddress,
96
- recipientName,
97
- globalAddress,
98
- anyspendQuote,
99
- isLoadingAnyspendQuote,
100
- activeInputAmountInWei,
101
- geoData,
102
- coinbaseAvailablePaymentMethods,
103
- stripeWeb2Support,
104
- createOrder,
105
- isCreatingOrder,
106
- createOnrampOrder,
107
- isCreatingOnrampOrder,
108
- } = useAnyspendFlow({
109
- paymentType,
110
- recipientAddress,
111
- loadOrder,
112
- isDepositMode: true,
113
- onTransactionSuccess: onSuccess,
114
- sourceTokenAddress,
115
- sourceTokenChainId,
116
- slippage: SLIPPAGE_PERCENT,
117
- disableUrlParamManagement: true,
118
- });
119
-
120
- const { connectedEOAWallet: connectedEOAWallet } = useAccountWallet();
121
- const setActiveWallet = useSetActiveWallet();
122
- const appliedPreferEoa = useRef(false);
123
-
124
- useEffect(() => {
125
- if (preferEoa && !appliedPreferEoa.current) {
126
- if (connectedEOAWallet) {
127
- appliedPreferEoa.current = true;
128
- setActiveWallet(connectedEOAWallet);
129
- }
130
- }
131
- }, [preferEoa, connectedEOAWallet, setActiveWallet]);
132
-
133
- // Button state logic
134
- const btnInfo: { text: string; disable: boolean; error: boolean; loading: boolean } = useMemo(() => {
135
- if (activeInputAmountInWei === "0") return { text: "Enter an amount", disable: true, error: false, loading: false };
136
- if (isLoadingAnyspendQuote) return { text: "Loading quote...", disable: true, error: false, loading: true };
137
- if (isCreatingOrder || isCreatingOnrampOrder)
138
- return { text: "Creating order...", disable: true, error: false, loading: true };
139
- if (!selectedRecipientAddress) return { text: "Select recipient", disable: false, error: false, loading: false };
140
- if (!anyspendQuote || !anyspendQuote.success)
141
- return { text: "Get quote error", disable: true, error: true, loading: false };
142
- if (!dstAmount) return { text: "No quote available", disable: true, error: true, loading: false };
143
-
144
- // Check minimum deposit amount (10 HYPE)
145
- // Use the raw amount from the quote instead of the formatted display string
146
- if (anyspendQuote.data?.currencyOut?.amount && anyspendQuote.data.currencyOut.currency?.decimals) {
147
- const rawAmountInWei = anyspendQuote.data.currencyOut.amount;
148
- const decimals = anyspendQuote.data.currencyOut.currency.decimals;
149
- const actualAmount = parseFloat(rawAmountInWei) / Math.pow(10, decimals);
150
-
151
- if (actualAmount < 10) {
152
- return { text: "Minimum 10 HYPE deposit", disable: true, error: true, loading: false };
153
- }
154
- }
155
-
156
- if (paymentType === "crypto") {
157
- if (effectiveCryptoPaymentMethod === CryptoPaymentMethodType.NONE) {
158
- return { text: "Choose payment method", disable: false, error: false, loading: false };
159
- }
160
- return { text: "Continue to deposit", disable: false, error: false, loading: false };
161
- }
162
-
163
- if (paymentType === "fiat") {
164
- if (selectedFiatPaymentMethod === FiatPaymentMethod.NONE) {
165
- return { text: "Select payment method", disable: false, error: false, loading: false };
166
- }
167
- return { text: "Buy", disable: false, error: false, loading: false };
168
- }
169
-
170
- return { text: "Continue to deposit", disable: false, error: false, loading: false };
171
- }, [
172
- activeInputAmountInWei,
173
- effectiveCryptoPaymentMethod,
174
- isLoadingAnyspendQuote,
175
- isCreatingOrder,
176
- isCreatingOnrampOrder,
177
- selectedRecipientAddress,
178
- anyspendQuote,
179
- dstAmount,
180
- paymentType,
181
- selectedFiatPaymentMethod,
182
- ]);
183
-
184
- const onMainButtonClick = async () => {
185
- if (btnInfo.disable) return;
186
-
187
- if (!selectedRecipientAddress) {
188
- setActivePanel(PanelView.RECIPIENT_SELECTION);
189
- return;
190
- }
191
-
192
- if (paymentType === "crypto") {
193
- if (effectiveCryptoPaymentMethod === CryptoPaymentMethodType.NONE) {
194
- setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD);
195
- return;
196
- }
197
- await handleCryptoOrder();
198
- } else if (paymentType === "fiat") {
199
- if (selectedFiatPaymentMethod === FiatPaymentMethod.NONE) {
200
- setActivePanel(PanelView.FIAT_PAYMENT_METHOD);
201
- return;
202
- }
203
- await handleFiatOrder();
204
- }
205
- };
206
-
207
- const mainView = (
208
- <div className="mx-auto flex w-[460px] max-w-full flex-col items-center gap-2">
209
- {/* Header */}
210
- <div className="mb-4 flex flex-col items-center gap-3 text-center">
211
- <div>
212
- <h1 className="text-as-primary text-xl font-bold">
213
- {paymentType === "crypto" ? "Deposit Crypto" : "Fund with Fiat"}
214
- </h1>
215
- </div>
216
- </div>
217
-
218
- <div className="relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2">
219
- <div className="relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2">
220
- {/* Send section */}
221
- {paymentType === "crypto" ? (
222
- <CryptoPaySection
223
- selectedSrcChainId={selectedSrcChainId}
224
- setSelectedSrcChainId={setSelectedSrcChainId}
225
- selectedSrcToken={selectedSrcToken}
226
- setSelectedSrcToken={setSelectedSrcToken}
227
- srcAmount={srcAmount}
228
- setSrcAmount={setSrcAmount}
229
- isSrcInputDirty={isSrcInputDirty}
230
- setIsSrcInputDirty={setIsSrcInputDirty}
231
- selectedCryptoPaymentMethod={effectiveCryptoPaymentMethod}
232
- onSelectCryptoPaymentMethod={() => setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD)}
233
- anyspendQuote={anyspendQuote}
234
- onTokenSelect={onTokenSelect}
235
- />
236
- ) : (
237
- <motion.div
238
- initial={{ opacity: 0, y: 20, filter: "blur(10px)" }}
239
- animate={{ opacity: 1, y: 0, filter: "blur(0px)" }}
240
- transition={{ duration: 0.3, delay: 0, ease: "easeInOut" }}
241
- >
242
- <PanelOnramp
243
- srcAmountOnRamp={srcAmount}
244
- setSrcAmountOnRamp={setSrcAmount}
245
- selectedPaymentMethod={selectedFiatPaymentMethod}
246
- setActivePanel={setActivePanel}
247
- _recipientAddress={recipientAddress}
248
- destinationToken={B3_TOKEN}
249
- destinationChainId={base.id}
250
- dstTokenSymbol={HYPE_TOKEN_DETAILS.SYMBOL}
251
- hideDstToken
252
- destinationAmount={dstAmount}
253
- onDestinationTokenChange={() => {}}
254
- onDestinationChainChange={() => {}}
255
- fiatPaymentMethodIndex={PanelView.FIAT_PAYMENT_METHOD}
256
- recipientSelectionPanelIndex={PanelView.RECIPIENT_SELECTION}
257
- anyspendQuote={anyspendQuote}
258
- onShowPointsDetail={() => setActivePanel(PanelView.POINTS_DETAIL)}
259
- onShowFeeDetail={() => setActivePanel(PanelView.FEE_DETAIL)}
260
- customUsdInputValues={customUsdInputValues}
261
- />
262
- </motion.div>
263
- )}
264
-
265
- {/* Reverse swap direction section */}
266
- <div
267
- className={cn("relative -my-1 flex h-0 items-center justify-center", paymentType === "fiat" && "hidden")}
268
- >
269
- <Button
270
- variant="ghost"
271
- className={cn(
272
- "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",
273
- )}
274
- >
275
- <div className="relative flex items-center justify-center transition-opacity">
276
- <ArrowDown className="text-as-primary/50 h-5 w-5" />
277
- </div>
278
- </Button>
279
- </div>
280
-
281
- {/* Receive section - Hidden when fiat tab is active */}
282
- {paymentType === "crypto" && (
283
- <CryptoReceiveSection
284
- isDepositMode={false}
285
- isBuyMode={true}
286
- selectedRecipientAddress={selectedRecipientAddress}
287
- recipientName={recipientName || undefined}
288
- onSelectRecipient={() => setActivePanel(PanelView.RECIPIENT_SELECTION)}
289
- setRecipientAddress={setSelectedRecipientAddress}
290
- recipientAddressFromProps={recipientAddress}
291
- globalAddress={globalAddress}
292
- dstAmount={dstAmount}
293
- dstToken={B3_TOKEN}
294
- dstTokenSymbol={HYPE_TOKEN_DETAILS.SYMBOL}
295
- dstTokenLogoURI={HYPE_TOKEN_DETAILS.LOGO_URI}
296
- selectedDstChainId={base.id}
297
- setSelectedDstChainId={() => {}}
298
- setSelectedDstToken={() => {}}
299
- isSrcInputDirty={isSrcInputDirty}
300
- onChangeDstAmount={value => {
301
- setIsSrcInputDirty(false);
302
- setSrcAmount(value);
303
- }}
304
- anyspendQuote={anyspendQuote}
305
- onShowPointsDetail={() => setActivePanel(PanelView.POINTS_DETAIL)}
306
- onShowFeeDetail={() => setActivePanel(PanelView.FEE_DETAIL)}
307
- selectedCryptoPaymentMethod={selectedCryptoPaymentMethod}
308
- />
309
- )}
310
- </div>
42
+ if (!recipientAddress) return null;
43
+
44
+ const header = () => (
45
+ <div className="mb-4 flex flex-col items-center gap-3 text-center">
46
+ <div>
47
+ <h1 className="text-as-primary text-xl font-bold">
48
+ {paymentType === "crypto" ? "Deposit Crypto" : "Fund with Fiat"}
49
+ </h1>
311
50
  </div>
312
-
313
- {/* Main button section */}
314
- <motion.div
315
- initial={{ opacity: 0, y: 20, filter: "blur(10px)" }}
316
- animate={{ opacity: 1, y: 0, filter: "blur(0px)" }}
317
- transition={{ duration: 0.3, delay: 0.2, ease: "easeInOut" }}
318
- className={cn("mt-4 flex w-full max-w-[460px] flex-col gap-2")}
319
- >
320
- <ShinyButton
321
- accentColor={"hsl(var(--as-brand))"}
322
- disabled={btnInfo.disable}
323
- onClick={onMainButtonClick}
324
- className={cn(
325
- "as-main-button relative w-full",
326
- btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand",
327
- )}
328
- textClassName={cn(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white")}
329
- >
330
- <div className="flex items-center justify-center gap-2">
331
- {btnInfo.loading && <Loader2 className="h-4 w-4 animate-spin" />}
332
- {btnInfo.text}
333
- </div>
334
- </ShinyButton>
335
- </motion.div>
336
-
337
- {mainFooter ? mainFooter : null}
338
51
  </div>
339
52
  );
340
53
 
341
- // Handle crypto order creation
342
- const handleCryptoOrder = async () => {
343
- try {
344
- invariant(anyspendQuote, "Relay price is not found");
345
- invariant(selectedRecipientAddress, "Recipient address is not found");
346
-
347
- const srcAmountBigInt = BigInt(activeInputAmountInWei);
348
- createOrder({
349
- recipientAddress: selectedRecipientAddress,
350
- orderType: "hype_duel",
351
- srcChain: selectedSrcChainId,
352
- dstChain: base.id,
353
- srcToken: selectedSrcToken,
354
- dstToken: B3_TOKEN,
355
- srcAmount: srcAmountBigInt.toString(),
356
- expectedDstAmount: anyspendQuote?.data?.currencyOut?.amount?.toString() || "0",
357
- creatorAddress: globalAddress,
358
- });
359
- } catch (err: any) {
360
- console.error(err);
361
- toast.error("Failed to create order: " + err.message);
362
- }
363
- };
364
-
365
- // Handle fiat order creation
366
- const handleFiatOrder = async () => {
367
- try {
368
- invariant(anyspendQuote, "Relay price is not found");
369
- invariant(selectedRecipientAddress, "Recipient address is not found");
370
-
371
- if (!srcAmount || parseFloat(srcAmount) <= 0) {
372
- toast.error("Please enter a valid amount");
373
- return;
374
- }
375
-
376
- // Determine vendor and payment method string
377
- let vendor: "coinbase" | "stripe" | "stripe-web2";
378
- let paymentMethodString = "";
379
-
380
- if (selectedFiatPaymentMethod === FiatPaymentMethod.COINBASE_PAY) {
381
- if (coinbaseAvailablePaymentMethods.length === 0) {
382
- toast.error("Coinbase Pay not available");
383
- return;
384
- }
385
- vendor = "coinbase";
386
- paymentMethodString = coinbaseAvailablePaymentMethods[0]?.id || "";
387
- } else if (selectedFiatPaymentMethod === FiatPaymentMethod.STRIPE) {
388
- if (!stripeWeb2Support || !stripeWeb2Support.isSupport) {
389
- toast.error("Stripe not available");
390
- return;
391
- }
392
- vendor = "stripe-web2";
393
- paymentMethodString = "";
394
- } else {
395
- toast.error("Please select a payment method");
396
- return;
397
- }
398
-
399
- createOnrampOrder({
400
- recipientAddress: selectedRecipientAddress,
401
- orderType: "hype_duel",
402
- dstChain: base.id,
403
- dstToken: B3_TOKEN,
404
- srcFiatAmount: srcAmount,
405
- onramp: {
406
- vendor: vendor,
407
- paymentMethod: paymentMethodString,
408
- country: geoData?.country || "US",
409
- redirectUrl: window.location.origin,
410
- },
411
- expectedDstAmount: anyspendQuote?.data?.currencyOut?.amount?.toString() || "0",
412
- creatorAddress: globalAddress,
413
- });
414
- } catch (err: any) {
415
- console.error(err);
416
- toast.error("Failed to create order: " + err.message);
417
- }
54
+ // Create a modified B3_TOKEN with HYPE branding
55
+ const hypeToken: components["schemas"]["Token"] = {
56
+ ...B3_TOKEN,
57
+ symbol: HYPE_TOKEN_DETAILS.SYMBOL,
58
+ metadata: {
59
+ ...B3_TOKEN.metadata,
60
+ logoURI: HYPE_TOKEN_DETAILS.LOGO_URI,
61
+ },
418
62
  };
419
63
 
420
- // Order details view
421
- const orderDetailsView = (
422
- <div className={"mx-auto w-[460px] max-w-full"}>
423
- <div className="relative flex flex-col gap-4">
424
- {oat && (
425
- <OrderDetails
426
- mode={mode}
427
- order={oat.data.order}
428
- depositTxs={oat.data.depositTxs}
429
- relayTxs={oat.data.relayTxs}
430
- executeTx={oat.data.executeTx}
431
- refundTxs={oat.data.refundTxs}
432
- cryptoPaymentMethod={paymentType === "fiat" ? CryptoPaymentMethodType.NONE : selectedCryptoPaymentMethod}
433
- selectedCryptoPaymentMethod={selectedCryptoPaymentMethod}
434
- onPaymentMethodChange={setSelectedCryptoPaymentMethod}
435
- onBack={() => {
436
- setOrderId(undefined);
437
- setActivePanel(PanelView.MAIN);
438
- }}
439
- disableUrlParamManagement
440
- points={oat.data.points || undefined}
441
- />
442
- )}
443
- </div>
444
- </div>
445
- );
446
-
447
- // Loading view
448
- const loadingView = (
449
- <div className="mx-auto flex w-full flex-col items-center gap-4 p-5">
450
- <div className="text-as-primary">Loading order details...</div>
451
- </div>
452
- );
453
-
454
- // Panel views
455
- const recipientSelectionView = (
456
- <RecipientSelection
457
- initialValue={selectedRecipientAddress || ""}
458
- onBack={() => setActivePanel(PanelView.MAIN)}
459
- onConfirm={address => {
460
- setSelectedRecipientAddress(address);
461
- setActivePanel(PanelView.MAIN);
462
- }}
463
- />
464
- );
465
-
466
- const cryptoPaymentMethodView = (
467
- <CryptoPaymentMethod
468
- globalAddress={globalAddress}
469
- globalWallet={undefined}
470
- selectedPaymentMethod={selectedCryptoPaymentMethod}
471
- setSelectedPaymentMethod={setSelectedCryptoPaymentMethod}
472
- isCreatingOrder={isCreatingOrder}
473
- onBack={() => setActivePanel(PanelView.MAIN)}
474
- onSelectPaymentMethod={(method: CryptoPaymentMethodType) => {
475
- setSelectedCryptoPaymentMethod(method);
476
- setActivePanel(PanelView.MAIN);
477
- }}
478
- />
479
- );
480
-
481
- const fiatPaymentMethodView = (
482
- <FiatPaymentMethodComponent
483
- selectedPaymentMethod={selectedFiatPaymentMethod}
484
- setSelectedPaymentMethod={setSelectedFiatPaymentMethod}
485
- onBack={() => setActivePanel(PanelView.MAIN)}
486
- onSelectPaymentMethod={(method: FiatPaymentMethod) => {
487
- setSelectedFiatPaymentMethod(method);
488
- setActivePanel(PanelView.MAIN);
489
- }}
490
- srcAmountOnRamp={srcAmount}
491
- />
492
- );
493
-
494
- const pointsDetailView = (
495
- <PointsDetailPanel
496
- pointsAmount={anyspendQuote?.data?.pointsAmount || 0}
497
- onBack={() => setActivePanel(PanelView.MAIN)}
498
- />
499
- );
500
-
501
- const feeDetailView = anyspendQuote?.data?.fee ? (
502
- <FeeDetailPanel
503
- fee={anyspendQuote.data.fee}
504
- transactionAmountUsd={
505
- paymentType === "fiat"
506
- ? parseFloat(srcAmount)
507
- : anyspendQuote.data.currencyIn?.amountUsd
508
- ? Number(anyspendQuote.data.currencyIn.amountUsd)
509
- : undefined
510
- }
511
- onBack={() => setActivePanel(PanelView.MAIN)}
512
- />
513
- ) : null;
514
-
515
- // If showing token selection, render with panel transitions
516
64
  return (
517
- <StyleRoot>
518
- <div
519
- className={cn(
520
- "anyspend-container font-inter mx-auto w-full max-w-[460px]",
521
- mode === "page" &&
522
- "bg-as-surface-primary border-as-border-secondary overflow-hidden rounded-2xl border shadow-xl",
523
- )}
524
- >
525
- <TransitionPanel
526
- activeIndex={
527
- orderId
528
- ? oat
529
- ? PanelView.ORDER_DETAILS
530
- : PanelView.LOADING
531
- : activePanel === PanelView.ORDER_DETAILS
532
- ? PanelView.MAIN
533
- : activePanel
534
- }
535
- className={cn("rounded-2xl", {
536
- "mt-0": mode === "modal",
537
- })}
538
- variants={{
539
- enter: { x: 300, opacity: 0 },
540
- center: { x: 0, opacity: 1 },
541
- exit: { x: -300, opacity: 0 },
542
- }}
543
- transition={{ type: "spring", stiffness: 300, damping: 30 }}
544
- >
545
- {[
546
- <div key="main-view" className={cn(mode === "page" && "p-6")}>
547
- {mainView}
548
- </div>,
549
- <div key="crypto-payment-method-view" className={cn(mode === "page" && "p-6")}>
550
- {cryptoPaymentMethodView}
551
- </div>,
552
- <div key="fiat-payment-method-view" className={cn(mode === "page" && "p-6")}>
553
- {fiatPaymentMethodView}
554
- </div>,
555
- <div key="recipient-selection-view" className={cn(mode === "page" && "p-6")}>
556
- {recipientSelectionView}
557
- </div>,
558
- <div key="order-details-view" className={cn(mode === "page" && "p-6")}>
559
- {orderDetailsView}
560
- </div>,
561
- <div key="loading-view" className={cn(mode === "page" && "p-6")}>
562
- {loadingView}
563
- </div>,
564
- <div key="points-detail-view" className={cn(mode === "page" && "p-6")}>
565
- {pointsDetailView}
566
- </div>,
567
- <div key="fee-detail-view" className={cn(mode === "page" && "p-6")}>
568
- {feeDetailView}
569
- </div>,
570
- ]}
571
- </TransitionPanel>
572
- </div>
573
- </StyleRoot>
65
+ <AnySpendCustomExactIn
66
+ loadOrder={loadOrder}
67
+ mode={mode}
68
+ recipientAddress={recipientAddress}
69
+ paymentType={paymentType}
70
+ sourceTokenAddress={sourceTokenAddress}
71
+ sourceTokenChainId={sourceTokenChainId}
72
+ destinationToken={hypeToken}
73
+ destinationChainId={base.id}
74
+ orderType="hype_duel"
75
+ minDestinationAmount={10}
76
+ header={header}
77
+ onSuccess={onSuccess}
78
+ mainFooter={mainFooter}
79
+ onTokenSelect={onTokenSelect}
80
+ customUsdInputValues={customUsdInputValues}
81
+ preferEoa={preferEoa}
82
+ />
574
83
  );
575
84
  }
@@ -4,6 +4,7 @@ export { AnySpendBondKit } from "./AnySpendBondKit";
4
4
  export { AnySpendBuySpin } from "./AnySpendBuySpin";
5
5
  export { AnySpendCustom } from "./AnySpendCustom";
6
6
  export { AnySpendCustomExactIn } from "./AnySpendCustomExactIn";
7
+ export { AnySpendDepositHype, HYPE_TOKEN_DETAILS } from "./AnyspendDepositHype";
7
8
  export * from "./AnySpendFingerprintWrapper";
8
9
  export { AnySpendNFT } from "./AnySpendNFT";
9
10
  export { AnyspendSignatureMint } from "./AnyspendSignatureMint";