@liberfi.io/ui-trade 0.1.138 → 0.1.140

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,6 +14,7 @@ The package is organized in three layers:
14
14
  - **IoC (Inversion of Control)** — Side-effects (toast, analytics, navigation) are injected via callbacks. Hooks never hardcode any feedback mechanism.
15
15
  - **Script/Widget/UI architecture** — The swap form follows the monorepo's three-layer pattern: `useSwapScript` (data + state), `SwapWidget` (orchestration), `SwapUI` (presentation). Consumers can use the widget directly or compose Script + custom UI.
16
16
  - **Chain-agnostic** — Works across Solana (Jupiter) and EVM chains (KyberSwap). Chain-specific differences (dex selection, tx format) are handled by the underlying `@liberfi.io/client` and `WalletAdapter` abstractions.
17
+ - **Solana blockhash guard** — Instant Trade prewarms latest block metadata in TanStack Query and `useSwap` rejects routes that are too close to `lastValidBlockHeight` before broadcasting.
17
18
  - **UI via `@liberfi.io/ui`** — Uses the shared UI library (`Button`, `Input`, `Avatar`, `Modal`, etc.) for consistent styling across the monorepo. No direct `@heroui/react` dependency.
18
19
  - **Layered architecture** — Builds on `@liberfi.io/react` (data layer), `@liberfi.io/wallet-connector` (signing layer), and `@liberfi.io/ui` (presentation layer) without duplicating their logic.
19
20
 
@@ -43,10 +44,10 @@ Orchestrates the full swap flow: **route -> sign -> send**.
43
44
 
44
45
  **Parameters:**
45
46
 
46
- | Name | Type | Description |
47
- | --------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------- |
48
- | `options.onSubmitted` | `(result: SwapResult) => void` | Called when the transaction is successfully submitted on-chain. |
49
- | `options.onError` | `(error: Error, phase: SwapPhase) => void` | Called when an error occurs. `phase` indicates where it failed: `"route"`, `"sign"`, or `"send"`. |
47
+ | Name | Type | Description |
48
+ | --------------------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |
49
+ | `options.onSubmitted` | `(result: SwapResult) => void` | Called when the transaction is successfully submitted on-chain. |
50
+ | `options.onError` | `(error: Error, phase: SwapPhase) => void` | Called when an error occurs. `phase` indicates where it failed: `"route"`, `"sign"`, `"expired"`, or `"send"`. |
50
51
 
51
52
  **Returns:** `{ swap, isSwapping }`
52
53
 
@@ -252,7 +253,8 @@ interface SwapResult {
252
253
  #### `SwapPhase`
253
254
 
254
255
  ```typescript
255
- type SwapPhase = "route" | "sign" | "send";
256
+ type SwapPhase = "route" | "sign" | "expired" | "send";
257
+ class SwapRouteExpiredError extends Error;
256
258
  ```
257
259
 
258
260
  #### `UseSwapOptions`
package/dist/index.d.mts CHANGED
@@ -90,7 +90,11 @@ interface SwapResult {
90
90
  extra?: Record<string, unknown>;
91
91
  }
92
92
  /** Phase of the swap flow, used in error callbacks. */
93
- type SwapPhase = "route" | "sign" | "send";
93
+ type SwapPhase = "route" | "sign" | "expired" | "send";
94
+ /** Error thrown when a Solana swap route is too close to blockhash expiry. */
95
+ declare class SwapRouteExpiredError extends Error {
96
+ constructor(message?: string);
97
+ }
94
98
  /** Options for the {@link useSwap} hook. */
95
99
  interface UseSwapOptions {
96
100
  /** Called when the transaction is successfully submitted on-chain. */
@@ -1052,6 +1056,6 @@ declare global {
1052
1056
  };
1053
1057
  }
1054
1058
  }
1055
- declare const _default: "0.1.138";
1059
+ declare const _default: "0.1.140";
1056
1060
 
1057
- export { AmountPresetInputUI, type AmountPresetInputUIProps, AmountPresetInputWidget, type AmountPresetInputWidgetProps, type AmountPresetState, type AntiMevOption, type BuySettings, type ChainPresetFeatures, DEFAULT_BSC_TRADE_PRESET, DEFAULT_EVM_TRADE_PRESET, DEFAULT_INSTANT_TRADE_SETTINGS, DEFAULT_SELL_PERCENTAGES, DEFAULT_SOL_TRADE_PRESET, type FeeType, InstantTradeButtonWidget, type InstantTradeButtonWidgetProps, type InstantTradeContextValue, InstantTradeListButtonWidget, type InstantTradeListButtonWidgetProps, InstantTradeProvider, type InstantTradeProviderProps, type InstantTradeSettings, type InstantTradeSwapFn, InstantTradeSwapProvider, type InstantTradeSwapProviderProps, InstantTradeUI, type InstantTradeUIProps, InstantTradeWidget, type InstantTradeWidgetProps, MultiPresetFormWidget, type MultiPresetFormWidgetProps, type PresetDirection, PresetFormModal, type PresetFormModalParams, PresetFormUI, type PresetFormUIProps, PresetFormWidget, type PresetFormWidgetProps, type SellSettings, type SwapInput, type SwapPhase, SwapPreviewModal, type SwapPreviewModalProps, type SwapResult, SwapUI, type SwapUIProps, SwapWidget, type SwapWidgetProps, type TradePresetValues, type TxConfirmationStatus, type UseAmountPresetInputScriptParams, type UseAmountPresetInputScriptResult, type UseInstantTradeAmountParams, type UseInstantTradeButtonParams, type UseInstantTradeButtonResult, type UseInstantTradeListButtonParams, type UseInstantTradeListButtonResult, type UseInstantTradeScriptParams, type UseInstantTradeScriptResult, type UseMultiPresetFormScriptParams, type UseMultiPresetFormScriptResult, type UsePresetFormScriptParams, type UsePresetFormScriptResult, type UsePresetValuesParams, type UseSwapOptions, type UseSwapRoutePollingOptions, type UseSwapScriptParams, type UseSwapScriptResult, type UseTxConfirmationOptions, getChainPresetFeatures, getDefaultBuyAmounts, getDefaultPresetForChain, instantTradeAmountAtomFamily, instantTradeAmountKey, presetAtomFamily, presetKey, useAmountPresetInputScript, useInstantTrade, useInstantTradeAmount, useInstantTradeButtonScript, useInstantTradeListButtonScript, useInstantTradeScript, useInstantTradeSwap, useMultiPresetFormScript, usePresetFormScript, usePresetValues, useSwap, useSwapRoutePolling, useSwapScript, useTxConfirmation, _default as version };
1061
+ export { AmountPresetInputUI, type AmountPresetInputUIProps, AmountPresetInputWidget, type AmountPresetInputWidgetProps, type AmountPresetState, type AntiMevOption, type BuySettings, type ChainPresetFeatures, DEFAULT_BSC_TRADE_PRESET, DEFAULT_EVM_TRADE_PRESET, DEFAULT_INSTANT_TRADE_SETTINGS, DEFAULT_SELL_PERCENTAGES, DEFAULT_SOL_TRADE_PRESET, type FeeType, InstantTradeButtonWidget, type InstantTradeButtonWidgetProps, type InstantTradeContextValue, InstantTradeListButtonWidget, type InstantTradeListButtonWidgetProps, InstantTradeProvider, type InstantTradeProviderProps, type InstantTradeSettings, type InstantTradeSwapFn, InstantTradeSwapProvider, type InstantTradeSwapProviderProps, InstantTradeUI, type InstantTradeUIProps, InstantTradeWidget, type InstantTradeWidgetProps, MultiPresetFormWidget, type MultiPresetFormWidgetProps, type PresetDirection, PresetFormModal, type PresetFormModalParams, PresetFormUI, type PresetFormUIProps, PresetFormWidget, type PresetFormWidgetProps, type SellSettings, type SwapInput, type SwapPhase, SwapPreviewModal, type SwapPreviewModalProps, type SwapResult, SwapRouteExpiredError, SwapUI, type SwapUIProps, SwapWidget, type SwapWidgetProps, type TradePresetValues, type TxConfirmationStatus, type UseAmountPresetInputScriptParams, type UseAmountPresetInputScriptResult, type UseInstantTradeAmountParams, type UseInstantTradeButtonParams, type UseInstantTradeButtonResult, type UseInstantTradeListButtonParams, type UseInstantTradeListButtonResult, type UseInstantTradeScriptParams, type UseInstantTradeScriptResult, type UseMultiPresetFormScriptParams, type UseMultiPresetFormScriptResult, type UsePresetFormScriptParams, type UsePresetFormScriptResult, type UsePresetValuesParams, type UseSwapOptions, type UseSwapRoutePollingOptions, type UseSwapScriptParams, type UseSwapScriptResult, type UseTxConfirmationOptions, getChainPresetFeatures, getDefaultBuyAmounts, getDefaultPresetForChain, instantTradeAmountAtomFamily, instantTradeAmountKey, presetAtomFamily, presetKey, useAmountPresetInputScript, useInstantTrade, useInstantTradeAmount, useInstantTradeButtonScript, useInstantTradeListButtonScript, useInstantTradeScript, useInstantTradeSwap, useMultiPresetFormScript, usePresetFormScript, usePresetValues, useSwap, useSwapRoutePolling, useSwapScript, useTxConfirmation, _default as version };
package/dist/index.d.ts CHANGED
@@ -90,7 +90,11 @@ interface SwapResult {
90
90
  extra?: Record<string, unknown>;
91
91
  }
92
92
  /** Phase of the swap flow, used in error callbacks. */
93
- type SwapPhase = "route" | "sign" | "send";
93
+ type SwapPhase = "route" | "sign" | "expired" | "send";
94
+ /** Error thrown when a Solana swap route is too close to blockhash expiry. */
95
+ declare class SwapRouteExpiredError extends Error {
96
+ constructor(message?: string);
97
+ }
94
98
  /** Options for the {@link useSwap} hook. */
95
99
  interface UseSwapOptions {
96
100
  /** Called when the transaction is successfully submitted on-chain. */
@@ -1052,6 +1056,6 @@ declare global {
1052
1056
  };
1053
1057
  }
1054
1058
  }
1055
- declare const _default: "0.1.138";
1059
+ declare const _default: "0.1.140";
1056
1060
 
