1import{j as t,r,L as Rs,i as As,c as Cs,u as Ds}from"./vendor-react-_peu2KPp.js";import{k as qa,u as et,j as Zt,r as Vt,y as Pe,b as Nt,a9 as Yt,aa as Ka,A as Os,z as Bs,B as Fs,Q as da,C as Lt,s as ee,V as Hs,t as bt,G as ua,d as he,x as ma,L as Ga,e as Ws,K as Us,D as Ht,aT as pa,a8 as fa,F as xa,aR as Qs,p as ha,aU as qs,aV as Ks,aB as Gs,U as $s,I as Vs,f as Ys,aW as Xs,h as $a,i as kt,o as zs,S as Va,R as Ya,ai as Xa,aX as Js,am as Zs,aY as er,aZ as tr,a_ as ar,a$ as sr,b0 as rr}from"./index-tjoY6huT.js";import{e as Mt,N as ga,F as za,i as Xt,Q as nr,u as ir,n as or,p as ya,o as ba,s as lr,k as cr,q as dr,l as ur,b as mr,j as pr,m as fr,r as xr,R as Wt,z as ka,a as Ut,A as hr,B as gr,C as yr,D as br,x as kr,w as wr,L as vr,y as Pr,f as Tr,E as Er,G as Sr,H as _r,h as Lr,g as Ir,S as jr,I as Nr,J as Mr,K as Rr,v as Ja,t as Ar,M as Cr,P as Dr,O as wa,W as Or}from"./limitOrderPriceEdit-C0MSGCvL.js";import{a as ea,u as Ue,k as Br,f as Fr}from"./vendor-state-DbRNHhEP.js";import{s as Hr,b as Wr,m as Ur,n as Qr,f as Za,g as qr}from"./pair-lrv8fu9q.js";import{n as va,e as es,l as Kr,j as ts,o as Gr,r as $r,L as Vr,k as Yr}from"./client-BR9HzcsZ.js";import"./wallet-terra-BIAY_q8C.js";import{P as Xr}from"./PairTokenLinks-DS8dKo_M.js";import{L as zr}from"./LcdQueryGate-CxplC9-3.js";import{i as Jr,a as Zr,M as en}from"./indexerErrors--txBjI0N.js";import{a as tn,b as an,P as sn}from"./usePairDisplayOrientation-rvBzJfYR.js";import{u as as,t as ss}from"./terraBroadcastUi-BHPT8OCP.js";import{A as rn,u as nn}from"./useTradingBlacklist-BNtVB5V1.js";import{u as on,P as ln,p as Pa}from"./PairCodeIdFrozenBanner-CLMg-LQv.js";import{l as cn,h as dn,f as un,k as mn,L as pn}from"./transactions-NJAM38cc.js";import{r as fn,T as xn}from"./TokenLogo-LRFEYCOB.js";import{u as hn}from"./useTokenDisplayInfo-C0FQdzAP.js";import{T as We}from"./TxResultAlert-CLuvb2eB.js";import{L as gn}from"./limitPlacementLifecycle-KN4fAC1H.js";import{u as Qt}from"./useDebouncedValue-COobZORi.js";import{u as yn,j as qt,n as Ta,k as bn,l as kn,m as wn,c as vn,s as Pn,o as Tn}from"./swapRouteDisplay-Cma8adgo.js";import{u as Ea,a as Sa,g as _a,o as En,i as La,s as Sn,j as _n,c as Ln,r as In,d as jn,f as Nn,e as Mn,k as Rn,D as An,T as Cn,S as Dn,l as On,m as Bn,q as Fn,p as Ia,P as Hn,b as Wn}from"./swapQuoteAmountScale-BHEiAZEA.js";import{r as Un,i as Qn,e as qn,f as Kn,a as Gn,d as $n,w as ja,h as Vn}from"./cw20RouteSolveQuote-BVd4viNm.js";import{m as Yn}from"./router-BErPpNVG.js";import{S as Xn}from"./SlippageProtectionPresets-Br8GMPIr.js";import{c as zn}from"./maxSpendableAmount-BvCLCiPc.js";import{T as rs,a as Jn}from"./tradeMoneyCta-BqYfEz33.js";import{T as ns}from"./TerraBroadcastPendingLink-Vse9zMjt.js";import{g as Na}from"./formatDate-xE6GHMnd.js";import{T as Zn,a as ei,b as ti,c as ai,d as si}from"./TradeMarketDataUnavailableNotice-9psxRUhv.js";import{d as is,e as ri}from"./swapQueryParams-DkpFjW1S.js";import{T as ni}from"./TradesTable-cETfRhte.js";import{d as ii}from"./marketDataOutage-CSM9G4E6.js";import{r as Ma}from"./pairPriceUsd-DTVMx4ks.js";import"./crypto-DTQ8O1tF.js";import"./portalListboxKeyboard-BYs_b1ri.js";import"./optionTapStability-VIlosc_P.js";import"./limitOrderFeeSummary-Cj74fAt9.js";import"./settings-DejRaJEO.js";import"./feeDiscount-CBa2bpDg.js";import"./rawAmountMath-9hhNpi9Z.js";import"./formatProtocolStats-Cz7qkP4v.js";import"./assetCodeIdFreeze-XeKhgBZB.js";import"./ust1Window-Dl_c3RuF.js";import"./ust1WindowGates-Dd_ZmY3M.js";import"./communityTaxToken-43ErYx5N.js";const oi="trade-ticket-submit-footer";function li({children:e}){return t.jsx("div",{className:"trade-ticket-submit-footer","data-testid":oi,children:e})}function os({model:e}){return t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:rs,disabled:e.disabled,"data-testid":"trade-market-submit",onClick:e.onClick,children:e.label}),t.jsx(ns,{phase:e.phase,txHash:e.pendingTxHash}),e.isError&&e.errorMessage!=null&&t.jsx(We,{type:"error",message:e.errorMessage}),e.isSuccess&&t.jsx(We,{type:"success",message:"Market swap confirmed.",txHash:e.successTxHash})]})}function Ra(e,a){if(e?.willSubmitHybrid)return{pool_input:e.poolRaw,book_input:e.bookRaw,max_maker_fills:a,book_
1start_hint:null}}function ci({pairAddr:e,selectedPair:a,pairs:s,side:n,isPaused:l,dockSubmit:i=!1,interactive:o=!0,onSubmitChromeChange:d,initialAmountHuman:c=null}){qa();const u=et(h=>h.address),v=et(h=>h.openWalletModal),j=Zt(),f=!!u&&!!j,D=ea(),{slippageTolerance:T,setSlippageTolerance:ne,deadlineSeconds:Qe}=yn(),F=r.useId(),L=r.useId(),[I,C]=r.useState(()=>c&&Vt(c)?c:""),[te,g]=r.useState(""),[q,Me]=r.useState(8),[Re,tt]=r.useState(!1),Te=Qt(te,qt),U=Qt(q,qt),W=a?Pe(a.asset_infos[0]):"",qe=a?Pe(a.asset_infos[1]):"",m=n==="bid"?qe:W,z=Ea(m?.startsWith("terra1")?m:null),M=n==="bid"?W:qe,Ee=Ea(M?.startsWith("terra1")?M:null),R=Sa(m,{lcdEnabled:!!m?.startsWith("terra1")}),Ke=Sa(M,{lcdEnabled:!!M?.startsWith("terra1")}),k=R.decimals,K=Ke.decimals,ye=k!=null&&K!=null,ie=R.pending||Ke.pending,P=I.trim()&&k!=null?Nt(I.trim(),k):"0",Ge=Qt(I,qt),G=Ge.trim()&&k!=null?Nt(Ge.trim(),k):"0",E=Yt(u,m),oe=Ka(u),Q=r.useMemo(()=>_a({isDirect:!0,fromToken:m,bookInputHuman:te,rawInputAmount:P,hybridMaxMakers:q,payDecimals:k}),[m,te,P,q,k]),le=Ra(Q,q),_=r.useMemo(()=>_a({isDirect:!0,fromToken:m,bookInputHuman:Te,rawInputAmount:G,hybridMaxMakers:U,payDecimals:k}),[m,Te,G,U,k]),Se=Ra(_,U),dt=!!_?.willSubmitHybrid,at=r.useMemo(()=>!E.data||P==="0"||k==null?{human:"0",spendableRaw:0n,cappedByGas:!1,reserveUluna:0n}:zn({balanceRaw:E.data,decimals:k,assetIsNativeUluna:!1,context:"book_leg",payAmountRaw:P}),[E.data,k,P]),ce=r.useMemo(()=>k==null?{canPlaceLimit:!1,userMessage:null,tone:"none"}:Mt(I,k,{data:E.data,isLoading:E.isLoading,isError:E.isError}),[I,k,E.data,E.isLoading,E.isError]),ae=r.useMemo(()=>(T/100).toString(),[T]),se=r.useMemo(()=>u?{trader:u}:void 0,[u]),y=Ue({queryKey:["tradeMarketSim",e,n,G,k,K,Te,U,T,u,Ee.buyBps??null],placeholderData:Br,queryFn:async({signal:h})=>{if(!a||G==="0")throw new Error("missing");const X=G,Oe=bt(m),fe=bt(M);if(Se&&dt){if(_?.bookExceedsPay)throw new Error("Book leg cannot exceed pay amount");const S=await Fn({pairAddress:a.contract_addr,fromToken:m,toToken:M,offerAssetInfo:Oe,askAssetInfo:fe,simRaw:X,hybrid:Se,maxSpreadStr:ae,quoteTrader:se});return ja({return_amount:S.return_amount,spread_amount:S.spread_amount,commission_amount:S.commission_amount,quoteDisclosure:Ia(S.indexerQuoteKind),indexerQuoteKind:S.indexerQuoteKind,indexerOperations:S.indexerOperations,routePreflight:S.routePreflight,indexerAmountReconciled:S.indexerAmountReconciled},Ee.buyBps)}if(m.startsWith("terra1")&&M.startsWith("terra1"))try{const S=await Vn({fromToken:m,toToken:M,simRaw:X,maxMakerFills:U,slippageTolerancePercent:T,maxSpreadStr:ae,quoteTrader:se,signal:h});if(S)return{return_amount:S.return_amount,executeAmountOut:S.executeAmountOut,spread_amount:S.spread_amount,commission_amount:S.commission_amount,quoteDisclosure:Ia(S.indexerQuoteKind),indexerQuoteKind:S.indexerQuoteKind,indexerOperations:S.indexerOperations,routePreflight:S.routePreflight,routeSlippagePercent:S.routeSlippagePercent}}catch{}const Ie=await Wr(a.contract_addr,Oe,X,se);return ja({...Ie,quoteDisclosure:Hn},Ee.buyBps)},enabled:ye&&!!a&&e.startsWith("terra1")&&m.startsWith("terra1")&&M.startsWith("terra1")&&G!=="0",refetchInterval:Tn}),de=r.useMemo(()=>Ta(y.data?.indexerOperations),[y.data?.indexerOperations]),be=r.useMemo(()=>En(y.data?.indexerOperations,le??de??void 0),[y.data?.indexerOperations,le,de]),w=r.useMemo(()=>{const h=y.data?.indexerOperations,X=!!(le??de);return h&&h.length>=2?La({isDirectWrap:!1,needsWrapInput:!1,hopCount:h.length,cw20RouterOperations:h}):La({isDirectWrap:!1,needsWrapInput:!1,hopCount:1,cw20DirectPair:!0,cw20Hybrid:X})},[y.data?.indexerOperations,le,de]),Ae=r.useMemo(()=>{if(!f||!u||!m.startsWith("terra1"))return null;const h=y.data?.indexerOperations,X=Sn({hints:{isDirectWrap:!1,needsWrapInput:!1,hopCount:h&&h.length>=2?h.length:1,cw20RouterOperations:h&&h.length>=2?h:void 0,cw20DirectPair:!h||h.length<2,cw20Hybrid:!!(le??de)},payContract:m,payAmount:P,pairContract:a?.contract_addr,maxSpread:(T/100).toString()});return X?{signer:u,entries:X}:null},[f,u,m,P,a?.contract_addr,T,y.data?.indexerOperations,le,de]),ue=_n(w,Ae),H=r.useMemo(()=>{const h=ue.feeUluna-w.feeUluna;return h>0n?be+h:be},[ue.feeUluna,w.feeUluna,be]),Ce=r.useMemo(()=>k==null?{canPlaceLimit:!1,userMessage:null,tone:"none"}:ga(I,k,{data:oe.data,isLoading:oe.isLoading,isError:oe.isError},H,"hybrid swap"),[I,k,oe.data,oe.isLoading,oe.isError,H]),st=ce.canPlaceLimit&&Ce.canPlaceLimit,_e=ce.userMe
1ssage?ce:Ce,b=y.data?.routePreflight?.anyHopExceedsMaxSpread===!0,J=Un(y.data?.routeSlippagePercent,y.data?.routePreflight?.worstSpreadPercent??null),p=Qn({routeSlippagePct:J,worstHopPercent:y.data?.routePreflight?.worstSpreadPercent}),O=Bn(J),ke=r.useMemo(()=>({bookInputHuman:Te,hybridMaxMakers:U}),[Te,U]),{submitPayRaw:Z,simData:me,minReceived:we,isSubmitReady:ut,snapshottedHybrid:rt}=Ln({rawInputAmount:P,debouncedRawInputAmount:G,simQuery:y,slippageTolerance:T,extraSubmitBlocked:b||!!Q?.bookExceedsPay||O,hybrid:{enabled:!0,live:{bookInputHuman:te,hybridMaxMakers:q},snapshotted:ke}}),nt=Os(me?.indexerOperations?.length),N=Bs({payIsTax:z.isTaxToken,receiveIsTax:Ee.isTaxToken,sellBps:z.sellBps}),V=r.useMemo(()=>u&&m.startsWith("terra1")?In({wallet:u,payToken:m,usesRouter:nt,directPairAddr:a?.contract_addr,routeOps:me?.indexerOperations,pairs:s,maxSpread:ae}):null,[u,m,nt,a?.contract_addr,me?.indexerOperations,s,ae]),Le=jn({token:m?.startsWith("terra1")?m:null,amount:P,enabled:z.isTaxToken&&z.sellBps!=null&&z.sellBps>0,previewQuery:V}),pe=Fs({declaredRaw:Lt(P),balanceRaw:E.data!==void 0?Lt(E.data):null,debitRaw:Le.debitRaw,sellBps:da(z.sellBps),extraDebitUnresolved:z.extraDebitUnresolved||Le.previewUnresolved,isNativePay:!m?.startsWith("terra1")}),$=as({toastSuccess:"Market swap submitted.",mutationFn:async()=>{if(!u||!a)throw new Error("Connect wallet");if(k==null||K==null)throw new Error("Token decimals unavailable");if(!m.startsWith("terra1"))throw new Error("Market swap requires CW20 pay token");if(pe.blockSubmit)throw new Error(pe.insufficientBalance?"Insufficient Balance":Hs);if(bn(P,G),rt&&kn({bookInputHuman:te,hybridMaxMakers:q},rt),!me)throw new Error("Quote unavailable");const h=Z,X=we,Oe=Mt(I,k,E);if(!Oe.canPlaceLimit)throw Oe.userMessage?new Error(Oe.userMessage):new Error("Enter amount");if(h==="0")throw new Error("Enter amount");const fe=ga(I,k,oe,H,"hybrid swap");if(!fe.canPlaceLimit)throw fe.userMessage?new Error(fe.userMessage):new Error("Insufficient LUNC for gas");const Ie=ae,S=Math.floor(Date.now()/1e3)+Qe,Be=me.indexerOperations;return cn(u,m,a.contract_addr,h,async()=>{if(wn(Be)){const Xe=await qn(Be,h,T,u?{trader:u}:void 0);return Yn(u,m,h,Xe,Ie,X??void 0,void 0,S)}let ve=Ta(Be)??Se??void 0;ve&&(ve=dn(ve));const Ct=ve&&BigInt(ve.book_input)>0n?await Kn(a.contract_addr,bt(m),h,ve,T,se):void 0;return Hr(u,m,a.contract_addr,h,void 0,Ie,void 0,{hybrid:ve,minReturn:Ct,deadline:S})})},onSuccess:()=>{ee.playSuccess(),C(""),D.invalidateQueries({queryKey:["tokenBalance"]}),D.invalidateQueries({queryKey:["pool"]}),D.invalidateQueries({queryKey:["tradeMarketSim"]}),D.invalidateQueries({queryKey:["limitBookPage"]}),D.invalidateQueries({queryKey:["tradeBestBook"]})},onError:()=>ee.playError()}),B=r.useMemo(()=>Nn(y.data?.indexerQuoteKind),[y.data?.indexerQuoteKind]),wt=r.useMemo(()=>vn({fromToken:m,toToken:M,isWrapOrUnwrap:!1,nativeRouteInfo:null,indexerOperations:y.data?.indexerOperations,clientRoute:null,isMultiHop:!1,isDirect:!0,displaySymbol:he}),[m,M,y.data?.indexerOperations]),ge=r.useMemo(()=>Mn({routeOps:y.data?.indexerOperations,pairs:s,directPair:a,fromToken:m,toToken:M}),[y.data?.indexerOperations,s,a,m,M]),Rt=O?"â":me?.return_amount!=null&&me.return_amount!==""&&K!=null?ua(me.return_amount,K,6):"â",Y=O?"â":we!=null&&we!==""&&K!=null?ua(we,K,6):"â",mt=!!y.data&&!y.isPlaceholderData,De=Pn(y.isFetching,mt,y.isPlaceholderData,P!==G),$e=Vt(I),it=Rn({walletConnected:f,address:u,hasPositivePay:$e&&ye,hasSettledQuote:mt&&ye,payAsset:m,paySymbol:he(m),payDecimals:k??6,payRaw:Lt(P),payBalanceRaw:f&&E.data!==void 0?Lt(E.data):null,expectedSlippagePct:J}),Ve=Gn(it,mt),pt=f&&!l&&ye&&st&&!$.isPending&&!!a&&P!=="0"&&ut&&!pe.blockSubmit,vt=f?pe.insufficientBalance?"Insufficient Balance":$e&&!ye?ie?"Loading decimalsâ¦":"Token decimals unavailable":ss($.phase,$.isPending,b?"Hop spread exceeds slippage protection":O?"Slippage is too high":Q?.bookExceedsPay?"Book leg exceeds pay":`Market ${n==="bid"?"buy":"sell"}`,"Submittingâ¦"):"Connect Wallet",Pt=$.mutate,Ye=$.phase,Tt=$.pendingTxHash,ot=$.isError,ft=$.isError?ma($.error):null,At=$.isSuccess,lt=$.data,Et=r.useMemo(()=>({canSubmit:pt,disabled:f?!pt:l,label:vt,onClick:()=>{o&&(f?Pt():v())},phase:Ye,pendingTxHash:Tt,isError:ot,errorMessage:ft,isSuccess:At,successTx
1Hash:lt}),[pt,l,vt,o,f,v,Pt,Ye,Tt,ot,ft,At,lt]);return r.useLayoutEffect(()=>{if(i)return d?.(Et),()=>d?.(null)},[i,d,Et]),a?t.jsxs("div",{className:"space-y-3",children:[t.jsx(za,{compact:!0,escrowLabel:he(m||"â"),escrowDecimals:k,amountHuman:I,onAmountChange:C,balanceQuery:E,onMax:C,walletConnected:f,maxContext:"market_swap",assetIsNativeUluna:m==="uluna",marketUsesHybrid:!0,extraDebitSellBps:da(z.sellBps)}),N&&t.jsx("p",{className:"text-[10px]",style:{color:"var(--ink-dim)"},"data-testid":"trade-sell-tax-extra",children:N}),(y.isLoading||De)&&P!=="0"&&t.jsxs("div",{className:"flex items-center gap-2 text-[10px]",style:{color:"var(--ink-dim)"},role:"status","aria-live":"polite","aria-atomic":"true","data-testid":"trade-market-quoting",children:[t.jsx(Ga,{}),"Quotingâ¦"]}),y.isError&&P!=="0"&&!De&&t.jsx("p",{className:"text-[10px] alert-error",role:"alert","data-testid":"trade-market-quote-error",children:ma(y.error)}),Q?.bookExceedsPay&&t.jsx("p",{className:"text-[10px] alert-error",role:"alert","data-testid":"trade-market-book-exceeds-pay",children:"Book leg cannot exceed pay amount"}),y.data&&P!=="0"&&t.jsxs("div",{className:"flex justify-between gap-2 text-[10px]","data-testid":"trade-market-quote",children:[t.jsx("span",{style:{color:"var(--ink-dim)"},children:"Expected receive"}),t.jsx("span",{className:"font-mono text-right","data-testid":"trade-market-expected-receive",children:De?t.jsx("span",{className:"animate-pulse",style:{color:"var(--ink-subtle)"},children:"Quotingâ¦"}):t.jsxs(t.Fragment,{children:[Rt," ",he(M)]})})]}),Ve&&y.data&&P!=="0"&&t.jsx("p",{"data-testid":"trade-market-quote-only",className:"text-[10px]",style:{color:"var(--ink-subtle)"},children:"Quote only"}),t.jsxs("div",{"data-testid":"trade-market-advanced","data-open":Re?"true":"false",children:[t.jsx("button",{type:"button",className:"cursor-pointer text-[11px] font-semibold uppercase tracking-wide text-left w-full",style:{color:"var(--cyan)"},"data-testid":"trade-market-advanced-toggle","aria-expanded":Re,onClick:()=>tt(h=>!h),children:"Advanced"}),Re&&t.jsxs("div",{className:"mt-2 space-y-2 border-t border-white/10 pt-2",children:[t.jsx(Xn,{selectedPercent:T,onSelect:h=>{ee.playButtonPress(),ne(h)},chipClassName:Jn,groupTestId:"trade-market-slippage-presets",presetTestIdPrefix:"trade-market-slippage-preset-",labelClassName:"text-[10px]",labelStyle:{color:"var(--ink-dim)"},showColon:!0}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("p",{className:"text-[10px] leading-snug",style:{color:"var(--ink-dim)"},"data-testid":"trade-market-hybrid-min-return-notice",children:"Quotes always use the indexer solver for a price-optimal split. Type a book leg only to override. Min return applies to the combined payout."}),t.jsxs("div",{children:[t.jsxs("label",{className:"label-glass text-[10px]",htmlFor:F,children:["Book leg override (",he(m),")"]}),t.jsx("input",{id:F,type:"text",inputMode:"decimal",className:"input-glass !text-xs w-full font-mono",value:te,onChange:h=>{const X=h.target.value;Ws(X)&&g(X)},placeholder:"0.0","data-testid":"trade-market-book-leg-input"}),f&&m.startsWith("terra1")&&k!=null&&t.jsx(rn,{balanceQuery:E,decimals:k,walletConnected:f,compact:!0,spendableRaw:at.spendableRaw,onMax:()=>g(at.human),testIdMax:"trade-market-book-leg-max"})]}),t.jsxs("div",{children:[t.jsxs("label",{className:"label-glass text-[10px]",htmlFor:L,children:["Max makers",t.jsx("span",{className:"ml-1 cursor-help opacity-70",title:"Caps resting limits one swap can fill; remainder goes to the pool.",children:"â"})]}),t.jsx("input",{id:L,type:"number",className:"input-glass !text-xs w-full",min:1,max:256,value:q,onChange:h=>Me(Number(h.target.value)||8),"data-testid":"trade-market-max-makers"})]})]}),y.data&&P!=="0"&&t.jsxs("div",{className:"space-y-1 text-[10px]","data-testid":"trade-market-quote-extras",children:[!Ve&&t.jsxs("div",{className:"flex justify-between gap-2",children:[t.jsx("span",{style:{color:"var(--ink-dim)"},children:"Min. after slippage"}),t.jsx("span",{className:"font-mono text-right",children:De?t.jsx("span",{style:{color:"var(--ink-subtle)"},children:"â"}):t.jsxs(t.Fragment,{children:[Y," ",he(M)]})})]}),t.jsx("p",{style:{color:"var(--ink-subtle)"},children:y.data.quoteDisclosure}),y.data.indexerAmountReconciled&&t.jsx("p",{"data-testid":"trade-market-amount-reconciled",
1style:{color:"var(--color-warning, #f59e0b)"},role:"status",children:An}),B.show&&t.jsxs("div",{className:"pt-1 border-t border-white/10",children:[t.jsx("p",{className:"font-semibold uppercase tracking-wide text-[10px]",children:B.title}),t.jsx("p",{style:{color:B.degraded?"var(--color-warning, #f59e0b)":"var(--ink-dim)"},children:B.line})]}),p?.kind==="route"?t.jsxs("p",{style:{color:"var(--ink-dim)"},"data-testid":"trade-market-impact-aside",children:["Expected slippage ",p.percent,"%."]}):p?.kind==="worst_hop"?t.jsxs("p",{style:{color:"var(--ink-dim)"},"data-testid":"trade-market-impact-aside",children:["Worst hop spread (sim): ",p.percent,"%"]}):null,t.jsx(Cn,{estimate:ue,compact:!0,"data-testid":"trade-market-network-fee"}),wt&&t.jsxs("div",{"data-testid":"trade-market-route-summary",className:"flex flex-col gap-0.5 sm:flex-row sm:items-start sm:justify-between pt-1 border-t border-white/10",style:{color:"var(--ink-dim)"},children:[t.jsx("span",{className:"uppercase text-[10px] tracking-wide font-medium shrink-0",children:"Route"}),t.jsx("span",{className:"font-mono text-[10px] sm:text-right break-words min-w-0",children:wt})]})]}),y.data&&P!=="0"&&m&&M&&!De&&t.jsx(Dn,{actionLabel:"Market swap",offerSymbol:he(m),receiveSymbol:he(M),offerAmountHuman:k!=null?Ht(P,k):"â",receiveAmountHuman:!O&&me?.return_amount&&K!=null?Ht(me.return_amount,K):"â",maxSpreadPercent:T,minReceiveHuman:!Ve&&!O&&we&&K!=null?Ht(we,K):null,pairContractAddresses:ge,chainFullLabel:Us().fullLabel,"data-testid":"trade-market-pre-submit-summary"})]})]}),t.jsx(On,{guidance:it,testIdPrefix:"trade-market",hideReduce:$n($.phase),onReduce:h=>C(h)}),t.jsx(Xt,{gate:it.kind.startsWith("insufficient")&&_e.userMessage===nr?{..._e,userMessage:null}:_e,"data-testid":"trade-market-place-guard"}),!i&&t.jsx(os,{model:Et})]}):null}const Kt=[251,146,60],Aa=.16,ta="rgba(255, 255, 255, 0.025)",di=18,ui=48;function xe(e){return Number.isFinite(e)?Math.max(0,Math.min(255,Math.round(e))):0}function zt(e,a,s){const n=l=>{const i=l/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*n(e)+.7152*n(a)+.0722*n(s)}function mi(e){let a=2166136261;for(let n=0;n<e.length;n++)a^=e.charCodeAt(n),a=Math.imul(a,16777619);let s=(a>>>0)%360;return s>=di&&s<=ui&&(s=(s+55)%360),s}function pi(e,a,s){const n=Math.max(0,Math.min(1,a)),l=Math.max(0,Math.min(1,s)),i=(1-Math.abs(2*l-1))*n,o=(e%360+360)%360/60,d=i*(1-Math.abs(o%2-1));let c=0,u=0,v=0;o<1?(c=i,u=d):o<2?(c=d,u=i):o<3?(u=i,v=d):o<4?(u=d,v=i):o<5?(c=d,v=i):(c=i,v=d);const j=l-i/2;return[xe((c+j)*255),xe((u+j)*255),xe((v+j)*255)]}function fi(e,a,s){let n=xe(e),l=xe(a),i=xe(s);const o=zt(n,l,i),d=.22,c=.58;if(o<d||o>c){const u=o<d?d:c,v=o<1e-6?1:u/o;n=xe(n*v),l=xe(l*v),i=xe(i*v),zt(n,l,i)>c&&(n=xe(n*.72),l=xe(l*.72),i=xe(i*.72))}return n===Kt[0]&&l===Kt[1]&&i===Kt[2]&&(n=56,l=120,i=196),[n,l,i]}function ls(e,a,s,n=Aa){const[l,i,o]=fi(e,a,s),d=Number.isFinite(n)?Math.max(.08,Math.min(.22,n)):Aa;return`rgba(${l}, ${i}, ${o}, ${d})`}function cs(e){return`radial-gradient(circle at 20% 0%, ${e}, transparent 34%), ${ta}`}function xi(e){if(!e)return ta;const[a,s,n]=pi(mi(e),.42,.42);return cs(ls(a,s,n))}function hi(e){try{const a=document.createElement("canvas"),s=32,n=32;a.width=s,a.height=n;const l=a.getContext("2d",{willReadFrequently:!0});if(!l)return null;l.drawImage(e,0,0,s,n);const i=l.getImageData(0,0,s,n).data;let o=0,d=0,c=0,u=0;for(let v=0;v<i.length;v+=4){if(i[v+3]<24)continue;const f=i[v],D=i[v+1],T=i[v+2],ne=zt(f,D,T);ne>.92||ne<.06||(o+=f,d+=D,c+=T,u++)}return u<8?null:ls(o/u,d/u,c/u)}catch{return null}}function gi(e,a){const s=r.useMemo(()=>xi(e),[e]),[n,l]=r.useState(null);return r.useEffect(()=>{if(l(null),!e)return;const i=fn(a);if(!i)return;let o=!1;const d=new Image;return d.crossOrigin="anonymous",d.onload=()=>{if(o)return;const c=hi(d);!o&&c&&l(cs(c))},d.onerror=()=>{},d.src=i,()=>{o=!0,d.onload=null,d.onerror=null}},[e,a]),e?n??s:ta}const yi=`${Vs}/limit-orders.md`;function ds({pairAddr:e,pairs:a,pairsLoading:s,indexerPair:n,latestTrade:l,tapeHeadlineUsd:i,factoryTapeHeadlineUsd:o,displayInverted:d=!1,onToggleDisplayInvert:c,invertAriaLabel:u,cancelLimitOrderMutation:v,limitBookDraftKey:j=0,limitBookDraft:f,onLim
1itBookDraftConsumed:D,interactive:T=!0,initialMarketAmount:ne=null,initialSide:Qe=null}){const[F]=qa(),L=et(x=>x.address),I=et(x=>x.openWalletModal),C=()=>{T&&I()},te=Zt(),g=!!L&&!!te,q=ea(),Me=r.useId(),Re=r.useId(),tt=r.useRef(null),[Te,U]=r.useState(null),[W,qe]=r.useState(Qe==="ask"?"ask":"bid"),[m,z]=r.useState("market"),[M,Ee]=r.useState(null),R=r.useId(),Ke=`${R}-limit-tab`,k=`${R}-market-tab`,K=`${R}-limit-panel`,ye=`${R}-market-panel`,[ie,P]=r.useState("1"),Ge=r.useRef(e),G=r.useRef(d),{maxSteps:E,setMaxSteps:oe,expiresAt:Q,setExpiresAt:le,amountHuman:_,escrowAmountSource:Se,onLimitAmountInputChange:dt,onLimitAmountMax:at,resetLimitEscrowAmount:ce,setLimitEscrowAmountFromDraft:ae,setLimitEscrowAmountFromMaxReapply:se,limitAdvancedOpen:y,setLimitAdvancedOpen:de}=ir(),[be,w]=r.useState(""),[Ae,ue]=r.useState(null),[H,Ce]=r.useState(null),[st,_e]=r.useState(null),b=r.useMemo(()=>a.find(x=>x.contract_addr===e),[a,e]),J=r.useMemo(()=>b?d?b.asset_infos[1]:b.asset_infos[0]:null,[b,d]),p=hn(J),O=J?"token"in J?J.token.contract_addr:J.native_token.denom:"",ke=gi(O,p.logoURI),{refToken1PerToken0:Z,refSource:me,refResolutionLoading:we,refResolutionError:ut}=or({pairAddr:e,selectedPair:b,indexerPair:n,latestTrade:l}),rt=b?Pe(b.asset_infos[0]):"",nt=b?Pe(b.asset_infos[1]):"",N=Xs(W,d),V=pa(ie,d)??ie,Le=Ur(n),pe=N==="bid"?nt:rt,$=N==="bid"?rt:nt,B=pe?fa(bt(pe)):6,wt=$?fa(bt($)):6,ge=Yt(L,pe),Rt=Yt(L,$),Y=Ka(L),mt=r.useMemo(()=>{const x=ya(_);if(x==null)return null;const A=ba(x,N==="ask",Z,o??i);return A==null||!Number.isFinite(A)?null:`$${xa(A,4,F)}`},[_,N,Z,o,i,F]),De=r.useCallback(x=>{x!==W&&(qe(x),Se==="max"?se(""):ce())},[W,Se,se,ce]);lr({escrowAmountSource:Se,balanceQuery:ge,escrowDecimals:B,assetIsNativeUluna:pe==="uluna",limitPlaceRungCount:1,limitPlaceMaxAdjustSteps:E,setLimitEscrowAmountFromMaxReapply:se});const $e=r.useMemo(()=>un(1,E),[E]),it=r.useMemo(()=>mn(E),[E]),{effectiveFeeBps:Ve,makerPlacementFeeBps:pt,feeLoading:vt,feeError:Pt}=cr(e,L??void 0),Ye=r.useMemo(()=>dr({side:N,escrowAmountHuman:_,escrowDecimals:B,priceHuman:V,effectiveFeeBps:Ve}),[N,_,B,V,Ve]),Tt=r.useMemo(()=>{const x=Ye!=null?ya(Ye):null;if(x==null)return null;const A=ba(x,N==="bid",Z,o??i);return A==null||!Number.isFinite(A)?null:`$${xa(A,4,F)}`},[Ye,N,Z,o,i,F]),ot=Ue({queryKey:["limitPlacements",e,L],queryFn:()=>va(L,{pair:e,limit:100}),enabled:e.startsWith("terra1")&&!!L}),ft=ur(e),lt=Ue({queryKey:["pairPaused",e],queryFn:()=>Za(e),enabled:e.startsWith("terra1"),staleTime:15e3}).data?.paused===!0,h=on({pairAddress:e,enabled:e.startsWith("terra1")}).isFrozen,X=b&&"token"in b.asset_infos[0]?b.asset_infos[0].token.contract_addr:null,Oe=b&&"token"in b.asset_infos[1]?b.asset_infos[1].token.contract_addr:null,fe=nn({wallet:L,token0:X,token1:Oe,pairAddress:e,enabled:e.startsWith("terra1")}),Ie=lt||h||fe.blocked,{bestBid:S,bestAsk:Be}=mr(e,Le),ve=pr(e,N),Ct=r.useMemo(()=>{const{orders:x,hasMore:A}=fr(ve.data?.pages);return xr(N,V,x,{hasMore:A},Le)},[ve.data?.pages,N,V,Le]),Xe=r.useMemo(()=>Wt(N,V,S,Be),[N,V,S,Be]),xt=r.useMemo(()=>ka(N,V,Z,{refResolutionLoading:we,refResolutionError:ut}),[N,V,Z,we,ut]),St=r.useMemo(()=>Mt(_,B,{data:ge.data,isLoading:ge.isLoading,isError:ge.isError}),[_,B,ge.data,ge.isLoading,ge.isError]),Dt=r.useMemo(()=>Ut(_,B,{data:Y.data,isLoading:Y.isLoading,isError:Y.isError},$e),[_,B,Y.data,Y.isLoading,Y.isError,$e]),_t=r.useMemo(()=>{if(Q===null)return null;const x=Math.floor(Date.now()/1e3);return Q<=x?"Expiry must be in the future.":null},[Q]),gs=St.canPlaceLimit&&Dt.canPlaceLimit&&xt.canPlaceLimit&&!Xe&&!_t&&!H,Fe=r.useMemo(()=>hr(H,{side:W,price:ie,amountHuman:_,expiresAt:Q}),[H,W,ie,_,Q]),aa=r.useMemo(()=>H?H.side!==W||H.amountHuman!==_.trim()||(Q??null)!==H.expiresAt:!1,[H,W,_,Q]),Ot=r.useMemo(()=>Ut("",B,{data:Y.data,isLoading:Y.isLoading,isError:Y.isError},it),[B,Y.data,Y.isLoading,Y.isError,it]),ys=Fe&&xt.canPlaceLimit&&!Xe&&Ot.canPlaceLimit,bs=r.useMemo(()=>
1_t?{canPlaceLimit:!1,userMessage:_t,tone:"warning"}:Xe?{canPlaceLimit:!1,userMessage:Xe,tone:"warning"}:xt.canPlaceLimit?St.userMessage?St:Dt:xt,[_t,Xe,xt,St,Dt]),Bt=r.useMemo(()=>ot.data??[],[ot.data]),ks=r.useMemo(()=>Bt.map(x=>x.order_id),[Bt]),{byOrderId:ws}=gr(e,ks),vs=yr(L??void 0,e),Ps=br(e),Ft=parseInt(be,10),sa=Number.isFinite(Ft)&&Ft>=1&&Qs(ft.data??[],Ft),He=v,je=kr(e,L??void 0),ra=r.useCallback(()=>{Ce(null),_e(null)},[]),re=as({toastSuccess:"Limit order placed.",mutationFn:async()=>{if(!L)throw new Error("Connect wallet");if(!b)throw new Error("Select a pair");if(!pe.startsWith("terra1"))throw new Error("Escrow token must be CW20");const x=Wt(N,V,S,Be);if(x)throw new Error(x);const A=Mt(_,B,ge);if(!A.canPlaceLimit)throw A.userMessage?new Error(A.userMessage):new Error("Enter amount");const Ne=Ut(_,B,Y,$e);if(!Ne.canPlaceLimit)throw Ne.userMessage?new Error(Ne.userMessage):new Error("Insufficient LUNC for gas");const Je=ka(N,V,Z,{refResolutionLoading:we,refResolutionError:ut});if(!Je.canPlaceLimit)throw new Error(Je.userMessage??"Invalid limit price for this side.");const Ze=Nt(_,B);if(Ze==="0")throw new Error("Enter amount");if(BigInt(Ze)<BigInt(gn))throw new Error(vr);return Qr(L,pe,b.contract_addr,Ze,N,V,E,Q,Ct,Le)},onSuccess:async()=>{ee.playSuccess(),ce(),q.invalidateQueries({queryKey:["limitPlacements"]}),q.invalidateQueries({queryKey:["tokenBalance"]}),q.invalidateQueries({queryKey:["limitBookPage",e]}),q.invalidateQueries({queryKey:["tradeBestBook",e]}),q.invalidateQueries({queryKey:["limitOrderPricePoolRef",e]}),ue(null);const x=e,A=L;if(!(!x.startsWith("terra1")||!A))for(let Ne=0;Ne<24;Ne++){await new Promise(Je=>setTimeout(Je,500));try{const Ze=(await va(A,{pair:x,limit:100})).reduce((Ns,Ms)=>Math.max(Ns,Ms.order_id),0);if(Ze>0){ue(Ze),w(String(Ze));break}}catch(Je){wr(Je)}}},onError:()=>ee.playError()}),Ts=()=>{if(!T)return;if(!g){C();return}if(!H)return;if(Wt(N,V,S,Be)){je.reset();return}je.mutate({orderId:H.orderId,price:V,maxAdjustSteps:E,hintAfterOrderId:st,limitPriceScale:Le},{onSuccess:()=>{ra(),re.reset()}})},Es=()=>{if(!g){C();return}const x=parseInt(be,10);He.mutate(x,{onSuccess:()=>{w(""),ue(null)}})},Ss=()=>{requestAnimationFrame(()=>{const x=document.getElementById(Me);x instanceof HTMLInputElement&&(x.focus(),x.select())})},_s=()=>{ee.playButtonPress();const x=Ae;if(x!=null){const A=document.querySelector(`[data-testid="trade-placement-active-${x}"]`);if(A){A.scrollIntoView({behavior:"smooth",block:"nearest"}),U(x),window.setTimeout(()=>U(null),2600);return}}tt.current?.scrollIntoView({behavior:"smooth",block:"nearest"})},Ls=()=>{ee.playButtonPress(),re.reset(),je.reset(),ra(),ce(),P("1"),le(null),oe(pn),de(!1),ue(null),w(""),U(null),z("limit"),Ss()};if(r.useEffect(()=>{a.forEach(x=>{const A=Pe(x.asset_infos[0]),Ne=Pe(x.asset_infos[1]);A.startsWith("terra1")&&ha(A),Ne.startsWith("terra1")&&ha(Ne)})},[a]),r.useEffect(()=>{ue(null)},[e]),r.useEffect(()=>{if(Ge.current!==e){Ge.current=e,G.current=d;return}G.current!==d&&(G.current=d,P(x=>pa(x,!0)??x))},[d,e]),r.useEffect(()=>{!f||j<1||(z("limit"),qe(qs(f.side,d)),P(Ks(f.price,d)??f.price),ae(f.amountHuman),Ce(Pr(f)),_e(f.hintAfterOrderId??null),D?.())},[j,f,D,ae,d]),s)return t.jsx("div",{className:"flex justify-center py-12 card-glass",children:t.jsx(Ga,{})});const na=n?.asset_0.symbol??he(rt||"Base"),ia=n?.asset_1.symbol??he(nt||"Quote"),ze=d?ia:na,ht=d?na:ia,oa=d?Gs(Z):Z,{bidLabel:la,askLabel:ca}=Ar(ze),gt=W==="bid"?{verb:"Buy",receive:ze,pay:ht}:{verb:"Sell",receive:ht,pay:ze},Is=()=>{c?.()},js=J&&"native_token"in J?J.native_token.denom:void 0;return t.jsxs("div",{className:"flex flex-col h-full min-h-0 overflow-hidden card-glass !p-0","data-testid":"trade-order-ticket-card",children:[t.jsx("div",{className:"shrink-0 p-4 border-b border-white/10",style:{background:ke},"data-testid":"trade-ticket-header",children:t.jsxs("div",{className:"flex items-start gap-2 min-w-0",children:[b?t.jsx("span",{className:"shrink-0 mt-0.5","data-testid":"trade-ticket-heading-logo",children:t.jsx(xn,{addressForBlockie:p.addressForBlockie,blockieSeed:js,logoURI:p.logoURI,size:22})}):null,t.jsx("h3",{className:"trade-ticket-heading min-w-0 flex-1 text-base font-semibold font-heading",style:{color:"var(--ink)"},"data-testid":"trade-ticket-heading",children:b?`${gt.verb} ${ze}`:"Select a pair"}),b&&c&&t.jsx(tn,{ariaLabel:u??`Show ${ht} / ${ze} pricing`,onToggle:Is})]})}),t.jsxs("div",{className:"trade-order-ticket-scroll flex flex-1 flex-col gap-3 min-h-0 overflow-y-auto","data-testid":"trade-order-ticket-scroll",children:[b&<&&t.jsxs("div",{className:"alert-error text-xs space-y-2",role:"alert",children:[t.jsx("p",{children:"Pair paused."}),t.jsx("a",{className:"underline text-[10px]",href:$s,target:"_blank",rel:"noopener noreferrer",children:"Docs"})]}),b&&h&&t.jsx(ln,{testId:"trade-pair-code-id-frozen-banner"}),b&&fe.blocked&&fe.message&&t.jsx("div",{className:"alert-error text-xs",role:"alert",children:t.jsx("p",{children:fe.message})}),b&&e.startsWith("terra1")&&t.jsxs("div",{className:"trade-order-text-tabs",role:"tablist","aria-label":"Order type",children:[t.jsx("button",{type:"button",id:k,role:"tab","aria-selected":m==="market","aria-controls":ye,"data-testid":"trade-order-tab-market",className:"trade-order-text-tab",onClick:()=>{ee.playButtonPress(),z("market")},children:"Market"}),t.jsx("button",{type:"button",id:Ke,role:"tab","aria-selected":m==="limit","aria-controls":K,"data-testid":"trade-order-tab-limit",className:"trade-order-text-tab",onClick:()=>{ee.playButtonPress(),z("limit")},children:"Limit"})]}),t.jsx(Tr,{idPrefix:"trade-ticket",compact:!0,side:W,onSideChange:De,bidLabel:la,askLabel:ca}),b&&e.startsWith("terra1")&&t.jsxs("div",{className:"flex items-baseline gap-2","data-testid":"trade-order-mode-docs",children:[t.jsx("span",{className:"text-xs font-semibold",style:{color:"var(--ink)"},children:m==="market"?"Market":"Limit"}),t.jsx("a",{className:"text-[10px] underline hover:opacity-80",href:yi,target:"_blank",rel:"noopener noreferrer",children:"Docs"})]}),m==="market"&&b&&t.jsx("div",{role:"tabpanel",id:ye,"aria-labelledby":k,children:t.jsx(ci,{pairAddr:e,selectedPair:b,pairs:a,side:N,isPaused:Ie,dockSubmit:!0,interactive:T,onSubmitChromeChange:Ee,initialAmountHuman:ne})}),m==="limit"&&t.jsxs("div",{role:"tabpanel",id:K,"aria-labelledby":Ke,className:"space-y-3",children:[t.jsx(Er,{side:W,price:ie,onPriceChange:P,inputId:Me,refToken1PerToken0:oa,refSource:me,tapeHeadlineUsd:i,token0Label:ze,token1Label:ht,compact:!0,showDeviationChrome:!1}),t.jsx(za,{compact:!0,escrowLabel:gt.pay,escrowDecimals:B,amountHuman:_,onAmountChange:dt,balanceQuery:ge,onMax:at,walletConnected:g,maxContext:"limit_place",assetIsNativeUluna:pe==="uluna",limitPlaceMaxAdjustSteps:E,escrowUsdNotionalApprox:mt}),t.jsx(Sr,{compact:!0,onFlip:()=>De(W==="bid"?"ask":"bid")}),t.jsx(_r,{compact:!0,receiveLabel:gt.receive,receiveAmountHuman:Ye,receiveDecimals:wt,receiveBalanceQuery:Rt,walletConnected:g,re
1ceiveUsdNotionalApprox:Tt}),t.jsxs(Lr,{compact:!0,open:y,onOpenChange:de,maxSteps:E,onMaxStepsChange:oe,expiresAt:Q,onExpiresAtChange:le,idPrefix:"trade-ticket",children:[t.jsx(Ir,{compact:!0,value:Q,onChange:le,idPrefix:"trade-ticket"}),t.jsx(jr,{side:W,price:ie,onPriceChange:P,refToken1PerToken0:oa,tapeHeadlineUsd:i,compact:!0,includeInvalidAlert:!1}),b&&e.startsWith("terra1")&&t.jsx(Nr,{compact:!0,pairLabel:`${ze} / ${ht}`,sideLabel:W==="bid"?la:ca,escrowAmountLabel:_.trim()?`${Ys(Nt(_.trim(),B),B)} ${gt.pay}`:`â ${gt.pay}`,placeSequenceMinUluna:$e,refToken1PerToken0:Z,typedPrice:ie,effectiveFeeBps:Ve,makerPlacementFeeBps:pt,feeLoading:vt,feeError:Pt,"data-testid":"trade-limit-pre-submit-summary"})]}),H&&t.jsxs("p",{className:"text-[10px] leading-snug rounded-lg border border-white/10 px-2.5 py-2",style:{color:"var(--ink-dim)"},"data-testid":"trade-limit-edit-context",children:["Editing ",t.jsxs("span",{className:"font-mono",children:["#",H.orderId]}),Fe?" â update price only.":aa?` â ${Mr}`:" â adjust price to update."]}),t.jsxs("div",{className:"trade-limit-inline-guards space-y-2","data-testid":"trade-limit-inline-guards",children:[Fe&&Ot.userMessage&&t.jsx(Xt,{gate:Ot,"data-testid":"trade-limit-update-price-guard"}),!Fe&&t.jsx(Xt,{gate:bs,"data-testid":"trade-limit-place-guard"})]}),e.startsWith("terra1")&&t.jsx("div",{ref:tt,"data-testid":"trade-ticket-placements-anchor",className:"scroll-mt-4 outline-none relative z-0",tabIndex:-1,children:t.jsx(Rr,{variant:"compact",pairAddr:e,pair:b,walletAddress:L??"",rows:Bt,isLoading:ot.isLoading,isWalletConnected:g,isPairPaused:lt||h,claimsDisabled:fe.blocked,cancelDisabled:fe.blocked,openWalletModal:C,cancelLimitOrderMutation:He,cancellations:ft.data??[],fills:vs.data??[],lcdStatuses:ws,recentlyCancelledOrderIds:Ps,highlightOrderId:Te,limitPriceScale:Le})}),re.isSuccess&&t.jsxs("div",{className:"space-y-2","data-testid":"trade-limit-post-place-actions",children:[t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx("button",{type:"button","data-testid":"trade-limit-view-order-btn",className:"btn-primary btn-cta flex-1 min-w-[7.5rem] !text-[10px] !py-2 !px-3",onClick:_s,children:"View order"}),t.jsx("button",{type:"button","data-testid":"trade-limit-place-another-btn",className:"btn-muted flex-1 min-w-[7.5rem] !text-[10px] !py-2 !px-3",onClick:Ls,children:"Place another"})]}),Ae==null&&t.jsx("p",{className:"text-[10px] leading-snug",style:{color:"var(--ink-dim)"},children:"Order may take a moment to appear â tap View order again."})]}),Ae!=null&&t.jsxs("p",{className:"text-[10px] font-mono","data-testid":"trade-last-placed-order-id",children:["Last order: #",Ae]})]}),t.jsxs("details",{className:"rounded-2xl border p-3 space-y-3 group",style:{borderColor:"rgba(148, 163, 184, 0.16)"},children:[t.jsxs("summary",{className:"text-xs font-semibold uppercase tracking-wide cursor-pointer list-none",children:["Cancel by order ID",t.jsx("span",{className:"block text-[9px] font-normal normal-case opacity-70 mt-0.5",children:"Advanced â use Cancel on open limits above"})]}),t.jsxs("div",{className:"space-y-3 pt-1",children:[t.jsxs("div",{children:[t.jsx("label",{className:"label-glass",htmlFor:Re,children:"Order ID"}),t.jsx("input",{id:Re,className:"input-glass w-full font-mono text-sm",value:be,onChange:x=>w(x.target.value),placeholder:"Order ID"})]}),t.jsx("button",{type:"button","data-testid":"trade-cancel-submit",className:"btn-primary btn-cta w-full !text-xs",disabled:He.isPending||!e||Ie||g&&sa,onClick:()=>{T&&(g?Es():C())},children:g?He.isPending?"Cancellingâ¦":"Cancel":"Connect Wallet"}),sa&&t.jsx("p",{className:"text-[10px]",style:{color:"var(--ink-dim)"},children:"This order was already cancelled."}),He.isError&&t.jsx(We,{type:"error",message:He.error.message}),He.isSuccess&&t.jsx(We,{type:"success",message:"Cancel submitted.",txHash:He.data})]})]})]}),t.jsx(li,{children:m==="market"?M?t.jsx(os,{model:M}):null:t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button","data-testid":Fe?"trade-limit-update-price-submit":"trade-limit-submit",className:rs,disabled:Fe?je.isPending||!b||Ie||g&&!ys:re.isPending||!b||Ie||aa||g&&!gs,onClick:()=>{T&&(g?Fe?Ts():re.mutate():C())}
1,children:g?Fe?je.isPending?"Updatingâ¦":"Update price":ss(re.phase,re.isPending,"Place limit","Placingâ¦"):"Connect Wallet"}),t.jsx(ns,{phase:re.phase,txHash:re.pendingTxHash}),je.isError&&t.jsx(We,{type:"error",message:je.error.message}),je.isSuccess&&t.jsx(We,{type:"success",message:"Limit order price updated.",txHash:je.data}),re.isError&&t.jsx(We,{type:"error",message:re.error.message}),re.isSuccess&&t.jsx(We,{type:"success",message:"Limit order placed.",txHash:re.data})]})})]})}function bi(e){const a=et(n=>n.address),s=Ja(e.pairAddr,a??void 0);return t.jsx(ds,{...e,cancelLimitOrderMutation:s})}function ki(e){if(e.cancelLimitOrderMutation)return t.jsx(ds,{...e});const{cancelLimitOrderMutation:a,...s}=e;return t.jsx(bi,{...s})}const wi="Invalid pair link",vi="This URL does not contain a valid Terra pair contract address. Market data and orders are unavailable until you choose a pair.",Pi="Select a trading pair";function Ti(e){const a=e.trim();return a.length<=48?a:$a(a,10,8)}function Ei({invalidParam:e,pairSelectId:a,onDismiss:s,className:n=""}){const l=Ti(e),i=()=>{const o=document.getElementById(a);!o||!(o instanceof HTMLElement)||(o.scrollIntoView?.({block:"nearest",behavior:"smooth"}),o.focus(),o.click())};return t.jsxs("div",{className:`alert-warning text-sm ${n}`.trim(),role:"alert","data-testid":"trade-invalid-pair-link-notice",children:[t.jsx("p",{className:"font-semibold",children:wi}),t.jsxs("p",{className:"mt-1",children:[vi," ",t.jsxs("span",{className:"font-mono text-xs opacity-90","data-testid":"trade-invalid-pair-link-value",children:["(â",l,"â)"]})]}),t.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[t.jsx("button",{type:"button",className:"btn-muted text-xs","data-testid":"trade-invalid-pair-link-cta",onClick:i,children:Pi}),s&&t.jsx("button",{type:"button",className:"text-xs underline opacity-80",onClick:s,children:"Dismiss"})]})]})}const Si="Pair not found",_i="This link does not match a pair on this DEX. Select a pair from the list or check the address in the URL.",Li="Select a trading pair";function Ii(e){const a=e.trim();return a.length<=48?a:$a(a,10,8)}function ji({unknownParam:e,pairSelectId:a,onDismiss:s,className:n=""}){const l=Ii(e),i=()=>{const o=document.getElementById(a);!o||!(o instanceof HTMLElement)||(o.scrollIntoView?.({block:"nearest",behavior:"smooth"}),o.focus(),o.click())};return t.jsxs("div",{className:`alert-warning text-sm ${n}`.trim(),role:"alert","data-testid":"trade-pair-not-found-link-notice",children:[t.jsx("p",{className:"font-semibold",children:Si}),t.jsxs("p",{className:"mt-1",children:[_i," ",t.jsxs("span",{className:"font-mono text-xs opacity-90","data-testid":"trade-pair-not-found-link-value",children:["(â",l,"â)"]})]}),t.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[t.jsx("button",{type:"button",className:"btn-muted text-xs","data-testid":"trade-pair-not-found-link-cta",onClick:i,children:Li}),s&&t.jsx("button",{type:"button",className:"text-xs underline opacity-80",onClick:s,children:"Dismiss"})]})]})}function Ni({pairLabel:e}){return t.jsx(Cr,{testId:"trade-pair-switch-loading",label:`Loading market data${e?` for ${e}`:""}â¦`})}
1function Mi(e){return e?.invalidPair??null}function Ri(e){return e?.unknownPair??null}function Ai(e){const a=e;return{amountHuman:a?.ticketAmount?.trim()||null,side:a?.ticketSide==="ask"||a?.ticketSide==="bid"?a.ticketSide:null}}function ct(e){return!!e&&kt(e)}function Ci(e){const a=e?.trim();return!a||kt(a)?null:a}function Jt(e,a){return!!e&&kt(e)&&a.some(s=>s.contract_addr===e)}function Di(e,a,s){const n=e?.trim();return!s||!n||!kt(n)||Jt(n,a)?null:n}function Oi(e,a,s){const n=e?.trim();return!n||a||!kt(n)?!1:!s}function Bi(e){return!(e.invalidRoutePair||e.unknownRoutePair||e.pendingDeepLinkPair||ct(e.routePair?.trim()))}function Fi(e){return e.pairRouteReady&&!e.invalidLinkNotice&&!e.unknownPairNotice&&!e.pendingDeepLinkPair}function Hi(e,a){const s=us(e);return s?a(s[0])||a(s[1]):!0}function us(e){const a=e.asset_infos;if(!a||a.length<2)return null;const s=Pe(a[0]),n=Pe(a[1]);return!s||!n?null:[s,n]}function yt(e,a){return e.trim().toLowerCase()===a.trim().toLowerCase()}function Wi(e,a,s){const n=us(e);if(!n)return!1;const[l,i]=n;return yt(l,a)&&yt(i,s)||yt(l,s)&&yt(i,a)}function Ui(e,a,s){const n=zs,l=is(e),i=l.payId,o=l.receiveId;if(!i||!o||yt(i,o)||n(i)||n(o))return null;const d=[];for(const c of a)ct(c.contract_addr)&&(Hi(c,n)||Wi(c,i,o)&&d.push(c.contract_addr));return d.length!==1?null:d[0]??null}function Qi(e){if(!e)return null;const a=e.trim().toLowerCase();return a==="buy"||a==="bid"?"bid":a==="sell"||a==="ask"?"ask":null}function qi(e,a){const s=a.toLowerCase();let n=null;for(const[l,i]of e.entries()){if(l.toLowerCase()!==s)continue;const o=i.trim();o&&(n=o)}return n}function Ki(e){const a=is(e),s=e instanceof URLSearchParams?e:new URLSearchParams(typeof e=="string"?e.startsWith("?")?e.slice(1):e:""),n=a.payAmountHuman;
1return{amountHuman:n&&n.length<=ri&&Vt(n)?n:null,side:Qi(qi(s,"side"))}}const Gi="1h",$i=80;function Gt(e,a,s=Gi){if(!ct(a))return;const n={queryKey:["indexer-pair-trade",a],staleTime:6e4};e.prefetchQuery({...n,queryFn:()=>es(a)}),e.prefetchQuery({queryKey:["candles",a,s],queryFn:()=>Kr(a,s)}),e.prefetchQuery({queryKey:["pair-trades-trade",a],queryFn:()=>ts(a,$i)});for(const l of["bid","ask"])e.prefetchInfiniteQuery({queryKey:$r(a,l),queryFn:({pageParam:i})=>Gr(a,l,{limit:Vr,afterOrderId:i}),initialPageParam:void 0,getNextPageParam:i=>i.has_more&&i.next_after_order_id!=null?i.next_after_order_id:void 0,staleTime:1e4})}function Vi(e,a){const s=e.queryKey;if(!Array.isArray(s)||s.length<2||s[1]!==a)return!1;const n=s[0];return n==="indexer-pair-trade"||n==="pair-trades-trade"||n==="candles"||n==="limitBookPage"&&(s[2]==="bid"||s[2]==="ask")}function Ca({pairRouteReady:e,tradesQuery:a,activePair:s,formatTimeFn:n,skeletonHeight:l,hideHeading:i=!1,inverted:o=!1}){const d=a.isError&&Jr(a.error);return t.jsxs(t.Fragment,{children:[!i&&t.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wide mb-2 shrink-0",style:{color:"var(--ink-dim)"},children:"Recent trades"}),e&&a.isLoading&&!a.isError&&t.jsx(Va,{height:l}),d&&t.jsx(Zn,{message:ei,"data-testid":"trade-tape-unavailable"}),a.isError&&!d&&t.jsx(Ya,{message:Xa(a.error),onRetry:()=>{a.refetch()}}),a.data&&!a.isError&&t.jsx(ni,{trades:a.data,formatTimeFn:n,activePair:s,inverted:o,ariaLabel:"Recent trades"})]})}const Yi="(min-width: 1024px)",ms="cl8y-dex-trade-onboarding-dismissed";function Xi(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(ms)==="1"}catch{return!1}}function zi(e){if(!(typeof window>"u"))try{window.localStorage.setItem(ms,e?"1":"0")}catch{}}function Ji(){const[e,a]=r.useState(()=>!Xi());if(!e)return null;const s=()=>{ee.playButtonPress(),zi(!0),a(!1)};return t.jsxs("aside",{className:"rounded-2xl border border-white/10 px-3 py-3 sm:px-4 sm:py-3.5 flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-4",style:{background:"rgba(255, 255, 255, 0.03)"},"data-testid":"trade-onboarding-strip","aria-label":"Getting started",children:[t.jsxs("div",{className:"min-w-0 space-y-1 text-sm",style:{color:"var(--ink-dim)"},children:[t.jsxs("p",{className:"font-semibold",style:{color:"var(--ink)"},children:["New?"," ",t.jsx(Rs,{to:"/",className:"underline hover:opacity-80","data-testid":"trade-onboarding-swap-link",children:"Start with Swap"})]}),t.jsxs("p",{className:"leading-snug text-xs",children:[t.jsx("strong",{style:{color:"var(--ink)"},children:"Swap"})," · ",t.jsx("strong",{style:{color:"var(--ink)"},children:"Trade"})," ","· ",t.jsx("strong",{style:{color:"var(--ink)"},children:"Limits"})]})]}),t.jsx("button",{type:"button",className:"btn-muted shrink-0 self-start !px-3 !py-2 !text-xs",onClick:s,"data-testid":"trade-onboarding-dismiss","aria-label":"Dismiss getting started tips",children:"Dismiss"})]})}const $t="cl8y-dex-trade-tape-expanded",Zi="cl8y-dex-trade-wallet-history-expanded",Da="cl8y-dex-trade-book-visible",Oa="cl8y-dex-trade-ticket-visible";function ps(e,a){if(typeof window>"u")return a;try{const s=window.localStorage.getItem(e);return s==="1"?!0:s==="0"?!1:a}catch{return a}}function fs(e,a){if(!(typeof window>"u"))try{window.localStorage.setItem(e,a?"1":"0")}catch{}}function xs(e,a=!1){return ps(e,a)}function hs(e,a){fs(e,a)}function Ba(e,a=!0){return ps(e,a)}function Fa(e,a){fs(e,a)}const It="minmax(13rem, 1fr)",eo="minmax(0, 2.2fr)",Ha="minmax(0, 3.2fr)";function to(e,a){return e&&a?`${It} ${eo} ${It}`:e?`${It} ${Ha}`:a?`${Ha} ${It}`:"minmax(0, 1fr)"}function ao(e){return e?2:1}function so(e){return e?3:2}function Wa({title:e,storageKey:a,defaultExpanded:s=!1,testId:n,children:l,className:i=""}){const o=r.useId(),[d,c]=r.useState(()=>xs(a,s)),u=()=>{ee.playButtonPress(),c(v=>{const j=!v;return hs(a,j),j})};return t.jsxs("section",{className:i,"data-testid":n,children:[t.jsxs("button",{type:"button",className:"flex w-full items-center justify-between gap-2 rounded-xl border border-white/10 px-3 py-2.5 text-left",style:{background:"rgba(255, 255, 255, 0.025)"},"aria-expanded":d,"aria-controls":o,"data-testid":`${n}-toggle`,onClick:u,children:[t.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide",style:{color:"var(--ink-dim)"},children:e}),t.jsx("span",{className:"text-xs",style:{color:"var(--ink-subtle)"},"aria-hidden":"true",children:d?"â²":"â¼"})]}),d?t.jsx("div",{id:o,className:"mt-2","data-testid":`${n}-content`,children:l}):null]})}
1function Ua({testId:e,pressed:a,label:s,onPressedChange:n}){return t.jsx("button",{type:"button",className:"btn-muted !text-[11px] !px-2.5 !py-1","data-testid":e,"aria-pressed":a,onClick:()=>{ee.playButtonPress(),n(!a)},children:s})}function ro({bookVisible:e,ticketVisible:a,tapeExpanded:s,onBookVisibleChange:n,onTicketVisibleChange:l,onTapeExpandedChange:i,book:o,chart:d,ticket:c,tape:u}){const v=ao(e),j=so(e);return t.jsxs("div",{className:"trade-desktop-workspace flex","data-testid":"trade-desktop-workspace",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2 shrink-0 px-0.5","data-testid":"trade-desktop-panel-toggles",children:[t.jsx(Ua,{testId:"trade-desktop-book-toggle",pressed:e,label:"Order book",onPressedChange:n}),t.jsx(Ua,{testId:"trade-desktop-ticket-toggle",pressed:a,label:"Ticket",onPressedChange:l})]}),t.jsxs("div",{className:"trade-desktop-grid","data-testid":"trade-desktop-grid",style:{gridTemplateColumns:to(e,a)},children:[t.jsx("div",{className:e?"min-h-0 min-w-0 overflow-hidden":"hidden",style:e?{gridColumn:1,gridRow:1}:void 0,"data-testid":"trade-desktop-book-col",...e?{}:{inert:!0,"aria-hidden":!0},children:o}),t.jsx("div",{className:"min-h-0 min-w-0 flex flex-col h-full",style:{gridColumn:v,gridRow:1},"data-testid":"trade-desktop-chart-col",children:d}),t.jsx("div",{className:a?"min-h-0 min-w-0 flex flex-col overflow-hidden":"hidden",style:a?{gridColumn:j,gridRow:1}:void 0,"data-testid":"trade-desktop-ticket-col",...a?{}:{inert:!0,"aria-hidden":!0},children:c}),t.jsxs("div",{className:"min-h-0 min-w-0 card-glass !p-3 flex flex-col",style:{gridColumn:"1 / -1",gridRow:2},"data-testid":"trade-desktop-tape-panel","data-expanded":s?"true":"false",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2 shrink-0",children:[t.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wide",style:{color:"var(--ink-dim)"},children:"Recent trades"}),t.jsx("button",{type:"button",className:"btn-muted !text-[10px] !px-2 !py-1","data-testid":"trade-desktop-tape-toggle","aria-expanded":s,onClick:()=>{ee.playButtonPress(),i(!s)},children:s?"Collapse":"Expand"})]}),s?t.jsx("div",{className:"trade-desktop-tape-body flex-1 min-h-0 overflow-y-auto",children:u}):t.jsx("p",{className:"text-[10px] leading-snug",style:{color:"var(--ink-subtle)"},children:"Expand for live trades."})]})]})]})}const jt="trade-pair-select";function Qa({pairRouteReady:e,pairAddr:a,showRetryError:s,retryMessage:n,isRetrying:l,onRetry:i,tapeLastPriceUsd:o,displayInverted:d,onToggleDisplayInvert:c,pairPillLabel:u,invertAriaLabel:v,displayBaseSymbol:j,volumeBaseDecimals:f,volumeQuoteDecimals:D,chartAsset0:T,chartAsset1:ne}){if(!e)return t.jsx("p",{className:"text-sm p-4",style:{color:"var(--ink-dim)"},children:"Select a pair for the chart."});if(s)return t.jsx(Ya,{"data-testid":"trade-chart-retry-error",message:n,isRetrying:l,onRetry:i});const Qe=t.jsx(sn,{pairAddress:a,tapeLastPriceUsd:o,displayInverted:d,onToggleDisplayInvert:c,pairPillLabel:u,invertAriaLabel:v,displayBaseSymbol:j,volumeBaseDecimals:f,volumeQuoteDecimals:D,chartAsset0:T,chartAsset1:ne});return t.jsx("div",{className:"flex-1 min-h-0 h-full flex flex-col",children:Qe})}function Jo(){const{pairAddr:e}=As(),a=Cs(),s=Ds(),n=ea(),l=r.useMemo(()=>Ci(e),[e]),i=Mi(a.state),o=Ri(a.state),d=Ai(a.state),[c,u]=r.useState(""),v=r.useCallback(()=>{s("/trade",{replace:!0,state:null})},[s]),j=Ue({queryKey:["allPairs"],queryFn:()=>qr(),staleTime:6e4}),f=r.useMemo(()=>j.data?.pairs??[],[j.data]),D=j.isSuccess,T=r.useMemo(()=>l?null:Di(e,f,D),[l,e,f,D]),ne=r.useMemo(()=>Oi(e,l,D),[e,l,D]),Qe=r.useMemo(()=>{const p=f.find(O=>O.contract_addr===c);return p?Pa(p,{variant:"full"}):void 0},[f,c]),F=ct(c),L=Fi({pairRouteReady:F,invalidLinkNotice:i,unknownPairNotice:o,pendingDeepLinkPair:ne});r.useEffect(()=>{if(l){u(""),e&&s("/trade",{replace:!0,state:{invalidPair:l}});return}if(T){u(""),e&&s("/trade",{replace:!0,state:{unknownPair:T}});return}Jt(e,f)&&(u(e),(i||o)&&s(`/trade/${e}`,{replace:!0,state:null}))},[l,T,e,f,s,i,o]),r.useEffect(()=>{if(c||f.length===0||i||o||!Bi({routePair:e,invalidRoutePair:l,unknownRoutePair:T,pendingDeepLinkPair:ne}))return;const p=Ui(a.search,f);if(p){const ke=Ki(a.search);u(p),s(`/trade/${p}`,{replace:!0,state:ke.amountHuman||ke.side?{ticketAmount:ke.amountHuman??void 0,ticketSide:ke.side??void 0}:null});return}const O=Js(f);O&&(u(O),s(`/trade/${O}`,{replace:!0}))},[c,f,s,e,l,T,ne,i,o,a.search]),r.useEffect(()=>{F&&Gt(n,c)},[F,c,n]);const I=Ue({queryKey:["indexer-pair-trade",c],queryFn:()=>es(c),enabled:F,staleTime:6e4,retry:!1}),C=Ue({queryKey:["pair-trades-trade",c],queryFn:()=>
1ts(c,80),enabled:F,refetchInterval:15e3,retry:!1}),te=Ue({queryKey:["indexer-oracle-price","ustc"],queryFn:()=>Yr("ustc"),staleTime:6e4,retry:!1}),g=I.data,q=ii(I,C);r.useEffect(()=>{!D||!e||l||Jt(e,f)||!I.isError||!Zr(I.error)||(u(""),s("/trade",{replace:!0,state:{unknownPair:e}}))},[D,e,l,f,I.isError,I.error,s]);const Me=Wn(["indexer-pair-trade",c],I),Re=I.isError&&!q&&!Me.isRetrying,tt=Fr({predicate:p=>F&&Vi(p,c)}),Te=F&&tt>0,U=et(p=>p.address),W=et(p=>p.openWalletModal),qe=Zt(),m=!!U&&!!qe,M=Ue({queryKey:["pairPaused",c],queryFn:()=>Za(c),enabled:F,staleTime:15e3}).data?.paused===!0,Ee=Ja(c,U??void 0),R=r.useMemo(()=>f.find(p=>p.contract_addr===c),[f,c]),Ke=r.useMemo(()=>{if(!R||Zs())return!1;const[p,O]=er(R),[ke,Z]=tr(R);return ar(ke,Z,p,O)},[R]),[k,K]=r.useState(0),[ye,ie]=r.useState(null),[P,Ge]=r.useState(()=>Ba(Da,!0)),[G,E]=r.useState(()=>Ba(Oa,!0)),[oe,Q]=r.useState(()=>xs($t,!1)),le=r.useCallback(p=>{Ge(p),Fa(Da,p)},[]),_=r.useCallback(p=>{E(p),Fa(Oa,p)},[]),Se=r.useCallback(p=>{Q(p),hs($t,p)},[]),dt=r.useCallback(p=>{_(!0),ie(p),K(O=>O+1)},[_]),at=r.useCallback(()=>ie(null),[]),ce=sr(Yi),ae=j.isLoading,se=R?Pe(R.asset_infos[0]):"",y=R?Pe(R.asset_infos[1]):"",de=g?.asset_0.symbol??(se?he(se):"Base"),be=g?.asset_1.symbol??(y?he(y):"Quote"),w=an({pairAddr:c,asset0:g?.asset_0??(se?{contractAddr:se,symbol
1:de}:null),asset1:g?.asset_1??(y?{contractAddr:y,symbol:be}:null),token0Symbol:de,token1Symbol:be}),Ae=r.useMemo(()=>Ma({inverted:!1,priceUsd:C.data?.[0]?.price_usd,price:C.data?.[0]?.price,decimalsBase:g?.asset_0.decimals,decimalsQuote:g?.asset_1.decimals,quoteSymbol:g?.asset_1.symbol,quoteDenom:g?.asset_1.denom,ustcUsd:te.data?.price_usd}),[C.data,g,te.data?.price_usd]),ue=r.useMemo(()=>Ma({inverted:w.inverted,priceUsd:C.data?.[0]?.price_usd,price:C.data?.[0]?.price,decimalsBase:g?.asset_0.decimals,decimalsQuote:g?.asset_1.decimals,quoteSymbol:g?.asset_1.symbol,quoteDenom:g?.asset_1.denom,ustcUsd:te.data?.price_usd,displayBaseSymbol:w.displayBase,displayBaseDenom:w.inverted?g?.asset_1.denom:g?.asset_0.denom}),[C.data,g,te.data?.price_usd,w.inverted,w.displayBase]),H={pairRouteReady:F,pairAddr:c,showRetryError:Re,retryMessage:Xa(I.error),isRetrying:Me.isRetrying,onRetry:Me.retry,tapeLastPriceUsd:ue,displayInverted:w.inverted,onToggleDisplayInvert:w.toggleInverted,pairPillLabel:w.pillLabel,invertAriaLabel:w.invertAriaLabel,displayBaseSymbol:w.displayBase,volumeBaseDecimals:g?.asset_0.decimals,volumeQuoteDecimals:g?.asset_1.decimals,chartAsset0:g?.asset_0,chartAsset1:g?.asset_1},Ce=t.jsx(ki,{pairAddr:c,pairs:f,pairsLoading:j.isLoading,indexerPair:g,latestTrade:C.data?.[0],tapeHeadlineUsd:ue,factoryTapeHeadlineUsd:Ae,displayInverted:w.inverted,onToggleDisplayInvert:w.toggleInverted,invertAriaLabel:w.invertAriaLabel,cancelLimitOrderMutation:Ee,limitBookDraftKey:k,limitBookDraft:ye,onLimitBookDraftConsumed:at,interactive:!ce||G,initialMarketAmount:d.amountHuman,initialSide:d.side}),st={walletAddress:U??void 0,isWalletConnected:m,isPairPaused:M,openWalletModal:W,cancelLimitOrderMutation:Ee,onPrefillLimitTicket:dt,factoryPair:R,displayInverted:w.inverted,displayBaseSymbol:w.displayBase,displayQuoteSymbol:w.displayQuote},_e=r.useMemo(()=>{const p=f.find(O=>O.contract_addr===c);return p?Pa(p,{variant:"full",displayInverted:w.inverted}):void 0},[f,c,w.inverted]),b=r.useCallback(p=>{!ct(p)||p===c||Gt(n,p)},[c,n]),J=r.useCallback(p=>{ee.playButtonPress(),ct(p)&&(Gt(n,p),u(p),s(`/trade/${p}`,{state:null}))},[s,n]);return t.jsxs("div",{className:"space-y-3",children:[t.jsx("div",{children:t.jsx("h1",{className:"text-lg font-bold uppercase tracking-wider font-heading",style:{color:"var(--ink)"},"data-testid":"trade-page-heading",children:"Trade"})}),t.jsx(Ji,{}),i&&t.jsx(Ei,{invalidParam:i,pairSelectId:jt,onDismiss:v}),o&&t.jsx(ji,{unknownParam:o,pairSelectId:jt,onDismiss:v}),q&&t.jsx(en,{layout:"inline",testId:"trade-indexer-outage-banner",title:si,lead:ai,tail:ti}),t.jsxs("div",{className:"shell-panel p-3","data-testid":"trade-pair-select-panel",children:[t.jsx("label",{className:"label-glass mb-1 block",htmlFor:jt,children:"Pair"}),t.jsx(zr,{query:j,loadingFallback:t.jsx(Va,{height:"2.5rem",width:"100%"}),children:t.jsx(Dr,{id:jt,className:"relative w-full max-w-xl shrink-0","aria-label":"Trading pair",value:c,factoryPairs:f,emptyLabel:"No pairs on factory",onChange:J,onOptionIntent:b,selectedLabelOverride:_e})}),L&&R?t.jsx(Xr,{pairAddress:R.contract_addr,asset0:R.asset_infos[0],asset1:R.asset_infos[1],inverted:w.inverted,liquidityUsd:I.data?.pair_address===R.contract_addr?I.data.liquidity_usd:void 0}):null,L&&Ke?t.jsx("p",{className:"mt-2 text-xs",style:{color:"var(--ink-dim)"},"data-testid":"trade-legacy-gem-notice",children:"Legacy noneconomic market."}):null]}),ae?t.jsx(rr,{}):null,!ae&&L&&Te&&t.jsx(Ni,{pairLabel:_e??Qe}),!ae&&L&&!ce&&t.jsxs("div",{className:"lg:hidden grid grid-cols-1 gap-3 md:grid-cols-2","data-testid":"trade-sub-lg-workspace",children:[t.jsx("div",{className:"min-h-[280px] md:col-span-2 md:row-start-2",children:t.jsx(wa,{pairAddress:c,pair:g,...st})}),t.jsx("div",{className:"min-h-0 md:col-start-2 md:row-start-1 flex flex-col md:max-h-[min(72vh,44rem)]","data-testid":"trade-sub-lg-ticket-col",children:Ce}),t.jsx("div",{className:"min-h-[220px] md:min-h-[280px] md:col-start-1 md:row-start-1 flex flex-col","data-testid":"trade-sub-lg-chart-col",children:t.jsx(Qa,{...H})}),t.jsx("div",{className:"card-glass !p-3 md:col-span-2 md:row-start-3",children:t.jsx(Wa,{title:"Recent trades",storageKey:$t,defaultExpanded:!1,testId:"trade-sub-lg-tape-disclosure",children:t.jsx(Ca,{pairRouteReady:F,tradesQuery:C,activePair:g,formatTimeFn:Na,skeletonHeight:"6rem",hideHeading:!0,inverted:w.inverted})})})]}),!ae&&L&&ce&&t.jsx(ro,{bookVisible:P,ticketVisible:G,tapeExpanded:oe,onBookVisibleChange:le,onTicketVisibleChange:_,onTapeExpandedChange:Se,book:t.jsx(wa,{pairAddress:c,pair:g,...st}),chart:t.jsx(Qa,{...H}),ticket:Ce,tape:t.jsx(Ca,{pairRouteReady:F,tradesQuery:C,activePair:g,formatTimeFn:Na,skeletonHeight:"5rem",hideHeading:!0,inverted:w.inverted})}),U&&L&&t.jsx(Wa,{title:"Wallet swap history",storageKey:Zi,defaultExpanded:!1,testId:"trade-wallet-history-disclosure",className:"mt-3",children:t.jsx(Or,{walletAddress:U,pairAddress:c,sections:["swaps"],activePair:g,inverted:w.inverted})})]})}export{Jo as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.