@liberfi.io/ui-trade 3.0.83 → 3.0.84
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/dist/index.d.mts +11 -3
- package/dist/index.d.ts +11 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +17 -17
package/dist/index.d.mts
CHANGED
|
@@ -41,13 +41,17 @@ interface UseInstantTradeAmountParams {
|
|
|
41
41
|
/** Storage key prefix. Must match the prefix used by the corresponding AmountPresetInputWidget. Defaults to `"liberfi."`. */
|
|
42
42
|
storageKeyPrefix?: string;
|
|
43
43
|
}
|
|
44
|
+
interface UseInstantTradeAmountResult extends AmountPresetState {
|
|
45
|
+
/** Update the selected preset while preserving the current amount. */
|
|
46
|
+
setPreset: (preset: number) => void;
|
|
47
|
+
}
|
|
44
48
|
/**
|
|
45
|
-
* Read the persisted instant-trade amount and preset index for a given id / chain / token.
|
|
49
|
+
* Read and update the persisted instant-trade amount and preset index for a given id / chain / token.
|
|
46
50
|
*
|
|
47
51
|
* The value is sourced from the same `atomWithStorage` atom family that
|
|
48
52
|
* {@link AmountPresetInputWidget} writes to, so it stays in sync automatically.
|
|
49
53
|
*/
|
|
50
|
-
declare function useInstantTradeAmount({ id, chain, tokenAddress, storageKeyPrefix, }: UseInstantTradeAmountParams):
|
|
54
|
+
declare function useInstantTradeAmount({ id, chain, tokenAddress, storageKeyPrefix, }: UseInstantTradeAmountParams): UseInstantTradeAmountResult;
|
|
51
55
|
|
|
52
56
|
/**
|
|
53
57
|
* Input parameters for the `swap()` function returned by {@link useSwap}.
|
|
@@ -751,6 +755,8 @@ interface UseMultiPresetFormScriptParams {
|
|
|
751
755
|
storageKeyPrefix?: string;
|
|
752
756
|
/** Notification callback when value changes (does not control state). */
|
|
753
757
|
onChange?: (presetIndex: number, direction: "buy" | "sell", value: TradePresetValues) => void;
|
|
758
|
+
/** Notification callback when the selected preset index changes. */
|
|
759
|
+
onPresetIndexChange?: (presetIndex: number) => void;
|
|
754
760
|
}
|
|
755
761
|
/** Return value of {@link useMultiPresetFormScript}. */
|
|
756
762
|
interface UseMultiPresetFormScriptResult {
|
|
@@ -784,6 +790,8 @@ interface PresetFormModalParams {
|
|
|
784
790
|
storageKeyPrefix?: string;
|
|
785
791
|
/** Notification callback when any preset value changes. */
|
|
786
792
|
onChange?: (chain: Chain, presetIndex: number, direction: "buy" | "sell", value: TradePresetValues) => void;
|
|
793
|
+
/** Notification callback when the selected preset changes for the active modal chain. */
|
|
794
|
+
onPresetIndexChange?: (chain: Chain, presetIndex: number) => void;
|
|
787
795
|
}
|
|
788
796
|
|
|
789
797
|
/** Buy-side trade settings. */
|
|
@@ -1053,4 +1061,4 @@ declare function getChainPresetFeatures(chain: Chain): ChainPresetFeatures;
|
|
|
1053
1061
|
/** Returns chain-appropriate default preset values. */
|
|
1054
1062
|
declare function getDefaultPresetForChain(chain: Chain): TradePresetValues;
|
|
1055
1063
|
|
|
1056
|
-
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 };
|
|
1064
|
+
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 UseInstantTradeAmountResult, 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 };
|
package/dist/index.d.ts
CHANGED
|
@@ -41,13 +41,17 @@ interface UseInstantTradeAmountParams {
|
|
|
41
41
|
/** Storage key prefix. Must match the prefix used by the corresponding AmountPresetInputWidget. Defaults to `"liberfi."`. */
|
|
42
42
|
storageKeyPrefix?: string;
|
|
43
43
|
}
|
|
44
|
+
interface UseInstantTradeAmountResult extends AmountPresetState {
|
|
45
|
+
/** Update the selected preset while preserving the current amount. */
|
|
46
|
+
setPreset: (preset: number) => void;
|
|
47
|
+
}
|
|
44
48
|
/**
|
|
45
|
-
* Read the persisted instant-trade amount and preset index for a given id / chain / token.
|
|
49
|
+
* Read and update the persisted instant-trade amount and preset index for a given id / chain / token.
|
|
46
50
|
*
|
|
47
51
|
* The value is sourced from the same `atomWithStorage` atom family that
|
|
48
52
|
* {@link AmountPresetInputWidget} writes to, so it stays in sync automatically.
|
|
49
53
|
*/
|
|
50
|
-
declare function useInstantTradeAmount({ id, chain, tokenAddress, storageKeyPrefix, }: UseInstantTradeAmountParams):
|
|
54
|
+
declare function useInstantTradeAmount({ id, chain, tokenAddress, storageKeyPrefix, }: UseInstantTradeAmountParams): UseInstantTradeAmountResult;
|
|
51
55
|
|
|
52
56
|
/**
|
|
53
57
|
* Input parameters for the `swap()` function returned by {@link useSwap}.
|
|
@@ -751,6 +755,8 @@ interface UseMultiPresetFormScriptParams {
|
|
|
751
755
|
storageKeyPrefix?: string;
|
|
752
756
|
/** Notification callback when value changes (does not control state). */
|
|
753
757
|
onChange?: (presetIndex: number, direction: "buy" | "sell", value: TradePresetValues) => void;
|
|
758
|
+
/** Notification callback when the selected preset index changes. */
|
|
759
|
+
onPresetIndexChange?: (presetIndex: number) => void;
|
|
754
760
|
}
|
|
755
761
|
/** Return value of {@link useMultiPresetFormScript}. */
|
|
756
762
|
interface UseMultiPresetFormScriptResult {
|
|
@@ -784,6 +790,8 @@ interface PresetFormModalParams {
|
|
|
784
790
|
storageKeyPrefix?: string;
|
|
785
791
|
/** Notification callback when any preset value changes. */
|
|
786
792
|
onChange?: (chain: Chain, presetIndex: number, direction: "buy" | "sell", value: TradePresetValues) => void;
|
|
793
|
+
/** Notification callback when the selected preset changes for the active modal chain. */
|
|
794
|
+
onPresetIndexChange?: (chain: Chain, presetIndex: number) => void;
|
|
787
795
|
}
|
|
788
796
|
|
|
789
797
|
/** Buy-side trade settings. */
|
|
@@ -1053,4 +1061,4 @@ declare function getChainPresetFeatures(chain: Chain): ChainPresetFeatures;
|
|
|
1053
1061
|
/** Returns chain-appropriate default preset values. */
|
|
1054
1062
|
declare function getDefaultPresetForChain(chain: Chain): TradePresetValues;
|
|
1055
1063
|
|
|
1056
|
-
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 };
|
|
1064
|
+
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 UseInstantTradeAmountResult, 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 };
|
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'),pe=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 pe__default=/*#__PURE__*/_interopDefault(pe);var fn="liberfi.",gn={amount:void 0,preset:0};function xn(e,n,s,r){return `${e}instant-trade.${n}.${s}.${r}`}function hn(e){let n=e.lastIndexOf(":"),s=e.slice(0,n+1),r=e.slice(n+1),[o,a,t]=r.split(".");return {prefix:s,id:o,chain:a,tokenAddress:t}}function z(e,n,s,r=fn){return `${r}:${e}.${n}.${s}`}var G=jotaiFamily.atomFamily(e=>{let{prefix:n,id:s,chain:r,tokenAddress:o}=hn(e);return utils.atomWithStorage(xn(n,s,String(r),o),gn,void 0,{getOnInit:false})});function Xa({id:e,chain:n,tokenAddress:s,storageKeyPrefix:r}){return jotai.useAtomValue(G(z(e,n,s,r)))}var de=class extends Error{constructor(n="Swap route expired. Please refresh the quote."){super(n),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},bn={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]},Sn=[1,10,25,50];function yt(e){return bn[e]??Sn}var bt=[10,25,50,100];function le(e){let n=utils$1.getNativeToken(e);if(!n)throw new Error(`No native token defined for chain "${e}"`);let s=n.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 _(e){return utils$1.isSolanaChain(e)?gt:utils$1.isBinanceChain(e)?ht:xt}var Tn="liberfi.";function Cn(e,n,s,r){return `${e}preset.${n}.${s}.${r}`}function Nn(e){let n=e.lastIndexOf(":"),s=e.slice(0,n+1),r=e.slice(n+1),[o,a,t]=r.split(".");return {prefix:s,chain:o,direction:a,index:Number(t)}}function D(e,n,s,r=Tn){return `${r}:${e}.${n}.${s}`}var L=jotaiFamily.atomFamily(e=>{let{prefix:n,chain:s,direction:r,index:o}=Nn(e);return utils.atomWithStorage(Cn(n,String(s),r,o),_(s),void 0,{getOnInit:true})});function lo({chain:e,direction:n,presetIndex:s=0,storageKeyPrefix:r}){return jotai.useAtomValue(L(D(e,n,s,r)))}function wt(e){return e instanceof Error?e:new Error(String(e))}function Ln(e){return {chain:e.chain,userAddress:e.wallet?.address??"",input:e.input,output:e.output,amount:e.amount,mode:e.mode??types.SwapMode.EXACT_IN,slippage:e.slippage,priorityFee:e.priorityFee,tipFee:e.tipFee,isAntiMev:e.isAntiMev,permit:e.permit,deadline:e.deadline}}function Wn(e){if(e==="route"||e==="sign"||e==="expired"||e==="send")return e;if(e==="confirm")return "send"}function On(e,n,s){let r=Wn(n);if(s==="stale"||r==="expired"||e instanceof react$1.TradeRouteExpiredError||e instanceof de){let a=wt(e).message;return {error:e instanceof de?e:new de(a),phase:"expired"}}let o=r==="sign"||r==="send"||r==="route"?r:"route";return {error:wt(e),phase:o}}function ne(e){let{client:n}=react$1.useDexClient(),[s,r]=react.useState(false),o=react.useRef(e);o.current=e;let a=react.useMemo(()=>({chain:types.Chain.SOLANA}),[]),t=react$1.useLatestBlockFetcher(a),l=react.useRef(n);l.current=n;let i=react.useRef(t);i.current=t;let u=react.useRef(null);u.current===null&&(u.current=new react$1.TradeExecutionRuntime({adapter:react$1.createClientTradeExecutionAdapter({swapRoute:m=>l.current.swapRoute(m),sendTx:m=>l.current.sendTx(m),getLatestBlock:async()=>{let m=await i.current({staleTime:react$1.PRE_SIGN_STALE_MS});if(!m.data)throw new react$1.TradeRouteExpiredError("Latest Solana block data is stale. Please refresh the quote.");return {blockhash:m.data.blockhash,lastValidBlockHeight:m.data.lastValidBlockHeight,dataUpdatedAt:m.dataUpdatedAt}},checkTxSuccess:(m,c,g)=>l.current.checkTxSuccess(m,c,g)})}));let d=react.useCallback(async m=>{let c=u.current;r(true);try{let g=await c.execute(Ln(m),{sign:typeof m.wallet?.signTransaction=="function"?x=>m.wallet.signTransaction(x):void 0}),p={txHash:g.txHash,extra:g.extra};return o.current?.onSubmitted?.(p),p}catch(g){let p=c.getSnapshot(),x=On(g,p.phase,p.state);throw o.current?.onError?.(x.error,x.phase),x.error}finally{r(false);}},[]);return react.useMemo(()=>({swap:d,isSwapping:s}),[d,s])}var Qn=12e3;function Ct(e,n){let s=n?.interval??Qn,r=n?.paused??false,o=react.useRef(n);o.current=n;let t=!!e.chain&&!!e.userAddress&&!!e.input&&!!e.output&&!!e.amount&&!r,l=react$1.useSwapRouteQuery(e,{enabled:t,refetchInterval:t?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 qn=6e4;function Nt(e){let{client:n}=react$1.useDexClient(),[s,r]=react.useState(()=>new Map),o=react.useRef(e);o.current=e;let a=react.useCallback((u,d)=>{r(m=>{let c=m.get(u);if(!c||c.status===d)return m;let g=new Map(m);return g.set(u,{...c,status:d}),g});},[]),t=react.useCallback((u,d)=>{r(c=>{if(c.has(d))return c;let g=new Map(c);return g.set(d,{chain:u,txHash:d,status:"pending"}),g});let m=o.current?.timeout??qn;n.checkTxSuccess(u,d,m).then(c=>{if(c)a(d,"confirmed"),o.current?.onConfirmed?.(d);else {let g=new Error("Transaction failed on-chain");a(d,"failed"),o.current?.onFailed?.(d,g);}}).catch(c=>{let g=c instanceof Error?c:new Error(String(c));a(d,"failed"),o.current?.onFailed?.(d,g);});},[n,a]),l=react.useCallback(u=>{r(d=>{if(!d.has(u))return d;let m=new Map(d);return m.delete(u),m});},[]),i=react.useCallback(()=>{r(u=>u.size===0?u:new Map);},[]);return react.useMemo(()=>({track:t,clear:l,clearAll:i,transactions:s}),[t,l,i,s])}var Yn=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]);function es(e){return Yn.has(e)?types.ChainNamespace.SOLANA:types.ChainNamespace.EVM}var ts=1e4,ns=15e3;function ss(e,n){if(e.length===0)return;let r=e[e.length-1].outputAmount;if(!r||r==="0")return "0";let o=r.padStart(n+1,"0"),a=o.slice(0,o.length-n)||"0",l=o.slice(o.length-n).replace(/0+$/,"");return l?`${a}.${l}`:a}function De(e){let{chain:n}=e,s=walletConnector.useWallets(),r=es(n),o=react.useMemo(()=>s.find(S=>S.chainNamespace===r&&S.isConnected),[s,r]),a=o?.address??"",[t,l]=react.useState(e.from??""),[i,u]=react.useState(e.to??""),d=react.useRef(e.from),m=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!==m.current&&(m.current=e.to,e.to&&u(e.to));},[e.to]);let c=react.useMemo(()=>[t,i].filter(Boolean),[t,i]),g=react$1.useTokensQuery({chain:n,addresses:c},{enabled:c.length>0,refetchInterval:ts}),p=react.useMemo(()=>g.data?.find(S=>S.address===t)??null,[g.data,t]),x=react.useMemo(()=>g.data?.find(S=>S.address===i)??null,[g.data,i]),b=react$1.useWalletPortfoliosByTokensQuery({chain:n,address:a,tokenAddresses:c},{enabled:!!a&&c.length>0,refetchInterval:ns}),v=react.useMemo(()=>b.data?.find(S=>S.address===t)??null,[b.data,t]),P=react.useMemo(()=>b.data?.find(S=>S.address===i)??null,[b.data,i]),[f,I]=react.useState(void 0),U=react.useMemo(()=>{if(!f||p?.decimals==null)return;let S=f.split("."),B=S[0]??"0",Me=(S[1]??"").slice(0,p.decimals).padEnd(p.decimals,"0");return (B+Me).replace(/^0+/,"")||"0"},[f,p?.decimals]),K=react.useMemo(()=>{if(!f||!p?.marketData?.priceInUsd)return;let S=Number(p.marketData.priceInUsd),B=Number(f)*S;return Number.isFinite(B)?B.toString():void 0},[f,p?.marketData?.priceInUsd]),$=react.useCallback(()=>{if(!v)return;let S=Number(v.amount);if(!Number.isFinite(S)||S<=0)return;let B=S/2,ve=p?.decimals??9;I(B.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:ve}));},[v,p?.decimals]),j=react.useCallback(()=>{if(!v)return;let S=Number(v.amount);if(!Number.isFinite(S)||S<=0)return;let B=p?.decimals??9;I(S.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:B}));},[v,p?.decimals]),E=react.useMemo(()=>({chain:n,userAddress:a||void 0,input:t||void 0,output:i||void 0,mode:types.SwapMode.EXACT_IN,amount:U}),[n,a,t,i,U]),Z=react.useRef(false),{route:F,isRouting:J,error:Y}=Ct(E,{paused:Z.current}),Q=react.useMemo(()=>F&&x?ss(F.plans,x.decimals):void 0,[F,x]),re=react.useMemo(()=>{if(!Q||!x?.marketData?.priceInUsd)return;let S=Number(x.marketData.priceInUsd),B=Number(Q)*S;return Number.isFinite(B)?B.toString():void 0},[Q,x?.marketData?.priceInUsd]),{swap:w,isSwapping:M}=ne();Z.current=M;let V=react.useRef(e.onComplete);V.current=e.onComplete;let{track:ae,transactions:ee}=Nt({onConfirmed:S=>{V.current?.({success:true,txHash:S});},onFailed:S=>{V.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||!t||!i||!U))try{let S=await w({chain:n,wallet:o,input:t,output:i,amount:U,mode:types.SwapMode.EXACT_IN});ae(n,S.txHash);}catch{}},[o,F,n,t,i,U,w,ae]),ie=g.isPending||b.isPending;return react.useMemo(()=>({fromTokenAddress:t,toTokenAddress:i,setFromTokenAddress:l,setToTokenAddress:u,fromToken:p,toToken:x,fromBalance:v,toBalance:P,amount:f,setAmount:I,setHalfAmount:$,setMaxAmount:j,amountInDecimals:U,amountInUsd:K,outputAmount:Q,outputAmountInUsd:re,route:F,isRouting:J,routeError:Y,swap:te,isSwapping:M,txStatus:oe,isLoading:ie}),[t,i,p,x,v,P,f,$,j,U,K,Q,re,F,J,Y,te,M,oe,ie])}function Oe({isOpen:e,onOpenChange:n,fromToken:s,toToken:r,fromBalance:o,inputAmount:a,inputAmountInUsd:t,outputAmount:l,outputAmountInUsd:i,route:u,isRouting:d,routeError:m,onConfirm:c,isSwapping:g}){let{t:p}=i18n.useTranslation(),[x,b]=react.useState(false),v=react.useCallback(()=>b(f=>!f),[]),P=react.useMemo(()=>u?u.plans.map((f,I)=>({key:`plan-${I}`,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:n,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-text-muted 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:[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-text-muted flex items-center gap-1 text-[10px]",children:[jsxRuntime.jsx(hs,{}),jsxRuntime.jsxs("span",{children:[Le(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:Le(a)}),jsxRuntime.jsxs("div",{className:"text-text-muted text-[10px]",children:["$",Mt(t)]})]})]})]}),jsxRuntime.jsxs("div",{className:"mb-5",children:[jsxRuntime.jsx("div",{className:"text-text-muted 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:[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-text-muted text-[10px]",children:Ce(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:Le(l)}),jsxRuntime.jsxs("div",{className:"text-text-muted text-[10px]",children:["$",Mt(i)]})]})]})]}),x&&P.length>0&&jsxRuntime.jsxs("div",{className:"my-3",children:[jsxRuntime.jsx("div",{className:"text-text-muted 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:P.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-text-muted 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-text-muted 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:[We(f.inputAmount)," ",Ce(f.input)]}),jsxRuntime.jsx(ui.TradeIcon,{width:12,height:12,className:"text-foreground"}),jsxRuntime.jsxs("span",{children:[We(f.outputAmount)," ",Ce(f.output)]})]})]}),f.feeAmount&&jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-text-muted text-xs",children:p("trade.swap.fee")}),jsxRuntime.jsxs("div",{className:"text-foreground text-xs",children:[We(f.feeAmount)," ",Ce(f.feeQuote)]})]})]},f.key))})]}),P.length>0&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"text-text-muted flex bg-transparent text-xs",endContent:x?jsxRuntime.jsx(ui.ChevronUpIcon,{width:12,height:12}):jsxRuntime.jsx(ui.ChevronDownIcon,{width:12,height:12}),disableRipple:true,onPress:v,children:p(x?"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||!!m,isLoading:!u&&d||g,onPress:c,children:p("common.confirm")})})]})})}function hs(){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-text-muted",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){let n=utils$1.formatAmountInUsd(e??0);return n.startsWith("$")?n.slice(1):n}function Le(e){return utils$1.formatAmount(e??0)}function We(e){return utils$1.formatAmount(e??0)}function Ce(e){return e?e.length<=10?e:`${e.slice(0,4)}...${e.slice(-4)}`:"\u2014"}function _e({fromToken:e,toToken:n,fromBalance:s,toBalance:r,amount:o,amountInUsd:a,onAmountChange:t,onHalfAmount:l,onMaxAmount:i,outputAmount:u,outputAmountInUsd:d,onFromTokenSelect:m,onToTokenSelect:c,route:g,isRouting:p,routeError:x,onPreview:b,isSwapping:v,className:P}){let{t:f}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:ui.cn("px-4 pb-4 lg:pb-8",P),children:[jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsx("p",{className:"text-text-muted 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:I=>t(I.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-text-muted"),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-text-muted"}),onPress:()=>m(""),children:e?e.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsx("div",{className:"text-text-muted flex-1 text-xs",children:Wt(a)}),s&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(Lt,{}),jsxRuntime.jsxs("span",{className:"text-text-muted",children:[Ot(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")})]})]}),x&&jsxRuntime.jsx("p",{className:"mt-1 break-words text-xs text-danger-500",children:x.message})]})]}),jsxRuntime.jsxs("div",{className:"mt-4 space-y-3",children:[jsxRuntime.jsx("p",{className:"text-text-muted 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",n?"text-foreground":"text-text-muted"),disableRipple:true,startContent:n?.image?jsxRuntime.jsx(ui.Avatar,{size:"sm",src:n.image,name:n.symbol,className:"h-6 w-6"}):null,endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"text-text-muted"}),onPress:()=>c(""),children:n?n.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsx("div",{className:"text-text-muted flex-1 text-xs",children:Wt(d)}),r&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(Lt,{}),jsxRuntime.jsxs("span",{className:"text-text-muted",children:[Ot(r.amount)," ",r.symbol]})]})]})]})]}),jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"primary",className:"mt-8 flex rounded-lg",disableRipple:true,isDisabled:!g,isLoading:!g&&p,onPress:b,children:f(v?"trade.swap.swapping":p?"trade.swap.findingRoute":"trade.swap.swap")})]})}function Lt(){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-text-muted",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 vs(e){let n=utils$1.formatAmountInUsd(e??0);return n.startsWith("$")?n.slice(1):n}function Wt(e){return `\u2248 $${vs(e)}`}function Ot(e){return utils$1.formatAmount(e??0)}function Ts({chain:e,from:n,to:s,onComplete:r,className:o}){let a=De({chain:e,from:n,to:s,onComplete:r}),{isOpen:t,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(_e,{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:t,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 Kt(e){let n=_(e),s=utils$1.getNativeToken(e)?.symbol??"ETH";return {buy:{customAmounts:yt(s),presets:[{...n},{...n},{...n}]},sell:{customPercentages:[...bt],presets:[{...n},{...n},{...n}]}}}var Fs=Kt("900900900");function $t(e){return `liberfi.instant-trade.settings.${e}`}function Es(e,n){try{let s=localStorage.getItem($t(String(e)));if(s)return JSON.parse(s)}catch{}return n}function Us(e,n){try{localStorage.setItem($t(e),JSON.stringify(n));}catch{}}var Qt=react.createContext(null);function $e(){let e=react.useContext(Qt);if(!e)throw new Error("useInstantTrade must be used within an InstantTradeProvider");return e}function Qe({chain:e,tokenAddress:n,settings:s,onSettingsChange:r,children:o}){let a=react.useMemo(()=>utils$1.getNativeToken(e),[e]),t=s!==void 0,l=react.useMemo(()=>Kt(e),[e]),[i,u]=react.useState(()=>t?l:Es(e,l)),d=t?s:i,m=react.useCallback(E=>{t?r?.(E):(u(E),Us(String(e),E));},[t,r,e]),c=react.useCallback(E=>m({...d,buy:E}),[d,m]),g=react.useCallback(E=>m({...d,sell:E}),[d,m]),[p,x]=react.useState("buy"),[b,v]=react.useState(),[P,f]=react.useState(0),[I,U]=react.useState(0),K=react.useMemo(()=>_(e),[e]),$=react.useMemo(()=>{let E=p==="buy"?P:I;return (p==="buy"?d.buy.presets:d.sell.presets)[E]??K},[p,P,I,d,K]),j=react.useMemo(()=>({chain:e,tokenAddress:n,nativeToken:a,direction:p,setDirection:x,amount:b,setAmount:v,buyPreset:P,setBuyPreset:f,sellPreset:I,setSellPreset:U,settings:d,updateBuySettings:c,updateSellSettings:g,currentPresetValues:$}),[e,n,a,p,b,P,I,d,c,g,$]);return jsxRuntime.jsx(Qt.Provider,{value:j,children:o})}var $s=15e3,Qs=1e4;function je(e){let{chain:n,tokenAddress:s,onSwapSubmitted:r,onSwapError:o}=e,{t:a}=i18n.useTranslation(),t=$e(),l=react.useMemo(()=>utils$1.getNativeToken(n),[n]),i=react.useMemo(()=>utils$1.getWrappedToken(n),[n]),u=walletConnector.useWallets(),d=utils$1.chainToNamespace(n),m=react.useMemo(()=>u.find(w=>w.chainNamespace===d&&w.isConnected),[u,d]),c=m?.address??"",g=react.useMemo(()=>{let w=[s];return l&&w.push(l.address),i&&w.push(i.address),w.filter(Boolean)},[s,l,i]),p=react$1.useTokensQuery({chain:n,addresses:g},{enabled:g.length>0,refetchInterval:Qs}),x=react.useMemo(()=>p.data?.find(w=>w.address===s)??null,[p.data,s]),b=react$1.useWalletPortfoliosByTokensQuery({chain:n,address:c,tokenAddresses:g},{enabled:!!c&&g.length>0,refetchInterval:$s}),v=l?.address??i?.address??"",P=react.useMemo(()=>b.data?.find(w=>w.address===v)??null,[b.data,v]),f=react.useMemo(()=>b.data?.find(w=>w.address===s)??null,[b.data,s]),[I,U]=react.useState(false),K=react.useRef(null),$=react.useCallback(w=>{let M=K.current;K.current=w,U(V=>M===null||M!==w?true:!V);},[]),j=react.useRef(r);j.current=r;let E=react.useRef(o);E.current=o;let{swap:Z,isSwapping:F}=ne({onSubmitted:w=>j.current?.(w),onError:(w,M)=>E.current?.(w,M)}),J=react.useCallback(async()=>{if(!t.amount||!m||!s)return;let w=l?.decimals??9,M=i?.address??l?.address??"",V=t.direction==="buy",ae=V?M:s,ee=V?s:M,oe=V?w:x?.decimals??9,te=new pe__default.default(t.amount).shiftedBy(oe).decimalPlaces(0).toString(),ie=t.currentPresetValues,S=_(n),B=ie.slippage??S.slippage??1,ve=ie.antiMev!=="off",Me=utils$1.isSolanaChain(n)?{priorityFee:new pe__default.default(ie.priorityFee??S.priorityFee??0).shiftedBy(w).decimalPlaces(0).toString(),tipFee:new pe__default.default(ie.tipFee??S.tipFee??0).shiftedBy(w).decimalPlaces(0).toString(),isAntiMev:ve}:{};try{await Z({chain:n,wallet:m,input:ae,output:ee,amount:te,slippage:B,...Me}),t.setAmount(void 0);}catch{}},[t,m,s,l,i,x,n,Z]),Y=react.useMemo(()=>{let w=a(t.direction==="buy"?"common.buy":"common.sell");if(!t.amount)return w;let M=` (${a("trade.insufficientBalance")})`;if(t.direction==="buy"){let ae=P?.amount;if(ae&&new pe__default.default(ae).lt(t.amount))return `${w}${M}`;let ee=l?.symbol??"",oe=p.data?.find(te=>te.address===v)?.marketData?.priceInUsd;if(oe){let te=utils$1.formatAmountInUsd(new pe__default.default(t.amount).times(Number(oe)));return a("trade.submitBuyAmount",{amount:t.amount,symbol:ee,usd:te})}return a("trade.submitBuyAmountNoUsd",{amount:t.amount,symbol:ee})}let V=f?.amount;return V&&new pe__default.default(V).lt(t.amount)?`${w}${M}`:w},[a,t.direction,t.amount,P,f,l,p.data,v]),Q=!t.amount||!m||!s,re=p.isPending||b.isPending;return react.useMemo(()=>({chain:n,tokenAddress:s,nativeToken:l,tokenInfo:x,nativeBalance:P,tokenBalance:f,direction:t.direction,setDirection:t.setDirection,amount:t.amount,setAmount:t.setAmount,buyPreset:t.buyPreset,setBuyPreset:t.setBuyPreset,sellPreset:t.sellPreset,setSellPreset:t.setSellPreset,currentPresetValues:t.currentPresetValues,settings:t.settings,updateBuySettings:t.updateBuySettings,updateSellSettings:t.updateSellSettings,showSettings:I,handlePresetClick:$,swap:J,isSwapping:F,submitText:Y,isDisabled:Q,isLoading:re}),[n,s,l,x,P,f,t,I,$,J,F,Y,Q,re])}function be({value:e,onChange:n,chain:s,disableAnimation:r,className:o}){let a=react.useCallback(i=>n({...e,...i}),[e,n]),t=react.useMemo(()=>le(s),[s]),l=t.feeType==="gasFee"?"gasFee":"priorityFee";return jsxRuntime.jsxs("div",{className:ui.cn("space-y-4",o),children:[jsxRuntime.jsx(er,{value:e.slippage,onChange:i=>a({slippage:i})}),jsxRuntime.jsx(tr,{value:e[l],onChange:i=>a({[l]:i}),feeType:t.feeType,symbol:t.feeUnit,decimals:t.feeDecimals}),t.showTipFee&&jsxRuntime.jsx(nr,{value:e.tipFee,onChange:i=>a({tipFee:i}),symbol:t.tipFeeUnit,decimals:t.tipFeeDecimals}),t.showAutoFee&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(sr,{value:e.autoFee,onChange:i=>a({autoFee:i}),disableAnimation:r}),e.autoFee&&jsxRuntime.jsx(rr,{value:e.maxAutoFee,onChange:i=>a({maxAutoFee:i}),symbol:t.nativeSymbol})]}),jsxRuntime.jsx(ar,{value:e.antiMev,onChange:i=>a({antiMev:i}),options:t.antiMevOptions,disableAnimation:r}),t.showCustomRPC&&jsxRuntime.jsx(or,{value:e.customRPC,onChange:i=>a({customRPC:i})})]})}function er({value:e,onChange:n}){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-text-muted",children:r}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:o=>n(isNaN(o)?null:o),hideStepper:true,minValue:0,maxValue:100,step:1,endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:"%"}),"aria-label":r})]})}function tr({value:e,onChange:n,feeType:s,symbol:r,decimals:o}){let{t:a}=i18n.useTranslation(),t=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-text-muted flex items-center gap-1",children:[t,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-text-muted"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:i=>n(isNaN(i)?null:i),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:o},endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:r}),"aria-label":t})]})}function nr({value:e,onChange:n,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-text-muted 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-text-muted"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:t=>n(isNaN(t)?null:t),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:r},endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:s}),"aria-label":a})]})}function sr({value:e,onChange:n,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-text-muted 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-text-muted"})})})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(ui.StyledSwitch,{isSelected:e,onValueChange:n,color:"primary","aria-label":o,disableAnimation:s})})]})}function rr({value:e,onChange:n,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-text-muted",children:o}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:a=>n(isNaN(a)?null:a),hideStepper:true,minValue:0,endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:s}),"aria-label":o})]})}function ar({value:e,onChange:n,options:s,disableAnimation:r}){let{t:o}=i18n.useTranslation(),a=o("trade.preset.antiMev"),t=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-text-muted 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-text-muted"})})})]}),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:n,disableAnimation:r,"aria-label":a,children:s.map(i=>{let u=t[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 or({value:e,onChange:n}){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-text-muted",children:r}),jsxRuntime.jsx("div",{className:"flex-auto",children:jsxRuntime.jsx(ui.StyledInput,{fullWidth:true,variant:"flat",value:e??"",onValueChange:o=>n(o||null),placeholder:"https://...","aria-label":r})})]})}function Xe({chain:e,direction:n,onDirectionChange:s,amount:r,onAmountChange:o,customAmounts:a,customPercentages:t,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:d,tokenSymbol:m,nativeBalance:c,tokenBalance:g,amountConversion:p,preset:x,onPresetChange:b,presetValues:v,onPresetSettingsChange:P,showSettings:f,onPresetClick:I,submitText:U,isDisabled:K,isLoading:$,onSubmit:j,className:E,headerExtra:Z}){let{t:F}=i18n.useTranslation(),J=react.useMemo(()=>utils$1.getNativeToken(e),[e]),Y=J?.symbol,Q=J?.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:n==="buy"?"primary":"secondary",selectedKey:n,onSelectionChange:s,classNames:{tabList:"bg-content2",tab:ui.cn("h-6",n==="buy"?"data-[selected=true]:bg-primary":"data-[selected=true]:bg-secondary"),cursor:n==="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:n==="buy"?jsxRuntime.jsx(yr,{amount:r,onAmountChange:o,customAmounts:a,onQuickAmountClick:l,onCustomAmountsEdit:u,nativeSymbol:Y,nativeDecimals:Q,amountLabel:F("trade.amount")}):jsxRuntime.jsx(br,{amount:r,onAmountChange:o,customPercentages:t,onQuickPercentageClick:i,onCustomPercentagesEdit:d,tokenSymbol:m,amountLabel:F("trade.amount")})}),jsxRuntime.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[jsxRuntime.jsxs("div",{className:"text-xs text-text-muted space-x-1",children:[jsxRuntime.jsx("span",{children:F("trade.balance")}),jsxRuntime.jsx("span",{children:n==="buy"?c?`${c} ${Y??""}`:"--":g?`${g} ${m??""}`:"--"})]}),p&&jsxRuntime.jsx("div",{className:"text-xs text-text-muted",children:p})]}),jsxRuntime.jsx("div",{className:"mt-4",children:jsxRuntime.jsx(Sr,{values:v,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-text-muted"},selectedKey:`${x}`,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:()=>I(0)},0),jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:2}),onClick:()=>I(1)},1),jsxRuntime.jsx(ui.Tab,{title:F("trade.preset.label",{n:3}),onClick:()=>I(2)},2)]})}),f&&jsxRuntime.jsx("div",{className:"mt-2.5",children:jsxRuntime.jsx(be,{value:v,onChange:P,chain:e})}),jsxRuntime.jsx(ui.Button,{fullWidth:true,size:"sm",color:n==="buy"?"primary":"secondary",className:"mt-2 rounded-lg",disableRipple:true,isDisabled:K,isLoading:$,onPress:j,children:U})]})}function yr({amount:e,onAmountChange:n,customAmounts:s,onQuickAmountClick:r,onCustomAmountsEdit:o,nativeSymbol:a,nativeDecimals:t,amountLabel:l}){let i=react.useCallback(u=>{typeof u=="number"&&n(isNaN(u)?void 0:u);},[n]);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-text-muted",children:l}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-text-muted",children:a??""}),formatOptions:{maximumFractionDigits:t},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(Xt,{values:s,onSelect:r,onEdit:o})]})}function br({amount:e,onAmountChange:n,customPercentages:s,onQuickPercentageClick:r,onCustomPercentagesEdit:o,tokenSymbol:a,amountLabel:t}){let l=react.useCallback(i=>{typeof i=="number"&&n(isNaN(i)?void 0:i);},[n]);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-text-muted",children:t}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-text-muted",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(Xt,{values:s,onSelect:r,onEdit:o,suffix:"%"})]})}function Xt({values:e,onSelect:n,onEdit:s,suffix:r}){let[o,a]=react.useState(false),[t,l]=react.useState([]),i=react.useCallback(()=>{l([...e]),a(true);},[e]),u=react.useCallback(()=>{a(false),s(t);},[s,t]);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,m)=>jsxRuntime.jsx("div",{className:ui.cn("h-6 bg-content2 flex items-center justify-center",m===0&&"rounded-bl-lg"),children:o?jsxRuntime.jsx(ui.NumberInput,{fullWidth:true,value:t[m]===null||t[m]===void 0?void 0:t[m],onChange:c=>{if(typeof c=="number"){let g=isNaN(c)?null:c;l(p=>{let x=[...p];return x[m]=g,x});}},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",m===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[m]!=null&&n(e[m]),endContent:r?jsxRuntime.jsx("span",{className:"text-xs text-text-muted",children:r}):null,children:e[m]??""})},m))}),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 Sr({values:e,chain:n}){let{t:s}=i18n.useTranslation(),r=react.useMemo(()=>le(n),[n]),o=e.antiMev&&e.antiMev!=="off"?e.antiMev:"off",a=o==="reduced"?ui.ShieldIcon:o==="secure"?ui.ShieldPlusIcon:ui.ShieldOffIcon;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-text-muted 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-text-muted",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-text-muted 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-text-muted",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-text-muted 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-text-muted",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-text-muted 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-text-muted",disableRipple:true,startContent:jsxRuntime.jsx(a,{width:14,height:14,className:"text-text-muted"}),children:s(`trade.preset.antiMev.${o}`)})})]})}function Pr({chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:r,settings:o,onSettingsChange:a,headerExtra:t,className:l}){return jsxRuntime.jsx(Qe,{chain:e,tokenAddress:n,settings:o,onSettingsChange:a,children:jsxRuntime.jsx(wr,{chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:r,headerExtra:t,className:l})})}function wr({chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:r,headerExtra:o,className:a}){let t=je({chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:r}),l=react.useCallback(p=>t.setAmount(p),[t]),i=react.useCallback(p=>{let x=t.tokenBalance?.amount;if(!x)return;let b=new pe__default.default(x).times(p).div(100).toNumber();t.setAmount(b);},[t]),u=react.useCallback(p=>{t.updateBuySettings({...t.settings.buy,customAmounts:p});},[t]),d=react.useCallback(p=>{t.updateSellSettings({...t.settings.sell,customPercentages:p});},[t]),m=react.useCallback(p=>{let x=t.direction==="buy",b=x?t.buyPreset:t.sellPreset;if(x){let v=t.settings.buy,P=[...v.presets];P[b]=p,t.updateBuySettings({...v,presets:P});}else {let v=t.settings.sell,P=[...v.presets];P[b]=p,t.updateSellSettings({...v,presets:P});}},[t]),c=react.useCallback(p=>{t.direction==="buy"?t.setBuyPreset(p):t.setSellPreset(p);},[t]),g=t.direction==="buy"?t.buyPreset:t.sellPreset;return jsxRuntime.jsx(Xe,{chain:e,direction:t.direction,onDirectionChange:t.setDirection,amount:t.amount,onAmountChange:t.setAmount,customAmounts:t.settings.buy.customAmounts,customPercentages:t.settings.sell.customPercentages,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:d,tokenSymbol:t.tokenInfo?.symbol,nativeBalance:t.nativeBalance?.amount,tokenBalance:t.tokenBalance?.amount,amountConversion:void 0,preset:g,onPresetChange:c,presetValues:t.currentPresetValues,onPresetSettingsChange:m,showSettings:t.showSettings,onPresetClick:t.handlePresetClick,submitText:t.submitText,isDisabled:t.isDisabled,isLoading:t.isSwapping,onSubmit:t.swap,className:a,headerExtra:o})}function Ye(e){let{id:n,chain:s,token:r,storageKeyPrefix:o,onAmountChange:a,onPresetChange:t,onPresetClick:l}=e,[i,u]=jotai.useAtom(G(z(n,s,r.address,o))),d=jotai.useAtomValue(L(D(s,"buy",0,o))),m=jotai.useAtomValue(L(D(s,"buy",1,o))),c=jotai.useAtomValue(L(D(s,"buy",2,o))),g=react.useMemo(()=>[d,m,c],[d,m,c]),p=react.useCallback(b=>{u(v=>({...v,amount:b})),a?.(b);},[u,a]),x=react.useCallback(b=>{u(v=>({...v,preset:b})),t?.(b);},[u,t]);return {token:r,chain:s,amount:i.amount,handleAmountChange:p,preset:i.preset,handlePresetChange:x,onPresetClick:l,presetValues:g}}function et({token:e,chain:n,amount:s,onAmountChange:r,preset:o=0,onPresetChange:a,onPresetClick:t,presetValues:l,radius:i="full",size:u="md",className:d}){let{t:m}=i18n.useTranslation(),{isMobile:c}=ui.useScreen(),g=react.useRef(null),p=react.useMemo(()=>_(n),[n]),[x,b]=react.useState(null),v=react.useCallback(P=>{a?.(Number(P));},[a]);return jsxRuntime.jsxs("div",{ref:g,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:"hsl(var(--heroui-content3) / 0.6)"},children:[jsxRuntime.jsx(ui.StyledNumberInput,{className:"flex-auto min-w-0 h-full",fullWidth:true,variant:"flat",value:s,onValueChange:P=>r(isNaN(P)?void 0:P),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":m("trade.instantTradeAmount"),classNames:{base:"h-full",mainWrapper:"h-full",inputWrapper:"!bg-transparent !shadow-none !border-0 !rounded-none h-full !min-h-0"}},`${n}-${e.address}`),jsxRuntime.jsx("div",{className:"w-px self-stretch my-1.5 mx-1.5 flex-none",style:{background:"hsl(var(--heroui-content4) / 0.5)"}}),jsxRuntime.jsx(ui.StyledLightTabs,{color:"primary",size:u,selectedKey:String(o),onSelectionChange:v,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((P,f)=>jsxRuntime.jsx(ui.Tab,{title:c?jsxRuntime.jsx("span",{onClick:I=>{o===f&&(I.stopPropagation(),b(U=>U===f?null:f));},children:m("trade.preset.short",{n:f+1})}):jsxRuntime.jsx(ui.StyledTooltip,{content:jsxRuntime.jsx(sn,{label:m("trade.preset.short",{n:f+1}),values:l?.[f]??p,chain:n}),classNames:{content:"!p-0 !rounded-[14px] !border !border-border-subtle !bg-surface-interactive !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]"},offset:12,children:jsxRuntime.jsx("span",{onClick:()=>o===f&&t?.(f),children:m("trade.preset.short",{n:f+1})})})},String(f)))}),c&&x!==null&&jsxRuntime.jsx(Kr,{label:m("trade.preset.short",{n:x+1}),values:l?.[x]??p,chain:n,onClose:()=>b(null),containerRef:g})]})}function Kr({label:e,values:n,chain:s,onClose:r,containerRef:o}){let a=react.useRef(null);return react.useEffect(()=>{let t=l=>{let i=l.target;a.current&&!a.current.contains(i)&&o.current&&!o.current.contains(i)&&r();};return document.addEventListener("mousedown",t),document.addEventListener("touchstart",t),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t);}},[r,o]),jsxRuntime.jsx("div",{ref:a,style:{position:"absolute",top:"100%",right:0,zIndex:50,marginTop:8,borderRadius:14,border:"1px solid var(--color-border-control)",background:"var(--color-surface-interactive)",boxShadow:"0 25px 50px -12px rgba(0,0,0,0.5)",minWidth:200},children:jsxRuntime.jsx(sn,{label:e,values:n,chain:s})})}function sn({label:e,values:n,chain:s}){let{t:r}=i18n.useTranslation(),o=react.useMemo(()=>le(s),[s]),a=n.antiMev&&n.antiMev!=="off"?n.antiMev:"off",t=(n.slippage??0)/100,l=t>=.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 var(--color-border-control)"},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-text-muted 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(t)})]}),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-text-muted 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(n.priorityFee??0)," ",jsxRuntime.jsx("span",{className:"text-text-muted",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-text-muted 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(n.tipFee??0)," ",jsxRuntime.jsx("span",{className:"text-text-muted",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-text-muted 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-text-muted",a==="reduced"&&"text-amber-400",a==="secure"&&"text-success"),children:r(`trade.preset.antiMev.${a}`)})]})]})}function $r({size:e,radius:n,className:s,...r}){let{token:o,chain:a,amount:t,handleAmountChange:l,preset:i,handlePresetChange:u,onPresetClick:d,presetValues:m}=Ye(r);return jsxRuntime.jsx(et,{token:o,chain:a,amount:t,onAmountChange:l,preset:i,onPresetChange:u,onPresetClick:d,presetValues:m,size:e,radius:n,className:s})}function tt(e){let{chain:n,presetIndex:s=0,defaultDirection:r="buy",storageKeyPrefix:o,onChange:a}=e,[t,l]=react.useState(r),[i,u]=jotai.useAtom(L(D(n,t,s,o))),d=react.useCallback(m=>{u(m),a?.(t,m);},[u,a,t]);return {direction:t,setDirection:l,value:i,handleChange:d}}function st({disableAnimation:e,className:n,...s}){let{t:r}=i18n.useTranslation(),{direction:o,setDirection:a,value:t,handleChange:l}=tt(s);return jsxRuntime.jsxs("div",{className:ui.cn("space-y-3",n),children:[jsxRuntime.jsxs(ui.StyledSolidTabs,{radius:"lg",color:"default",fullWidth:true,selectedKey:o,onSelectionChange:i=>a(i),"aria-label":r("common.buySell"),children:[jsxRuntime.jsx(ui.Tab,{title:r("common.buy")},"buy"),jsxRuntime.jsx(ui.Tab,{title:r("common.sell")},"sell")]}),jsxRuntime.jsx(be,{value:t,onChange:l,chain:s.chain,disableAnimation:e})]})}var Yr=3;function rt(e){let{defaultPresetIndex:n=0,onChange:s}=e,[r,o]=react.useState(n),a=react.useCallback((t,l)=>{s?.(r,t,l);},[s,r]);return {presetCount:Yr,presetIndex:r,setPresetIndex:o,handlePresetChange:a}}function ot({defaultDirection:e,disableAnimation:n,className:s,...r}){let{t:o}=i18n.useTranslation(),{presetCount:a,presetIndex:t,setPresetIndex:l,handlePresetChange:i}=rt(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(t),onSelectionChange:u=>l(Number(u)),disableAnimation:n,"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(st,{chain:r.chain,presetIndex:t,defaultDirection:e,storageKeyPrefix:r.storageKeyPrefix,onChange:i,disableAnimation:n})]})}var xa="preset";function ha({id:e=xa}){return jsxRuntime.jsx(uiScaffold.AsyncModal,{id:e,children:n=>jsxRuntime.jsx(ya,{...n})})}function ya({params:e={chains:[types.Chain.SOLANA,types.Chain.ETHEREUM,types.Chain.BINANCE]},isOpen:n,onOpenChange:s}){let{t:r}=i18n.useTranslation(),{chains:o,defaultChain:a,defaultDirection:t,defaultPresetIndex:l,storageKeyPrefix:i,onChange:u}=e,[d,m]=react.useState(a??o[0]);react.useEffect(()=>{m(a??o[0]);},[a,o]);let c=react.useCallback((g,p,x)=>{u?.(d,g,p,x);},[u,d]);return jsxRuntime.jsx(ui.StyledModal,{isOpen:n,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:m})]})}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsx(ui.ScrollShadow,{children:jsxRuntime.jsx(ot,{chain:d,defaultDirection:t,defaultPresetIndex:l,storageKeyPrefix:i,onChange:c})})})]})})}function Ue(e,n,s,r,o){let a=_(o),t=new pe__default.default(e).shiftedBy(n.decimals).decimalPlaces(0).toString(),l=new pe__default.default(r.priorityFee??a.priorityFee??0).shiftedBy(n.decimals).decimalPlaces(0).toString(),i=new pe__default.default(r.tipFee??a.tipFee??0).shiftedBy(n.decimals).decimalPlaces(0).toString();return {input:n.address,output:s,amount:t,slippage:r.slippage??a.slippage??1,priorityFee:l,tipFee:i,isAntiMev:r.antiMev!=="off"}}function ut(e){let{id:n,chain:s,token:r,output:o,storageKeyPrefix:a,onSwapSubmitted:t,onSwapError:l}=e,{amount:i,preset:u}=jotai.useAtomValue(G(z(n,s,r.address,a))),d=jotai.useAtomValue(L(D(s,"buy",u,a))),m=walletConnector.useConnectedWallet(s),{swap:c,isSwapping:g}=ne({onSubmitted:t,onError:l}),p=!i||!o,x=walletConnector.useAuthCallback(async()=>{if(!i||!m||!o)return;let b=Ue(i,r,o,d,s);try{await c({...b,chain:s,wallet:m});}catch{}},[m,i,o,s,r,d,c]);return react.useMemo(()=>({amount:i,token:r,isDisabled:p,isSwapping:g,handleSwap:x}),[i,r,p,g,x])}function Ta({size:e="sm",radius:n,color:s="primary",className:r,...o}){let{amount:a,token:t,isDisabled:l,isSwapping:i,handleSwap:u}=ut(o);return jsxRuntime.jsx(ui.Button,{fullWidth:true,size:e,radius:n,color:s,className:r,disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{}),isDisabled:l,isLoading:i,onPress:u,children:a!=null?`${a} ${t.symbol}`:t.symbol})}var mn=react.createContext(null);function Ea({chain:e,onSwapSubmitted:n,onSwapError:s,children:r}){let o=walletConnector.useConnectedWallet(e),{swap:a}=ne({onSubmitted:n,onError:s}),t=react.useRef(o);t.current=o;let l=react.useRef(a);l.current=a;let i=react.useRef(e);i.current=e;let u=react.useCallback(async m=>{let c=t.current;c&&await l.current({...m,wallet:c,chain:i.current});},[]),d=walletConnector.useAuthCallback(u,[]);return jsxRuntime.jsx(mn.Provider,{value:d,children:r})}function dt(){let e=react.useContext(mn);if(e===null)throw new Error("useInstantTradeSwap must be used within an InstantTradeSwapProvider");return e}function ct(e){let{id:n,chain:s,token:r,output:o,storageKeyPrefix:a}=e,{amount:t,preset:l}=jotai.useAtomValue(G(z(n,s,r.address,a))),i=jotai.useAtomValue(L(D(s,"buy",l,a))),u=dt(),{t:d}=i18n.useTranslation(),[m,c]=react.useState(false),g=!o,p=react.useRef(r);p.current=r;let x=react.useRef(i);x.current=i;let b=react.useRef(s);b.current=s;let v=react.useCallback(async()=>{if(!o)return;if(!t){ui.toast(d("trade.instantTradeAmountRequired"));return}let P=Ue(t,p.current,o,x.current,b.current);c(true);try{await u(P);}catch{}finally{c(false);}},[t,o,u,d]);return react.useMemo(()=>({amount:t,token:r,isDisabled:g,isSwapping:m,handleSwap:v}),[t,r,g,m,v])}var $a=react.memo(function({size:n="sm",radius:s,color:r="primary",className:o,...a}){let{amount:t,token:l,isDisabled:i,isSwapping:u,handleSwap:d}=ct(a),m=t!=null?`${utils$1.formatAmount(t)} ${l.symbol}`:void 0;return jsxRuntime.jsx(ui.Button,{variant:"solid",size:n,radius:s,color:r,className:ui.cn("min-w-0 w-auto flex-none",o),disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{className:"flex-none",style:{color:"var(--color-brand-primary)"}}),isDisabled:i,isLoading:u,spinner:jsxRuntime.jsx(ui.Spinner,{size:"sm",color:"current"}),onPress:d,style:{background:"linear-gradient(hsl(var(--heroui-primary) / 0.08), hsl(var(--heroui-primary) / 0.08)), var(--color-surface-base)",border:"1px solid hsl(var(--heroui-primary) / 0.2)",color:"var(--color-brand-primary)",fontWeight:600},children:m})});
|
|
2
|
-
exports.AmountPresetInputUI=et;exports.AmountPresetInputWidget
|
|
1
|
+
'use strict';var react=require('react'),jotai=require('jotai'),jotaiFamily=require('jotai-family'),utils=require('jotai/utils'),utils$1=require('@liberfi.io/utils'),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'),pe=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 pe__default=/*#__PURE__*/_interopDefault(pe);var xn="liberfi.",hn={amount:void 0,preset:0};function yn(e,n,s,a){return `${e}instant-trade.${n}.${s}.${a}`}function bn(e){let n=e.lastIndexOf(":"),s=e.slice(0,n+1),a=e.slice(n+1),[o,r,t]=a.split(".");return {prefix:s,id:o,chain:r,tokenAddress:t}}function z(e,n,s,a=xn){return `${a}:${e}.${n}.${s}`}var G=jotaiFamily.atomFamily(e=>{let{prefix:n,id:s,chain:a,tokenAddress:o}=bn(e);return utils.atomWithStorage(yn(n,s,String(a),o),hn,void 0,{getOnInit:false})});function Ya({id:e,chain:n,tokenAddress:s,storageKeyPrefix:a}){let[o,r]=jotai.useAtom(G(z(e,n,s,a))),t=react.useCallback(l=>{r(i=>({...i,preset:l}));},[r]);return {...o,setPreset:t}}var de=class extends Error{constructor(n="Swap route expired. Please refresh the quote."){super(n),this.name="SwapRouteExpiredError";}},xt={slippage:20,priorityFee:.001,autoFee:false,maxAutoFee:.1,gasFee:null,tipFee:.001,antiMev:"reduced",customRPC:null},ht={slippage:20,priorityFee:null,autoFee:false,maxAutoFee:null,gasFee:2,tipFee:null,antiMev:"off",customRPC:null},yt={slippage:30,priorityFee:null,autoFee:false,maxAutoFee:null,gasFee:2,tipFee:0,antiMev:"off",customRPC:null},Pn={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]},wn=[1,10,25,50];function bt(e){return Pn[e]??wn}var St=[10,25,50,100];function le(e){let n=utils$1.getNativeToken(e);if(!n)throw new Error(`No native token defined for chain "${e}"`);let s=n.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)?xt:utils$1.isBinanceChain(e)?yt:ht}var In="liberfi.";function An(e,n,s,a){return `${e}preset.${n}.${s}.${a}`}function Fn(e){let n=e.lastIndexOf(":"),s=e.slice(0,n+1),a=e.slice(n+1),[o,r,t]=a.split(".");return {prefix:s,chain:o,direction:r,index:Number(t)}}function D(e,n,s,a=In){return `${a}:${e}.${n}.${s}`}var L=jotaiFamily.atomFamily(e=>{let{prefix:n,chain:s,direction:a,index:o}=Fn(e);return utils.atomWithStorage(An(n,String(s),a,o),V(s),void 0,{getOnInit:true})});function po({chain:e,direction:n,presetIndex:s=0,storageKeyPrefix:a}){return jotai.useAtomValue(L(D(e,n,s,a)))}function Tt(e){return e instanceof Error?e:new Error(String(e))}function _n(e){return {chain:e.chain,userAddress:e.wallet?.address??"",input:e.input,output:e.output,amount:e.amount,mode:e.mode??types.SwapMode.EXACT_IN,slippage:e.slippage,priorityFee:e.priorityFee,tipFee:e.tipFee,isAntiMev:e.isAntiMev,permit:e.permit,deadline:e.deadline}}function Vn(e){if(e==="route"||e==="sign"||e==="expired"||e==="send")return e;if(e==="confirm")return "send"}function Kn(e,n,s){let a=Vn(n);if(s==="stale"||a==="expired"||e instanceof react$1.TradeRouteExpiredError||e instanceof de){let r=Tt(e).message;return {error:e instanceof de?e:new de(r),phase:"expired"}}let o=a==="sign"||a==="send"||a==="route"?a:"route";return {error:Tt(e),phase:o}}function ne(e){let{client:n}=react$1.useDexClient(),[s,a]=react.useState(false),o=react.useRef(e);o.current=e;let r=react.useMemo(()=>({chain:types.Chain.SOLANA}),[]),t=react$1.useLatestBlockFetcher(r),l=react.useRef(n);l.current=n;let i=react.useRef(t);i.current=t;let u=react.useRef(null);u.current===null&&(u.current=new react$1.TradeExecutionRuntime({adapter:react$1.createClientTradeExecutionAdapter({swapRoute:m=>l.current.swapRoute(m),sendTx:m=>l.current.sendTx(m),getLatestBlock:async()=>{let m=await i.current({staleTime:react$1.PRE_SIGN_STALE_MS});if(!m.data)throw new react$1.TradeRouteExpiredError("Latest Solana block data is stale. Please refresh the quote.");return {blockhash:m.data.blockhash,lastValidBlockHeight:m.data.lastValidBlockHeight,dataUpdatedAt:m.dataUpdatedAt}},checkTxSuccess:(m,c,g)=>l.current.checkTxSuccess(m,c,g)})}));let p=react.useCallback(async m=>{let c=u.current;a(true);try{let g=await c.execute(_n(m),{sign:typeof m.wallet?.signTransaction=="function"?x=>m.wallet.signTransaction(x):void 0}),d={txHash:g.txHash,extra:g.extra};return o.current?.onSubmitted?.(d),d}catch(g){let d=c.getSnapshot(),x=Kn(g,d.phase,d.state);throw o.current?.onError?.(x.error,x.phase),x.error}finally{a(false);}},[]);return react.useMemo(()=>({swap:p,isSwapping:s}),[p,s])}var zn=12e3;function Nt(e,n){let s=n?.interval??zn,a=n?.paused??false,o=react.useRef(n);o.current=n;let t=!!e.chain&&!!e.userAddress&&!!e.input&&!!e.output&&!!e.amount&&!a,l=react$1.useSwapRouteQuery(e,{enabled:t,refetchInterval:t?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 Jn=6e4;function It(e){let{client:n}=react$1.useDexClient(),[s,a]=react.useState(()=>new Map),o=react.useRef(e);o.current=e;let r=react.useCallback((u,p)=>{a(m=>{let c=m.get(u);if(!c||c.status===p)return m;let g=new Map(m);return g.set(u,{...c,status:p}),g});},[]),t=react.useCallback((u,p)=>{a(c=>{if(c.has(p))return c;let g=new Map(c);return g.set(p,{chain:u,txHash:p,status:"pending"}),g});let m=o.current?.timeout??Jn;n.checkTxSuccess(u,p,m).then(c=>{if(c)r(p,"confirmed"),o.current?.onConfirmed?.(p);else {let g=new Error("Transaction failed on-chain");r(p,"failed"),o.current?.onFailed?.(p,g);}}).catch(c=>{let g=c instanceof Error?c:new Error(String(c));r(p,"failed"),o.current?.onFailed?.(p,g);});},[n,r]),l=react.useCallback(u=>{a(p=>{if(!p.has(u))return p;let m=new Map(p);return m.delete(u),m});},[]),i=react.useCallback(()=>{a(u=>u.size===0?u:new Map);},[]);return react.useMemo(()=>({track:t,clear:l,clearAll:i,transactions:s}),[t,l,i,s])}var ns=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]);function ss(e){return ns.has(e)?types.ChainNamespace.SOLANA:types.ChainNamespace.EVM}var rs=1e4,as=15e3;function os(e,n){if(e.length===0)return;let a=e[e.length-1].outputAmount;if(!a||a==="0")return "0";let o=a.padStart(n+1,"0"),r=o.slice(0,o.length-n)||"0",l=o.slice(o.length-n).replace(/0+$/,"");return l?`${r}.${l}`:r}function De(e){let{chain:n}=e,s=walletConnector.useWallets(),a=ss(n),o=react.useMemo(()=>s.find(v=>v.chainNamespace===a&&v.isConnected),[s,a]),r=o?.address??"",[t,l]=react.useState(e.from??""),[i,u]=react.useState(e.to??""),p=react.useRef(e.from),m=react.useRef(e.to);react.useEffect(()=>{e.from!==p.current&&(p.current=e.from,e.from&&l(e.from));},[e.from]),react.useEffect(()=>{e.to!==m.current&&(m.current=e.to,e.to&&u(e.to));},[e.to]);let c=react.useMemo(()=>[t,i].filter(Boolean),[t,i]),g=react$1.useTokensQuery({chain:n,addresses:c},{enabled:c.length>0,refetchInterval:rs}),d=react.useMemo(()=>g.data?.find(v=>v.address===t)??null,[g.data,t]),x=react.useMemo(()=>g.data?.find(v=>v.address===i)??null,[g.data,i]),y=react$1.useWalletPortfoliosByTokensQuery({chain:n,address:r,tokenAddresses:c},{enabled:!!r&&c.length>0,refetchInterval:as}),S=react.useMemo(()=>y.data?.find(v=>v.address===t)??null,[y.data,t]),P=react.useMemo(()=>y.data?.find(v=>v.address===i)??null,[y.data,i]),[f,A]=react.useState(void 0),U=react.useMemo(()=>{if(!f||d?.decimals==null)return;let v=f.split("."),B=v[0]??"0",Me=(v[1]??"").slice(0,d.decimals).padEnd(d.decimals,"0");return (B+Me).replace(/^0+/,"")||"0"},[f,d?.decimals]),K=react.useMemo(()=>{if(!f||!d?.marketData?.priceInUsd)return;let v=Number(d.marketData.priceInUsd),B=Number(f)*v;return Number.isFinite(B)?B.toString():void 0},[f,d?.marketData?.priceInUsd]),$=react.useCallback(()=>{if(!S)return;let v=Number(S.amount);if(!Number.isFinite(v)||v<=0)return;let B=v/2,ve=d?.decimals??9;A(B.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:ve}));},[S,d?.decimals]),j=react.useCallback(()=>{if(!S)return;let v=Number(S.amount);if(!Number.isFinite(v)||v<=0)return;let B=d?.decimals??9;A(v.toLocaleString("en-US",{useGrouping:false,maximumFractionDigits:B}));},[S,d?.decimals]),E=react.useMemo(()=>({chain:n,userAddress:r||void 0,input:t||void 0,output:i||void 0,mode:types.SwapMode.EXACT_IN,amount:U}),[n,r,t,i,U]),Z=react.useRef(false),{route:F,isRouting:J,error:Y}=Nt(E,{paused:Z.current}),Q=react.useMemo(()=>F&&x?os(F.plans,x.decimals):void 0,[F,x]),re=react.useMemo(()=>{if(!Q||!x?.marketData?.priceInUsd)return;let v=Number(x.marketData.priceInUsd),B=Number(Q)*v;return Number.isFinite(B)?B.toString():void 0},[Q,x?.marketData?.priceInUsd]),{swap:w,isSwapping:M}=ne();Z.current=M;let _=react.useRef(e.onComplete);_.current=e.onComplete;let{track:ae,transactions:ee}=It({onConfirmed:v=>{_.current?.({success:true,txHash:v});},onFailed:v=>{_.current?.({success:false,txHash:v});}}),oe=react.useMemo(()=>{if(ee.size===0)return "idle";let v=Array.from(ee.values());return v[v.length-1].status},[ee]),te=react.useCallback(async()=>{if(!(!o||!F||!t||!i||!U))try{let v=await w({chain:n,wallet:o,input:t,output:i,amount:U,mode:types.SwapMode.EXACT_IN});ae(n,v.txHash);}catch{}},[o,F,n,t,i,U,w,ae]),ie=g.isPending||y.isPending;return react.useMemo(()=>({fromTokenAddress:t,toTokenAddress:i,setFromTokenAddress:l,setToTokenAddress:u,fromToken:d,toToken:x,fromBalance:S,toBalance:P,amount:f,setAmount:A,setHalfAmount:$,setMaxAmount:j,amountInDecimals:U,amountInUsd:K,outputAmount:Q,outputAmountInUsd:re,route:F,isRouting:J,routeError:Y,swap:te,isSwapping:M,txStatus:oe,isLoading:ie}),[t,i,d,x,S,P,f,$,j,U,K,Q,re,F,J,Y,te,M,oe,ie])}function Oe({isOpen:e,onOpenChange:n,fromToken:s,toToken:a,fromBalance:o,inputAmount:r,inputAmountInUsd:t,outputAmount:l,outputAmountInUsd:i,route:u,isRouting:p,routeError:m,onConfirm:c,isSwapping:g}){let{t:d}=i18n.useTranslation(),[x,y]=react.useState(false),S=react.useCallback(()=>y(f=>!f),[]),P=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:n,hideCloseButton:true,scrollBehavior:"inside",backdrop:"blur",children:jsxRuntime.jsxs(ui.ModalContent,{className:"bg-content2 rounded-lg",children:[jsxRuntime.jsx(ui.ModalHeader,{children:d("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-text-muted flex items-center justify-between text-xs font-medium",children:d("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-text-muted flex items-center gap-1 text-[10px]",children:[jsxRuntime.jsx(Ss,{}),jsxRuntime.jsxs("span",{children:[Le(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:Le(r)}),jsxRuntime.jsxs("div",{className:"text-text-muted text-[10px]",children:["$",Rt(t)]})]})]})]}),jsxRuntime.jsxs("div",{className:"mb-5",children:[jsxRuntime.jsx("div",{className:"text-text-muted flex items-center justify-between text-xs font-medium",children:d("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:[a?.image&&jsxRuntime.jsx(ui.Avatar,{size:"sm",src:a.image,name:a.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:a?.symbol??"\u2014"}),jsxRuntime.jsx("div",{className:"text-text-muted text-[10px]",children:Ce(a?.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:Le(l)}),jsxRuntime.jsxs("div",{className:"text-text-muted text-[10px]",children:["$",Rt(i)]})]})]})]}),x&&P.length>0&&jsxRuntime.jsxs("div",{className:"my-3",children:[jsxRuntime.jsx("div",{className:"text-text-muted flex items-center justify-between text-xs font-medium",children:d("trade.swap.routeDetails")}),jsxRuntime.jsx("div",{className:"mt-3 flex flex-col gap-3",children:P.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-text-muted text-xs",children:d("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-text-muted text-xs",children:d("trade.swap.swap")}),jsxRuntime.jsxs("div",{className:"text-foreground flex items-center gap-2 text-xs",children:[jsxRuntime.jsxs("span",{children:[We(f.inputAmount)," ",Ce(f.input)]}),jsxRuntime.jsx(ui.TradeIcon,{width:12,height:12,className:"text-foreground"}),jsxRuntime.jsxs("span",{children:[We(f.outputAmount)," ",Ce(f.output)]})]})]}),f.feeAmount&&jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxRuntime.jsx("div",{className:"text-text-muted text-xs",children:d("trade.swap.fee")}),jsxRuntime.jsxs("div",{className:"text-foreground text-xs",children:[We(f.feeAmount)," ",Ce(f.feeQuote)]})]})]},f.key))})]}),P.length>0&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"text-text-muted flex bg-transparent text-xs",endContent:x?jsxRuntime.jsx(ui.ChevronUpIcon,{width:12,height:12}):jsxRuntime.jsx(ui.ChevronDownIcon,{width:12,height:12}),disableRipple:true,onPress:S,children:d(x?"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||!!m,isLoading:!u&&p||g,onPress:c,children:d("common.confirm")})})]})})}function Ss(){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-text-muted",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 Rt(e){let n=utils$1.formatAmountInUsd(e??0);return n.startsWith("$")?n.slice(1):n}function Le(e){return utils$1.formatAmount(e??0)}function We(e){return utils$1.formatAmount(e??0)}function Ce(e){return e?e.length<=10?e:`${e.slice(0,4)}...${e.slice(-4)}`:"\u2014"}function Ve({fromToken:e,toToken:n,fromBalance:s,toBalance:a,amount:o,amountInUsd:r,onAmountChange:t,onHalfAmount:l,onMaxAmount:i,outputAmount:u,outputAmountInUsd:p,onFromTokenSelect:m,onToTokenSelect:c,route:g,isRouting:d,routeError:x,onPreview:y,isSwapping:S,className:P}){let{t:f}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:ui.cn("px-4 pb-4 lg:pb-8",P),children:[jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsx("p",{className:"text-text-muted 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=>t(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-text-muted"),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-text-muted"}),onPress:()=>m(""),children:e?e.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsx("div",{className:"text-text-muted flex-1 text-xs",children:Ot(r)}),s&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(Wt,{}),jsxRuntime.jsxs("span",{className:"text-text-muted",children:[_t(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")})]})]}),x&&jsxRuntime.jsx("p",{className:"mt-1 break-words text-xs text-danger-500",children:x.message})]})]}),jsxRuntime.jsxs("div",{className:"mt-4 space-y-3",children:[jsxRuntime.jsx("p",{className:"text-text-muted 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",n?"text-foreground":"text-text-muted"),disableRipple:true,startContent:n?.image?jsxRuntime.jsx(ui.Avatar,{size:"sm",src:n.image,name:n.symbol,className:"h-6 w-6"}):null,endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"text-text-muted"}),onPress:()=>c(""),children:n?n.symbol:f("trade.swap.selectToken")})})]}),jsxRuntime.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4",children:[jsxRuntime.jsx("div",{className:"text-text-muted flex-1 text-xs",children:Ot(p)}),a&&jsxRuntime.jsxs("div",{className:"flex-0 flex items-center gap-2 pr-3 text-xs",children:[jsxRuntime.jsx(Wt,{}),jsxRuntime.jsxs("span",{className:"text-text-muted",children:[_t(a.amount)," ",a.symbol]})]})]})]})]}),jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"primary",className:"mt-8 flex rounded-lg",disableRipple:true,isDisabled:!g,isLoading:!g&&d,onPress:y,children:f(S?"trade.swap.swapping":d?"trade.swap.findingRoute":"trade.swap.swap")})]})}function Wt(){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-text-muted",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 Ts(e){let n=utils$1.formatAmountInUsd(e??0);return n.startsWith("$")?n.slice(1):n}function Ot(e){return `\u2248 $${Ts(e)}`}function _t(e){return utils$1.formatAmount(e??0)}function Is({chain:e,from:n,to:s,onComplete:a,className:o}){let r=De({chain:e,from:n,to:s,onComplete:a}),{isOpen:t,onOpen:l,onOpenChange:i,onClose:u}=ui.useDisclosure(),p=react.useCallback(async()=>{await r.swap(),u();},[r,u]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ve,{fromToken:r.fromToken,toToken:r.toToken,fromBalance:r.fromBalance,toBalance:r.toBalance,amount:r.amount,amountInUsd:r.amountInUsd,onAmountChange:r.setAmount,onHalfAmount:r.setHalfAmount,onMaxAmount:r.setMaxAmount,outputAmount:r.outputAmount,outputAmountInUsd:r.outputAmountInUsd,onFromTokenSelect:r.setFromTokenAddress,onToTokenSelect:r.setToTokenAddress,route:r.route,isRouting:r.isRouting,routeError:r.routeError,onPreview:l,isSwapping:r.isSwapping,className:o}),jsxRuntime.jsx(Oe,{isOpen:t,onOpenChange:i,fromToken:r.fromToken,toToken:r.toToken,fromBalance:r.fromBalance,inputAmount:r.amount,inputAmountInUsd:r.amountInUsd,outputAmount:r.outputAmount,outputAmountInUsd:r.outputAmountInUsd,route:r.route,isRouting:r.isRouting,routeError:r.routeError,onConfirm:p,isSwapping:r.isSwapping})]})}function $t(e){let n=V(e),s=utils$1.getNativeToken(e)?.symbol??"ETH";return {buy:{customAmounts:bt(s),presets:[{...n},{...n},{...n}]},sell:{customPercentages:[...St],presets:[{...n},{...n},{...n}]}}}var Ms=$t("900900900");function Qt(e){return `liberfi.instant-trade.settings.${e}`}function Rs(e,n){try{let s=localStorage.getItem(Qt(String(e)));if(s)return JSON.parse(s)}catch{}return n}function ks(e,n){try{localStorage.setItem(Qt(e),JSON.stringify(n));}catch{}}var Ht=react.createContext(null);function $e(){let e=react.useContext(Ht);if(!e)throw new Error("useInstantTrade must be used within an InstantTradeProvider");return e}function Qe({chain:e,tokenAddress:n,settings:s,onSettingsChange:a,children:o}){let r=react.useMemo(()=>utils$1.getNativeToken(e),[e]),t=s!==void 0,l=react.useMemo(()=>$t(e),[e]),[i,u]=react.useState(()=>t?l:Rs(e,l)),p=t?s:i,m=react.useCallback(E=>{t?a?.(E):(u(E),ks(String(e),E));},[t,a,e]),c=react.useCallback(E=>m({...p,buy:E}),[p,m]),g=react.useCallback(E=>m({...p,sell:E}),[p,m]),[d,x]=react.useState("buy"),[y,S]=react.useState(),[P,f]=react.useState(0),[A,U]=react.useState(0),K=react.useMemo(()=>V(e),[e]),$=react.useMemo(()=>{let E=d==="buy"?P:A;return (d==="buy"?p.buy.presets:p.sell.presets)[E]??K},[d,P,A,p,K]),j=react.useMemo(()=>({chain:e,tokenAddress:n,nativeToken:r,direction:d,setDirection:x,amount:y,setAmount:S,buyPreset:P,setBuyPreset:f,sellPreset:A,setSellPreset:U,settings:p,updateBuySettings:c,updateSellSettings:g,currentPresetValues:$}),[e,n,r,d,y,P,A,p,c,g,$]);return jsxRuntime.jsx(Ht.Provider,{value:j,children:o})}var js=15e3,zs=1e4;function je(e){let{chain:n,tokenAddress:s,onSwapSubmitted:a,onSwapError:o}=e,{t:r}=i18n.useTranslation(),t=$e(),l=react.useMemo(()=>utils$1.getNativeToken(n),[n]),i=react.useMemo(()=>utils$1.getWrappedToken(n),[n]),u=walletConnector.useWallets(),p=utils$1.chainToNamespace(n),m=react.useMemo(()=>u.find(w=>w.chainNamespace===p&&w.isConnected),[u,p]),c=m?.address??"",g=react.useMemo(()=>{let w=[s];return l&&w.push(l.address),i&&w.push(i.address),w.filter(Boolean)},[s,l,i]),d=react$1.useTokensQuery({chain:n,addresses:g},{enabled:g.length>0,refetchInterval:zs}),x=react.useMemo(()=>d.data?.find(w=>w.address===s)??null,[d.data,s]),y=react$1.useWalletPortfoliosByTokensQuery({chain:n,address:c,tokenAddresses:g},{enabled:!!c&&g.length>0,refetchInterval:js}),S=l?.address??i?.address??"",P=react.useMemo(()=>y.data?.find(w=>w.address===S)??null,[y.data,S]),f=react.useMemo(()=>y.data?.find(w=>w.address===s)??null,[y.data,s]),[A,U]=react.useState(false),K=react.useRef(null),$=react.useCallback(w=>{let M=K.current;K.current=w,U(_=>M===null||M!==w?true:!_);},[]),j=react.useRef(a);j.current=a;let E=react.useRef(o);E.current=o;let{swap:Z,isSwapping:F}=ne({onSubmitted:w=>j.current?.(w),onError:(w,M)=>E.current?.(w,M)}),J=react.useCallback(async()=>{if(!t.amount||!m||!s)return;let w=l?.decimals??9,M=i?.address??l?.address??"",_=t.direction==="buy",ae=_?M:s,ee=_?s:M,oe=_?w:x?.decimals??9,te=new pe__default.default(t.amount).shiftedBy(oe).decimalPlaces(0).toString(),ie=t.currentPresetValues,v=V(n),B=ie.slippage??v.slippage??1,ve=ie.antiMev!=="off",Me=utils$1.isSolanaChain(n)?{priorityFee:new pe__default.default(ie.priorityFee??v.priorityFee??0).shiftedBy(w).decimalPlaces(0).toString(),tipFee:new pe__default.default(ie.tipFee??v.tipFee??0).shiftedBy(w).decimalPlaces(0).toString(),isAntiMev:ve}:{};try{await Z({chain:n,wallet:m,input:ae,output:ee,amount:te,slippage:B,...Me}),t.setAmount(void 0);}catch{}},[t,m,s,l,i,x,n,Z]),Y=react.useMemo(()=>{let w=r(t.direction==="buy"?"common.buy":"common.sell");if(!t.amount)return w;let M=` (${r("trade.insufficientBalance")})`;if(t.direction==="buy"){let ae=P?.amount;if(ae&&new pe__default.default(ae).lt(t.amount))return `${w}${M}`;let ee=l?.symbol??"",oe=d.data?.find(te=>te.address===S)?.marketData?.priceInUsd;if(oe){let te=utils$1.formatAmountInUsd(new pe__default.default(t.amount).times(Number(oe)));return r("trade.submitBuyAmount",{amount:t.amount,symbol:ee,usd:te})}return r("trade.submitBuyAmountNoUsd",{amount:t.amount,symbol:ee})}let _=f?.amount;return _&&new pe__default.default(_).lt(t.amount)?`${w}${M}`:w},[r,t.direction,t.amount,P,f,l,d.data,S]),Q=!t.amount||!m||!s,re=d.isPending||y.isPending;return react.useMemo(()=>({chain:n,tokenAddress:s,nativeToken:l,tokenInfo:x,nativeBalance:P,tokenBalance:f,direction:t.direction,setDirection:t.setDirection,amount:t.amount,setAmount:t.setAmount,buyPreset:t.buyPreset,setBuyPreset:t.setBuyPreset,sellPreset:t.sellPreset,setSellPreset:t.setSellPreset,currentPresetValues:t.currentPresetValues,settings:t.settings,updateBuySettings:t.updateBuySettings,updateSellSettings:t.updateSellSettings,showSettings:A,handlePresetClick:$,swap:J,isSwapping:F,submitText:Y,isDisabled:Q,isLoading:re}),[n,s,l,x,P,f,t,A,$,J,F,Y,Q,re])}function be({value:e,onChange:n,chain:s,disableAnimation:a,className:o}){let r=react.useCallback(i=>n({...e,...i}),[e,n]),t=react.useMemo(()=>le(s),[s]),l=t.feeType==="gasFee"?"gasFee":"priorityFee";return jsxRuntime.jsxs("div",{className:ui.cn("space-y-4",o),children:[jsxRuntime.jsx(sr,{value:e.slippage,onChange:i=>r({slippage:i})}),jsxRuntime.jsx(rr,{value:e[l],onChange:i=>r({[l]:i}),feeType:t.feeType,symbol:t.feeUnit,decimals:t.feeDecimals}),t.showTipFee&&jsxRuntime.jsx(ar,{value:e.tipFee,onChange:i=>r({tipFee:i}),symbol:t.tipFeeUnit,decimals:t.tipFeeDecimals}),t.showAutoFee&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(or,{value:e.autoFee,onChange:i=>r({autoFee:i}),disableAnimation:a}),e.autoFee&&jsxRuntime.jsx(ir,{value:e.maxAutoFee,onChange:i=>r({maxAutoFee:i}),symbol:t.nativeSymbol})]}),jsxRuntime.jsx(lr,{value:e.antiMev,onChange:i=>r({antiMev:i}),options:t.antiMevOptions,disableAnimation:a}),t.showCustomRPC&&jsxRuntime.jsx(ur,{value:e.customRPC,onChange:i=>r({customRPC:i})})]})}function sr({value:e,onChange:n}){let{t:s}=i18n.useTranslation(),a=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-text-muted",children:a}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:o=>n(isNaN(o)?null:o),hideStepper:true,minValue:0,maxValue:100,step:1,endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:"%"}),"aria-label":a})]})}function rr({value:e,onChange:n,feeType:s,symbol:a,decimals:o}){let{t:r}=i18n.useTranslation(),t=r(`trade.preset.${s}`),l=r(`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-text-muted flex items-center gap-1",children:[t,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-text-muted"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:i=>n(isNaN(i)?null:i),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:o},endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:a}),"aria-label":t})]})}function ar({value:e,onChange:n,symbol:s,decimals:a}){let{t:o}=i18n.useTranslation(),r=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-text-muted flex items-center gap-1",children:[r,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-text-muted"})})})]}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:t=>n(isNaN(t)?null:t),hideStepper:true,minValue:0,formatOptions:{maximumFractionDigits:a},endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:s}),"aria-label":r})]})}function or({value:e,onChange:n,disableAnimation:s}){let{t:a}=i18n.useTranslation(),o=a("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-text-muted flex items-center gap-1",children:[o,jsxRuntime.jsx(ui.StyledTooltip,{content:a("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-text-muted"})})})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(ui.StyledSwitch,{isSelected:e,onValueChange:n,color:"primary","aria-label":o,disableAnimation:s})})]})}function ir({value:e,onChange:n,symbol:s}){let{t:a}=i18n.useTranslation(),o=a("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-text-muted",children:o}),jsxRuntime.jsx(ui.StyledNumberInput,{fullWidth:true,variant:"flat",value:e===null?void 0:e,onValueChange:r=>n(isNaN(r)?null:r),hideStepper:true,minValue:0,endContent:jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:s}),"aria-label":o})]})}function lr({value:e,onChange:n,options:s,disableAnimation:a}){let{t:o}=i18n.useTranslation(),r=o("trade.preset.antiMev"),t=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-text-muted flex items-center gap-1",children:[r,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-text-muted"})})})]}),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:n,disableAnimation:a,"aria-label":r,children:s.map(i=>{let u=t[i],p=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:p.title}),jsxRuntime.jsx("div",{className:"mt-0.5",children:p.desc})]}),children:jsxRuntime.jsx("span",{className:"flex items-center justify-center",children:jsxRuntime.jsx(u,{width:18,height:18})})})},i)})})})]})}function ur({value:e,onChange:n}){let{t:s}=i18n.useTranslation(),a=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-text-muted",children:a}),jsxRuntime.jsx("div",{className:"flex-auto",children:jsxRuntime.jsx(ui.StyledInput,{fullWidth:true,variant:"flat",value:e??"",onValueChange:o=>n(o||null),placeholder:"https://...","aria-label":a})})]})}function Xe({chain:e,direction:n,onDirectionChange:s,amount:a,onAmountChange:o,customAmounts:r,customPercentages:t,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:p,tokenSymbol:m,nativeBalance:c,tokenBalance:g,amountConversion:d,preset:x,onPresetChange:y,presetValues:S,onPresetSettingsChange:P,showSettings:f,onPresetClick:A,submitText:U,isDisabled:K,isLoading:$,onSubmit:j,className:E,headerExtra:Z}){let{t:F}=i18n.useTranslation(),J=react.useMemo(()=>utils$1.getNativeToken(e),[e]),Y=J?.symbol,Q=J?.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:n==="buy"?"primary":"secondary",selectedKey:n,onSelectionChange:s,classNames:{tabList:"bg-content2",tab:ui.cn("h-6",n==="buy"?"data-[selected=true]:bg-primary":"data-[selected=true]:bg-secondary"),cursor:n==="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:n==="buy"?jsxRuntime.jsx(vr,{amount:a,onAmountChange:o,customAmounts:r,onQuickAmountClick:l,onCustomAmountsEdit:u,nativeSymbol:Y,nativeDecimals:Q,amountLabel:F("trade.amount")}):jsxRuntime.jsx(Pr,{amount:a,onAmountChange:o,customPercentages:t,onQuickPercentageClick:i,onCustomPercentagesEdit:p,tokenSymbol:m,amountLabel:F("trade.amount")})}),jsxRuntime.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[jsxRuntime.jsxs("div",{className:"text-xs text-text-muted space-x-1",children:[jsxRuntime.jsx("span",{children:F("trade.balance")}),jsxRuntime.jsx("span",{children:n==="buy"?c?`${c} ${Y??""}`:"--":g?`${g} ${m??""}`:"--"})]}),d&&jsxRuntime.jsx("div",{className:"text-xs text-text-muted",children:d})]}),jsxRuntime.jsx("div",{className:"mt-4",children:jsxRuntime.jsx(wr,{values:S,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-text-muted"},selectedKey:`${x}`,onSelectionChange:re=>y(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(be,{value:S,onChange:P,chain:e})}),jsxRuntime.jsx(ui.Button,{fullWidth:true,size:"sm",color:n==="buy"?"primary":"secondary",className:"mt-2 rounded-lg",disableRipple:true,isDisabled:K,isLoading:$,onPress:j,children:U})]})}function vr({amount:e,onAmountChange:n,customAmounts:s,onQuickAmountClick:a,onCustomAmountsEdit:o,nativeSymbol:r,nativeDecimals:t,amountLabel:l}){let i=react.useCallback(u=>{typeof u=="number"&&n(isNaN(u)?void 0:u);},[n]);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-text-muted",children:l}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-text-muted",children:r??""}),formatOptions:{maximumFractionDigits:t},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(Zt,{values:s,onSelect:a,onEdit:o})]})}function Pr({amount:e,onAmountChange:n,customPercentages:s,onQuickPercentageClick:a,onCustomPercentagesEdit:o,tokenSymbol:r,amountLabel:t}){let l=react.useCallback(i=>{typeof i=="number"&&n(isNaN(i)?void 0:i);},[n]);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-text-muted",children:t}),endContent:jsxRuntime.jsx("span",{className:"flex-none text-xs text-text-muted",children:r??""}),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(Zt,{values:s,onSelect:a,onEdit:o,suffix:"%"})]})}function Zt({values:e,onSelect:n,onEdit:s,suffix:a}){let[o,r]=react.useState(false),[t,l]=react.useState([]),i=react.useCallback(()=>{l([...e]),r(true);},[e]),u=react.useCallback(()=>{r(false),s(t);},[s,t]);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((p,m)=>jsxRuntime.jsx("div",{className:ui.cn("h-6 bg-content2 flex items-center justify-center",m===0&&"rounded-bl-lg"),children:o?jsxRuntime.jsx(ui.NumberInput,{fullWidth:true,value:t[m]===null||t[m]===void 0?void 0:t[m],onChange:c=>{if(typeof c=="number"){let g=isNaN(c)?null:c;l(d=>{let x=[...d];return x[m]=g,x});}},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",m===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[m]!=null&&n(e[m]),endContent:a?jsxRuntime.jsx("span",{className:"text-xs text-text-muted",children:a}):null,children:e[m]??""})},m))}),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 wr({values:e,chain:n}){let{t:s}=i18n.useTranslation(),a=react.useMemo(()=>le(n),[n]),o=e.antiMev&&e.antiMev!=="off"?e.antiMev:"off",r=o==="reduced"?ui.ShieldIcon:o==="secure"?ui.ShieldPlusIcon:ui.ShieldOffIcon;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-text-muted 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-text-muted",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.${a.feeType}`),classNames:{content:"text-xs text-text-muted 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-text-muted",disableRipple:true,startContent:jsxRuntime.jsx(ui.ZapFastIcon,{width:14,height:14}),children:utils$1.formatPrice(e.priorityFee??0)})}),a.showTipFee&&jsxRuntime.jsx(ui.Tooltip,{content:s("trade.preset.tipFee"),classNames:{content:"text-xs text-text-muted 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-text-muted",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-text-muted 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-text-muted",disableRipple:true,startContent:jsxRuntime.jsx(r,{width:14,height:14,className:"text-text-muted"}),children:s(`trade.preset.antiMev.${o}`)})})]})}function Cr({chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:a,settings:o,onSettingsChange:r,headerExtra:t,className:l}){return jsxRuntime.jsx(Qe,{chain:e,tokenAddress:n,settings:o,onSettingsChange:r,children:jsxRuntime.jsx(Nr,{chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:a,headerExtra:t,className:l})})}function Nr({chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:a,headerExtra:o,className:r}){let t=je({chain:e,tokenAddress:n,onSwapSubmitted:s,onSwapError:a}),l=react.useCallback(d=>t.setAmount(d),[t]),i=react.useCallback(d=>{let x=t.tokenBalance?.amount;if(!x)return;let y=new pe__default.default(x).times(d).div(100).toNumber();t.setAmount(y);},[t]),u=react.useCallback(d=>{t.updateBuySettings({...t.settings.buy,customAmounts:d});},[t]),p=react.useCallback(d=>{t.updateSellSettings({...t.settings.sell,customPercentages:d});},[t]),m=react.useCallback(d=>{let x=t.direction==="buy",y=x?t.buyPreset:t.sellPreset;if(x){let S=t.settings.buy,P=[...S.presets];P[y]=d,t.updateBuySettings({...S,presets:P});}else {let S=t.settings.sell,P=[...S.presets];P[y]=d,t.updateSellSettings({...S,presets:P});}},[t]),c=react.useCallback(d=>{t.direction==="buy"?t.setBuyPreset(d):t.setSellPreset(d);},[t]),g=t.direction==="buy"?t.buyPreset:t.sellPreset;return jsxRuntime.jsx(Xe,{chain:e,direction:t.direction,onDirectionChange:t.setDirection,amount:t.amount,onAmountChange:t.setAmount,customAmounts:t.settings.buy.customAmounts,customPercentages:t.settings.sell.customPercentages,onQuickAmountClick:l,onQuickPercentageClick:i,onCustomAmountsEdit:u,onCustomPercentagesEdit:p,tokenSymbol:t.tokenInfo?.symbol,nativeBalance:t.nativeBalance?.amount,tokenBalance:t.tokenBalance?.amount,amountConversion:void 0,preset:g,onPresetChange:c,presetValues:t.currentPresetValues,onPresetSettingsChange:m,showSettings:t.showSettings,onPresetClick:t.handlePresetClick,submitText:t.submitText,isDisabled:t.isDisabled,isLoading:t.isSwapping,onSubmit:t.swap,className:r,headerExtra:o})}function Ye(e){let{id:n,chain:s,token:a,storageKeyPrefix:o,onAmountChange:r,onPresetChange:t,onPresetClick:l}=e,[i,u]=jotai.useAtom(G(z(n,s,a.address,o))),p=jotai.useAtomValue(L(D(s,"buy",0,o))),m=jotai.useAtomValue(L(D(s,"buy",1,o))),c=jotai.useAtomValue(L(D(s,"buy",2,o))),g=react.useMemo(()=>[p,m,c],[p,m,c]),d=react.useCallback(y=>{u(S=>({...S,amount:y})),r?.(y);},[u,r]),x=react.useCallback(y=>{u(S=>({...S,preset:y})),t?.(y);},[u,t]);return {token:a,chain:s,amount:i.amount,handleAmountChange:d,preset:i.preset,handlePresetChange:x,onPresetClick:l,presetValues:g}}function et({token:e,chain:n,amount:s,onAmountChange:a,preset:o=0,onPresetChange:r,onPresetClick:t,presetValues:l,radius:i="full",size:u="md",className:p}){let{t:m}=i18n.useTranslation(),{isMobile:c}=ui.useScreen(),g=react.useRef(null),d=react.useMemo(()=>V(n),[n]),[x,y]=react.useState(null),S=react.useCallback(P=>{r?.(Number(P));},[r]);return jsxRuntime.jsxs("div",{ref:g,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",p),style:{border:"1px solid rgba(63,63,70,0.5)",background:"hsl(var(--heroui-content3) / 0.6)"},children:[jsxRuntime.jsx(ui.StyledNumberInput,{className:"flex-auto min-w-0 h-full",fullWidth:true,variant:"flat",value:s,onValueChange:P=>a(isNaN(P)?void 0:P),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":m("trade.instantTradeAmount"),classNames:{base:"h-full",mainWrapper:"h-full",inputWrapper:"!bg-transparent !shadow-none !border-0 !rounded-none h-full !min-h-0"}},`${n}-${e.address}`),jsxRuntime.jsx("div",{className:"w-px self-stretch my-1.5 mx-1.5 flex-none",style:{background:"hsl(var(--heroui-content4) / 0.5)"}}),jsxRuntime.jsx(ui.StyledLightTabs,{color:"primary",size:u,selectedKey:String(o),onSelectionChange:S,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((P,f)=>jsxRuntime.jsx(ui.Tab,{title:c?jsxRuntime.jsx("span",{onClick:A=>{o===f&&(A.stopPropagation(),y(U=>U===f?null:f));},children:m("trade.preset.short",{n:f+1})}):jsxRuntime.jsx(ui.StyledTooltip,{content:jsxRuntime.jsx(rn,{label:m("trade.preset.short",{n:f+1}),values:l?.[f]??d,chain:n}),classNames:{content:"!p-0 !rounded-[14px] !border !border-border-subtle !bg-surface-interactive !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]"},offset:12,children:jsxRuntime.jsx("span",{onClick:()=>o===f&&t?.(f),children:m("trade.preset.short",{n:f+1})})})},String(f)))}),c&&x!==null&&jsxRuntime.jsx(Hr,{label:m("trade.preset.short",{n:x+1}),values:l?.[x]??d,chain:n,onClose:()=>y(null),containerRef:g})]})}function Hr({label:e,values:n,chain:s,onClose:a,containerRef:o}){let r=react.useRef(null);return react.useEffect(()=>{let t=l=>{let i=l.target;r.current&&!r.current.contains(i)&&o.current&&!o.current.contains(i)&&a();};return document.addEventListener("mousedown",t),document.addEventListener("touchstart",t),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t);}},[a,o]),jsxRuntime.jsx("div",{ref:r,style:{position:"absolute",top:"100%",right:0,zIndex:50,marginTop:8,borderRadius:14,border:"1px solid var(--color-border-control)",background:"var(--color-surface-interactive)",boxShadow:"0 25px 50px -12px rgba(0,0,0,0.5)",minWidth:200},children:jsxRuntime.jsx(rn,{label:e,values:n,chain:s})})}function rn({label:e,values:n,chain:s}){let{t:a}=i18n.useTranslation(),o=react.useMemo(()=>le(s),[s]),r=n.antiMev&&n.antiMev!=="off"?n.antiMev:"off",t=(n.slippage??0)/100,l=t>=.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 var(--color-border-control)"},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-text-muted text-xs",children:[jsxRuntime.jsx(ui.SlippageIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:a("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(t)})]}),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-text-muted text-xs",children:[jsxRuntime.jsx(ui.ZapFastIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:a(`trade.preset.${o.feeType}`)})]}),jsxRuntime.jsxs("span",{className:"text-xs font-medium text-foreground tabular-nums",children:[utils$1.formatPrice(n.priorityFee??0)," ",jsxRuntime.jsx("span",{className:"text-text-muted",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-text-muted text-xs",children:[jsxRuntime.jsx(ui.CoinsIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:a("trade.preset.tipFee")})]}),jsxRuntime.jsxs("span",{className:"text-xs font-medium text-foreground tabular-nums",children:[utils$1.formatPrice(n.tipFee??0)," ",jsxRuntime.jsx("span",{className:"text-text-muted",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-text-muted text-xs",children:[r==="off"&&jsxRuntime.jsx(ui.ShieldOffIcon,{width:12,height:12,className:"flex-none"}),r==="reduced"&&jsxRuntime.jsx(ui.ShieldIcon,{width:12,height:12,className:"flex-none"}),r==="secure"&&jsxRuntime.jsx(ui.ShieldPlusIcon,{width:12,height:12,className:"flex-none"}),jsxRuntime.jsx("span",{children:a("trade.preset.antiMev")})]}),jsxRuntime.jsx("span",{className:ui.cn("text-xs font-medium",r==="off"&&"text-text-muted",r==="reduced"&&"text-amber-400",r==="secure"&&"text-success"),children:a(`trade.preset.antiMev.${r}`)})]})]})}function jr({size:e,radius:n,className:s,...a}){let{token:o,chain:r,amount:t,handleAmountChange:l,preset:i,handlePresetChange:u,onPresetClick:p,presetValues:m}=Ye(a);return jsxRuntime.jsx(et,{token:o,chain:r,amount:t,onAmountChange:l,preset:i,onPresetChange:u,onPresetClick:p,presetValues:m,size:e,radius:n,className:s})}function tt(e){let{chain:n,presetIndex:s=0,defaultDirection:a="buy",storageKeyPrefix:o,onChange:r}=e,[t,l]=react.useState(a),[i,u]=jotai.useAtom(L(D(n,t,s,o))),p=react.useCallback(m=>{u(m),r?.(t,m);},[u,r,t]);return {direction:t,setDirection:l,value:i,handleChange:p}}function st({disableAnimation:e,className:n,...s}){let{t:a}=i18n.useTranslation(),{direction:o,setDirection:r,value:t,handleChange:l}=tt(s);return jsxRuntime.jsxs("div",{className:ui.cn("space-y-3",n),children:[jsxRuntime.jsxs(ui.StyledSolidTabs,{radius:"lg",color:"default",fullWidth:true,selectedKey:o,onSelectionChange:i=>r(i),"aria-label":a("common.buySell"),children:[jsxRuntime.jsx(ui.Tab,{title:a("common.buy")},"buy"),jsxRuntime.jsx(ui.Tab,{title:a("common.sell")},"sell")]}),jsxRuntime.jsx(be,{value:t,onChange:l,chain:s.chain,disableAnimation:e})]})}var na=3;function rt(e){let{defaultPresetIndex:n=0,onChange:s,onPresetIndexChange:a}=e,[o,r]=react.useState(n);react.useEffect(()=>{r(n);},[n]);let t=react.useCallback(i=>{r(i),a?.(i);},[a]),l=react.useCallback((i,u)=>{s?.(o,i,u);},[s,o]);return {presetCount:na,presetIndex:o,setPresetIndex:t,handlePresetChange:l}}function ot({defaultDirection:e,disableAnimation:n,className:s,...a}){let{t:o}=i18n.useTranslation(),{presetCount:r,presetIndex:t,setPresetIndex:l,handlePresetChange:i}=rt(a);return jsxRuntime.jsxs("div",{className:ui.cn("space-y-3",s),children:[jsxRuntime.jsx(ui.StyledSolidTabs,{radius:"lg",fullWidth:true,color:"default",selectedKey:String(t),onSelectionChange:u=>l(Number(u)),disableAnimation:n,"aria-label":o("trade.preset.presets"),children:Array.from({length:r},(u,p)=>jsxRuntime.jsx(ui.Tab,{title:o("trade.preset.label",{n:p+1})},String(p)))}),jsxRuntime.jsx(st,{chain:a.chain,presetIndex:t,defaultDirection:e,storageKeyPrefix:a.storageKeyPrefix,onChange:i,disableAnimation:n})]})}var ya="preset";function ba({id:e=ya}){return jsxRuntime.jsx(uiScaffold.AsyncModal,{id:e,children:n=>jsxRuntime.jsx(Sa,{...n})})}function Sa({params:e={chains:[types.Chain.SOLANA,types.Chain.ETHEREUM,types.Chain.BINANCE]},isOpen:n,onOpenChange:s}){let{t:a}=i18n.useTranslation(),{chains:o,defaultChain:r,defaultDirection:t,defaultPresetIndex:l,storageKeyPrefix:i,onChange:u,onPresetIndexChange:p}=e,[m,c]=react.useState(r??o[0]);react.useEffect(()=>{c(r??o[0]);},[r,o]);let g=react.useCallback((y,S,P)=>{u?.(m,y,S,P);},[u,m]),d=react.useCallback(y=>{p?.(m,y);},[m,p]),x=react.useCallback(y=>{!y&&document.activeElement instanceof HTMLElement&&document.activeElement.blur(),s(y);},[s]);return jsxRuntime.jsx(ui.StyledModal,{isOpen:n,onOpenChange:x,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:a("trade.preset.instantTradeSettings")}),jsxRuntime.jsx(uiChainSelect.ChainSelectMobileUI,{candidates:o,chain:m,onSelectChain:c})]})}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsx(ui.ScrollShadow,{children:jsxRuntime.jsx(ot,{chain:m,defaultDirection:t,defaultPresetIndex:l,storageKeyPrefix:i,onChange:g,onPresetIndexChange:d})})})]})})}function Ue(e,n,s,a,o){let r=V(o),t=new pe__default.default(e).shiftedBy(n.decimals).decimalPlaces(0).toString(),l=new pe__default.default(a.priorityFee??r.priorityFee??0).shiftedBy(n.decimals).decimalPlaces(0).toString(),i=new pe__default.default(a.tipFee??r.tipFee??0).shiftedBy(n.decimals).decimalPlaces(0).toString();return {input:n.address,output:s,amount:t,slippage:a.slippage??r.slippage??1,priorityFee:l,tipFee:i,isAntiMev:a.antiMev!=="off"}}function mt(e){let{id:n,chain:s,token:a,output:o,storageKeyPrefix:r,onSwapSubmitted:t,onSwapError:l}=e,{amount:i,preset:u}=jotai.useAtomValue(G(z(n,s,a.address,r))),p=jotai.useAtomValue(L(D(s,"buy",u,r))),m=walletConnector.useConnectedWallet(s),{swap:c,isSwapping:g}=ne({onSubmitted:t,onError:l}),d=!i||!o,x=walletConnector.useAuthCallback(async()=>{if(!i||!m||!o)return;let y=Ue(i,a,o,p,s);try{await c({...y,chain:s,wallet:m});}catch{}},[m,i,o,s,a,p,c]);return react.useMemo(()=>({amount:i,token:a,isDisabled:d,isSwapping:g,handleSwap:x}),[i,a,d,g,x])}function Na({size:e="sm",radius:n,color:s="primary",className:a,...o}){let{amount:r,token:t,isDisabled:l,isSwapping:i,handleSwap:u}=mt(o);return jsxRuntime.jsx(ui.Button,{fullWidth:true,size:e,radius:n,color:s,className:a,disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{}),isDisabled:l,isLoading:i,onPress:u,children:r!=null?`${r} ${t.symbol}`:t.symbol})}var pn=react.createContext(null);function Ma({chain:e,onSwapSubmitted:n,onSwapError:s,children:a}){let o=walletConnector.useConnectedWallet(e),{swap:r}=ne({onSubmitted:n,onError:s}),t=react.useRef(o);t.current=o;let l=react.useRef(r);l.current=r;let i=react.useRef(e);i.current=e;let u=react.useCallback(async m=>{let c=t.current;c&&await l.current({...m,wallet:c,chain:i.current});},[]),p=walletConnector.useAuthCallback(u,[]);return jsxRuntime.jsx(pn.Provider,{value:p,children:a})}function pt(){let e=react.useContext(pn);if(e===null)throw new Error("useInstantTradeSwap must be used within an InstantTradeSwapProvider");return e}function ft(e){let{id:n,chain:s,token:a,output:o,storageKeyPrefix:r}=e,{amount:t,preset:l}=jotai.useAtomValue(G(z(n,s,a.address,r))),i=jotai.useAtomValue(L(D(s,"buy",l,r))),u=pt(),{t:p}=i18n.useTranslation(),[m,c]=react.useState(false),g=!o,d=react.useRef(a);d.current=a;let x=react.useRef(i);x.current=i;let y=react.useRef(s);y.current=s;let S=react.useCallback(async()=>{if(!o)return;if(!t){ui.toast(p("trade.instantTradeAmountRequired"));return}let P=Ue(t,d.current,o,x.current,y.current);c(true);try{await u(P);}catch{}finally{c(false);}},[t,o,u,p]);return react.useMemo(()=>({amount:t,token:a,isDisabled:g,isSwapping:m,handleSwap:S}),[t,a,g,m,S])}var Ha=react.memo(function({size:n="sm",radius:s,color:a="primary",className:o,...r}){let{amount:t,token:l,isDisabled:i,isSwapping:u,handleSwap:p}=ft(r),m=t!=null?`${utils$1.formatAmount(t)} ${l.symbol}`:void 0;return jsxRuntime.jsx(ui.Button,{variant:"solid",size:n,radius:s,color:a,className:ui.cn("min-w-0 w-auto flex-none",o),disableRipple:true,startContent:jsxRuntime.jsx(ui.LightningIcon,{className:"flex-none",style:{color:"var(--color-brand-primary)"}}),isDisabled:i,isLoading:u,spinner:jsxRuntime.jsx(ui.Spinner,{size:"sm",color:"current"}),onPress:p,style:{background:"linear-gradient(hsl(var(--heroui-primary) / 0.08), hsl(var(--heroui-primary) / 0.08)), var(--color-surface-base)",border:"1px solid hsl(var(--heroui-primary) / 0.2)",color:"var(--color-brand-primary)",fontWeight:600},children:m})});
|
|
2
|
+
exports.AmountPresetInputUI=et;exports.AmountPresetInputWidget=jr;exports.DEFAULT_BSC_TRADE_PRESET=yt;exports.DEFAULT_EVM_TRADE_PRESET=ht;exports.DEFAULT_INSTANT_TRADE_SETTINGS=Ms;exports.DEFAULT_SELL_PERCENTAGES=St;exports.DEFAULT_SOL_TRADE_PRESET=xt;exports.InstantTradeButtonWidget=Na;exports.InstantTradeListButtonWidget=Ha;exports.InstantTradeProvider=Qe;exports.InstantTradeSwapProvider=Ma;exports.InstantTradeUI=Xe;exports.InstantTradeWidget=Cr;exports.MultiPresetFormWidget=ot;exports.PresetFormModal=ba;exports.PresetFormUI=be;exports.PresetFormWidget=st;exports.SwapPreviewModal=Oe;exports.SwapRouteExpiredError=de;exports.SwapUI=Ve;exports.SwapWidget=Is;exports.getChainPresetFeatures=le;exports.getDefaultBuyAmounts=bt;exports.getDefaultPresetForChain=V;exports.instantTradeAmountAtomFamily=G;exports.instantTradeAmountKey=z;exports.presetAtomFamily=L;exports.presetKey=D;exports.useAmountPresetInputScript=Ye;exports.useInstantTrade=$e;exports.useInstantTradeAmount=Ya;exports.useInstantTradeButtonScript=mt;exports.useInstantTradeListButtonScript=ft;exports.useInstantTradeScript=je;exports.useInstantTradeSwap=pt;exports.useMultiPresetFormScript=rt;exports.usePresetFormScript=tt;exports.usePresetValues=po;exports.useSwap=ne;exports.useSwapRoutePolling=Nt;exports.useSwapScript=De;exports.useTxConfirmation=It;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|