1057
- export { AmountPresetInputUI, type AmountPresetInputUIProps, AmountPresetInputWidget, type AmountPresetInputWidgetProps, type AmountPresetState, type AntiMevOption, type BuySettings, type ChainPresetFeatures, DEFAULT_BSC_TRADE_PRESET, DEFAULT_EVM_TRADE_PRESET, DEFAULT_INSTANT_TRADE_SETTINGS, DEFAULT_SELL_PERCENTAGES, DEFAULT_SOL_TRADE_PRESET, type FeeType, InstantTradeButtonWidget, type InstantTradeButtonWidgetProps, type InstantTradeContextValue, InstantTradeListButtonWidget, type InstantTradeListButtonWidgetProps, InstantTradeProvider, type InstantTradeProviderProps, type InstantTradeSettings, type InstantTradeSwapFn, InstantTradeSwapProvider, type InstantTradeSwapProviderProps, InstantTradeUI, type InstantTradeUIProps, InstantTradeWidget, type InstantTradeWidgetProps, MultiPresetFormWidget, type MultiPresetFormWidgetProps, type PresetDirection, PresetFormModal, type PresetFormModalParams, PresetFormUI, type PresetFormUIProps, PresetFormWidget, type PresetFormWidgetProps, type SellSettings, type SwapInput, type SwapPhase, SwapPreviewModal, type SwapPreviewModalProps, type SwapResult, SwapUI, type SwapUIProps, SwapWidget, type SwapWidgetProps, type TradePresetValues, type TxConfirmationStatus, type UseAmountPresetInputScriptParams, type UseAmountPresetInputScriptResult, type UseInstantTradeAmountParams, type UseInstantTradeButtonParams, type UseInstantTradeButtonResult, type UseInstantTradeListButtonParams, type UseInstantTradeListButtonResult, type UseInstantTradeScriptParams, type UseInstantTradeScriptResult, type UseMultiPresetFormScriptParams, type UseMultiPresetFormScriptResult, type UsePresetFormScriptParams, type UsePresetFormScriptResult, type UsePresetValuesParams, type UseSwapOptions, type UseSwapRoutePollingOptions, type UseSwapScriptParams, type UseSwapScriptResult, type UseTxConfirmationOptions, getChainPresetFeatures, getDefaultBuyAmounts, getDefaultPresetForChain, instantTradeAmountAtomFamily, instantTradeAmountKey, presetAtomFamily, presetKey, useAmountPresetInputScript, useInstantTrade, useInstantTradeAmount, useInstantTradeButtonScript, useInstantTradeListButtonScript, useInstantTradeScript, useInstantTradeSwap, useMultiPresetFormScript, usePresetFormScript, usePresetValues, useSwap, useSwapRoutePolling, useSwapScript, useTxConfirmation, _default as version };
1061
+ export { AmountPresetInputUI, type AmountPresetInputUIProps, AmountPresetInputWidget, type AmountPresetInputWidgetProps, type AmountPresetState, type AntiMevOption, type BuySettings, type ChainPresetFeatures, DEFAULT_BSC_TRADE_PRESET, DEFAULT_EVM_TRADE_PRESET, DEFAULT_INSTANT_TRADE_SETTINGS, DEFAULT_SELL_PERCENTAGES, DEFAULT_SOL_TRADE_PRESET, type FeeType, InstantTradeButtonWidget, type InstantTradeButtonWidgetProps, type InstantTradeContextValue, InstantTradeListButtonWidget, type InstantTradeListButtonWidgetProps, InstantTradeProvider, type InstantTradeProviderProps, type InstantTradeSettings, type InstantTradeSwapFn, InstantTradeSwapProvider, type InstantTradeSwapProviderProps, InstantTradeUI, type InstantTradeUIProps, InstantTradeWidget, type InstantTradeWidgetProps, MultiPresetFormWidget, type MultiPresetFormWidgetProps, type PresetDirection, PresetFormModal, type PresetFormModalParams, PresetFormUI, type PresetFormUIProps, PresetFormWidget, type PresetFormWidgetProps, type SellSettings, type SwapInput, type SwapPhase, SwapPreviewModal, type SwapPreviewModalProps, type SwapResult, SwapRouteExpiredError, SwapUI, type SwapUIProps, SwapWidget, type SwapWidgetProps, type TradePresetValues, type TxConfirmationStatus, type UseAmountPresetInputScriptParams, type UseAmountPresetInputScriptResult, type UseInstantTradeAmountParams, type UseInstantTradeButtonParams, type UseInstantTradeButtonResult, type UseInstantTradeListButtonParams, type UseInstantTradeListButtonResult, type UseInstantTradeScriptParams, type UseInstantTradeScriptResult, type UseMultiPresetFormScriptParams, type UseMultiPresetFormScriptResult, type UsePresetFormScriptParams, type UsePresetFormScriptResult, type UsePresetValuesParams, type UseSwapOptions, type UseSwapRoutePollingOptions, type UseSwapScriptParams, type UseSwapScriptResult, type UseTxConfirmationOptions, getChainPresetFeatures, getDefaultBuyAmounts, getDefaultPresetForChain, instantTradeAmountAtomFamily, instantTradeAmountKey, presetAtomFamily, presetKey, useAmountPresetInputScript, useInstantTrade, useInstantTradeAmount, useInstantTradeButtonScript, useInstantTradeListButtonScript, useInstantTradeScript, useInstantTradeSwap, useMultiPresetFormScript, usePresetFormScript, usePresetValues, useSwap, useSwapRoutePolling, useSwapScript, useTxConfirmation, _default as version };
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- 'use strict';var jotai=require('jotai'),jotaiFamily=require('jotai-family'),utils=require('jotai/utils'),utils$1=require('@liberfi.io/utils'),react=require('react'),react$1=require('@liberfi.io/react'),types=require('@liberfi.io/types'),walletConnector=require('@liberfi.io/wallet-connector'),ui=require('@liberfi.io/ui'),i18n=require('@liberfi.io/i18n'),jsxRuntime=require('react/jsx-runtime'),de=require('bignumber.js'),uiChainSelect=require('@liberfi.io/ui-chain-select'),uiScaffold=require('@liberfi.io/ui-scaffold');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var de__default=/*#__PURE__*/_interopDefault(de);var ln="liberfi.",un={amount:void 0,preset:0};function mn(e,t,s,r){return `${e}instant-trade.${t}.${s}.${r}`}function dn(e){let t=e.lastIndexOf(":"),s=e.slice(0,t+1),r=e.slice(t+1),[o,a,n]=r.split(".");return {prefix:s,id:o,chain:a,tokenAddress:n}}function j(e,t,s,r=ln){return `${r}:${e}.${t}.${s}`}var G=jotaiFamily.atomFamily(e=>{let{prefix:t,id:s,chain:r,tokenAddress:o}=dn(e);return utils.atomWithStorage(mn(t,s,String(r),o),un,void 0,{getOnInit:true})});function ka({id:e,chain:t,tokenAddress:s,storageKeyPrefix:r}){return jotai.useAtomValue(G(j(e,t,s,r)))}var ct={slippage:20,priorityFee:.001,autoFee:false,maxAutoFee:.1,gasFee:null,tipFee:.001,antiMev:"reduced",customRPC:null},ft={slippage:20,priorityFee:null,autoFee:false,maxAutoFee:null,gasFee:2,tipFee:null,antiMev:"off",customRPC:null},gt={slippage:30,priorityFee:null,autoFee:false,maxAutoFee:null,gasFee:2,tipFee:0,antiMev:"off",customRPC:null},cn={SOL:[.01,.1,1,10],ETH:[.01,.02,.5,1],BNB:[.025,.05,.1,.25],USDC:[25,50,100,200],USDT:[25,50,100,200]},fn=[1,10,25,50];function xt(e){return cn[e]??fn}var ht=[10,25,50,100];function le(e){let t=utils$1.getNativeToken(e);if(!t)throw new Error(`No native token defined for chain "${e}"`);let s=t.symbol;return utils$1.isSolanaChain(e)?{nativeSymbol:s,feeType:"priorityFee",feeUnit:s,feeDecimals:9,showTipFee:true,tipFeeUnit:s,tipFeeDecimals:9,showAutoFee:true,showCustomRPC:true,antiMevOptions:["off","reduced","secure"]}:utils$1.isBinanceChain(e)?{nativeSymbol:s,feeType:"gasFee",feeUnit:"Gwei",feeDecimals:2,showTipFee:true,tipFeeUnit:s,tipFeeDecimals:9,showAutoFee:false,showCustomRPC:false,antiMevOptions:["off","secure"]}:{nativeSymbol:s,feeType:"gasFee",feeUnit:"Gwei",feeDecimals:2,showTipFee:false,tipFeeUnit:s,tipFeeDecimals:9,showAutoFee:false,showCustomRPC:false,antiMevOptions:["off","secure"]}}function V(e){return utils$1.isSolanaChain(e)?ct:utils$1.isBinanceChain(e)?gt:ft}var yn="liberfi.";function bn(e,t,s,r){return `${e}preset.${t}.${s}.${r}`}function Sn(e){let t=e.lastIndexOf(":"),s=e.slice(0,t+1),r=e.slice(t+1),[o,a,n]=r.split(".");return {prefix:s,chain:o,direction:a,index:Number(n)}}function D(e,t,s,r=yn){return `${r}:${e}.${t}.${s}`}var L=jotaiFamily.atomFamily(e=>{let{prefix:t,chain:s,direction:r,index:o}=Sn(e);return utils.atomWithStorage(bn(t,String(s),r,o),V(s),void 0,{getOnInit:true})});function Ha({chain:e,direction:t,presetIndex:s=0,storageKeyPrefix:r}){return jotai.useAtomValue(L(D(e,t,s,r)))}function An(e){let t=atob(e),s=new Uint8Array(t.length);for(let r=0;r<t.length;r++)s[r]=t.charCodeAt(r);return s}function Fn(e){let t="";for(let s=0;s<e.length;s++)t+=String.fromCharCode(e[s]);return btoa(t)}function ne(e){let{client:t}=react$1.useDexClient(),[s,r]=react.useState(false),o=react.useRef(e);o.current=e;let a=react.useCallback(async n=>{let{wallet:l,chain:i,...u}=n;r(true);try{let d;try{d=await t.swapRoute({chain:i,userAddress:l.address,input:u.input,output:u.output,mode:u.mode??types.API.SwapMode.EXACT_IN,amount:u.amount,slippage:u.slippage,priorityFee:u.priorityFee,tipFee:u.tipFee,isAntiMev:u.isAntiMev,permit:u.permit,deadline:u.deadline});}catch(m){let g=m instanceof Error?m:new Error(String(m));throw o.current?.onError?.(g,"route"),g}let p;try{let m=An(d.serializedTx);p=await l.signTransaction(m);}catch(m){let g=m instanceof Error?m:new Error(String(m));throw o.current?.onError?.(g,"sign"),g}let c;try{let m=Fn(p);c=await t.sendTx({chain:i,serializedTx:m});}catch(m){let g=m instanceof Error?m:new Error(String(m));throw o.current?.onError?.(g,"send"),g}let x={txHash:c.txHash,extra:c.extra};return o.current?.onSubmitted?.(x),x}finally{r(false);}},[t]);return react.useMemo(()=>({swap:a,isSwapping:s}),[a,s])}var kn=12e3;function St(e,t){let s=t?.interval??kn,r=t?.paused??false,o=react.useRef(t);o.current=t;let n=!!e.chain&&!!e.userAddress&&!!e.input&&!!e.output&&!!e.amount&&!r,l=react$1.useSwapRouteQuery(e,{enabled:n,refetchInterval:n?s:false,retry:false});return react.useEffect(()=>{l.error&&o.current?.onError?.(l.error);},[l.error]),react.useMemo(()=>({route:l.data,isRouting:l.isFetching,error:l.error}),[l.data,l.isFetching,l.error])}var Wn=6e4;function Pt(e){let{client:t}=react$1.useDexClient(),[s,r]=react.useState(()=>new Map),o=react.useRef(e);o.current=e;let a=react.useCallback((u,d)=>{r(p=>{let c=p.get(u);if(!c||c.status===d)return p;let x=new Map(p);return x.set(u,{...c,status:d}),x});},[]),n=react.useCallback((u,d)=>{r(c=>{if(c.has(d))return c;let x=new Map(c);return x.set(d,{chain:u,txHash:d,status:"pending"}),x});let p=o.current?.timeout??Wn;t.checkTxSuccess(u,d,p).then(c=>{if(c)a(d,"confirmed"),o.current?.onConfirmed?.(d);else {let x=new Error("Transaction failed on-chain");a(d,"failed"),o.current?.onFailed?.(d,x);}}).catch(c=>{let x=c instanceof Error?c:new Error(String(c));a(d,"failed"),o.current?.onFailed?.(d,x);});},[t,a]),l=react.useCallback(u=>{r(d=>{if(!d.has(u))return d;let p=new Map(d);return p.delete(u),p});},[]),i=react.useCallback(()=>{r(u=>u.size===0?u:new Map);},[]);return react.useMemo(()=>({track:n,clear:l,clearAll:i,transactions:s}),[n,l,i,s])}var $n=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]);function Qn(e){return $n.has(e)?types.ChainNamespace.SOLANA:types.ChainNamespace.EVM}var zn=1e4,Hn=15e3;function jn(e,t){if(e.length===0)return;let r=e[e.length-1].outputAmount;if(!r||r==="0")return "0";let o=r.padStart(t+1,"0"),a=o.slice(0,o.length-t)||"0",l=o.slice(o.length-t).replace(/0+$/,"");return l?`${a}.${l}`:a}function ke(e){let{chain:t}=e,s=walletConnector.useWallets(),r=Qn(t),o=react.useMemo(()=>s.find(S=>S.chainNamespace===r&&S.isConnected),[s,r]),a=o?.address??"",[n,l]=react.useState(e.from??""),[i,u]=react.useState(e.to??""),d=react.useRef(e.from),p=react.useRef(e.to);react.useEffect(()=>{e.from!==d.current&&(d.current=e.from,e.from&&l(e.from));},[e.from]),react.useEffect(()=>{e.to!==p.current&&(p.current=e.to,e.to&&u(e.to));},[e.to]);let c=react.useMemo(()=>[n,i].filter(Boolean),[n,i]),x=react$1.useTokensQuery({chain:t,addresses:c},{enabled:c.length>0,refetchInterval:zn}),m=react.useMemo(()=>x.data?.find(S=>S.address===n)??null,[x.data,n]),g=react.useMemo(()=>x.data?.find(S=>S.address===i)??null,[x.data,i]),b=react$1.useWalletPortfoliosByTokensQuery({chain:t,address:a,tokenAddresses:c},{enabled:!!a&&c.length>0,refetchInterval:Hn}),P=react.useMemo(()=>b.data?.find(S=>S.address===n)??null,[b.data,n]),v=react.useMemo(()=>b.data?.find(S=>S.address===i)??null,[b.data,i]),[f,A]=react.useState(void 0),M=react.useMemo(()=>{if(!f||m?.decimals==null)return;let S=f.split("."),B=S[0]??"0",Ue=(S[1]??"").slice(0,m.decimals).padEnd(m.decimals,"0");return (B+Ue).replace(/^0+/,"")||"0"},[f,m?.decimals]),$=react.useMemo(()=>{if(!f||!m?.marketData?.priceInUsd)return;let S=Number(m.marketData.priceInUsd),B=Number(f)*S;return Number.isFinite(B)?B.toString():void 0},[f,m?.marketData?.priceInUsd]),Q=react.useCallback(()=>{if(!P)return;let S=Number(P.amount);if(!Number.isFinite(S)||S<=0)return;let B=S/2,Se=m?.decimals??9;A(B.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:Se}));},[P,m?.decimals]),H=react.useCallback(()=>{if(!P)return;let S=Number(P.amount);if(!Number.isFinite(S)||S<=0)return;let B=m?.decimals??9;A(S.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:B}));},[P,m?.decimals]),U=react.useMemo(()=>({chain:t,userAddress:a||void 0,input:n||void 0,output:i||void 0,mode:types.API.SwapMode.EXACT_IN,amount:M}),[t,a,n,i,M]),q=react.useRef(false),{route:F,isRouting:J,error:Y}=St(U,{paused:q.current}),z=react.useMemo(()=>F&&g?jn(F.plans,g.decimals):void 0,[F,g]),re=react.useMemo(()=>{if(!z||!g?.marketData?.priceInUsd)return;let S=Number(g.marketData.priceInUsd),B=Number(z)*S;return Number.isFinite(B)?B.toString():void 0},[z,g?.marketData?.priceInUsd]),{swap:w,isSwapping:R}=ne();q.current=R;let O=react.useRef(e.onComplete);O.current=e.onComplete;let{track:ae,transactions:ee}=Pt({onConfirmed:S=>{O.current?.({success:true,txHash:S});},onFailed:S=>{O.current?.({success:false,txHash:S});}}),oe=react.useMemo(()=>{if(ee.size===0)return "idle";let S=Array.from(ee.values());return S[S.length-1].status},[ee]),te=react.useCallback(async()=>{if(!(!o||!F||!n||!i||!M))try{let S=await w({chain:t,wallet:o,input:n,output:i,amount:M,mode:types.API.SwapMode.EXACT_IN});ae(t,S.txHash);}catch{}},[o,F,t,n,i,M,w,ae]),ie=x.isPending||b.isPending;return react.useMemo(()=>({fromTokenAddress:n,toTokenAddress:i,setFromTokenAddress:l,setToTokenAddress:u,fromToken:m,toToken:g,fromBalance:P,toBalance:v,amount:f,setAmount:A,setHalfAmount:Q,setMaxAmount:H,amountInDecimals:M,amountInUsd:$,outputAmount:z,outputAmountInUsd:re,route:F,isRouting:J,routeError:Y,swap:te,isSwapping:R,txStatus:oe,isLoading:ie}),[n,i,m,g,P,v,f,Q,H,M,$,z,re,F,J,Y,te,R,oe,ie])}function Le({isOpen:e,onOpenChange:t,fromToken:s,toToken:r,fromBalance:o,inputAmount:a,inputAmountInUsd:n,outputAmount:l,outputAmountInUsd:i,route:u,isRouting:d,routeError:p,onConfirm:c,isSwapping:x}){let{t:m}=i18n.useTranslation(),[g,b]=react.useState(false),P=react.useCallback(()=>b(f=>!f),[]),v=react.useMemo(()=>u?u.plans.map((f,A)=>({key:`plan-${A}`,name:f.name,input:f.input,inputAmount:f.inputAmount,output:f.output,outputAmount:f.outputAmount,feeQuote:f.feeQuote,feeAmount:f.feeAmount})):[],[u]);return jsxRuntime.jsx(ui.Modal,{isOpen:e,onOpenChange:t,hideCloseButton:true,scrollBehavior:"inside",backdrop:"blur",children:jsxRuntime.jsxs(ui.ModalContent,{className:"bg-content2 rounded-lg",children:[jsxRuntime.jsx(ui.ModalHeader,{children:m("trade.swap.preview")}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsxs("div",{className:"flex w-full max-h-[70vh] flex-1 flex-col overflow-y-auto py-2",children:[jsxRuntime.jsxs("div",{className:"mb-5",children:[jsxRuntime.jsx("div",{className:"text-neutral flex items-center justify-between text-xs font-medium",children:m("trade.swap.from")}),jsxRuntime.jsxs("div",{className:"bg-content3 mt-3 flex w-full items-center gap-3 rounded-lg px-4 py-3",children:[jsxRuntime.jsxs("div",{className:"flex flex-1 items-center gap-3",children:[s?.image&&jsxRuntime.jsx(ui.Avatar,{size:"sm",src:s.image,name:s.symbol,className:"h-6 w-6"}),jsxRuntime.jsxs("div",{className:"flex flex-col items-start justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:s?.symbol??"\u2014"}),o&&jsxRuntime.jsxs("div",{className:"text-neutral flex items-center gap-1 text-[10px]",children:[jsxRuntime.jsx(os,{}),jsxRuntime.jsxs("span",{children:[Be(o.amount)," ",s?.symbol]})]})]})]}),jsxRuntime.jsxs("div",{className:"flex-0 flex flex-col items-end justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:Be(a)}),jsxRuntime.jsxs("div",{className:"text-neutral text-[10px]",children:["$",It(n)]})]})]})]}),jsxRuntime.jsxs("div",{className:"mb-5",children:[jsxRuntime.jsx("div",{className:"text-neutral flex items-center justify-between text-xs font-medium",children:m("trade.swap.estimatedReceive")}),jsxRuntime.jsxs("div",{className:"bg-content3 mt-3 flex w-full items-center gap-3 rounded-lg px-4 py-3",children:[jsxRuntime.jsxs("div",{className:"flex flex-1 items-center gap-3",children:[r?.image&&jsxRuntime.jsx(ui.Avatar,{size:"sm",src:r.image,name:r.symbol,className:"h-6 w-6"}),jsxRuntime.jsxs("div",{className:"flex flex-col items-start justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:r?.symbol??"\u2014"}),jsxRuntime.jsx("div",{className:"text-neutral text-[10px]",children:we(r?.address)})]})]}),jsxRuntime.jsxs("div",{className:"flex-0 flex flex-col items-end justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:Be(l)}),jsxRuntime.jsxs("div",{className:"text-neutral text-[10px]",children:["$",It(i)]})]})]})]}),g&&v.length>0&&jsxRuntime.jsxs("div",{className:"my-3",children:[jsxRuntime.jsx("div",{className:"text-neutral flex items-center justify-between text-xs font-medium",children:m("trade.swap.routeDetails")}),jsxRuntime.jsx("div",{className:"mt-3 flex flex-col gap-3",children:v.map(f=>jsxRuntime.jsxs("div",{className:"bg-content3 flex w-full flex-col items-center gap-2 rounded-lg px-4 py-3",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-neutral text-xs",children:m("trade.swap.dex")}),jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:f.name})]}),jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-neutral text-xs",children:m("trade.swap.swap")}),jsxRuntime.jsxs("div",{className:"text-foreground flex items-center gap-2 text-xs",children:[jsxRuntime.jsxs("span",{children:[De(f.inputAmount)," ",we(f.input)]}),jsxRuntime.jsx(ui.TradeIcon,{width:12,height:12,className:"text-foreground"}),jsxRuntime.jsxs("span",{children:[De(f.outputAmount)," ",we(f.output)]})]})]}),f.feeAmount&&jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-neutral text-xs",children:m("trade.swap.fee")}),jsxRuntime.jsxs("div",{className:"text-foreground text-xs",children:[De(f.feeAmount)," ",we(f.feeQuote)]})]})]},f.key))})]}),v.length>0&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"text-neutral flex bg-transparent text-xs",endContent:g?jsxRuntime.jsx(ui.ChevronUpIcon,{width:12,height:12}):jsxRuntime.jsx(ui.ChevronDownIcon,{width:12,height:12}),disableRipple:true,onPress:P,children:m(g?"trade.swap.showLess":"trade.swap.showMore")})})]})}),jsxRuntime.jsx(ui.ModalFooter,{children:jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"primary",className:"flex rounded-lg",disableRipple:true,isDisabled:!u||!!p,isLoading:!u&&d||x,onPress:c,children:m("common.confirm")})})]})})}function os(){return jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral",children:[jsxRuntime.jsx("path",{d:"M21 12V7H5a2 2 0 0 1 0-4h14v4"}),jsxRuntime.jsx("path",{d:"M3 5v14a2 2 0 0 0 2 2h16v-5"}),jsxRuntime.jsx("path",{d:"M18 12a2 2 0 0 0 0 4h4v-4Z"})]})}function It(e){if(!e)return "0.00";let t=Number(e);return Number.isFinite(t)?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):"0.00"}function Be(e){if(!e)return "0";let t=Number(e);return Number.isFinite(t)?t>=1e6?(t/1e6).toLocaleString("en-US",{maximumFractionDigits:2})+"M":t>=1e3?(t/1e3).toLocaleString("en-US",{maximumFractionDigits:2})+"K":t.toLocaleString("en-US",{maximumFractionDigits:6}):"0"}function De(e){if(!e||e==="0")return "0";let t=Number(e);return Number.isFinite(t)?t>=1e12?(t/1e12).toFixed(2)+"T":t>=1e9?(t/1e9).toFixed(2)+"B":t>=1e6?(t/1e6).toFixed(2)+"M":t>=1e3?(t/1e3).toFixed(2)+"K":e:e}function we(e){return e?e.length<=10?e:`${e.slice(0,4)}...${e.slice(-4)}`:"\u2014"}function We({fromToken:e,toToken:t,fromBalance:s,toBalance:r,amount:o,amountInUsd:a,onAmountChange:n,onHalfAmount:l,onMaxAmount:i,outputAmount:u,outputAmountInUsd:d,onFromTokenSelect:p,onToTokenSelect:c,route:x,isRouting:m,routeError:g,onPreview:b,isSwapping:P,className:v}){let{t:f}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:ui.cn("px-4 pb-4 lg:pb-8",v),children:[jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsx("p",{className:"text-neutral text-sm font-medium",children:f("trade.swap.from")}),jsxRuntime.jsxs("div",{className:"bg-content1 flex flex-col rounded-lg px-3.5 pb-2.5 pt-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex-1",children:jsxRuntime.jsx(ui.Input,{type:"number",value:o??"",onChange:A=>n(A.target.value||void 0),placeholder:"0",classNames:{inputWrapper:ui.cn("h-10 p-0 bg-transparent","data-[hover=true]:bg-transparent group-data-[focus=true]:bg-transparent","group-data-[focus-visible=true]:ring-offset-transparent group-data-[focus-visible=true]:ring-transparent"),input:ui.cn("w-full h-full caret-primary text-3xl font-medium","placeholder:text-placeholder placeholder:text-3xl placeholder:font-medium","scrollbar-hide overflow-hidden text-ellipsis whitespace-nowrap")}})}),jsxRuntime.jsx("div",{className:"flex-0 flex h-full items-center justify-center",children:jsxRuntime.jsx(ui.Button,{className:ui.cn("flex min-w-0 h-8 min-h-8 pl-3 pr-2 bg-content3 rounded-full",e?"text-foreground":"text-neutral"),disableRipple:true,startContent:e?.image?jsxRuntime.jsx(ui.Avatar,{size:"sm",src:e.image,name:e.symbol,className:"h-6 w-6"}):null,endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"text-neutral"}),onPress:()=>p(""),children:e?e.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsxs("div",{className:"text-neutral flex-1 text-xs",children:["\u2248 $",Mt(a)]}),s&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(Et,{}),jsxRuntime.jsxs("span",{className:"text-neutral",children:[Rt(s.amount)," ",s.symbol]}),l&&jsxRuntime.jsx("span",{className:"text-primary cursor-pointer",onClick:l,children:f("trade.swap.half")}),i&&jsxRuntime.jsx("span",{className:"text-primary cursor-pointer",onClick:i,children:f("common.max")})]})]}),g&&jsxRuntime.jsx("p",{className:"mt-1 break-words text-xs text-danger-500",children:g.message})]})]}),jsxRuntime.jsxs("div",{className:"mt-4 space-y-3",children:[jsxRuntime.jsx("p",{className:"text-neutral text-sm font-medium",children:f("trade.swap.to")}),jsxRuntime.jsxs("div",{className:"bg-content1 flex flex-col rounded-lg px-3.5 pb-2.5 pt-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex-1",children:jsxRuntime.jsx(ui.Input,{type:"number",value:u??"",disabled:true,placeholder:"0",classNames:{inputWrapper:ui.cn("h-10 p-0 bg-transparent","data-[hover=true]:bg-transparent group-data-[focus=true]:bg-transparent","group-data-[focus-visible=true]:ring-offset-transparent group-data-[focus-visible=true]:ring-transparent"),input:ui.cn("w-full h-full caret-primary text-3xl font-medium","placeholder:text-placeholder placeholder:text-3xl placeholder:font-medium","scrollbar-hide overflow-hidden text-ellipsis whitespace-nowrap")}})}),jsxRuntime.jsx("div",{className:"flex-0 flex h-full items-center justify-center",children:jsxRuntime.jsx(ui.Button,{className:ui.cn("flex min-w-0 h-8 min-h-8 pl-3 pr-2 bg-content3 rounded-full",t?"text-foreground":"text-neutral"),disableRipple:true,startContent:t?.image?jsxRuntime.jsx(ui.Avatar,{size:"sm",src:t.image,name:t.symbol,className:"h-6 w-6"}):null,endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"text-neutral"}),onPress:()=>c(""),children:t?t.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsxs("div",{className:"text-neutral flex-1 text-xs",children:["\u2248 $",Mt(d)]}),r&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(Et,{}),jsxRuntime.jsxs("span",{className:"text-neutral",children:[Rt(r.amount)," ",r.symbol]})]})]})]})]}),jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"primary",className:"mt-8 flex rounded-lg",disableRipple:true,isDisabled:!x,isLoading:!x&&m,onPress:b,children:f(P?"trade.swap.swapping":m?"trade.swap.findingRoute":"trade.swap.swap")})]})}function Et(){return jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral",children:[jsxRuntime.jsx("path",{d:"M21 12V7H5a2 2 0 0 1 0-4h14v4"}),jsxRuntime.jsx("path",{d:"M3 5v14a2 2 0 0 0 2 2h16v-5"}),jsxRuntime.jsx("path",{d:"M18 12a2 2 0 0 0 0 4h4v-4Z"})]})}function Mt(e){if(!e)return "0.00";let t=Number(e);return Number.isFinite(t)?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):"0.00"}function Rt(e){if(!e)return "0";let t=Number(e);return Number.isFinite(t)?t>=1e6?(t/1e6).toLocaleString("en-US",{maximumFractionDigits:2})+"M":t>=1e3?(t/1e3).toLocaleString("en-US",{maximumFractionDigits:2})+"K":t.toLocaleString("en-US",{maximumFractionDigits:6}):"0"}function ms({chain:e,from:t,to:s,onComplete:r,className:o}){let a=ke({chain:e,from:t,to:s,onComplete:r}),{isOpen:n,onOpen:l,onOpenChange:i,onClose:u}=ui.useDisclosure(),d=react.useCallback(async()=>{await a.swap(),u();},[a,u]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(We,{fromToken:a.fromToken,toToken:a.toToken,fromBalance:a.fromBalance,toBalance:a.toBalance,amount:a.amount,amountInUsd:a.amountInUsd,onAmountChange:a.setAmount,onHalfAmount:a.setHalfAmount,onMaxAmount:a.setMaxAmount,outputAmount:a.outputAmount,outputAmountInUsd:a.outputAmountInUsd,onFromTokenSelect:a.setFromTokenAddress,onToTokenSelect:a.setToTokenAddress,route:a.route,isRouting:a.isRouting,routeError:a.routeError,onPreview:l,isSwapping:a.isSwapping,className:o}),jsxRuntime.jsx(Le,{isOpen:n,onOpenChange:i,fromToken:a.fromToken,toToken:a.toToken,fromBalance:a.fromBalance,inputAmount:a.amount,inputAmountInUsd:a.amountInUsd,outputAmount:a.outputAmount,outputAmountInUsd:a.outputAmountInUsd,route:a.route,isRouting:a.isRouting,routeError:a.routeError,onConfirm:d,isSwapping:a.isSwapping})]})}function Dt(e){let t=V(e),s=utils$1.getNativeToken(e)?.symbol??"ETH";return {buy:{customAmounts:xt(s),presets:[{...t},{...t},{...t}]},sell:{customPercentages:[...ht],presets:[{...t},{...t},{...t}]}}}var gs=Dt("900900900");function Lt(e){return `liberfi.instant-trade.settings.${e}`}function xs(e,t){try{let s=localStorage.getItem(Lt(String(e)));if(s)return JSON.parse(s)}catch{}return t}function hs(e,t){try{localStorage.setItem(Lt(e),JSON.stringify(t));}catch{}}var _t=react.createContext(null);function Ve(){let e=react.useContext(_t);if(!e)throw new Error("useInstantTrade must be used within an InstantTradeProvider");return e}function Ke({chain:e,tokenAddress:t,settings:s,onSettingsChange:r,children:o}){let a=react.useMemo(()=>utils$1.getNativeToken(e),[e]),n=s!==void 0,l=react.useMemo(()=>Dt(e),[e]),[i,u]=react.useState(()=>n?l:xs(e,l)),d=n?s:i,p=react.useCallback(U=>{n?r?.(U):(u(U),hs(String(e),U));},[n,r,e]),c=react.useCallback(U=>p({...d,buy:U}),[d,p]),x=react.useCallback(U=>p({...d,sell:U}),[d,p]),[m,g]=react.useState("buy"),[b,P]=react.useState(),[v,f]=react.useState(0),[A,M]=react.useState(0),$=react.useMemo(()=>V(e),[e]),Q=react.useMemo(()=>{let U=m==="buy"?v:A;return (m==="buy"?d.buy.presets:d.sell.presets)[U]??$},[m,v,A,d,$]),H=react.useMemo(()=>({chain:e,tokenAddress:t,nativeToken:a,direction:m,setDirection:g,amount:b,setAmount:P,buyPreset:v,setBuyPreset:f,sellPreset:A,setSellPreset:M,settings:d,updateBuySettings:c,updateSellSettings:x,currentPresetValues:Q}),[e,t,a,m,b,v,A,d,c,x,Q]);return jsxRuntime.jsx(_t.Provider,{value:H,children:o})}var Fs=15e3,Us=1e4;function Qe(e){let{chain:t,tokenAddress:s,onSwapSubmitted:r,onSwapError:o}=e,{t:a}=i18n.useTranslation(),n=Ve(),l=react.useMemo(()=>utils$1.getNativeToken(t),[t]),i=react.useMemo(()=>utils$1.getWrappedToken(t),[t]),u=walletConnector.useWallets(),d=utils$1.chainToNamespace(t),p=react.useMemo(()=>u.find(w=>w.chainNamespace===d&&w.isConnected),[u,d]),c=p?.address??"",x=react.useMemo(()=>{let w=[s];return l&&w.push(l.address),i&&w.push(i.address),w.filter(Boolean)},[s,l,i]),m=react$1.useTokensQuery({chain:t,addresses:x},{enabled:x.length>0,refetchInterval:Us}),g=react.useMemo(()=>m.data?.find(w=>w.address===s)??null,[m.data,s]),b=react$1.useWalletPortfoliosByTokensQuery({chain:t,address:c,tokenAddresses:x},{enabled:!!c&&x.length>0,refetchInterval:Fs}),P=l?.address??i?.address??"",v=react.useMemo(()=>b.data?.find(w=>w.address===P)??null,[b.data,P]),f=react.useMemo(()=>b.data?.find(w=>w.address===s)??null,[b.data,s]),[A,M]=react.useState(false),$=react.useRef(null),Q=react.useCallback(w=>{let R=$.current;$.current=w,M(O=>R===null||R!==w?true:!O);},[]),H=react.useRef(r);H.current=r;let U=react.useRef(o);U.current=o;let{swap:q,isSwapping:F}=ne({onSubmitted:w=>H.current?.(w),onError:(w,R)=>U.current?.(w,R)}),J=react.useCallback(async()=>{if(!n.amount||!p||!s)return;let w=l?.decimals??9,R=i?.address??l?.address??"",O=n.direction==="buy",ae=O?R:s,ee=O?s:R,oe=O?w:g?.decimals??9,te=new de__default.default(n.amount).shiftedBy(oe).decimalPlaces(0).toString(),ie=n.currentPresetValues,S=V(t),B=ie.slippage??S.slippage??1,Se=ie.antiMev!=="off",Ue=utils$1.isSolanaChain(t)?{priorityFee:new de__default.default(ie.priorityFee??S.priorityFee??0).shiftedBy(w).decimalPlaces(0).toString(),tipFee:new de__default.default(ie.tipFee??S.tipFee??0).shiftedBy(w).decimalPlaces(0).toString(),isAntiMev:Se}:{};try{await q({chain:t,wallet:p,input:ae,output:ee,amount:te,slippage:B,...Ue}),n.setAmount(void 0);}catch{}},[n,p,s,l,i,g,t,q]),Y=react.useMemo(()=>{let w=a(n.direction==="buy"?"common.buy":"common.sell");if(!n.amount)return w;let R=` (${a("trade.insufficientBalance")})`;if(n.direction==="buy"){let ae=v?.amount;if(ae&&new de__default.default(ae).lt(n.amount))return `${w}${R}`;let ee=l?.symbol??"",oe=m.data?.find(te=>te.address===P)?.marketData?.priceInUsd;if(oe){let te=utils$1.formatAmountUSD(new de__default.default(n.amount).times(Number(oe)));return a("trade.submitBuyAmount",{amount:n.amount,symbol:ee,usd:te})}return a("trade.submitBuyAmountNoUsd",{amount:n.amount,symbol:ee})}let O=f?.amount;return O&&new de__default.default(O).lt(n.amount)?`${w}${R}`:w},[a,n.direction,n.amount,v,f,l,m.data,P]),z=!n.amount||!p||!s,re=m.isPending||b.isPending;return react.useMemo(()=>({chain:t,tokenAddress:s,nativeToken:l,tokenInfo:g,nativeBalance:v,tokenBalance:f,direction:n.direction,setDirection:n.setDirection,amount:n.amount,setAmount:n.setAmount,buyPreset:n.buyPreset,setBuyPreset:n.setBuyPreset,sellPreset:n.sellPreset,setSellPreset:n.setSellPreset,currentPresetValues:n.currentPresetValues,settings:n.settings,updateBuySettings:n.updateBuySettings,updateSellSettings:n.updateSellSettings,showSettings:A,handlePresetClick:Q,swap:J,isSwapping:F,submitText:Y,isDisabled:z,isLoading:re}),[t,s,l,g,v,f,n,A,Q,J,F,Y,z,re])}function ye({value:e,onChange:t,chain:s,disableAnimation:r,className:o}){let a=react.useCallback(i=>t({...e,...i}),[e,t]),n=react.useMemo(()=>le(s),[s]),l=n.feeType==="gasFee"?"gasFee":"priorityFee";return jsxRuntime.jsxs("div",{className:ui.cn("space-y-4",o),children:[jsxRuntime.jsx(Os,{value:e.slippage,onChange:i=>a({slippage:i})}),jsxRuntime.jsx(Vs,{value:e[l],onChange:i=>a({[l]:i}),feeType:n.feeType,symbol:n.feeUnit,decimals:n.feeDecimals}),n.showTipFee&&jsxRuntime.jsx(Ks,{value:e.tipFee,onChange:i=>a({tipFee:i}),symbol:n.tipFeeUnit,decimals:n.tipFeeDecimals}),n.showAutoFee&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx($s,{value:e.autoFee,onChange:i=>a({autoFee:i}),disableAnimation:r}),e.autoFee&&jsxRuntime.jsx(Qs,{value:e.maxAutoFee,onChange:i=>a({maxAutoFee:i}),symbol:n.nativeSymbol})]}),jsxRuntime.jsx(zs,{value:e.antiMev,onChange:i=>a({antiMev:i}),options:n.antiMevOptions,disableAnimation:r}),n.showCustomRPC&&jsxRuntime.jsx(Hs,{value:e.customRPC,onChange:i=>a({customRPC:i})})]})}function Os({value:e,onChange:t}){let{t:s}=i18n.useTranslation(),r=s("trade.preset.slippage");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsx("div",{className:"text-sm text-neutral",children:r}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:o=>t(isNaN(o)?null:o),hideStepper:true,minValue:0,maxValue:100,step:1,endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:"%"}),"aria-label":r})]})}function Vs({value:e,onChange:t,feeType:s,symbol:r,decimals:o}){let{t:a}=i18n.useTranslation(),n=a(`trade.preset.${s}`),l=a(`trade.preset.${s}.tooltip`);return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[n,jsxRuntime.jsx(ui.StyledTooltip,{content:l,children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:i=>t(isNaN(i)?null:i),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:o},endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:r}),"aria-label":n})]})}function Ks({value:e,onChange:t,symbol:s,decimals:r}){let{t:o}=i18n.useTranslation(),a=o("trade.preset.tipFee");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[a,jsxRuntime.jsx(ui.StyledTooltip,{content:o("trade.preset.tipFee.tooltip"),children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:n=>t(isNaN(n)?null:n),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:r},endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:s}),"aria-label":a})]})}function $s({value:e,onChange:t,disableAnimation:s}){let{t:r}=i18n.useTranslation(),o=r("trade.preset.autoFee");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[o,jsxRuntime.jsx(ui.StyledTooltip,{content:r("trade.preset.autoFee.tooltip"),children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(ui.StyledSwitch,{isSelected:e,onValueChange:t,color:"primary","aria-label":o,disableAnimation:s})})]})}function Qs({value:e,onChange:t,symbol:s}){let{t:r}=i18n.useTranslation(),o=r("trade.preset.maxAutoFee");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsx("div",{className:"text-sm text-neutral",children:o}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:a=>t(isNaN(a)?null:a),hideStepper:true,minValue:0,endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:s}),"aria-label":o})]})}function zs({value:e,onChange:t,options:s,disableAnimation:r}){let{t:o}=i18n.useTranslation(),a=o("trade.preset.antiMev"),n=react.useMemo(()=>({off:ui.ShieldOffIcon,reduced:ui.ShieldIcon,secure:ui.ShieldPlusIcon}),[]),l=react.useMemo(()=>({off:{title:o("trade.preset.antiMev.off"),desc:o("trade.preset.antiMev.off.desc")},reduced:{title:o("trade.preset.antiMev.reduced"),desc:o("trade.preset.antiMev.reduced.desc")},secure:{title:o("trade.preset.antiMev.secure"),desc:o("trade.preset.antiMev.secure.desc")}}),[o]);return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[a,jsxRuntime.jsx(ui.StyledTooltip,{content:o("trade.preset.antiMev.tooltip"),children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(ui.StyledBorderedTabs,{color:"primary",radius:"lg",classNames:{tabList:"gap-0",tab:"w-8 min-w-0 px-0"},selectedKey:e,onSelectionChange:t,disableAnimation:r,"aria-label":a,children:s.map(i=>{let u=n[i],d=l[i];return jsxRuntime.jsx(ui.Tab,{title:jsxRuntime.jsx(ui.StyledTooltip,{content:jsxRuntime.jsxs("div",{className:"text-xs",children:[jsxRuntime.jsx("div",{className:"font-medium text-foreground",children:d.title}),jsxRuntime.jsx("div",{className:"mt-0.5",children:d.desc})]}),children:jsxRuntime.jsx("span",{className:"flex items-center justify-center",children:jsxRuntime.jsx(u,{width:18,height:18})})})},i)})})})]})}function Hs({value:e,onChange:t}){let{t:s}=i18n.useTranslation(),r=s("trade.preset.customRpc");return jsxRuntime.jsxs("div",{className:"w-full flex gap-4 items-center",children:[jsxRuntime.jsx("div",{className:"flex-none text-sm text-neutral",children:r}),jsxRuntime.jsx("div",{className:"flex-auto",children:jsxRuntime.jsx(ui.StyledInput,{fullWidth:true,variant:"flat",value:e??"",onValueChange:o=>t(o||null),placeholder:"https://...","aria-label":r})})]})}function Ge({chain:e,direction:t,onDirectionChange:s,amount:r,onAmountChange:o,customAmounts:a,customPercentages:n,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:d,tokenSymbol:p,nativeBalance:c,tokenBalance:x,amountConversion:m,preset:g,onPresetChange:b,presetValues:P,onPresetSettingsChange:v,showSettings:f,onPresetClick:A,submitText:M,isDisabled:$,isLoading:Q,onSubmit:H,className:U,headerExtra:q}){let{t:F}=i18n.useTranslation(),J=react.useMemo(()=>utils$1.getNativeToken(e),[e]),Y=J?.symbol,z=J?.decimals??9;return jsxRuntime.jsxs("div",{className:ui.cn("flex-none sm:px-3 py-3 bg-content1 rounded-lg",U),children:[jsxRuntime.jsxs(ui.Tabs,{fullWidth:true,size:"sm",color:t==="buy"?"primary":"secondary",selectedKey:t,onSelectionChange:s,classNames:{tabList:"bg-content2",tab:ui.cn("h-6",t==="buy"?"data-[selected=true]:bg-primary":"data-[selected=true]:bg-secondary"),cursor:t==="buy"?"bg-primary":"bg-secondary"},disableAnimation:true,children:[jsxRuntime.jsx(ui.Tab,{title:F("common.buy")},"buy"),jsxRuntime.jsx(ui.Tab,{title:F("common.sell")},"sell")]}),jsxRuntime.jsxs("div",{className:"mt-2.5 h-8 flex items-center justify-between",children:[jsxRuntime.jsx(ui.Tabs,{size:"sm",variant:"underlined",classNames:{tabList:"gap-0",tab:"px-1.5"},selectedKey:"market",disableAnimation:true,children:jsxRuntime.jsx(ui.Tab,{title:F("trade.market")},"market")}),q]}),jsxRuntime.jsx("div",{className:"mt-2.5",children:t==="buy"?jsxRuntime.jsx(rr,{amount:r,onAmountChange:o,customAmounts:a,onQuickAmountClick:l,onCustomAmountsEdit:u,nativeSymbol:Y,nativeDecimals:z,amountLabel:F("trade.amount")}):jsxRuntime.jsx(ar,{amount:r,onAmountChange:o,customPercentages:n,onQuickPercentageClick:i,onCustomPercentagesEdit:d,tokenSymbol:p,amountLabel:F("trade.amount")})}),jsxRuntime.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[jsxRuntime.jsxs("div",{className:"text-xs text-neutral space-x-1",children:[jsxRuntime.jsx("span",{children:F("trade.balance")}),jsxRuntime.jsx("span",{children:t==="buy"?c?`${c} ${Y??""}`:"--":x?`${x} ${p??""}`:"--"})]}),m&&jsxRuntime.jsx("div",{className:"text-xs text-neutral",children:m})]}),jsxRuntime.jsx("div",{className:"mt-4",children:jsxRuntime.jsx(or,{values:P,chain:e})}),jsxRuntime.jsx("div",{className:"mt-2",children:jsxRuntime.jsxs(ui.Tabs,{variant:"bordered",size:"sm",fullWidth:true,classNames:{tabList:"border-content3 border-1 gap-0 p-0.5",tab:"min-h-0 h-6 px-2 py-1 text-xs data-[selected=true]:bg-content3",tabContent:"text-neutral"},selectedKey:`${g}`,onSelectionChange:re=>b(Number(re)),disableAnimation:true,"aria-label":F("trade.preset.presets"),children:[jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:1}),onClick:()=>A(0)},0),jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:2}),onClick:()=>A(1)},1),jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:3}),onClick:()=>A(2)},2)]})}),f&&jsxRuntime.jsx("div",{className:"mt-2.5",children:jsxRuntime.jsx(ye,{value:P,onChange:v,chain:e})}),jsxRuntime.jsx(ui.Button,{fullWidth:true,size:"sm",color:t==="buy"?"primary":"secondary",className:"mt-2 rounded-lg",disableRipple:true,isDisabled:$,isLoading:Q,onPress:H,children:M})]})}function rr({amount:e,onAmountChange:t,customAmounts:s,onQuickAmountClick:r,onCustomAmountsEdit:o,nativeSymbol:a,nativeDecimals:n,amountLabel:l}){let i=react.useCallback(u=>{typeof u=="number"&&t(isNaN(u)?void 0:u);},[t]);return jsxRuntime.jsxs("div",{className:"space-y-0.5",children:[jsxRuntime.jsx(ui.NumberInput,{min:0,value:e,onChange:i,fullWidth:true,hideStepper:true,startContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:l}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:a??""}),formatOptions:{maximumFractionDigits:n},classNames:{inputWrapper:ui.cn("h-8 min-h-0 py-0 rounded-lg rounded-b-none shadow-none","bg-content2 data-[hover=true]:bg-content3 group-data-[focus=true]:bg-content3"),input:"text-xs"}}),jsxRuntime.jsx(Qt,{values:s,onSelect:r,onEdit:o})]})}function ar({amount:e,onAmountChange:t,customPercentages:s,onQuickPercentageClick:r,onCustomPercentagesEdit:o,tokenSymbol:a,amountLabel:n}){let l=react.useCallback(i=>{typeof i=="number"&&t(isNaN(i)?void 0:i);},[t]);return jsxRuntime.jsxs("div",{className:"space-y-0.5",children:[jsxRuntime.jsx(ui.NumberInput,{min:0,value:e,onChange:l,fullWidth:true,hideStepper:true,startContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:n}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:a??""}),classNames:{inputWrapper:ui.cn("h-8 min-h-0 py-0 rounded-lg rounded-b-none shadow-none","bg-content2 data-[hover=true]:bg-content3 group-data-[focus=true]:bg-content3"),input:"text-xs"}}),jsxRuntime.jsx(Qt,{values:s,onSelect:r,onEdit:o,suffix:"%"})]})}function Qt({values:e,onSelect:t,onEdit:s,suffix:r}){let[o,a]=react.useState(false),[n,l]=react.useState([]),i=react.useCallback(()=>{l([...e]),a(true);},[e]),u=react.useCallback(()=>{a(false),s(n);},[s,n]);return jsxRuntime.jsxs("div",{className:"flex gap-0.5",children:[jsxRuntime.jsx("div",{className:"flex-auto grid grid-cols-4 gap-0.5",children:Array.from({length:4}).map((d,p)=>jsxRuntime.jsx("div",{className:ui.cn("h-6 bg-content2 flex items-center justify-center",p===0&&"rounded-bl-lg"),children:o?jsxRuntime.jsx(ui.NumberInput,{fullWidth:true,value:n[p]===null||n[p]===void 0?void 0:n[p],onChange:c=>{if(typeof c=="number"){let x=isNaN(c)?null:c;l(m=>{let g=[...m];return g[p]=x,g});}},min:0,hideStepper:true,classNames:{inputWrapper:ui.cn("p-0 h-6 min-h-0 rounded-none flex shadow-none","bg-content2 data-[hover=true]:bg-content3 group-data-[focus=true]:bg-content3",p===0&&"rounded-bl-lg"),innerWrapper:"pb-0",input:"text-xs text-center"}}):jsxRuntime.jsx(ui.Button,{className:"min-w-0 w-full min-h-0 h-full p-0 bg-transparent text-xs",size:"sm",disableRipple:true,onPress:()=>e[p]!=null&&t(e[p]),endContent:r?jsxRuntime.jsx("span",{className:"text-xs text-neutral",children:r}):null,children:e[p]??""})},p))}),jsxRuntime.jsx("div",{className:"flex-none bg-content2 rounded-br-lg overflow-hidden",children:o?jsxRuntime.jsx(ui.Button,{size:"sm",isIconOnly:true,className:"bg-transparent h-6 min-h-6 p-0",disableRipple:true,onPress:u,children:jsxRuntime.jsx(ui.CheckIcon,{width:12,height:12})}):jsxRuntime.jsx(ui.Button,{size:"sm",isIconOnly:true,className:"bg-transparent h-6 min-h-6 p-0",disableRipple:true,onPress:i,children:jsxRuntime.jsx(ui.EditIcon,{width:12,height:12})})})]})}function or({values:e,chain:t}){let{t:s}=i18n.useTranslation(),r=react.useMemo(()=>le(t),[t]),o=e.antiMev&&e.antiMev!=="off"?e.antiMev:"off";return jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(ui.Tooltip,{content:s("trade.preset.slippage"),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsx(ui.SlippageIcon,{width:14,height:14}),children:utils$1.formatPercent((e.slippage??0)/100)})}),jsxRuntime.jsx(ui.Tooltip,{content:s(`trade.preset.${r.feeType}`),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsx(ui.ZapFastIcon,{width:14,height:14}),children:utils$1.formatPrice(e.priorityFee??0)})}),r.showTipFee&&jsxRuntime.jsx(ui.Tooltip,{content:s("trade.preset.tipFee"),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsx(ui.CoinsIcon,{width:14,height:14}),children:utils$1.formatPrice(e.tipFee??0)})}),jsxRuntime.jsx(ui.Tooltip,{content:s("trade.preset.antiMev"),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[o==="off"&&jsxRuntime.jsx(ui.ShieldOffIcon,{width:14,height:14,className:"text-neutral"}),o==="reduced"&&jsxRuntime.jsx(ui.ShieldIcon,{width:14,height:14,className:"text-neutral"}),o==="secure"&&jsxRuntime.jsx(ui.ShieldPlusIcon,{width:14,height:14,className:"text-neutral"})]}),children:s(`trade.preset.antiMev.${o}`)})})]})}function ur({chain:e,tokenAddress:t,onSwapSubmitted:s,onSwapError:r,settings:o,onSettingsChange:a,headerExtra:n,className:l}){return jsxRuntime.jsx(Ke,{chain:e,tokenAddress:t,settings:o,onSettingsChange:a,children:jsxRuntime.jsx(mr,{chain:e,tokenAddress:t,onSwapSubmitted:s,onSwapError:r,headerExtra:n,className:l})})}function mr({chain:e,tokenAddress:t,onSwapSubmitted:s,onSwapError:r,headerExtra:o,className:a}){let n=Qe({chain:e,tokenAddress:t,onSwapSubmitted:s,onSwapError:r}),l=react.useCallback(m=>n.setAmount(m),[n]),i=react.useCallback(m=>{let g=n.tokenBalance?.amount;if(!g)return;let b=new de__default.default(g).times(m).div(100).toNumber();n.setAmount(b);},[n]),u=react.useCallback(m=>{n.updateBuySettings({...n.settings.buy,customAmounts:m});},[n]),d=react.useCallback(m=>{n.updateSellSettings({...n.settings.sell,customPercentages:m});},[n]),p=react.useCallback(m=>{let g=n.direction==="buy",b=g?n.buyPreset:n.sellPreset;if(g){let P=n.settings.buy,v=[...P.presets];v[b]=m,n.updateBuySettings({...P,presets:v});}else {let P=n.settings.sell,v=[...P.presets];v[b]=m,n.updateSellSettings({...P,presets:v});}},[n]),c=react.useCallback(m=>{n.direction==="buy"?n.setBuyPreset(m):n.setSellPreset(m);},[n]),x=n.direction==="buy"?n.buyPreset:n.sellPreset;return jsxRuntime.jsx(Ge,{chain:e,direction:n.direction,onDirectionChange:n.setDirection,amount:n.amount,onAmountChange:n.setAmount,customAmounts:n.settings.buy.customAmounts,customPercentages:n.settings.sell.customPercentages,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:d,tokenSymbol:n.tokenInfo?.symbol,nativeBalance:n.nativeBalance?.amount,tokenBalance:n.tokenBalance?.amount,amountConversion:void 0,preset:x,onPresetChange:c,presetValues:n.currentPresetValues,onPresetSettingsChange:p,showSettings:n.showSettings,onPresetClick:n.handlePresetClick,submitText:n.submitText,isDisabled:n.isDisabled,isLoading:n.isSwapping,onSubmit:n.swap,className:a,headerExtra:o})}function qe(e){let{id:t,chain:s,token:r,storageKeyPrefix:o,onAmountChange:a,onPresetChange:n,onPresetClick:l}=e,[i,u]=jotai.useAtom(G(j(t,s,r.address,o))),d=jotai.useAtomValue(L(D(s,"buy",0,o))),p=jotai.useAtomValue(L(D(s,"buy",1,o))),c=jotai.useAtomValue(L(D(s,"buy",2,o))),x=react.useMemo(()=>[d,p,c],[d,p,c]),m=react.useCallback(b=>{u(P=>({...P,amount:b})),a?.(b);},[u,a]),g=react.useCallback(b=>{u(P=>({...P,preset:b})),n?.(b);},[u,n]);return {token:r,chain:s,amount:i.amount,handleAmountChange:m,preset:i.preset,handlePresetChange:g,onPresetClick:l,presetValues:x}}function Je({token:e,chain:t,amount:s,onAmountChange:r,preset:o=0,onPresetChange:a,onPresetClick:n,presetValues:l,radius:i="full",size:u="md",className:d}){let{t:p}=i18n.useTranslation(),{isMobile:c}=ui.useScreen(),x=react.useRef(null),m=react.useMemo(()=>V(t),[t]),[g,b]=react.useState(null),P=react.useCallback(v=>{a?.(Number(v));},[a]);return jsxRuntime.jsxs("div",{ref:x,className:ui.cn("relative flex items-center",i==="full"&&"rounded-full",i==="lg"&&"rounded-lg",i==="md"&&"rounded-md",i==="sm"&&"rounded-sm",u==="sm"&&"h-8 pr-2",u==="md"&&"h-10 pr-2.5",u==="lg"&&"h-12 pr-3",d),style:{border:"1px solid rgba(63,63,70,0.5)",background:"rgba(39,39,42,0.6)"},children:[jsxRuntime.jsx(ui.StyledNumberInput,{className:"flex-auto min-w-0 h-full",fullWidth:true,variant:"flat",value:s,onValueChange:v=>r(isNaN(v)?void 0:v),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:e.decimals},size:u,startContent:jsxRuntime.jsx(ui.LightningIcon,{width:u==="sm"?12:u==="md"?16:20,height:u==="sm"?12:u==="md"?16:20,className:"text-primary flex-none"}),endContent:jsxRuntime.jsx(ui.TokenIcon,{symbol:e.symbol,size:u==="sm"?16:u==="md"?20:28,className:"flex-none"}),placeholder:"0.0","aria-label":p("trade.instantTradeAmount"),classNames:{base:"h-full",mainWrapper:"h-full",inputWrapper:"!bg-transparent !shadow-none !border-0 !rounded-none h-full !min-h-0"}},`${t}-${e.address}`),jsxRuntime.jsx("div",{className:"w-px self-stretch my-1.5 mx-1.5 flex-none",style:{background:"rgba(63,63,70,0.5)"}}),jsxRuntime.jsx(ui.StyledLightTabs,{color:"primary",size:u,selectedKey:String(o),onSelectionChange:P,classNames:{base:"flex-none h-full",tabList:ui.cn("bg-transparent h-full",u==="sm"&&"p-1 gap-1",u==="md"&&"p-1 gap-0",u==="lg"&&"p-1.5 gap-0"),tab:ui.cn("h-full",u==="sm"&&"text-xs px-1",u==="md"&&"text-sm px-2.5",u==="lg"&&"text-sm px-3"),cursor:"rounded-sm"},children:Array.from({length:3}).map((v,f)=>jsxRuntime.jsx(ui.Tab,{title:c?jsxRuntime.jsx("span",{onClick:A=>{o===f&&(A.stopPropagation(),b(M=>M===f?null:f));},children:p("trade.preset.short",{n:f+1})}):jsxRuntime.jsx(ui.StyledTooltip,{content:jsxRuntime.jsx(qt,{label:p("trade.preset.short",{n:f+1}),values:l?.[f]??m,chain:t}),classNames:{content:"!p-0 !rounded-[14px] !border !border-[rgba(39,39,42,1)] !bg-[rgba(24,24,27,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]"},offset:12,children:jsxRuntime.jsx("span",{onClick:()=>o===f&&n?.(f),children:p("trade.preset.short",{n:f+1})})})},String(f)))}),c&&g!==null&&jsxRuntime.jsx(Fr,{label:p("trade.preset.short",{n:g+1}),values:l?.[g]??m,chain:t,onClose:()=>b(null),containerRef:x})]})}function Fr({label:e,values:t,chain:s,onClose:r,containerRef:o}){let a=react.useRef(null);return react.useEffect(()=>{let n=l=>{let i=l.target;a.current&&!a.current.contains(i)&&o.current&&!o.current.contains(i)&&r();};return document.addEventListener("mousedown",n),document.addEventListener("touchstart",n),()=>{document.removeEventListener("mousedown",n),document.removeEventListener("touchstart",n);}},[r,o]),jsxRuntime.jsx("div",{ref:a,style:{position:"absolute",top:"100%",right:0,zIndex:50,marginTop:8,borderRadius:14,border:"1px solid rgba(39,39,42,1)",background:"rgba(24,24,27,1)",boxShadow:"0 25px 50px -12px rgba(0,0,0,0.5)",minWidth:200},children:jsxRuntime.jsx(qt,{label:e,values:t,chain:s})})}function qt({label:e,values:t,chain:s}){let{t:r}=i18n.useTranslation(),o=react.useMemo(()=>le(s),[s]),a=t.antiMev&&t.antiMev!=="off"?t.antiMev:"off",n=(t.slippage??0)/100,l=n>=.05;return jsxRuntime.jsxs("div",{className:"flex flex-col py-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5 px-3 pb-2 mb-1",style:{borderBottom:"1px solid rgba(39,39,42,1)"},children:[jsxRuntime.jsx(ui.LightningIcon,{width:12,height:12,className:"text-primary flex-none"}),jsxRuntime.jsx("span",{className:"text-xs font-semibold text-foreground",children:e})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[jsxRuntime.jsx(ui.SlippageIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:r("trade.preset.slippage")})]}),jsxRuntime.jsx("span",{className:ui.cn("text-xs font-medium tabular-nums",l?"text-amber-400":"text-foreground"),children:utils$1.formatPercent(n)})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[jsxRuntime.jsx(ui.ZapFastIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:r(`trade.preset.${o.feeType}`)})]}),jsxRuntime.jsxs("span",{className:"text-xs font-medium text-foreground tabular-nums",children:[utils$1.formatPrice(t.priorityFee??0)," ",jsxRuntime.jsx("span",{className:"text-zinc-500",children:o.feeUnit})]})]}),o.showTipFee&&jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[jsxRuntime.jsx(ui.CoinsIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:r("trade.preset.tipFee")})]}),jsxRuntime.jsxs("span",{className:"text-xs font-medium text-foreground tabular-nums",children:[utils$1.formatPrice(t.tipFee??0)," ",jsxRuntime.jsx("span",{className:"text-zinc-500",children:o.tipFeeUnit})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[a==="off"&&jsxRuntime.jsx(ui.ShieldOffIcon,{width:12,height:12,className:"flex-none"}),a==="reduced"&&jsxRuntime.jsx(ui.ShieldIcon,{width:12,height:12,className:"flex-none"}),a==="secure"&&jsxRuntime.jsx(ui.ShieldPlusIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:r("trade.preset.antiMev")})]}),jsxRuntime.jsx("span",{className:ui.cn("text-xs font-medium",a==="off"&&"text-zinc-500",a==="reduced"&&"text-amber-400",a==="secure"&&"text-emerald-400"),children:r(`trade.preset.antiMev.${a}`)})]})]})}function Ur({size:e,radius:t,className:s,...r}){let{token:o,chain:a,amount:n,handleAmountChange:l,preset:i,handlePresetChange:u,onPresetClick:d,presetValues:p}=qe(r);return jsxRuntime.jsx(Je,{token:o,chain:a,amount:n,onAmountChange:l,preset:i,onPresetChange:u,onPresetClick:d,presetValues:p,size:e,radius:t,className:s})}function Ye(e){let{chain:t,presetIndex:s=0,defaultDirection:r="buy",storageKeyPrefix:o,onChange:a}=e,[n,l]=react.useState(r),[i,u]=jotai.useAtom(L(D(t,n,s,o))),d=react.useCallback(p=>{u(p),a?.(n,p);},[u,a,n]);return {direction:n,setDirection:l,value:i,handleChange:d}}function tt({disableAnimation:e,className:t,...s}){let{t:r}=i18n.useTranslation(),{direction:o,setDirection:a,value:n,handleChange:l}=Ye(s);return jsxRuntime.jsxs("div",{className:ui.cn("space-y-3",t),children:[jsxRuntime.jsxs(ui.StyledSolidTabs,{radius:"lg",color:"default",fullWidth:true,selectedKey:o,onSelectionChange:i=>a(i),"aria-label":"Buy / Sell",children:[jsxRuntime.jsx(ui.Tab,{title:r("common.buy")},"buy"),jsxRuntime.jsx(ui.Tab,{title:r("common.sell")},"sell")]}),jsxRuntime.jsx(ye,{value:n,onChange:l,chain:s.chain,disableAnimation:e})]})}var Or=3;function nt(e){let{defaultPresetIndex:t=0,onChange:s}=e,[r,o]=react.useState(t),a=react.useCallback((n,l)=>{s?.(r,n,l);},[s,r]);return {presetCount:Or,presetIndex:r,setPresetIndex:o,handlePresetChange:a}}function rt({defaultDirection:e,disableAnimation:t,className:s,...r}){let{t:o}=i18n.useTranslation(),{presetCount:a,presetIndex:n,setPresetIndex:l,handlePresetChange:i}=nt(r);return jsxRuntime.jsxs("div",{className:ui.cn("space-y-3",s),children:[jsxRuntime.jsx(ui.StyledSolidTabs,{radius:"lg",fullWidth:true,color:"default",selectedKey:String(n),onSelectionChange:u=>l(Number(u)),disableAnimation:t,"aria-label":o("trade.preset.presets"),children:Array.from({length:a},(u,d)=>jsxRuntime.jsx(ui.Tab,{title:o("trade.preset.label",{n:d+1})},String(d)))}),jsxRuntime.jsx(tt,{chain:r.chain,presetIndex:n,defaultDirection:e,storageKeyPrefix:r.storageKeyPrefix,onChange:i,disableAnimation:t})]})}var sa="preset";function ra({id:e=sa}){return jsxRuntime.jsx(uiScaffold.AsyncModal,{id:e,children:t=>jsxRuntime.jsx(aa,{...t})})}function aa({params:e={chains:[types.Chain.SOLANA,types.Chain.ETHEREUM,types.Chain.BINANCE]},isOpen:t,onOpenChange:s}){let{t:r}=i18n.useTranslation(),{chains:o,defaultChain:a,defaultDirection:n,defaultPresetIndex:l,storageKeyPrefix:i,onChange:u}=e,[d,p]=react.useState(a??o[0]);react.useEffect(()=>{p(a??o[0]);},[a,o]);let c=react.useCallback((x,m,g)=>{u?.(d,x,m,g);},[u,d]);return jsxRuntime.jsx(ui.StyledModal,{isOpen:t,onOpenChange:s,size:"md",children:jsxRuntime.jsxs(ui.ModalContent,{children:[jsxRuntime.jsx(ui.ModalHeader,{children:jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between gap-4",children:[jsxRuntime.jsx("span",{className:"flex-auto min-w-0 overflow-hidden text-ellipsis line-clamp-1 whitespace-nowrap",children:r("trade.preset.instantTradeSettings")}),jsxRuntime.jsx(uiChainSelect.ChainSelectMobileUI,{candidates:o,chain:d,onSelectChain:p})]})}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsx(ui.ScrollShadow,{children:jsxRuntime.jsx(rt,{chain:d,defaultDirection:n,defaultPresetIndex:l,storageKeyPrefix:i,onChange:c})})})]})})}function Fe(e,t,s,r,o){let a=V(o),n=new de__default.default(e).shiftedBy(t.decimals).decimalPlaces(0).toString(),l=new de__default.default(r.priorityFee??a.priorityFee??0).shiftedBy(t.decimals).decimalPlaces(0).toString(),i=new de__default.default(r.tipFee??a.tipFee??0).shiftedBy(t.decimals).decimalPlaces(0).toString();return {input:t.address,output:s,amount:n,slippage:r.slippage??a.slippage??1,priorityFee:l,tipFee:i,isAntiMev:r.antiMev!=="off"}}function it(e){let{id:t,chain:s,token:r,output:o,storageKeyPrefix:a,onSwapSubmitted:n,onSwapError:l}=e,{amount:i,preset:u}=jotai.useAtomValue(G(j(t,s,r.address,a))),d=jotai.useAtomValue(L(D(s,"buy",u,a))),p=walletConnector.useConnectedWallet(s),{swap:c,isSwapping:x}=ne({onSubmitted:n,onError:l}),m=!i||!o,g=walletConnector.useAuthCallback(async()=>{if(!i||!p||!o)return;let b=Fe(i,r,o,d,s);try{await c({...b,chain:s,wallet:p});}catch{}},[p,i,o,s,r,d,c]);return react.useMemo(()=>({amount:i,token:r,isDisabled:m,isSwapping:x,handleSwap:g}),[i,r,m,x,g])}function da({size:e="sm",radius:t,color:s="primary",className:r,...o}){let{amount:a,token:n,isDisabled:l,isSwapping:i,handleSwap:u}=it(o);return jsxRuntime.jsx(ui.Button,{fullWidth:true,size:e,radius:t,color:s,className:r,disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{}),isDisabled:l,isLoading:i,onPress:u,children:a!=null?`${a} ${n.symbol}`:n.symbol})}var sn=react.createContext(null);function ha({chain:e,onSwapSubmitted:t,onSwapError:s,children:r}){let o=walletConnector.useConnectedWallet(e),{swap:a}=ne({onSubmitted:t,onError:s}),n=react.useRef(o);n.current=o;let l=react.useRef(a);l.current=a;let i=react.useRef(e);i.current=e;let u=react.useCallback(async p=>{let c=n.current;if(c)return l.current({...p,wallet:c,chain:i.current})},[]),d=walletConnector.useAuthCallback(u,[]);return jsxRuntime.jsx(sn.Provider,{value:d,children:r})}function ut(){let e=react.useContext(sn);if(e===null)throw new Error("useInstantTradeSwap must be used within an InstantTradeSwapProvider");return e}function dt(e){let{id:t,chain:s,token:r,output:o,storageKeyPrefix:a}=e,{amount:n,preset:l}=jotai.useAtomValue(G(j(t,s,r.address,a))),i=jotai.useAtomValue(L(D(s,"buy",l,a))),u=ut(),[d,p]=react.useState(false),c=!n||!o,x=react.useRef(r);x.current=r;let m=react.useRef(i);m.current=i;let g=react.useRef(s);g.current=s;let b=react.useCallback(async()=>{if(!n||!o)return;let P=Fe(n,x.current,o,m.current,g.current);p(true);try{await u(P);}catch{}finally{p(false);}},[n,o,u]);return react.useMemo(()=>({amount:n,token:r,isDisabled:c,isSwapping:d,handleSwap:b}),[n,r,c,d,b])}var Ca=react.memo(function({size:t="sm",radius:s,color:r="primary",className:o,...a}){let{amount:n,token:l,isDisabled:i,isSwapping:u,handleSwap:d}=dt(a);return jsxRuntime.jsx(ui.Button,{variant:"solid",fullWidth:true,size:t,radius:s,color:r,className:o,disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{className:"flex-none",style:{color:"#c7ff2e"}}),isDisabled:i,isLoading:u,spinner:jsxRuntime.jsx(ui.Spinner,{size:"sm",color:"current"}),onPress:d,style:{background:"rgba(199,255,46,0.08)",border:"1px solid rgba(199,255,46,0.2)",color:"#c7ff2e",fontWeight:600},children:n!=null?`${n} ${l.symbol}`:l.symbol})});typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-trade"]="0.1.138");var Ia="0.1.138";
2
- exports.AmountPresetInputUI=Je;exports.AmountPresetInputWidget=Ur;exports.DEFAULT_BSC_TRADE_PRESET=gt;exports.DEFAULT_EVM_TRADE_PRESET=ft;exports.DEFAULT_INSTANT_TRADE_SETTINGS=gs;exports.DEFAULT_SELL_PERCENTAGES=ht;exports.DEFAULT_SOL_TRADE_PRESET=ct;exports.InstantTradeButtonWidget=da;exports.InstantTradeListButtonWidget=Ca;exports.InstantTradeProvider=Ke;exports.InstantTradeSwapProvider=ha;exports.InstantTradeUI=Ge;exports.InstantTradeWidget=ur;exports.MultiPresetFormWidget=rt;exports.PresetFormModal=ra;exports.PresetFormUI=ye;exports.PresetFormWidget=tt;exports.SwapPreviewModal=Le;exports.SwapUI=We;exports.SwapWidget=ms;exports.getChainPresetFeatures=le;exports.getDefaultBuyAmounts=xt;exports.getDefaultPresetForChain=V;exports.instantTradeAmountAtomFamily=G;exports.instantTradeAmountKey=j;exports.presetAtomFamily=L;exports.presetKey=D;exports.useAmountPresetInputScript=qe;exports.useInstantTrade=Ve;exports.useInstantTradeAmount=ka;exports.useInstantTradeButtonScript=it;exports.useInstantTradeListButtonScript=dt;exports.useInstantTradeScript=Qe;exports.useInstantTradeSwap=ut;exports.useMultiPresetFormScript=nt;exports.usePresetFormScript=Ye;exports.usePresetValues=Ha;exports.useSwap=ne;exports.useSwapRoutePolling=St;exports.useSwapScript=ke;exports.useTxConfirmation=Pt;exports.version=Ia;//# sourceMappingURL=index.js.map
1
+ 'use strict';var jotai=require('jotai'),jotaiFamily=require('jotai-family'),utils=require('jotai/utils'),utils$1=require('@liberfi.io/utils'),react=require('react'),react$1=require('@liberfi.io/react'),types=require('@liberfi.io/types'),walletConnector=require('@liberfi.io/wallet-connector'),ui=require('@liberfi.io/ui'),i18n=require('@liberfi.io/i18n'),jsxRuntime=require('react/jsx-runtime'),de=require('bignumber.js'),uiChainSelect=require('@liberfi.io/ui-chain-select'),uiScaffold=require('@liberfi.io/ui-scaffold');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var de__default=/*#__PURE__*/_interopDefault(de);var cn="liberfi.",fn={amount:void 0,preset:0};function gn(e,t,r,s){return `${e}instant-trade.${t}.${r}.${s}`}function xn(e){let t=e.lastIndexOf(":"),r=e.slice(0,t+1),s=e.slice(t+1),[o,a,n]=s.split(".");return {prefix:r,id:o,chain:a,tokenAddress:n}}function G(e,t,r,s=cn){return `${s}:${e}.${t}.${r}`}var j=jotaiFamily.atomFamily(e=>{let{prefix:t,id:r,chain:s,tokenAddress:o}=xn(e);return utils.atomWithStorage(gn(t,r,String(s),o),fn,void 0,{getOnInit:true})});function za({id:e,chain:t,tokenAddress:r,storageKeyPrefix:s}){return jotai.useAtomValue(j(G(e,t,r,s)))}var ge=class extends Error{constructor(t="Swap route expired. Please refresh the quote."){super(t),this.name="SwapRouteExpiredError";}},gt={slippage:20,priorityFee:.001,autoFee:false,maxAutoFee:.1,gasFee:null,tipFee:.001,antiMev:"reduced",customRPC:null},xt={slippage:20,priorityFee:null,autoFee:false,maxAutoFee:null,gasFee:2,tipFee:null,antiMev:"off",customRPC:null},ht={slippage:30,priorityFee:null,autoFee:false,maxAutoFee:null,gasFee:2,tipFee:0,antiMev:"off",customRPC:null},yn={SOL:[.01,.1,1,10],ETH:[.01,.02,.5,1],BNB:[.025,.05,.1,.25],USDC:[25,50,100,200],USDT:[25,50,100,200]},bn=[1,10,25,50];function yt(e){return yn[e]??bn}var bt=[10,25,50,100];function le(e){let t=utils$1.getNativeToken(e);if(!t)throw new Error(`No native token defined for chain "${e}"`);let r=t.symbol;return utils$1.isSolanaChain(e)?{nativeSymbol:r,feeType:"priorityFee",feeUnit:r,feeDecimals:9,showTipFee:true,tipFeeUnit:r,tipFeeDecimals:9,showAutoFee:true,showCustomRPC:true,antiMevOptions:["off","reduced","secure"]}:utils$1.isBinanceChain(e)?{nativeSymbol:r,feeType:"gasFee",feeUnit:"Gwei",feeDecimals:2,showTipFee:true,tipFeeUnit:r,tipFeeDecimals:9,showAutoFee:false,showCustomRPC:false,antiMevOptions:["off","secure"]}:{nativeSymbol:r,feeType:"gasFee",feeUnit:"Gwei",feeDecimals:2,showTipFee:false,tipFeeUnit:r,tipFeeDecimals:9,showAutoFee:false,showCustomRPC:false,antiMevOptions:["off","secure"]}}function V(e){return utils$1.isSolanaChain(e)?gt:utils$1.isBinanceChain(e)?ht:xt}var wn="liberfi.";function Tn(e,t,r,s){return `${e}preset.${t}.${r}.${s}`}function Nn(e){let t=e.lastIndexOf(":"),r=e.slice(0,t+1),s=e.slice(t+1),[o,a,n]=s.split(".");return {prefix:r,chain:o,direction:a,index:Number(n)}}function L(e,t,r,s=wn){return `${s}:${e}.${t}.${r}`}var _=jotaiFamily.atomFamily(e=>{let{prefix:t,chain:r,direction:s,index:o}=Nn(e);return utils.atomWithStorage(Tn(t,String(r),s,o),V(r),void 0,{getOnInit:true})});function so({chain:e,direction:t,presetIndex:r=0,storageKeyPrefix:s}){return jotai.useAtomValue(_(L(e,t,r,s)))}var An=150,Fn=12e3,vt=60,wt=40;function Re(e,t,r,s){if(!utils$1.isSolanaChain(e)||t.lastValidBlockHeight==null)return;if(!r.data||Date.now()-r.dataUpdatedAt>Fn)throw new ge("Latest Solana block data is stale. Please refresh the quote.");let o=r.data.lastValidBlockHeight-An;if(t.lastValidBlockHeight-o<s)throw new ge("Swap route is close to blockhash expiry. Please refresh the quote.")}function Dn(e){let t=atob(e),r=new Uint8Array(t.length);for(let s=0;s<t.length;s++)r[s]=t.charCodeAt(s);return r}function On(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function ne(e){let{client:t}=react$1.useDexClient(),[r,s]=react.useState(false),o=react.useRef(e);o.current=e;let a=react$1.useLatestBlockCacheReader({chain:types.Chain.SOLANA}),n=react.useCallback(async l=>{let{wallet:i,chain:u,...m}=l;s(true);try{let d;try{d=await t.swapRoute({chain:u,userAddress:i.address,input:m.input,output:m.output,mode:m.mode??types.API.SwapMode.EXACT_IN,amount:m.amount,slippage:m.slippage,priorityFee:m.priorityFee,tipFee:m.tipFee,isAntiMev:m.isAntiMev,permit:m.permit,deadline:m.deadline});}catch(c){let x=c instanceof Error?c:new Error(String(c));throw o.current?.onError?.(x,"route"),x}try{Re(u,d,a(),vt);}catch(c){let x=c instanceof Error?c:new Error(String(c));throw o.current?.onError?.(x,"expired"),x}let g;try{let c=Dn(d.serializedTx);g=await i.signTransaction(c);}catch(c){let x=c instanceof Error?c:new Error(String(c));throw o.current?.onError?.(x,"sign"),x}try{Re(u,d,a(),wt);}catch(c){let x=c instanceof Error?c:new Error(String(c));throw o.current?.onError?.(x,"expired"),x}let h;try{let c=On(g);h=await t.sendTx({chain:u,serializedTx:c});}catch(c){let x=c instanceof Error?c:new Error(String(c));throw o.current?.onError?.(x,"send"),x}let p={txHash:h.txHash,extra:h.extra};return o.current?.onSubmitted?.(p),p}finally{s(false);}},[t,a]);return react.useMemo(()=>({swap:n,isSwapping:r}),[n,r])}var Hn=12e3;function Tt(e,t){let r=t?.interval??Hn,s=t?.paused??false,o=react.useRef(t);o.current=t;let n=!!e.chain&&!!e.userAddress&&!!e.input&&!!e.output&&!!e.amount&&!s,l=react$1.useSwapRouteQuery(e,{enabled:n,refetchInterval:n?r:false,retry:false});return react.useEffect(()=>{l.error&&o.current?.onError?.(l.error);},[l.error]),react.useMemo(()=>({route:l.data,isRouting:l.isFetching,error:l.error}),[l.data,l.isFetching,l.error])}var qn=6e4;function Nt(e){let{client:t}=react$1.useDexClient(),[r,s]=react.useState(()=>new Map),o=react.useRef(e);o.current=e;let a=react.useCallback((u,m)=>{s(d=>{let g=d.get(u);if(!g||g.status===m)return d;let h=new Map(d);return h.set(u,{...g,status:m}),h});},[]),n=react.useCallback((u,m)=>{s(g=>{if(g.has(m))return g;let h=new Map(g);return h.set(m,{chain:u,txHash:m,status:"pending"}),h});let d=o.current?.timeout??qn;t.checkTxSuccess(u,m,d).then(g=>{if(g)a(m,"confirmed"),o.current?.onConfirmed?.(m);else {let h=new Error("Transaction failed on-chain");a(m,"failed"),o.current?.onFailed?.(m,h);}}).catch(g=>{let h=g instanceof Error?g:new Error(String(g));a(m,"failed"),o.current?.onFailed?.(m,h);});},[t,a]),l=react.useCallback(u=>{s(m=>{if(!m.has(u))return m;let d=new Map(m);return d.delete(u),d});},[]),i=react.useCallback(()=>{s(u=>u.size===0?u:new Map);},[]);return react.useMemo(()=>({track:n,clear:l,clearAll:i,transactions:r}),[n,l,i,r])}var Jn=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]);function er(e){return Jn.has(e)?types.ChainNamespace.SOLANA:types.ChainNamespace.EVM}var tr=1e4,nr=15e3;function rr(e,t){if(e.length===0)return;let s=e[e.length-1].outputAmount;if(!s||s==="0")return "0";let o=s.padStart(t+1,"0"),a=o.slice(0,o.length-t)||"0",l=o.slice(o.length-t).replace(/0+$/,"");return l?`${a}.${l}`:a}function Le(e){let{chain:t}=e,r=walletConnector.useWallets(),s=er(t),o=react.useMemo(()=>r.find(S=>S.chainNamespace===s&&S.isConnected),[r,s]),a=o?.address??"",[n,l]=react.useState(e.from??""),[i,u]=react.useState(e.to??""),m=react.useRef(e.from),d=react.useRef(e.to);react.useEffect(()=>{e.from!==m.current&&(m.current=e.from,e.from&&l(e.from));},[e.from]),react.useEffect(()=>{e.to!==d.current&&(d.current=e.to,e.to&&u(e.to));},[e.to]);let g=react.useMemo(()=>[n,i].filter(Boolean),[n,i]),h=react$1.useTokensQuery({chain:t,addresses:g},{enabled:g.length>0,refetchInterval:tr}),p=react.useMemo(()=>h.data?.find(S=>S.address===n)??null,[h.data,n]),c=react.useMemo(()=>h.data?.find(S=>S.address===i)??null,[h.data,i]),x=react$1.useWalletPortfoliosByTokensQuery({chain:t,address:a,tokenAddresses:g},{enabled:!!a&&g.length>0,refetchInterval:nr}),P=react.useMemo(()=>x.data?.find(S=>S.address===n)??null,[x.data,n]),v=react.useMemo(()=>x.data?.find(S=>S.address===i)??null,[x.data,i]),[f,A]=react.useState(void 0),R=react.useMemo(()=>{if(!f||p?.decimals==null)return;let S=f.split("."),k=S[0]??"0",Me=(S[1]??"").slice(0,p.decimals).padEnd(p.decimals,"0");return (k+Me).replace(/^0+/,"")||"0"},[f,p?.decimals]),$=react.useMemo(()=>{if(!f||!p?.marketData?.priceInUsd)return;let S=Number(p.marketData.priceInUsd),k=Number(f)*S;return Number.isFinite(k)?k.toString():void 0},[f,p?.marketData?.priceInUsd]),H=react.useCallback(()=>{if(!P)return;let S=Number(P.amount);if(!Number.isFinite(S)||S<=0)return;let k=S/2,Pe=p?.decimals??9;A(k.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:Pe}));},[P,p?.decimals]),z=react.useCallback(()=>{if(!P)return;let S=Number(P.amount);if(!Number.isFinite(S)||S<=0)return;let k=p?.decimals??9;A(S.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:k}));},[P,p?.decimals]),E=react.useMemo(()=>({chain:t,userAddress:a||void 0,input:n||void 0,output:i||void 0,mode:types.API.SwapMode.EXACT_IN,amount:R}),[t,a,n,i,R]),Z=react.useRef(false),{route:F,isRouting:Y,error:J}=Tt(E,{paused:Z.current}),Q=react.useMemo(()=>F&&c?rr(F.plans,c.decimals):void 0,[F,c]),se=react.useMemo(()=>{if(!Q||!c?.marketData?.priceInUsd)return;let S=Number(c.marketData.priceInUsd),k=Number(Q)*S;return Number.isFinite(k)?k.toString():void 0},[Q,c?.marketData?.priceInUsd]),{swap:w,isSwapping:U}=ne();Z.current=U;let W=react.useRef(e.onComplete);W.current=e.onComplete;let{track:ae,transactions:ee}=Nt({onConfirmed:S=>{W.current?.({success:true,txHash:S});},onFailed:S=>{W.current?.({success:false,txHash:S});}}),oe=react.useMemo(()=>{if(ee.size===0)return "idle";let S=Array.from(ee.values());return S[S.length-1].status},[ee]),te=react.useCallback(async()=>{if(!(!o||!F||!n||!i||!R))try{let S=await w({chain:t,wallet:o,input:n,output:i,amount:R,mode:types.API.SwapMode.EXACT_IN});ae(t,S.txHash);}catch{}},[o,F,t,n,i,R,w,ae]),ie=h.isPending||x.isPending;return react.useMemo(()=>({fromTokenAddress:n,toTokenAddress:i,setFromTokenAddress:l,setToTokenAddress:u,fromToken:p,toToken:c,fromBalance:P,toBalance:v,amount:f,setAmount:A,setHalfAmount:H,setMaxAmount:z,amountInDecimals:R,amountInUsd:$,outputAmount:Q,outputAmountInUsd:se,route:F,isRouting:Y,routeError:J,swap:te,isSwapping:U,txStatus:oe,isLoading:ie}),[n,i,p,c,P,v,f,H,z,R,$,Q,se,F,Y,J,te,U,oe,ie])}function Oe({isOpen:e,onOpenChange:t,fromToken:r,toToken:s,fromBalance:o,inputAmount:a,inputAmountInUsd:n,outputAmount:l,outputAmountInUsd:i,route:u,isRouting:m,routeError:d,onConfirm:g,isSwapping:h}){let{t:p}=i18n.useTranslation(),[c,x]=react.useState(false),P=react.useCallback(()=>x(f=>!f),[]),v=react.useMemo(()=>u?u.plans.map((f,A)=>({key:`plan-${A}`,name:f.name,input:f.input,inputAmount:f.inputAmount,output:f.output,outputAmount:f.outputAmount,feeQuote:f.feeQuote,feeAmount:f.feeAmount})):[],[u]);return jsxRuntime.jsx(ui.Modal,{isOpen:e,onOpenChange:t,hideCloseButton:true,scrollBehavior:"inside",backdrop:"blur",children:jsxRuntime.jsxs(ui.ModalContent,{className:"bg-content2 rounded-lg",children:[jsxRuntime.jsx(ui.ModalHeader,{children:p("trade.swap.preview")}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsxs("div",{className:"flex w-full max-h-[70vh] flex-1 flex-col overflow-y-auto py-2",children:[jsxRuntime.jsxs("div",{className:"mb-5",children:[jsxRuntime.jsx("div",{className:"text-neutral flex items-center justify-between text-xs font-medium",children:p("trade.swap.from")}),jsxRuntime.jsxs("div",{className:"bg-content3 mt-3 flex w-full items-center gap-3 rounded-lg px-4 py-3",children:[jsxRuntime.jsxs("div",{className:"flex flex-1 items-center gap-3",children:[r?.image&&jsxRuntime.jsx(ui.Avatar,{size:"sm",src:r.image,name:r.symbol,className:"h-6 w-6"}),jsxRuntime.jsxs("div",{className:"flex flex-col items-start justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:r?.symbol??"\u2014"}),o&&jsxRuntime.jsxs("div",{className:"text-neutral flex items-center gap-1 text-[10px]",children:[jsxRuntime.jsx(xr,{}),jsxRuntime.jsxs("span",{children:[_e(o.amount)," ",r?.symbol]})]})]})]}),jsxRuntime.jsxs("div",{className:"flex-0 flex flex-col items-end justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:_e(a)}),jsxRuntime.jsxs("div",{className:"text-neutral text-[10px]",children:["$",Mt(n)]})]})]})]}),jsxRuntime.jsxs("div",{className:"mb-5",children:[jsxRuntime.jsx("div",{className:"text-neutral flex items-center justify-between text-xs font-medium",children:p("trade.swap.estimatedReceive")}),jsxRuntime.jsxs("div",{className:"bg-content3 mt-3 flex w-full items-center gap-3 rounded-lg px-4 py-3",children:[jsxRuntime.jsxs("div",{className:"flex flex-1 items-center gap-3",children:[s?.image&&jsxRuntime.jsx(ui.Avatar,{size:"sm",src:s.image,name:s.symbol,className:"h-6 w-6"}),jsxRuntime.jsxs("div",{className:"flex flex-col items-start justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:s?.symbol??"\u2014"}),jsxRuntime.jsx("div",{className:"text-neutral text-[10px]",children:Te(s?.address)})]})]}),jsxRuntime.jsxs("div",{className:"flex-0 flex flex-col items-end justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:_e(l)}),jsxRuntime.jsxs("div",{className:"text-neutral text-[10px]",children:["$",Mt(i)]})]})]})]}),c&&v.length>0&&jsxRuntime.jsxs("div",{className:"my-3",children:[jsxRuntime.jsx("div",{className:"text-neutral flex items-center justify-between text-xs font-medium",children:p("trade.swap.routeDetails")}),jsxRuntime.jsx("div",{className:"mt-3 flex flex-col gap-3",children:v.map(f=>jsxRuntime.jsxs("div",{className:"bg-content3 flex w-full flex-col items-center gap-2 rounded-lg px-4 py-3",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-neutral text-xs",children:p("trade.swap.dex")}),jsxRuntime.jsx("div",{className:"text-foreground text-xs",children:f.name})]}),jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-neutral text-xs",children:p("trade.swap.swap")}),jsxRuntime.jsxs("div",{className:"text-foreground flex items-center gap-2 text-xs",children:[jsxRuntime.jsxs("span",{children:[De(f.inputAmount)," ",Te(f.input)]}),jsxRuntime.jsx(ui.TradeIcon,{width:12,height:12,className:"text-foreground"}),jsxRuntime.jsxs("span",{children:[De(f.outputAmount)," ",Te(f.output)]})]})]}),f.feeAmount&&jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-neutral text-xs",children:p("trade.swap.fee")}),jsxRuntime.jsxs("div",{className:"text-foreground text-xs",children:[De(f.feeAmount)," ",Te(f.feeQuote)]})]})]},f.key))})]}),v.length>0&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"text-neutral flex bg-transparent text-xs",endContent:c?jsxRuntime.jsx(ui.ChevronUpIcon,{width:12,height:12}):jsxRuntime.jsx(ui.ChevronDownIcon,{width:12,height:12}),disableRipple:true,onPress:P,children:p(c?"trade.swap.showLess":"trade.swap.showMore")})})]})}),jsxRuntime.jsx(ui.ModalFooter,{children:jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"primary",className:"flex rounded-lg",disableRipple:true,isDisabled:!u||!!d,isLoading:!u&&m||h,onPress:g,children:p("common.confirm")})})]})})}function xr(){return jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral",children:[jsxRuntime.jsx("path",{d:"M21 12V7H5a2 2 0 0 1 0-4h14v4"}),jsxRuntime.jsx("path",{d:"M3 5v14a2 2 0 0 0 2 2h16v-5"}),jsxRuntime.jsx("path",{d:"M18 12a2 2 0 0 0 0 4h4v-4Z"})]})}function Mt(e){if(!e)return "0.00";let t=Number(e);return Number.isFinite(t)?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):"0.00"}function _e(e){if(!e)return "0";let t=Number(e);return Number.isFinite(t)?t>=1e6?(t/1e6).toLocaleString("en-US",{maximumFractionDigits:2})+"M":t>=1e3?(t/1e3).toLocaleString("en-US",{maximumFractionDigits:2})+"K":t.toLocaleString("en-US",{maximumFractionDigits:6}):"0"}function De(e){if(!e||e==="0")return "0";let t=Number(e);return Number.isFinite(t)?t>=1e12?(t/1e12).toFixed(2)+"T":t>=1e9?(t/1e9).toFixed(2)+"B":t>=1e6?(t/1e6).toFixed(2)+"M":t>=1e3?(t/1e3).toFixed(2)+"K":e:e}function Te(e){return e?e.length<=10?e:`${e.slice(0,4)}...${e.slice(-4)}`:"\u2014"}function Ve({fromToken:e,toToken:t,fromBalance:r,toBalance:s,amount:o,amountInUsd:a,onAmountChange:n,onHalfAmount:l,onMaxAmount:i,outputAmount:u,outputAmountInUsd:m,onFromTokenSelect:d,onToTokenSelect:g,route:h,isRouting:p,routeError:c,onPreview:x,isSwapping:P,className:v}){let{t:f}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:ui.cn("px-4 pb-4 lg:pb-8",v),children:[jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsx("p",{className:"text-neutral text-sm font-medium",children:f("trade.swap.from")}),jsxRuntime.jsxs("div",{className:"bg-content1 flex flex-col rounded-lg px-3.5 pb-2.5 pt-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex-1",children:jsxRuntime.jsx(ui.Input,{type:"number",value:o??"",onChange:A=>n(A.target.value||void 0),placeholder:"0",classNames:{inputWrapper:ui.cn("h-10 p-0 bg-transparent","data-[hover=true]:bg-transparent group-data-[focus=true]:bg-transparent","group-data-[focus-visible=true]:ring-offset-transparent group-data-[focus-visible=true]:ring-transparent"),input:ui.cn("w-full h-full caret-primary text-3xl font-medium","placeholder:text-placeholder placeholder:text-3xl placeholder:font-medium","scrollbar-hide overflow-hidden text-ellipsis whitespace-nowrap")}})}),jsxRuntime.jsx("div",{className:"flex-0 flex h-full items-center justify-center",children:jsxRuntime.jsx(ui.Button,{className:ui.cn("flex min-w-0 h-8 min-h-8 pl-3 pr-2 bg-content3 rounded-full",e?"text-foreground":"text-neutral"),disableRipple:true,startContent:e?.image?jsxRuntime.jsx(ui.Avatar,{size:"sm",src:e.image,name:e.symbol,className:"h-6 w-6"}):null,endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"text-neutral"}),onPress:()=>d(""),children:e?e.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsxs("div",{className:"text-neutral flex-1 text-xs",children:["\u2248 $",Lt(a)]}),r&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(kt,{}),jsxRuntime.jsxs("span",{className:"text-neutral",children:[_t(r.amount)," ",r.symbol]}),l&&jsxRuntime.jsx("span",{className:"text-primary cursor-pointer",onClick:l,children:f("trade.swap.half")}),i&&jsxRuntime.jsx("span",{className:"text-primary cursor-pointer",onClick:i,children:f("common.max")})]})]}),c&&jsxRuntime.jsx("p",{className:"mt-1 break-words text-xs text-danger-500",children:c.message})]})]}),jsxRuntime.jsxs("div",{className:"mt-4 space-y-3",children:[jsxRuntime.jsx("p",{className:"text-neutral text-sm font-medium",children:f("trade.swap.to")}),jsxRuntime.jsxs("div",{className:"bg-content1 flex flex-col rounded-lg px-3.5 pb-2.5 pt-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex-1",children:jsxRuntime.jsx(ui.Input,{type:"number",value:u??"",disabled:true,placeholder:"0",classNames:{inputWrapper:ui.cn("h-10 p-0 bg-transparent","data-[hover=true]:bg-transparent group-data-[focus=true]:bg-transparent","group-data-[focus-visible=true]:ring-offset-transparent group-data-[focus-visible=true]:ring-transparent"),input:ui.cn("w-full h-full caret-primary text-3xl font-medium","placeholder:text-placeholder placeholder:text-3xl placeholder:font-medium","scrollbar-hide overflow-hidden text-ellipsis whitespace-nowrap")}})}),jsxRuntime.jsx("div",{className:"flex-0 flex h-full items-center justify-center",children:jsxRuntime.jsx(ui.Button,{className:ui.cn("flex min-w-0 h-8 min-h-8 pl-3 pr-2 bg-content3 rounded-full",t?"text-foreground":"text-neutral"),disableRipple:true,startContent:t?.image?jsxRuntime.jsx(ui.Avatar,{size:"sm",src:t.image,name:t.symbol,className:"h-6 w-6"}):null,endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"text-neutral"}),onPress:()=>g(""),children:t?t.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsxs("div",{className:"text-neutral flex-1 text-xs",children:["\u2248 $",Lt(m)]}),s&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(kt,{}),jsxRuntime.jsxs("span",{className:"text-neutral",children:[_t(s.amount)," ",s.symbol]})]})]})]})]}),jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"primary",className:"mt-8 flex rounded-lg",disableRipple:true,isDisabled:!h,isLoading:!h&&p,onPress:x,children:f(P?"trade.swap.swapping":p?"trade.swap.findingRoute":"trade.swap.swap")})]})}function kt(){return jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral",children:[jsxRuntime.jsx("path",{d:"M21 12V7H5a2 2 0 0 1 0-4h14v4"}),jsxRuntime.jsx("path",{d:"M3 5v14a2 2 0 0 0 2 2h16v-5"}),jsxRuntime.jsx("path",{d:"M18 12a2 2 0 0 0 0 4h4v-4Z"})]})}function Lt(e){if(!e)return "0.00";let t=Number(e);return Number.isFinite(t)?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):"0.00"}function _t(e){if(!e)return "0";let t=Number(e);return Number.isFinite(t)?t>=1e6?(t/1e6).toLocaleString("en-US",{maximumFractionDigits:2})+"M":t>=1e3?(t/1e3).toLocaleString("en-US",{maximumFractionDigits:2})+"K":t.toLocaleString("en-US",{maximumFractionDigits:6}):"0"}function Sr({chain:e,from:t,to:r,onComplete:s,className:o}){let a=Le({chain:e,from:t,to:r,onComplete:s}),{isOpen:n,onOpen:l,onOpenChange:i,onClose:u}=ui.useDisclosure(),m=react.useCallback(async()=>{await a.swap(),u();},[a,u]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ve,{fromToken:a.fromToken,toToken:a.toToken,fromBalance:a.fromBalance,toBalance:a.toBalance,amount:a.amount,amountInUsd:a.amountInUsd,onAmountChange:a.setAmount,onHalfAmount:a.setHalfAmount,onMaxAmount:a.setMaxAmount,outputAmount:a.outputAmount,outputAmountInUsd:a.outputAmountInUsd,onFromTokenSelect:a.setFromTokenAddress,onToTokenSelect:a.setToTokenAddress,route:a.route,isRouting:a.isRouting,routeError:a.routeError,onPreview:l,isSwapping:a.isSwapping,className:o}),jsxRuntime.jsx(Oe,{isOpen:n,onOpenChange:i,fromToken:a.fromToken,toToken:a.toToken,fromBalance:a.fromBalance,inputAmount:a.amount,inputAmountInUsd:a.amountInUsd,outputAmount:a.outputAmount,outputAmountInUsd:a.outputAmountInUsd,route:a.route,isRouting:a.isRouting,routeError:a.routeError,onConfirm:m,isSwapping:a.isSwapping})]})}function Wt(e){let t=V(e),r=utils$1.getNativeToken(e)?.symbol??"ETH";return {buy:{customAmounts:yt(r),presets:[{...t},{...t},{...t}]},sell:{customPercentages:[...bt],presets:[{...t},{...t},{...t}]}}}var Nr=Wt("900900900");function Vt(e){return `liberfi.instant-trade.settings.${e}`}function Cr(e,t){try{let r=localStorage.getItem(Vt(String(e)));if(r)return JSON.parse(r)}catch{}return t}function Ir(e,t){try{localStorage.setItem(Vt(e),JSON.stringify(t));}catch{}}var Kt=react.createContext(null);function $e(){let e=react.useContext(Kt);if(!e)throw new Error("useInstantTrade must be used within an InstantTradeProvider");return e}function He({chain:e,tokenAddress:t,settings:r,onSettingsChange:s,children:o}){let a=react.useMemo(()=>utils$1.getNativeToken(e),[e]),n=r!==void 0,l=react.useMemo(()=>Wt(e),[e]),[i,u]=react.useState(()=>n?l:Cr(e,l)),m=n?r:i,d=react.useCallback(E=>{n?s?.(E):(u(E),Ir(String(e),E));},[n,s,e]),g=react.useCallback(E=>d({...m,buy:E}),[m,d]),h=react.useCallback(E=>d({...m,sell:E}),[m,d]),[p,c]=react.useState("buy"),[x,P]=react.useState(),[v,f]=react.useState(0),[A,R]=react.useState(0),$=react.useMemo(()=>V(e),[e]),H=react.useMemo(()=>{let E=p==="buy"?v:A;return (p==="buy"?m.buy.presets:m.sell.presets)[E]??$},[p,v,A,m,$]),z=react.useMemo(()=>({chain:e,tokenAddress:t,nativeToken:a,direction:p,setDirection:c,amount:x,setAmount:P,buyPreset:v,setBuyPreset:f,sellPreset:A,setSellPreset:R,settings:m,updateBuySettings:g,updateSellSettings:h,currentPresetValues:H}),[e,t,a,p,x,v,A,m,g,h,H]);return jsxRuntime.jsx(Kt.Provider,{value:z,children:o})}var Wr=15e3,Vr=1e4,Kr=1e4;function ze(e){let{chain:t,tokenAddress:r,onSwapSubmitted:s,onSwapError:o}=e,{t:a}=i18n.useTranslation(),n=$e(),l=react.useMemo(()=>utils$1.getNativeToken(t),[t]),i=react.useMemo(()=>utils$1.getWrappedToken(t),[t]),u=walletConnector.useWallets(),m=utils$1.chainToNamespace(t),d=react.useMemo(()=>u.find(w=>w.chainNamespace===m&&w.isConnected),[u,m]),g=d?.address??"",h=react.useMemo(()=>{let w=[r];return l&&w.push(l.address),i&&w.push(i.address),w.filter(Boolean)},[r,l,i]),p=react$1.useTokensQuery({chain:t,addresses:h},{enabled:h.length>0,refetchInterval:Vr}),c=react.useMemo(()=>p.data?.find(w=>w.address===r)??null,[p.data,r]),x=react$1.useWalletPortfoliosByTokensQuery({chain:t,address:g,tokenAddresses:h},{enabled:!!g&&h.length>0,refetchInterval:Wr});react$1.useLatestBlockQuery({chain:types.Chain.SOLANA},{enabled:utils$1.isSolanaChain(t),refetchInterval:Kr,staleTime:8e3});let P=l?.address??i?.address??"",v=react.useMemo(()=>x.data?.find(w=>w.address===P)??null,[x.data,P]),f=react.useMemo(()=>x.data?.find(w=>w.address===r)??null,[x.data,r]),[A,R]=react.useState(false),$=react.useRef(null),H=react.useCallback(w=>{let U=$.current;$.current=w,R(W=>U===null||U!==w?true:!W);},[]),z=react.useRef(s);z.current=s;let E=react.useRef(o);E.current=o;let{swap:Z,isSwapping:F}=ne({onSubmitted:w=>z.current?.(w),onError:(w,U)=>E.current?.(w,U)}),Y=react.useCallback(async()=>{if(!n.amount||!d||!r)return;let w=l?.decimals??9,U=i?.address??l?.address??"",W=n.direction==="buy",ae=W?U:r,ee=W?r:U,oe=W?w:c?.decimals??9,te=new de__default.default(n.amount).shiftedBy(oe).decimalPlaces(0).toString(),ie=n.currentPresetValues,S=V(t),k=ie.slippage??S.slippage??1,Pe=ie.antiMev!=="off",Me=utils$1.isSolanaChain(t)?{priorityFee:new de__default.default(ie.priorityFee??S.priorityFee??0).shiftedBy(w).decimalPlaces(0).toString(),tipFee:new de__default.default(ie.tipFee??S.tipFee??0).shiftedBy(w).decimalPlaces(0).toString(),isAntiMev:Pe}:{};try{await Z({chain:t,wallet:d,input:ae,output:ee,amount:te,slippage:k,...Me}),n.setAmount(void 0);}catch{}},[n,d,r,l,i,c,t,Z]),J=react.useMemo(()=>{let w=a(n.direction==="buy"?"common.buy":"common.sell");if(!n.amount)return w;let U=` (${a("trade.insufficientBalance")})`;if(n.direction==="buy"){let ae=v?.amount;if(ae&&new de__default.default(ae).lt(n.amount))return `${w}${U}`;let ee=l?.symbol??"",oe=p.data?.find(te=>te.address===P)?.marketData?.priceInUsd;if(oe){let te=utils$1.formatAmountUSD(new de__default.default(n.amount).times(Number(oe)));return a("trade.submitBuyAmount",{amount:n.amount,symbol:ee,usd:te})}return a("trade.submitBuyAmountNoUsd",{amount:n.amount,symbol:ee})}let W=f?.amount;return W&&new de__default.default(W).lt(n.amount)?`${w}${U}`:w},[a,n.direction,n.amount,v,f,l,p.data,P]),Q=!n.amount||!d||!r,se=p.isPending||x.isPending;return react.useMemo(()=>({chain:t,tokenAddress:r,nativeToken:l,tokenInfo:c,nativeBalance:v,tokenBalance:f,direction:n.direction,setDirection:n.setDirection,amount:n.amount,setAmount:n.setAmount,buyPreset:n.buyPreset,setBuyPreset:n.setBuyPreset,sellPreset:n.sellPreset,setSellPreset:n.setSellPreset,currentPresetValues:n.currentPresetValues,settings:n.settings,updateBuySettings:n.updateBuySettings,updateSellSettings:n.updateSellSettings,showSettings:A,handlePresetClick:H,swap:Y,isSwapping:F,submitText:J,isDisabled:Q,isLoading:se}),[t,r,l,c,v,f,n,A,H,Y,F,J,Q,se])}function be({value:e,onChange:t,chain:r,disableAnimation:s,className:o}){let a=react.useCallback(i=>t({...e,...i}),[e,t]),n=react.useMemo(()=>le(r),[r]),l=n.feeType==="gasFee"?"gasFee":"priorityFee";return jsxRuntime.jsxs("div",{className:ui.cn("space-y-4",o),children:[jsxRuntime.jsx(Yr,{value:e.slippage,onChange:i=>a({slippage:i})}),jsxRuntime.jsx(Jr,{value:e[l],onChange:i=>a({[l]:i}),feeType:n.feeType,symbol:n.feeUnit,decimals:n.feeDecimals}),n.showTipFee&&jsxRuntime.jsx(es,{value:e.tipFee,onChange:i=>a({tipFee:i}),symbol:n.tipFeeUnit,decimals:n.tipFeeDecimals}),n.showAutoFee&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ts,{value:e.autoFee,onChange:i=>a({autoFee:i}),disableAnimation:s}),e.autoFee&&jsxRuntime.jsx(ns,{value:e.maxAutoFee,onChange:i=>a({maxAutoFee:i}),symbol:n.nativeSymbol})]}),jsxRuntime.jsx(rs,{value:e.antiMev,onChange:i=>a({antiMev:i}),options:n.antiMevOptions,disableAnimation:s}),n.showCustomRPC&&jsxRuntime.jsx(ss,{value:e.customRPC,onChange:i=>a({customRPC:i})})]})}function Yr({value:e,onChange:t}){let{t:r}=i18n.useTranslation(),s=r("trade.preset.slippage");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsx("div",{className:"text-sm text-neutral",children:s}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:o=>t(isNaN(o)?null:o),hideStepper:true,minValue:0,maxValue:100,step:1,endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:"%"}),"aria-label":s})]})}function Jr({value:e,onChange:t,feeType:r,symbol:s,decimals:o}){let{t:a}=i18n.useTranslation(),n=a(`trade.preset.${r}`),l=a(`trade.preset.${r}.tooltip`);return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[n,jsxRuntime.jsx(ui.StyledTooltip,{content:l,children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:i=>t(isNaN(i)?null:i),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:o},endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:s}),"aria-label":n})]})}function es({value:e,onChange:t,symbol:r,decimals:s}){let{t:o}=i18n.useTranslation(),a=o("trade.preset.tipFee");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[a,jsxRuntime.jsx(ui.StyledTooltip,{content:o("trade.preset.tipFee.tooltip"),children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:n=>t(isNaN(n)?null:n),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:s},endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:r}),"aria-label":a})]})}function ts({value:e,onChange:t,disableAnimation:r}){let{t:s}=i18n.useTranslation(),o=s("trade.preset.autoFee");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[o,jsxRuntime.jsx(ui.StyledTooltip,{content:s("trade.preset.autoFee.tooltip"),children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(ui.StyledSwitch,{isSelected:e,onValueChange:t,color:"primary","aria-label":o,disableAnimation:r})})]})}function ns({value:e,onChange:t,symbol:r}){let{t:s}=i18n.useTranslation(),o=s("trade.preset.maxAutoFee");return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsx("div",{className:"text-sm text-neutral",children:o}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:a=>t(isNaN(a)?null:a),hideStepper:true,minValue:0,endContent:jsxRuntime.jsx("span",{className:"text-sm text-neutral",children:r}),"aria-label":o})]})}function rs({value:e,onChange:t,options:r,disableAnimation:s}){let{t:o}=i18n.useTranslation(),a=o("trade.preset.antiMev"),n=react.useMemo(()=>({off:ui.ShieldOffIcon,reduced:ui.ShieldIcon,secure:ui.ShieldPlusIcon}),[]),l=react.useMemo(()=>({off:{title:o("trade.preset.antiMev.off"),desc:o("trade.preset.antiMev.off.desc")},reduced:{title:o("trade.preset.antiMev.reduced"),desc:o("trade.preset.antiMev.reduced.desc")},secure:{title:o("trade.preset.antiMev.secure"),desc:o("trade.preset.antiMev.secure.desc")}}),[o]);return jsxRuntime.jsxs("div",{className:"w-full grid grid-cols-2 gap-2 items-center",children:[jsxRuntime.jsxs("div",{className:"text-sm text-neutral flex items-center gap-1",children:[a,jsxRuntime.jsx(ui.StyledTooltip,{content:o("trade.preset.antiMev.tooltip"),children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"bg-transparent min-w-0 w-4 min-h-0 h-4 p-0",disableRipple:true,children:jsxRuntime.jsx(ui.InfoIcon,{width:13,height:13,className:"text-neutral"})})})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(ui.StyledBorderedTabs,{color:"primary",radius:"lg",classNames:{tabList:"gap-0",tab:"w-8 min-w-0 px-0"},selectedKey:e,onSelectionChange:t,disableAnimation:s,"aria-label":a,children:r.map(i=>{let u=n[i],m=l[i];return jsxRuntime.jsx(ui.Tab,{title:jsxRuntime.jsx(ui.StyledTooltip,{content:jsxRuntime.jsxs("div",{className:"text-xs",children:[jsxRuntime.jsx("div",{className:"font-medium text-foreground",children:m.title}),jsxRuntime.jsx("div",{className:"mt-0.5",children:m.desc})]}),children:jsxRuntime.jsx("span",{className:"flex items-center justify-center",children:jsxRuntime.jsx(u,{width:18,height:18})})})},i)})})})]})}function ss({value:e,onChange:t}){let{t:r}=i18n.useTranslation(),s=r("trade.preset.customRpc");return jsxRuntime.jsxs("div",{className:"w-full flex gap-4 items-center",children:[jsxRuntime.jsx("div",{className:"flex-none text-sm text-neutral",children:s}),jsxRuntime.jsx("div",{className:"flex-auto",children:jsxRuntime.jsx(ui.StyledInput,{fullWidth:true,variant:"flat",value:e??"",onValueChange:o=>t(o||null),placeholder:"https://...","aria-label":s})})]})}function Xe({chain:e,direction:t,onDirectionChange:r,amount:s,onAmountChange:o,customAmounts:a,customPercentages:n,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:m,tokenSymbol:d,nativeBalance:g,tokenBalance:h,amountConversion:p,preset:c,onPresetChange:x,presetValues:P,onPresetSettingsChange:v,showSettings:f,onPresetClick:A,submitText:R,isDisabled:$,isLoading:H,onSubmit:z,className:E,headerExtra:Z}){let{t:F}=i18n.useTranslation(),Y=react.useMemo(()=>utils$1.getNativeToken(e),[e]),J=Y?.symbol,Q=Y?.decimals??9;return jsxRuntime.jsxs("div",{className:ui.cn("flex-none sm:px-3 py-3 bg-content1 rounded-lg",E),children:[jsxRuntime.jsxs(ui.Tabs,{fullWidth:true,size:"sm",color:t==="buy"?"primary":"secondary",selectedKey:t,onSelectionChange:r,classNames:{tabList:"bg-content2",tab:ui.cn("h-6",t==="buy"?"data-[selected=true]:bg-primary":"data-[selected=true]:bg-secondary"),cursor:t==="buy"?"bg-primary":"bg-secondary"},disableAnimation:true,children:[jsxRuntime.jsx(ui.Tab,{title:F("common.buy")},"buy"),jsxRuntime.jsx(ui.Tab,{title:F("common.sell")},"sell")]}),jsxRuntime.jsxs("div",{className:"mt-2.5 h-8 flex items-center justify-between",children:[jsxRuntime.jsx(ui.Tabs,{size:"sm",variant:"underlined",classNames:{tabList:"gap-0",tab:"px-1.5"},selectedKey:"market",disableAnimation:true,children:jsxRuntime.jsx(ui.Tab,{title:F("trade.market")},"market")}),Z]}),jsxRuntime.jsx("div",{className:"mt-2.5",children:t==="buy"?jsxRuntime.jsx(xs,{amount:s,onAmountChange:o,customAmounts:a,onQuickAmountClick:l,onCustomAmountsEdit:u,nativeSymbol:J,nativeDecimals:Q,amountLabel:F("trade.amount")}):jsxRuntime.jsx(hs,{amount:s,onAmountChange:o,customPercentages:n,onQuickPercentageClick:i,onCustomPercentagesEdit:m,tokenSymbol:d,amountLabel:F("trade.amount")})}),jsxRuntime.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[jsxRuntime.jsxs("div",{className:"text-xs text-neutral space-x-1",children:[jsxRuntime.jsx("span",{children:F("trade.balance")}),jsxRuntime.jsx("span",{children:t==="buy"?g?`${g} ${J??""}`:"--":h?`${h} ${d??""}`:"--"})]}),p&&jsxRuntime.jsx("div",{className:"text-xs text-neutral",children:p})]}),jsxRuntime.jsx("div",{className:"mt-4",children:jsxRuntime.jsx(ys,{values:P,chain:e})}),jsxRuntime.jsx("div",{className:"mt-2",children:jsxRuntime.jsxs(ui.Tabs,{variant:"bordered",size:"sm",fullWidth:true,classNames:{tabList:"border-content3 border-1 gap-0 p-0.5",tab:"min-h-0 h-6 px-2 py-1 text-xs data-[selected=true]:bg-content3",tabContent:"text-neutral"},selectedKey:`${c}`,onSelectionChange:se=>x(Number(se)),disableAnimation:true,"aria-label":F("trade.preset.presets"),children:[jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:1}),onClick:()=>A(0)},0),jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:2}),onClick:()=>A(1)},1),jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:3}),onClick:()=>A(2)},2)]})}),f&&jsxRuntime.jsx("div",{className:"mt-2.5",children:jsxRuntime.jsx(be,{value:P,onChange:v,chain:e})}),jsxRuntime.jsx(ui.Button,{fullWidth:true,size:"sm",color:t==="buy"?"primary":"secondary",className:"mt-2 rounded-lg",disableRipple:true,isDisabled:$,isLoading:H,onPress:z,children:R})]})}function xs({amount:e,onAmountChange:t,customAmounts:r,onQuickAmountClick:s,onCustomAmountsEdit:o,nativeSymbol:a,nativeDecimals:n,amountLabel:l}){let i=react.useCallback(u=>{typeof u=="number"&&t(isNaN(u)?void 0:u);},[t]);return jsxRuntime.jsxs("div",{className:"space-y-0.5",children:[jsxRuntime.jsx(ui.NumberInput,{min:0,value:e,onChange:i,fullWidth:true,hideStepper:true,startContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:l}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:a??""}),formatOptions:{maximumFractionDigits:n},classNames:{inputWrapper:ui.cn("h-8 min-h-0 py-0 rounded-lg rounded-b-none shadow-none","bg-content2 data-[hover=true]:bg-content3 group-data-[focus=true]:bg-content3"),input:"text-xs"}}),jsxRuntime.jsx(qt,{values:r,onSelect:s,onEdit:o})]})}function hs({amount:e,onAmountChange:t,customPercentages:r,onQuickPercentageClick:s,onCustomPercentagesEdit:o,tokenSymbol:a,amountLabel:n}){let l=react.useCallback(i=>{typeof i=="number"&&t(isNaN(i)?void 0:i);},[t]);return jsxRuntime.jsxs("div",{className:"space-y-0.5",children:[jsxRuntime.jsx(ui.NumberInput,{min:0,value:e,onChange:l,fullWidth:true,hideStepper:true,startContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:n}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-neutral",children:a??""}),classNames:{inputWrapper:ui.cn("h-8 min-h-0 py-0 rounded-lg rounded-b-none shadow-none","bg-content2 data-[hover=true]:bg-content3 group-data-[focus=true]:bg-content3"),input:"text-xs"}}),jsxRuntime.jsx(qt,{values:r,onSelect:s,onEdit:o,suffix:"%"})]})}function qt({values:e,onSelect:t,onEdit:r,suffix:s}){let[o,a]=react.useState(false),[n,l]=react.useState([]),i=react.useCallback(()=>{l([...e]),a(true);},[e]),u=react.useCallback(()=>{a(false),r(n);},[r,n]);return jsxRuntime.jsxs("div",{className:"flex gap-0.5",children:[jsxRuntime.jsx("div",{className:"flex-auto grid grid-cols-4 gap-0.5",children:Array.from({length:4}).map((m,d)=>jsxRuntime.jsx("div",{className:ui.cn("h-6 bg-content2 flex items-center justify-center",d===0&&"rounded-bl-lg"),children:o?jsxRuntime.jsx(ui.NumberInput,{fullWidth:true,value:n[d]===null||n[d]===void 0?void 0:n[d],onChange:g=>{if(typeof g=="number"){let h=isNaN(g)?null:g;l(p=>{let c=[...p];return c[d]=h,c});}},min:0,hideStepper:true,classNames:{inputWrapper:ui.cn("p-0 h-6 min-h-0 rounded-none flex shadow-none","bg-content2 data-[hover=true]:bg-content3 group-data-[focus=true]:bg-content3",d===0&&"rounded-bl-lg"),innerWrapper:"pb-0",input:"text-xs text-center"}}):jsxRuntime.jsx(ui.Button,{className:"min-w-0 w-full min-h-0 h-full p-0 bg-transparent text-xs",size:"sm",disableRipple:true,onPress:()=>e[d]!=null&&t(e[d]),endContent:s?jsxRuntime.jsx("span",{className:"text-xs text-neutral",children:s}):null,children:e[d]??""})},d))}),jsxRuntime.jsx("div",{className:"flex-none bg-content2 rounded-br-lg overflow-hidden",children:o?jsxRuntime.jsx(ui.Button,{size:"sm",isIconOnly:true,className:"bg-transparent h-6 min-h-6 p-0",disableRipple:true,onPress:u,children:jsxRuntime.jsx(ui.CheckIcon,{width:12,height:12})}):jsxRuntime.jsx(ui.Button,{size:"sm",isIconOnly:true,className:"bg-transparent h-6 min-h-6 p-0",disableRipple:true,onPress:i,children:jsxRuntime.jsx(ui.EditIcon,{width:12,height:12})})})]})}function ys({values:e,chain:t}){let{t:r}=i18n.useTranslation(),s=react.useMemo(()=>le(t),[t]),o=e.antiMev&&e.antiMev!=="off"?e.antiMev:"off";return jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(ui.Tooltip,{content:r("trade.preset.slippage"),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsx(ui.SlippageIcon,{width:14,height:14}),children:utils$1.formatPercent((e.slippage??0)/100)})}),jsxRuntime.jsx(ui.Tooltip,{content:r(`trade.preset.${s.feeType}`),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsx(ui.ZapFastIcon,{width:14,height:14}),children:utils$1.formatPrice(e.priorityFee??0)})}),s.showTipFee&&jsxRuntime.jsx(ui.Tooltip,{content:r("trade.preset.tipFee"),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsx(ui.CoinsIcon,{width:14,height:14}),children:utils$1.formatPrice(e.tipFee??0)})}),jsxRuntime.jsx(ui.Tooltip,{content:r("trade.preset.antiMev"),classNames:{content:"text-xs text-neutral py-2 px-4 max-w-xs"},children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-transparent p-0 h-5 min-h-0 w-auto min-w-0 gap-0.5 text-xs text-neutral",disableRipple:true,startContent:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[o==="off"&&jsxRuntime.jsx(ui.ShieldOffIcon,{width:14,height:14,className:"text-neutral"}),o==="reduced"&&jsxRuntime.jsx(ui.ShieldIcon,{width:14,height:14,className:"text-neutral"}),o==="secure"&&jsxRuntime.jsx(ui.ShieldPlusIcon,{width:14,height:14,className:"text-neutral"})]}),children:r(`trade.preset.antiMev.${o}`)})})]})}function Ps({chain:e,tokenAddress:t,onSwapSubmitted:r,onSwapError:s,settings:o,onSettingsChange:a,headerExtra:n,className:l}){return jsxRuntime.jsx(He,{chain:e,tokenAddress:t,settings:o,onSettingsChange:a,children:jsxRuntime.jsx(vs,{chain:e,tokenAddress:t,onSwapSubmitted:r,onSwapError:s,headerExtra:n,className:l})})}function vs({chain:e,tokenAddress:t,onSwapSubmitted:r,onSwapError:s,headerExtra:o,className:a}){let n=ze({chain:e,tokenAddress:t,onSwapSubmitted:r,onSwapError:s}),l=react.useCallback(p=>n.setAmount(p),[n]),i=react.useCallback(p=>{let c=n.tokenBalance?.amount;if(!c)return;let x=new de__default.default(c).times(p).div(100).toNumber();n.setAmount(x);},[n]),u=react.useCallback(p=>{n.updateBuySettings({...n.settings.buy,customAmounts:p});},[n]),m=react.useCallback(p=>{n.updateSellSettings({...n.settings.sell,customPercentages:p});},[n]),d=react.useCallback(p=>{let c=n.direction==="buy",x=c?n.buyPreset:n.sellPreset;if(c){let P=n.settings.buy,v=[...P.presets];v[x]=p,n.updateBuySettings({...P,presets:v});}else {let P=n.settings.sell,v=[...P.presets];v[x]=p,n.updateSellSettings({...P,presets:v});}},[n]),g=react.useCallback(p=>{n.direction==="buy"?n.setBuyPreset(p):n.setSellPreset(p);},[n]),h=n.direction==="buy"?n.buyPreset:n.sellPreset;return jsxRuntime.jsx(Xe,{chain:e,direction:n.direction,onDirectionChange:n.setDirection,amount:n.amount,onAmountChange:n.setAmount,customAmounts:n.settings.buy.customAmounts,customPercentages:n.settings.sell.customPercentages,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:m,tokenSymbol:n.tokenInfo?.symbol,nativeBalance:n.nativeBalance?.amount,tokenBalance:n.tokenBalance?.amount,amountConversion:void 0,preset:h,onPresetChange:g,presetValues:n.currentPresetValues,onPresetSettingsChange:d,showSettings:n.showSettings,onPresetClick:n.handlePresetClick,submitText:n.submitText,isDisabled:n.isDisabled,isLoading:n.isSwapping,onSubmit:n.swap,className:a,headerExtra:o})}function Je(e){let{id:t,chain:r,token:s,storageKeyPrefix:o,onAmountChange:a,onPresetChange:n,onPresetClick:l}=e,[i,u]=jotai.useAtom(j(G(t,r,s.address,o))),m=jotai.useAtomValue(_(L(r,"buy",0,o))),d=jotai.useAtomValue(_(L(r,"buy",1,o))),g=jotai.useAtomValue(_(L(r,"buy",2,o))),h=react.useMemo(()=>[m,d,g],[m,d,g]),p=react.useCallback(x=>{u(P=>({...P,amount:x})),a?.(x);},[u,a]),c=react.useCallback(x=>{u(P=>({...P,preset:x})),n?.(x);},[u,n]);return {token:s,chain:r,amount:i.amount,handleAmountChange:p,preset:i.preset,handlePresetChange:c,onPresetClick:l,presetValues:h}}function et({token:e,chain:t,amount:r,onAmountChange:s,preset:o=0,onPresetChange:a,onPresetClick:n,presetValues:l,radius:i="full",size:u="md",className:m}){let{t:d}=i18n.useTranslation(),{isMobile:g}=ui.useScreen(),h=react.useRef(null),p=react.useMemo(()=>V(t),[t]),[c,x]=react.useState(null),P=react.useCallback(v=>{a?.(Number(v));},[a]);return jsxRuntime.jsxs("div",{ref:h,className:ui.cn("relative flex items-center",i==="full"&&"rounded-full",i==="lg"&&"rounded-lg",i==="md"&&"rounded-md",i==="sm"&&"rounded-sm",u==="sm"&&"h-8 pr-2",u==="md"&&"h-10 pr-2.5",u==="lg"&&"h-12 pr-3",m),style:{border:"1px solid rgba(63,63,70,0.5)",background:"rgba(39,39,42,0.6)"},children:[jsxRuntime.jsx(ui.StyledNumberInput,{className:"flex-auto min-w-0 h-full",fullWidth:true,variant:"flat",value:r,onValueChange:v=>s(isNaN(v)?void 0:v),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:e.decimals},size:u,startContent:jsxRuntime.jsx(ui.LightningIcon,{width:u==="sm"?12:u==="md"?16:20,height:u==="sm"?12:u==="md"?16:20,className:"text-primary flex-none"}),endContent:jsxRuntime.jsx(ui.TokenIcon,{symbol:e.symbol,size:u==="sm"?16:u==="md"?20:28,className:"flex-none"}),placeholder:"0.0","aria-label":d("trade.instantTradeAmount"),classNames:{base:"h-full",mainWrapper:"h-full",inputWrapper:"!bg-transparent !shadow-none !border-0 !rounded-none h-full !min-h-0"}},`${t}-${e.address}`),jsxRuntime.jsx("div",{className:"w-px self-stretch my-1.5 mx-1.5 flex-none",style:{background:"rgba(63,63,70,0.5)"}}),jsxRuntime.jsx(ui.StyledLightTabs,{color:"primary",size:u,selectedKey:String(o),onSelectionChange:P,classNames:{base:"flex-none h-full",tabList:ui.cn("bg-transparent h-full",u==="sm"&&"p-1 gap-1",u==="md"&&"p-1 gap-0",u==="lg"&&"p-1.5 gap-0"),tab:ui.cn("h-full",u==="sm"&&"text-xs px-1",u==="md"&&"text-sm px-2.5",u==="lg"&&"text-sm px-3"),cursor:"rounded-sm"},children:Array.from({length:3}).map((v,f)=>jsxRuntime.jsx(ui.Tab,{title:g?jsxRuntime.jsx("span",{onClick:A=>{o===f&&(A.stopPropagation(),x(R=>R===f?null:f));},children:d("trade.preset.short",{n:f+1})}):jsxRuntime.jsx(ui.StyledTooltip,{content:jsxRuntime.jsx(nn,{label:d("trade.preset.short",{n:f+1}),values:l?.[f]??p,chain:t}),classNames:{content:"!p-0 !rounded-[14px] !border !border-[rgba(39,39,42,1)] !bg-[rgba(24,24,27,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]"},offset:12,children:jsxRuntime.jsx("span",{onClick:()=>o===f&&n?.(f),children:d("trade.preset.short",{n:f+1})})})},String(f)))}),g&&c!==null&&jsxRuntime.jsx(Vs,{label:d("trade.preset.short",{n:c+1}),values:l?.[c]??p,chain:t,onClose:()=>x(null),containerRef:h})]})}function Vs({label:e,values:t,chain:r,onClose:s,containerRef:o}){let a=react.useRef(null);return react.useEffect(()=>{let n=l=>{let i=l.target;a.current&&!a.current.contains(i)&&o.current&&!o.current.contains(i)&&s();};return document.addEventListener("mousedown",n),document.addEventListener("touchstart",n),()=>{document.removeEventListener("mousedown",n),document.removeEventListener("touchstart",n);}},[s,o]),jsxRuntime.jsx("div",{ref:a,style:{position:"absolute",top:"100%",right:0,zIndex:50,marginTop:8,borderRadius:14,border:"1px solid rgba(39,39,42,1)",background:"rgba(24,24,27,1)",boxShadow:"0 25px 50px -12px rgba(0,0,0,0.5)",minWidth:200},children:jsxRuntime.jsx(nn,{label:e,values:t,chain:r})})}function nn({label:e,values:t,chain:r}){let{t:s}=i18n.useTranslation(),o=react.useMemo(()=>le(r),[r]),a=t.antiMev&&t.antiMev!=="off"?t.antiMev:"off",n=(t.slippage??0)/100,l=n>=.05;return jsxRuntime.jsxs("div",{className:"flex flex-col py-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5 px-3 pb-2 mb-1",style:{borderBottom:"1px solid rgba(39,39,42,1)"},children:[jsxRuntime.jsx(ui.LightningIcon,{width:12,height:12,className:"text-primary flex-none"}),jsxRuntime.jsx("span",{className:"text-xs font-semibold text-foreground",children:e})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[jsxRuntime.jsx(ui.SlippageIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:s("trade.preset.slippage")})]}),jsxRuntime.jsx("span",{className:ui.cn("text-xs font-medium tabular-nums",l?"text-amber-400":"text-foreground"),children:utils$1.formatPercent(n)})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[jsxRuntime.jsx(ui.ZapFastIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:s(`trade.preset.${o.feeType}`)})]}),jsxRuntime.jsxs("span",{className:"text-xs font-medium text-foreground tabular-nums",children:[utils$1.formatPrice(t.priorityFee??0)," ",jsxRuntime.jsx("span",{className:"text-zinc-500",children:o.feeUnit})]})]}),o.showTipFee&&jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[jsxRuntime.jsx(ui.CoinsIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:s("trade.preset.tipFee")})]}),jsxRuntime.jsxs("span",{className:"text-xs font-medium text-foreground tabular-nums",children:[utils$1.formatPrice(t.tipFee??0)," ",jsxRuntime.jsx("span",{className:"text-zinc-500",children:o.tipFeeUnit})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-6 px-3 py-1",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1.5 text-zinc-500 text-xs",children:[a==="off"&&jsxRuntime.jsx(ui.ShieldOffIcon,{width:12,height:12,className:"flex-none"}),a==="reduced"&&jsxRuntime.jsx(ui.ShieldIcon,{width:12,height:12,className:"flex-none"}),a==="secure"&&jsxRuntime.jsx(ui.ShieldPlusIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:s("trade.preset.antiMev")})]}),jsxRuntime.jsx("span",{className:ui.cn("text-xs font-medium",a==="off"&&"text-zinc-500",a==="reduced"&&"text-amber-400",a==="secure"&&"text-emerald-400"),children:s(`trade.preset.antiMev.${a}`)})]})]})}function Ks({size:e,radius:t,className:r,...s}){let{token:o,chain:a,amount:n,handleAmountChange:l,preset:i,handlePresetChange:u,onPresetClick:m,presetValues:d}=Je(s);return jsxRuntime.jsx(et,{token:o,chain:a,amount:n,onAmountChange:l,preset:i,onPresetChange:u,onPresetClick:m,presetValues:d,size:e,radius:t,className:r})}function tt(e){let{chain:t,presetIndex:r=0,defaultDirection:s="buy",storageKeyPrefix:o,onChange:a}=e,[n,l]=react.useState(s),[i,u]=jotai.useAtom(_(L(t,n,r,o))),m=react.useCallback(d=>{u(d),a?.(n,d);},[u,a,n]);return {direction:n,setDirection:l,value:i,handleChange:m}}function rt({disableAnimation:e,className:t,...r}){let{t:s}=i18n.useTranslation(),{direction:o,setDirection:a,value:n,handleChange:l}=tt(r);return jsxRuntime.jsxs("div",{className:ui.cn("space-y-3",t),children:[jsxRuntime.jsxs(ui.StyledSolidTabs,{radius:"lg",color:"default",fullWidth:true,selectedKey:o,onSelectionChange:i=>a(i),"aria-label":"Buy / Sell",children:[jsxRuntime.jsx(ui.Tab,{title:s("common.buy")},"buy"),jsxRuntime.jsx(ui.Tab,{title:s("common.sell")},"sell")]}),jsxRuntime.jsx(be,{value:n,onChange:l,chain:r.chain,disableAnimation:e})]})}var Ys=3;function st(e){let{defaultPresetIndex:t=0,onChange:r}=e,[s,o]=react.useState(t),a=react.useCallback((n,l)=>{r?.(s,n,l);},[r,s]);return {presetCount:Ys,presetIndex:s,setPresetIndex:o,handlePresetChange:a}}function ot({defaultDirection:e,disableAnimation:t,className:r,...s}){let{t:o}=i18n.useTranslation(),{presetCount:a,presetIndex:n,setPresetIndex:l,handlePresetChange:i}=st(s);return jsxRuntime.jsxs("div",{className:ui.cn("space-y-3",r),children:[jsxRuntime.jsx(ui.StyledSolidTabs,{radius:"lg",fullWidth:true,color:"default",selectedKey:String(n),onSelectionChange:u=>l(Number(u)),disableAnimation:t,"aria-label":o("trade.preset.presets"),children:Array.from({length:a},(u,m)=>jsxRuntime.jsx(ui.Tab,{title:o("trade.preset.label",{n:m+1})},String(m)))}),jsxRuntime.jsx(rt,{chain:s.chain,presetIndex:n,defaultDirection:e,storageKeyPrefix:s.storageKeyPrefix,onChange:i,disableAnimation:t})]})}var ga="preset";function xa({id:e=ga}){return jsxRuntime.jsx(uiScaffold.AsyncModal,{id:e,children:t=>jsxRuntime.jsx(ha,{...t})})}function ha({params:e={chains:[types.Chain.SOLANA,types.Chain.ETHEREUM,types.Chain.BINANCE]},isOpen:t,onOpenChange:r}){let{t:s}=i18n.useTranslation(),{chains:o,defaultChain:a,defaultDirection:n,defaultPresetIndex:l,storageKeyPrefix:i,onChange:u}=e,[m,d]=react.useState(a??o[0]);react.useEffect(()=>{d(a??o[0]);},[a,o]);let g=react.useCallback((h,p,c)=>{u?.(m,h,p,c);},[u,m]);return jsxRuntime.jsx(ui.StyledModal,{isOpen:t,onOpenChange:r,size:"md",children:jsxRuntime.jsxs(ui.ModalContent,{children:[jsxRuntime.jsx(ui.ModalHeader,{children:jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between gap-4",children:[jsxRuntime.jsx("span",{className:"flex-auto min-w-0 overflow-hidden text-ellipsis line-clamp-1 whitespace-nowrap",children:s("trade.preset.instantTradeSettings")}),jsxRuntime.jsx(uiChainSelect.ChainSelectMobileUI,{candidates:o,chain:m,onSelectChain:d})]})}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsx(ui.ScrollShadow,{children:jsxRuntime.jsx(ot,{chain:m,defaultDirection:n,defaultPresetIndex:l,storageKeyPrefix:i,onChange:g})})})]})})}function Ee(e,t,r,s,o){let a=V(o),n=new de__default.default(e).shiftedBy(t.decimals).decimalPlaces(0).toString(),l=new de__default.default(s.priorityFee??a.priorityFee??0).shiftedBy(t.decimals).decimalPlaces(0).toString(),i=new de__default.default(s.tipFee??a.tipFee??0).shiftedBy(t.decimals).decimalPlaces(0).toString();return {input:t.address,output:r,amount:n,slippage:s.slippage??a.slippage??1,priorityFee:l,tipFee:i,isAntiMev:s.antiMev!=="off"}}function ut(e){let{id:t,chain:r,token:s,output:o,storageKeyPrefix:a,onSwapSubmitted:n,onSwapError:l}=e,{amount:i,preset:u}=jotai.useAtomValue(j(G(t,r,s.address,a))),m=jotai.useAtomValue(_(L(r,"buy",u,a))),d=walletConnector.useConnectedWallet(r),{swap:g,isSwapping:h}=ne({onSubmitted:n,onError:l}),p=!i||!o,c=walletConnector.useAuthCallback(async()=>{if(!i||!d||!o)return;let x=Ee(i,s,o,m,r);try{await g({...x,chain:r,wallet:d});}catch{}},[d,i,o,r,s,m,g]);return react.useMemo(()=>({amount:i,token:s,isDisabled:p,isSwapping:h,handleSwap:c}),[i,s,p,h,c])}function wa({size:e="sm",radius:t,color:r="primary",className:s,...o}){let{amount:a,token:n,isDisabled:l,isSwapping:i,handleSwap:u}=ut(o);return jsxRuntime.jsx(ui.Button,{fullWidth:true,size:e,radius:t,color:r,className:s,disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{}),isDisabled:l,isLoading:i,onPress:u,children:a!=null?`${a} ${n.symbol}`:n.symbol})}var un=react.createContext(null);function Fa({chain:e,onSwapSubmitted:t,onSwapError:r,children:s}){let o=walletConnector.useConnectedWallet(e),{swap:a}=ne({onSubmitted:t,onError:r}),n=react.useRef(o);n.current=o;let l=react.useRef(a);l.current=a;let i=react.useRef(e);i.current=e;let u=react.useCallback(async d=>{let g=n.current;if(g)return l.current({...d,wallet:g,chain:i.current})},[]),m=walletConnector.useAuthCallback(u,[]);return jsxRuntime.jsx(un.Provider,{value:m,children:s})}function dt(){let e=react.useContext(un);if(e===null)throw new Error("useInstantTradeSwap must be used within an InstantTradeSwapProvider");return e}function ct(e){let{id:t,chain:r,token:s,output:o,storageKeyPrefix:a}=e,{amount:n,preset:l}=jotai.useAtomValue(j(G(t,r,s.address,a))),i=jotai.useAtomValue(_(L(r,"buy",l,a))),u=dt(),[m,d]=react.useState(false),g=!n||!o,h=react.useRef(s);h.current=s;let p=react.useRef(i);p.current=i;let c=react.useRef(r);c.current=r;let x=react.useCallback(async()=>{if(!n||!o)return;let P=Ee(n,h.current,o,p.current,c.current);d(true);try{await u(P);}catch{}finally{d(false);}},[n,o,u]);return react.useMemo(()=>({amount:n,token:s,isDisabled:g,isSwapping:m,handleSwap:x}),[n,s,g,m,x])}var Da=react.memo(function({size:t="sm",radius:r,color:s="primary",className:o,...a}){let{amount:n,token:l,isDisabled:i,isSwapping:u,handleSwap:m}=ct(a);return jsxRuntime.jsx(ui.Button,{variant:"solid",fullWidth:true,size:t,radius:r,color:s,className:o,disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{className:"flex-none",style:{color:"#c7ff2e"}}),isDisabled:i,isLoading:u,spinner:jsxRuntime.jsx(ui.Spinner,{size:"sm",color:"current"}),onPress:m,style:{background:"rgba(199,255,46,0.08)",border:"1px solid rgba(199,255,46,0.2)",color:"#c7ff2e",fontWeight:600},children:n!=null?`${n} ${l.symbol}`:l.symbol})});typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-trade"]="0.1.140");var Oa="0.1.140";
2
+ exports.AmountPresetInputUI=et;exports.AmountPresetInputWidget=Ks;exports.DEFAULT_BSC_TRADE_PRESET=ht;exports.DEFAULT_EVM_TRADE_PRESET=xt;exports.DEFAULT_INSTANT_TRADE_SETTINGS=Nr;exports.DEFAULT_SELL_PERCENTAGES=bt;exports.DEFAULT_SOL_TRADE_PRESET=gt;exports.InstantTradeButtonWidget=wa;exports.InstantTradeListButtonWidget=Da;exports.InstantTradeProvider=He;exports.InstantTradeSwapProvider=Fa;exports.InstantTradeUI=Xe;exports.InstantTradeWidget=Ps;exports.MultiPresetFormWidget=ot;exports.PresetFormModal=xa;exports.PresetFormUI=be;exports.PresetFormWidget=rt;exports.SwapPreviewModal=Oe;exports.SwapRouteExpiredError=ge;exports.SwapUI=Ve;exports.SwapWidget=Sr;exports.getChainPresetFeatures=le;exports.getDefaultBuyAmounts=yt;exports.getDefaultPresetForChain=V;exports.instantTradeAmountAtomFamily=j;exports.instantTradeAmountKey=G;exports.presetAtomFamily=_;exports.presetKey=L;exports.useAmountPresetInputScript=Je;exports.useInstantTrade=$e;exports.useInstantTradeAmount=za;exports.useInstantTradeButtonScript=ut;exports.useInstantTradeListButtonScript=ct;exports.useInstantTradeScript=ze;exports.useInstantTradeSwap=dt;exports.useMultiPresetFormScript=st;exports.usePresetFormScript=tt;exports.usePresetValues=so;exports.useSwap=ne;exports.useSwapRoutePolling=Tt;exports.useSwapScript=Le;exports.useTxConfirmation=Nt;exports.version=Oa;//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map