@liberfi.io/ui-predict 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +15 -15
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var react=require('react'),ui=require('@liberfi.io/ui'),uiScaffold=require('@liberfi.io/ui-scaffold'),i18n=require('@liberfi.io/i18n'),jsxRuntime=require('react/jsx-runtime'),walletConnector=require('@liberfi.io/wallet-connector'),reactQuery=require('@tanstack/react-query'),reactPredict=require('@liberfi.io/react-predict'),types=require('@liberfi.io/types'),utils=require('@liberfi.io/utils'),eo=require('canvas-confetti'),reactWindow=require('react-window'),reactWindowInfiniteLoader=require('react-window-infinite-loader'),hooks=require('@liberfi.io/hooks'),recharts=require('recharts'),jotai=require('jotai'),utils$1=require('jotai/utils');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var eo__default=/*#__PURE__*/_interopDefault(eo);typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-predict"]="1.0.2");var yl="1.0.2";var kl={Weather:["Daily temperature","Snow and rain","Climate change","Natural disasters","Hurricanes"],Companies:["IPOs","Product launches","KPIs","Elon Musk","CEOs","Layoffs"],Crypto:["BTC","15 min","Hourly","ETH","SOL","DOGE","Pre-Market","XRP","BNB","HYPE"],Economics:["Growth","Fed","Inflation","Oil and energy","Employment","Housing","Jobs & Economy","Bankruptcy & Defaults","GDP","Global Central Banks"],Elections:["Primaries","International elections"],Entertainment:["Music","Movies","Music charts","Television","Awards","Video games","Oscars","Rotten Tomatoes"],Financials:["S&P","Nasdaq","Daily","Metals","Treasuries","Oil","EUR/USD","USD/JPY","WTI"],Mentions:["Politicians","Earnings","Entertainment"],Politics:["Trump","Congress","International","SCOTUS & courts","Local","Recurring","Iran","House"],Science:["AI","Energy","Space"],Social:null,Sports:["Soccer","Basketball","Baseball","Football","Hockey","Golf","Tennis","Motorsport","Esports","Boxing","MMA","Rugby","Lacrosse","Mentions","Chess","Cricket","Aussie Rules","Darts"],World:null},Qo=["Politics","Sports","Crypto","Economics","Financials","Elections","Entertainment","Companies","Science and Technology","Climate and Weather","Mentions","Social","World"],Xn=(()=>{let e=t=>{let r=Qo.indexOf(t);return r===-1?Qo.length:r};return Object.entries(kl).map(([t,r])=>({slug:t,label:t,tags:(r??[]).map(n=>({slug:n,label:n}))})).sort((t,r)=>e(t.slug)-e(r.slug))})();function Zo({categories:e,selectedCategory:t,selectedTag:r,activeTags:n,onCategorySelect:o,onTagSelect:i,trailing:s,pulsingTab:l="Trending",className:a}){let{t:c}=i18n.useTranslation(),u=react.useCallback(()=>{o(null);},[o]),p=c("predict.categories.trending");return jsxRuntime.jsxs("div",{className:ui.cn("sticky top-0 z-30 flex w-full flex-col justify-between gap-2 px-4 py-2.5 lg:px-4 lg:py-2",a),children:[jsxRuntime.jsx("style",{children:".cat-primary-row{display:flex;width:100%;flex-direction:column;gap:8px}@media(min-width:1024px){.cat-primary-row{flex-direction:row;align-items:center}}.cat-primary-row>.cat-tabs{min-width:0;overflow-x:auto;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none}.cat-primary-row>.cat-tabs::-webkit-scrollbar{display:none}@media(min-width:1024px){.cat-primary-row>.cat-tabs{flex:1 1 0%}}"}),jsxRuntime.jsxs("div",{className:"cat-primary-row",children:[jsxRuntime.jsx("div",{className:"cat-tabs hideScrollbar",children:jsxRuntime.jsxs("div",{className:"flex min-h-9 items-stretch gap-x-3 lg:min-h-10",children:[jsxRuntime.jsx(Xo,{label:p,isSelected:t===null,onPress:u,showPulse:p===l}),jsxRuntime.jsx(Nl,{}),e.map(m=>jsxRuntime.jsx(Xo,{label:m.category,isSelected:t===m.category,onPress:()=>o(m.category),badge:m.badge,showPulse:m.category===l},m.category))]})}),s&&jsxRuntime.jsx("div",{className:"flex-shrink-0",children:s})]}),t&&n.length>0&&jsxRuntime.jsx("div",{className:"hideScrollbar overflow-x-auto overflow-y-hidden flex items-center",children:jsxRuntime.jsxs("div",{className:"flex gap-x-1.5 pl-1 lg:w-full lg:gap-x-2",children:[jsxRuntime.jsx(Jo,{label:c("predict.categories.allMarkets"),isSelected:r===null,onPress:()=>i(null)}),n.map(m=>jsxRuntime.jsx(Jo,{label:m.label,icon:m.icon,isSelected:r===m.label,onPress:()=>i(m.label)},m.label))]})})]})}function Xo({label:e,isSelected:t,onPress:r,badge:n,showPulse:o}){return jsxRuntime.jsxs("button",{type:"button",onClick:r,className:ui.cn("relative shrink-0 cursor-pointer whitespace-nowrap border-b px-2.5 py-1.5 text-sm font-medium capitalize transition-colors",t?"border-primary/50 text-primary":"border-transparent text-neutral-500 hover:text-neutral-300"),children:[o?jsxRuntime.jsxs("span",{className:"flex items-center gap-x-1.5",children:[jsxRuntime.jsx("span",{className:"h-2 w-2 animate-pulse rounded-full bg-[rgb(240,68,56)]"}),jsxRuntime.jsx("span",{children:e})]}):e,n&&jsxRuntime.jsx("span",{className:"absolute -right-1 top-0 rounded bg-primary px-0.5 py-px text-[0.625rem] font-semibold leading-none text-neutral-950",children:n})]})}function Nl(){return jsxRuntime.jsx("span",{className:"flex items-center text-neutral-600","aria-hidden":"true",children:"|"})}function Jo({label:e,icon:t,isSelected:r,onPress:n}){return jsxRuntime.jsxs("button",{type:"button",onClick:n,className:ui.cn("flex shrink-0 items-center justify-center gap-x-1 min-w-14 rounded-2xl border px-3 py-1.5 text-sm font-medium uppercase transition-colors cursor-pointer",r?"border-primary/40 bg-primary/15 text-primary":"border-border/80 text-neutral-500 hover:bg-primary/10 hover:text-primary"),children:[t&&jsxRuntime.jsx("span",{className:ui.cn("iconify size-4",t)}),e]})}function L0({count:e=6}){return jsxRuntime.jsx("div",{className:"flex w-full flex-col gap-2 px-4 py-2.5 lg:px-4 lg:py-2",children:jsxRuntime.jsx("div",{className:"flex min-h-9 items-center gap-x-3 lg:min-h-10",children:Array.from({length:e}).map((t,r)=>jsxRuntime.jsx(ui.Skeleton,{className:"h-6 w-16 shrink-0 rounded"},r))})})}function Cl(e){return e.map(t=>({category:t.label,tags:t.tags.map(r=>r.label)}))}function Ml(e){return e?e.tags.map(t=>({label:t.label,icon:t.icon})):[]}function ri({onSelect:e,trailing:t,className:r}){let[n,o]=react.useState(null),[i,s]=react.useState(null),l=react.useCallback(m=>{o(m),s(null),e?.({categorySlug:m,tagSlug:null});},[e]),a=react.useCallback(m=>{s(m),e?.({categorySlug:n,tagSlug:m});},[n,e]),c=Cl(Xn),u=Xn.find(m=>m.slug===n),p=Ml(u);return jsxRuntime.jsx(Zo,{categories:c,selectedCategory:n,selectedTag:i,activeTags:p,onCategorySelect:l,onTagSelect:a,trailing:t,className:r})}function on(e){return {title:e.title,imageUrl:e.image_url}}function sn(e){let t=e.outcomes[0],r=e.outcomes[1];return {question:e.question,yesAsk:t?.best_ask??t?.price,noAsk:r?.best_ask??r?.price,yesBid:t?.best_bid,noBid:r?.best_bid,yesSubTitle:t?.label??"Yes",noSubTitle:r?.label??"No"}}var Er=24,Jn=4,an={ONE_MINUTE:1,ONE_HOUR:60,ONE_DAY:1440},qe={ONE_DAY:"1d",ONE_WEEK:"1w",ONE_MONTH:"1m",ALL:"all"},ln=qe.ALL,H0={[qe.ONE_DAY]:an.ONE_MINUTE,[qe.ONE_WEEK]:an.ONE_HOUR,[qe.ONE_MONTH]:an.ONE_HOUR,[qe.ALL]:an.ONE_DAY},z0={[qe.ONE_DAY]:300,[qe.ONE_WEEK]:3600,[qe.ONE_MONTH]:10800,[qe.ALL]:1440*60},$0={[qe.ONE_DAY]:1440*60,[qe.ONE_WEEK]:10080*60,[qe.ONE_MONTH]:720*60*60,[qe.ALL]:null},cn=1,dn=1,W0=1,U0=1,K0=99,fr={ONE_HOUR:"1h",SIX_HOURS:"6h",ONE_DAY:"1d",ONE_WEEK:"1w",MAX:"max"},V0=fr.ONE_WEEK,j0={[fr.ONE_HOUR]:60,[fr.SIX_HOURS]:60,[fr.ONE_DAY]:300,[fr.ONE_WEEK]:1800,[fr.MAX]:1800};var ii=react.createContext(null);function Zt(){let e=react.useContext(ii);if(!e)throw new Error("usePredictWallet must be used within a PredictWalletProvider");return e}var Ol=1e4;function Dl({pollingInterval:e=Ol,enabled:t=true,children:r}){let n=walletConnector.useWallets(),o=react.useMemo(()=>n.find(x=>x.chainNamespace===types.ChainNamespace.SOLANA&&x.isConnected)?.address,[n]),i=react.useMemo(()=>n.find(x=>x.chainNamespace===types.ChainNamespace.EVM&&x.isConnected)?.address,[n]),{data:s,isLoading:l,isFetching:a,error:c}=reactPredict.useBalance({source:"kalshi",user:o??""},{enabled:t&&!!o,refetchInterval:e}),{data:u,isLoading:p}=reactPredict.useDFlowKYC(o,{enabled:t&&!!o,refetchInterval:3e4}),{data:m,isLoading:d}=reactPredict.usePolymarketSetup(i,{enabled:t&&!!i,refetchInterval:3e4}),f=m?.safe_address,g=m?.verified??false,{data:h,isLoading:v,isFetching:S,error:P}=reactPredict.useBalance({source:"polymarket",user:i??""},{enabled:t&&g&&!!i,refetchInterval:e}),E=react.useMemo(()=>({solanaAddress:o,evmAddress:i,polymarketSafeAddress:f,kalshiUsdcBalance:s?Number(s.balance):null,polymarketUsdcBalance:g&&h?Number(h.balance):null,kalshiKycVerified:u?.verified??false,kalshiKycUrl:u?.kyc_url??null,kalshiKycLoading:p,polymarketSetupVerified:g,polymarketSafeDeployed:m?.safe_deployed??false,polymarketTokenApproved:m?.token_approved??false,polymarketSetupLoading:d,isLoading:l||v,isFetching:a||S,error:c??P??null}),[o,i,f,s,h,g,u,p,m,d,l,v,a,S,c,P]);return jsxRuntime.jsx(ii.Provider,{value:E,children:r})}var Fl={minutes:60,hours:3600,days:86400};function un(e,t,r){let n=Math.floor(Date.now()/1e3);switch(e){case "5m":return n+300;case "1h":return n+3600;case "12h":return n+720*60;case "24h":return n+1440*60;case "eod":{let o=new Date;return o.setUTCHours(23,59,59,0),Math.floor(o.getTime()/1e3)}case "custom":return n+t*Fl[r]}}function pn(e,t){let r=parseFloat(t);return !r||r<=0?e:Math.round(e/r)*r}function xe(e,t){let r=Math.pow(10,t);return Math.floor(e*r)/r}function mn(e,t,r){let n=e.match(/Size\s*\(([\d.]+)\)\s*lower than the minimum:\s*([\d.]+)/i);if(n)return t("predict.trade.polymarket.minOrderSize",{current:n[1],min:n[2]});let o=e.match(/balance:\s*(\d+),\s*sum of active orders:\s*(\d+)/i);if(o){let s=parseInt(o[1],10)/1e6,l=parseInt(o[2],10)/1e6,a=Math.max(0,s-l);return t("predict.trade.polymarket.insufficientBalance",{total:xe(s,2).toFixed(2),active:xe(l,2).toFixed(2),available:xe(a,2).toFixed(2)})}return /not enough balance/i.test(e)?t(r==="sell"?"predict.trade.insufficientShares":"predict.trade.insufficientBalance"):/max accuracy of/i.test(e)?t("predict.trade.polymarket.decimalAccuracy"):/tick size/i.test(e)?t("predict.trade.polymarket.tickSizeError"):/couldn.*fully filled|FOK.*filled or killed/i.test(e)?t("predict.trade.polymarket.fokNotFilled"):e.replace(/order\s+0x[a-f0-9]+\s+is invalid\.\s*/i,"")||e}function Tr(e,t=2){return parseFloat(xe(e,t).toFixed(t)).toString()}function er(){let e={startVelocity:30,spread:360,ticks:60,zIndex:9999};eo__default.default({...e,particleCount:80,origin:{x:.5,y:.4}}),setTimeout(()=>{eo__default.default({...e,particleCount:40,origin:{x:.3,y:.6}});},150),setTimeout(()=>{eo__default.default({...e,particleCount:40,origin:{x:.7,y:.6}});},300);}function ci({market:e,initialOutcome:t="yes",onInsufficientBalance:r}){let{t:n}=i18n.useTranslation(),{status:o}=walletConnector.useAuth(),i=walletConnector.useWallets(),s=walletConnector.useSwitchChain(),l=reactPredict.usePredictClient(),a=react.useContext(reactPredict.PolymarketContext),c=reactQuery.useQueryClient(),u=e.source,p=u==="polymarket",m=i.find(D=>D.chainNamespace===types.ChainNamespace.SOLANA&&D.isConnected),d=i.find(D=>D.chainNamespace===types.ChainNamespace.EVM&&D.isConnected&&"switchChain"in D),f=o==="authenticated",g=m?.address,h=d?.address,v=react.useMemo(()=>{if(u!=="polymarket")return;let D=e.provider_meta?.["polymarket.clobTokenIds"];return D?(typeof D=="string"?JSON.parse(D):D)[0]:void 0},[u,e.provider_meta]),{data:S,isLoading:P}=reactPredict.useTickSize(v),E=S?.minimum_tick_size?String(S.minimum_tick_size):"0.01",{data:x,isLoading:C}=reactPredict.useFeeRate(v),y=String(x?.base_fee??0),[B,A]=react.useState(t),[V,$]=react.useState("market"),[k,W]=react.useState(NaN),[I,Y]=react.useState(NaN),[j,w]=react.useState(false),[b,N]=react.useState(null),[Z,J]=react.useState(false),[ee,_e]=react.useState(false),[Re,Fe]=react.useState("1h"),[Ee,we]=react.useState(30),[ot,je]=react.useState("minutes"),Be=null,Ie=false,lt=null,Ge;try{let D=Zt();Be={kalshiUsdcBalance:D.kalshiUsdcBalance,polymarketUsdcBalance:D.polymarketUsdcBalance,isLoading:D.isLoading},Ie=D.kalshiKycVerified,lt=D.kalshiKycUrl,Ge=D.polymarketSafeAddress;}catch{}let L=react.useMemo(()=>{let D=B==="yes"?0:1,Pe=e.outcomes[D];return Pe?.best_ask??Pe?.price??.5},[e.outcomes,B]),fe=react.useCallback(D=>{$(D);},[]),He=react.useCallback(D=>{A(D),Y(NaN);},[]);react.useEffect(()=>{V==="limit"&&isNaN(I)&&Y(Math.round(L*100)/100);},[V,I,L]);let ct=react.useMemo(()=>isNaN(k)||k<=0?0:L>0?k/L:0,[k,L]),ze=react.useMemo(()=>isNaN(k)||k<=0?"0":String(Math.round(k*1e6)),[k]),jt=e.provider_meta?.["dflow.yesMint"]??"",O=e.provider_meta?.["dflow.noMint"]??"",Oe=utils.SOLANA_TOKENS.stablecoins.USDC.address,Ye=B==="yes"?jt:O,Gt=Oe,Nt=Ye,ur=u==="kalshi"?g??"":h??"",{data:ft,isLoading:$e}=reactPredict.usePositions({source:u,user:ur},{enabled:!!ur}),Vn=u==="kalshi"&&!!Gt&&!!Nt&&!!g&&ze!=="0",{refetch:Yr}=reactPredict.useDFlowQuote({inputMint:Gt,outputMint:Nt,amount:ze,userPublicKey:g??"",slippageBps:100},{enabled:Vn}),Ct=react.useMemo(()=>Be?u==="kalshi"?Be.kalshiUsdcBalance:Be.polymarketUsdcBalance:ft&&ft.positions.reduce((Pe,dt)=>dt.side==="USDC"||dt.side==="collateral"?Pe+(dt.current_value??0):Pe,0)||null,[Be,ft,u]),Bt=Be?Be.isLoading:$e,wr=react.useMemo(()=>V==="limit"&&p&&!isNaN(I)?I:L,[V,p,I,L]),qr=react.useMemo(()=>isNaN(k)||k<=0?0:k,[k]),jn=react.useMemo(()=>isNaN(k)||k<=0?0:wr>0?k/wr*1:0,[k,wr]),Qr=jn-qr,Gn=react.useCallback(D=>{if(isNaN(D)){W(NaN);return}W(Math.round(Math.max(0,D)*100)/100);},[]),Yt=react.useCallback(D=>{if(isNaN(D)){Y(NaN);return}let Pe=Math.max(.01,Math.min(.99,D));Y(Math.round(Pe*100)/100);},[]),gt=react.useCallback(()=>{W(NaN),Y(NaN),$("market"),_e(false),Fe("1h"),we(30),je("minutes");},[]),Mt=react.useMemo(()=>{let D=[];return isNaN(k)||k<=0?D.push(n("predict.trade.minAmountUsd",{amount:dn})):k<dn&&D.push(n("predict.trade.minAmountUsd",{amount:dn})),e.status!=="open"&&D.push(n("predict.trade.marketNotActive")),Ct!=null&&!isNaN(k)&&k>0&&k>xe(Ct,2)&&D.push(n("predict.trade.insufficientBalance")),V==="limit"&&p&&(isNaN(I)||I<.01||I>.99)&&D.push(n("predict.trade.limitPriceRange")),V==="limit"&&p&&ee&&Re==="custom"&&(isNaN(Ee)||Ee<=0)&&D.push(n("predict.trade.expiration.invalidDate")),{isValid:D.length===0,errors:D}},[k,e.status,Ct,V,p,I,ee,Re,Ee,n]),pr=react.useMemo(()=>Ct==null||isNaN(k)||k<=0?false:k>xe(Ct,2),[Ct,k]),Yn=react.useCallback(()=>{r?.(u);},[r,u]),{mutateAsync:Pr}=reactPredict.useDFlowSubmit(),{data:Nr}=reactPredict.useOrder({id:b??"",source:u},{enabled:!!b});react.useEffect(()=>{if(!Nr||!b)return;let{status:D}=Nr;D==="closed"?(N(null),w(false),ui.toast.success(n("predict.trade.submitSuccess")),er(),gt(),c.invalidateQueries({queryKey:["predict","positions"]})):(D==="failed"||D==="expired")&&(w(false),N(null),ui.toast.error(n("predict.trade.submitError")));},[Nr,b,c,gt,n]);let Xr=react.useCallback(async()=>{if(!g||!m)return;if(!Gt||!Nt){ui.toast.error("Missing token mint addresses"),w(false);return}if(!Ie){J(true),w(false);return}let ht=(await Yr()).data?.transaction;if(!ht){ui.toast.error(n("predict.trade.submitError")),w(false);return}let vt=Uint8Array.from(atob(ht),Qt=>Qt.charCodeAt(0)),it=await m.signTransaction(vt),qt=await Pr({signedTransaction:btoa(String.fromCharCode(...it)),orderContext:{user_public_key:g,input_mint:Gt,output_mint:Nt,amount:ze,price:String(L),side:"BUY",outcome:B==="yes"?"YES":"NO",market_slug:e.slug,slippage_bps:100}});N(qt.signature);},[g,m,Yr,Pr,Gt,Nt,ze,L,B,e.slug,n,Ie]),Jr=react.useCallback(async()=>{if(!d||!a)return;let D=d.chain,Pe=D!==types.Chain.POLYGON;Pe&&await s(types.Chain.POLYGON);try{let dt=await d.getEip1193Provider();if(!dt){ui.toast.error(n("predict.trade.submitError")),w(!1);return}let ht=!!Ge,vt={address:d.address,signatureType:ht?2:0,signTypedData:async(Tt,Qn,Yo,tn)=>{let zt=[];"name"in Tt&&zt.push({name:"name",type:"string"}),"version"in Tt&&zt.push({name:"version",type:"string"}),"chainId"in Tt&&zt.push({name:"chainId",type:"uint256"}),"verifyingContract"in Tt&&zt.push({name:"verifyingContract",type:"address"}),"salt"in Tt&&zt.push({name:"salt",type:"bytes32"});let rn={EIP712Domain:zt,...Qn};return await dt.request({method:"eth_signTypedData_v4",params:[d.address,JSON.stringify({domain:Tt,types:rn,primaryType:Yo,message:tn})]})}},it=a.credentials??await a.authenticate(vt),qt=B==="yes"?0:1,Qt="",xt=e.provider_meta?.["polymarket.clobTokenIds"];xt&&(Qt=(typeof xt=="string"?JSON.parse(xt):xt)[qt]??"");let Cr=e.provider_meta?.["polymarket.negRisk"]??!1,Zr=V==="limit"&&!isNaN(I)?I:L,Mr=pn(Zr,E),T=V==="limit"?ee?"GTD":"GTC":"FOK",ve=V==="market"?k:Mr>0?k/Mr:0,We={tokenId:Qt,price:Mr,size:ve,side:"BUY",orderType:T,tickSize:E,negRisk:Cr,...Ge&&{funderAddress:Ge},...V==="limit"&&ee&&{expiration:un(Re,Ee,ot)}},De=reactPredict.buildCtfExchangeDomain(Cr),st=reactPredict.buildOrderMessage({...We,signerAddress:vt.address,signatureType:vt.signatureType,feeRateBps:y}),Ue=await vt.signTypedData(De,reactPredict.CTF_ORDER_TYPES,"Order",st),Et=reactPredict.buildSignedOrder(st,Ue,We.orderType),Ne=reactPredict.buildClobPayload(Et,it.apiKey),Ht=JSON.stringify(Ne),en=await reactPredict.buildPolymarketL2Headers(it.address,{apiKey:it.apiKey,secret:it.secret,passphrase:it.passphrase,method:"POST",requestPath:"/order",body:Ht});await l.createPolymarketOrder(Ne,en),c.invalidateQueries({queryKey:["predict","orders"]}),c.invalidateQueries({queryKey:["predict","positions"]}),ui.toast.success(n("predict.trade.submitSuccess")),er(),gt(),w(!1);}finally{Pe&&D&&s(D).catch(()=>{});}},[d,a,s,B,e.provider_meta,V,I,L,k,l,c,ee,Re,Ee,ot,gt,n,E,y,Ge]),qn=react.useCallback(async()=>{if(!(!Mt.isValid||!f)){w(true),N(null),J(false);try{u==="kalshi"?await Xr():await Jr();}catch(D){let Pe=D instanceof Error?D.message:"",dt=u==="polymarket"&&Pe?mn(Pe,n,"buy"):Pe||void 0;ui.toast.error(dt||n("predict.trade.submitError")),w(false);}}},[Mt.isValid,f,u,Xr,Jr,n]);return {outcome:B,orderType:V,quantity:k,limitPrice:I,shares:ct,estimatedCost:qr,potentialPayout:jn,potentialProfit:Qr,usdcBalance:Ct,isBalanceLoading:Bt,isMarketDataLoading:u==="polymarket"&&(C||P),isSubmitting:j,validation:Mt,isInsufficientBalance:pr,source:u,supportsLimitOrder:p,kycRequired:Z,kycUrl:lt,expirationEnabled:ee,expirationPreset:Re,customDuration:Ee,customDurationUnit:ot,setOutcome:He,setOrderType:fe,setQuantity:Gn,setLimitPrice:Yt,setExpirationEnabled:_e,setExpirationPreset:Fe,setCustomDuration:we,setCustomDurationUnit:je,submit:qn,notifyInsufficientBalance:Yn}}function fn({isOpen:e,onClose:t,kycUrl:r}){let{t:n}=i18n.useTranslation();return jsxRuntime.jsx(ui.StyledModal,{isOpen:e,onOpenChange:o=>{o||t();},size:"md",classNames:{base:"!bg-[#18181b] !rounded-[14px] !border !border-[rgba(39,39,42,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]",body:"!p-0"},children:jsxRuntime.jsx(ui.ModalContent,{children:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between px-5 pt-5 pb-4",children:[jsxRuntime.jsx("h3",{className:"text-base font-semibold text-white",children:n("predict.trade.kycModalTitle")}),jsxRuntime.jsx("button",{type:"button",onClick:t,className:"p-1 rounded-[10px] hover:bg-[rgba(39,39,42,0.5)] text-zinc-400 hover:text-white transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:jsxRuntime.jsxs("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntime.jsxs("div",{className:"px-5 pb-5",children:[jsxRuntime.jsx("p",{className:"text-[13px] text-zinc-400 mb-4 text-left",children:n("predict.trade.kycModalDescription")}),jsxRuntime.jsx("div",{className:"flex flex-col gap-2 mb-4",children:["predict.trade.kycModalBullet1","predict.trade.kycModalBullet2","predict.trade.kycModalBullet3"].map(o=>jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 text-[13px] text-zinc-300",children:[jsxRuntime.jsx("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round",className:"text-[#c7ff2e] shrink-0",children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})}),jsxRuntime.jsx("span",{children:n(o)})]},o))}),r&&jsxRuntime.jsxs("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[13px] text-[#c7ff2e]/70 hover:text-[#c7ff2e] transition-colors mb-3",children:[n("predict.trade.goToKYC")," \u2192"]}),jsxRuntime.jsx("p",{className:"text-[11px] text-zinc-500 mb-5",children:n("predict.trade.kycModalNote")}),jsxRuntime.jsx("button",{type:"button",onClick:t,className:"w-full py-2.5 rounded-[10px] bg-[#c7ff2e] text-zinc-900 text-sm font-semibold hover:bg-[#c7ff2e]/90 transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:n("common.ok")})]})]})})})}var xc=`https://s1.chainstream.io/chains/sol/tokens/${utils.SOLANA_TOKENS.stablecoins.USDC.address}/image.png`,bc=["5m","1h","12h","24h","eod","custom"],yc={"5m":"predict.trade.expiration.5m","1h":"predict.trade.expiration.1h","12h":"predict.trade.expiration.12h","24h":"predict.trade.expiration.24h",eod:"predict.trade.expiration.eod",custom:"predict.trade.expiration.custom"},kc=["minutes","hours","days"],Sc={minutes:"predict.trade.expiration.minutes",hours:"predict.trade.expiration.hours",days:"predict.trade.expiration.days"},wc={maximumFractionDigits:0};function vi({event:e,market:t,variant:r="bordered",outcome:n,orderType:o,quantity:i,limitPrice:s,shares:l,potentialProfit:a,potentialPayout:c,estimatedCost:u,usdcBalance:p,isBalanceLoading:m,isMarketDataLoading:d,isSubmitting:f,isValid:g,validationErrors:h,isInsufficientBalance:v,onInsufficientBalance:S,supportsLimitOrder:P,kycRequired:E,kycUrl:x,expirationEnabled:C,expirationPreset:y,customDuration:B,customDurationUnit:A,onOutcomeChange:V,onOrderTypeChange:$,onQuantityChange:k,onLimitPriceChange:W,onExpirationEnabledChange:I,onExpirationPresetChange:Y,onCustomDurationChange:j,onCustomDurationUnitChange:w,onSubmit:b}){let{t:N}=i18n.useTranslation(),[Z,J]=react.useState(false),ee=ui.useDisclosure(),[_e,Re]=react.useState(""),Fe=react.useRef(false);react.useEffect(()=>{Fe.current||Re(isNaN(i)?"":String(i));},[i]);let[Ee,we]=react.useState(""),ot=react.useRef(false);react.useEffect(()=>{ot.current||(isNaN(s)?we(""):we(String(parseFloat((s*100).toFixed(2)))));},[s]);let je=react.useCallback(O=>{if(O!==""&&!/^\d*\.?\d{0,2}$/.test(O))return;if(we(O),O===""||O==="."){W(NaN);return}let Ye=parseFloat(O);isNaN(Ye)||W(Ye/100);},[W]),Be=react.useCallback(O=>{if(O!==""&&!/^\d*\.?\d{0,2}$/.test(O))return;if(Re(O),ze(false),O===""||O==="."){k(NaN);return}let Ye=parseFloat(O);isNaN(Ye)||k(Ye);},[k]);react.useEffect(()=>{E&&!ee.isOpen&&ee.onOpen();},[E]);let Ie=react.useMemo(()=>{let O=n==="yes"?t.yesAsk:t.noAsk;return O!=null?parseFloat((Number(O)*100).toFixed(2)):null},[n,t]),lt=!isNaN(i)&&i>0,Ge=react.useMemo(()=>{if(m)return N("predict.trade.loadingBalance");if(d)return N("predict.trade.loadingMarketData");if(f)return N("predict.trade.submitting");if(E)return N("predict.trade.kycRequired");if(!lt)return N("predict.trade.enterAmount");let O=N(n==="yes"?"predict.trade.yes":"predict.trade.no"),Oe=a>0?` \u2192 Win $${a.toFixed(2)}`:"";return `${N("predict.trade.buy")} ${O}${Oe}`},[m,d,f,E,lt,n,a,N]),L=react.useMemo(()=>n==="yes"?"primary":"secondary",[n]),fe=()=>{k(Math.floor((p??0)/2*100)/100);},He=()=>{k(xe(p??0,2));},[ct,ze]=react.useState(false),jt=()=>{if(E){ee.onOpen();return}if(v&&S){ze(false),S();return}if(!g){ze(true);return}ze(false),b();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex w-full flex-col gap-y-4 p-4",style:r==="bordered"?{borderRadius:14,border:"1px solid rgba(39,39,42,0.6)",background:"rgba(24,24,27,0.4)",transition:"border-color 0.2s"}:void 0,onMouseEnter:O=>{r==="bordered"&&(O.currentTarget.style.borderColor="rgba(63,63,70,0.8)");},onMouseLeave:O=>{r==="bordered"&&(O.currentTarget.style.borderColor="rgba(39,39,42,0.6)");},children:[e&&jsxRuntime.jsxs("div",{className:"flex items-center gap-x-3",children:[e.imageUrl&&jsxRuntime.jsx("img",{src:e.imageUrl,alt:e.title,className:"h-10 w-10 shrink-0 rounded-lg object-cover"}),jsxRuntime.jsxs("div",{className:"flex min-w-0 flex-col gap-y-0.5",children:[jsxRuntime.jsx("span",{className:"text-sm text-neutral-500 leading-tight line-clamp-1",children:e.title}),jsxRuntime.jsxs("span",{className:"text-base font-semibold leading-tight line-clamp-1",children:[jsxRuntime.jsxs("span",{className:n==="yes"?"text-bullish":"text-bearish",children:[N("predict.trade.buy")," ",N(n==="yes"?"predict.trade.yes":"predict.trade.no")]}),jsxRuntime.jsxs("span",{className:"text-foreground",children:[" \xB7 ",t.yesSubTitle]})]})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[P?jsxRuntime.jsxs(ui.Tabs,{variant:"underlined",selectedKey:o,onSelectionChange:O=>$(O),classNames:{tabList:"gap-x-4",tab:"px-0"},children:[jsxRuntime.jsx(ui.Tab,{title:N("predict.trade.market")},"market"),jsxRuntime.jsx(ui.Tab,{title:N("predict.trade.limit")},"limit")]}):jsxRuntime.jsx("span",{className:"text-sm font-medium text-foreground",children:N("predict.trade.market")}),o==="limit"&&P?jsxRuntime.jsx(ui.StyledInput,{"aria-label":"Limit price",placeholder:"50",size:"sm",radius:"none",inputMode:"decimal",value:Ee,onChange:O=>je(O.target.value),onFocus:()=>{ot.current=true;},onBlur:()=>{ot.current=false,isNaN(s)?we(""):we(String(parseFloat((s*100).toFixed(2))));},endContent:jsxRuntime.jsx("span",{className:"text-xl font-bold tabular-nums text-foreground",children:"\xA2"}),classNames:{base:"w-28",inputWrapper:"bg-content2 data-[hover=true]:bg-content2 group-data-[focus=true]:bg-content2 rounded-lg px-2 h-9 min-h-9",input:"text-xl font-bold tabular-nums text-right"}}):Ie!=null&&jsxRuntime.jsxs("span",{className:"text-xl font-bold tabular-nums",children:[Ie," \xA2"]})]}),jsxRuntime.jsx("div",{className:"flex gap-x-2",children:["yes","no"].map(O=>{let Oe=O==="yes"?t.yesAsk:t.noAsk;return jsxRuntime.jsx("div",{className:"flex flex-1 flex-col gap-y-1",children:jsxRuntime.jsxs("button",{type:"button",onClick:()=>V(O),className:`w-full rounded-lg border py-2 text-sm font-medium transition-colors cursor-pointer ${n===O?O==="yes"?"border-primary bg-primary-50 text-primary":"border-secondary bg-secondary-50 text-secondary":"border-default-400 text-foreground hover:border-default-500"}`,children:[jsxRuntime.jsx("span",{children:N(O==="yes"?"predict.trade.yes":"predict.trade.no")}),Oe!=null&&jsxRuntime.jsxs("span",{className:"ml-1 opacity-70",children:[parseFloat((Number(Oe)*100).toFixed(2)),"\xA2"]})]})},O)})}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-1.5",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between text-xs text-neutral-500",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium text-foreground",children:N("predict.trade.youArePaying")}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsx("img",{src:xc,alt:"USDC",className:"h-3.5 w-3.5 rounded-full object-cover"}),jsxRuntime.jsx("span",{className:"font-medium text-foreground tabular-nums",children:p!=null?`${xe(p,2).toFixed(2)} USDC`:"\u2013"}),jsxRuntime.jsx("button",{type:"button",onClick:fe,className:"rounded px-1.5 py-0.5 bg-content2 hover:bg-content3 transition-colors cursor-pointer text-foreground font-medium",children:N("predict.trade.half")}),jsxRuntime.jsx("button",{type:"button",onClick:He,className:"rounded px-1.5 py-0.5 bg-content2 hover:bg-content3 transition-colors cursor-pointer text-foreground font-medium",children:N("predict.trade.max")})]})]}),jsxRuntime.jsx(ui.StyledInput,{"aria-label":"Trade amount",fullWidth:true,placeholder:"0",radius:"lg",size:"lg",inputMode:"decimal",value:_e,onChange:O=>Be(O.target.value),onFocus:()=>{Fe.current=true;},onBlur:()=>{Fe.current=false,Re(isNaN(i)?"":String(i));},startContent:jsxRuntime.jsx("span",{className:"text-default-600 text-xl",children:"$"}),classNames:{inputWrapper:"bg-content2 data-[hover=true]:bg-content2 group-data-[focus=true]:bg-content2 h-14 min-h-14",input:"text-lg"}}),ct&&h.length>0&&jsxRuntime.jsx("div",{className:"flex flex-col gap-y-0.5",children:h.map(O=>jsxRuntime.jsx("span",{className:"text-xs text-danger",children:O},O))})]}),o==="limit"&&P&&jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium text-primary",children:N("predict.trade.setExpiration")}),jsxRuntime.jsx(ui.StyledSwitch,{size:"sm",color:"primary",isSelected:C,onValueChange:I,"aria-label":N("predict.trade.setExpiration")})]}),C&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Select,{"aria-label":N("predict.trade.setExpiration"),selectedKeys:[y],onSelectionChange:O=>{let Oe=Array.from(O)[0];Oe&&Y(Oe);},size:"sm",radius:"lg",classNames:{trigger:"bg-content2 data-[hover=true]:bg-content2 min-h-10",value:"text-sm"},children:bc.map(O=>jsxRuntime.jsx(ui.SelectItem,{children:N(yc[O])},O))}),y==="custom"&&jsxRuntime.jsxs("div",{className:"flex gap-x-2",children:[jsxRuntime.jsx(ui.StyledNumberInput,{"aria-label":"Duration amount",size:"sm",radius:"lg",value:isNaN(B)?void 0:B,onValueChange:j,minValue:1,step:1,formatOptions:wc,classNames:{base:"flex-1",inputWrapper:"bg-content2 data-[hover=true]:bg-content2 group-data-[focus=true]:bg-content2 min-h-10",input:"text-sm"}}),jsxRuntime.jsx(ui.Select,{"aria-label":"Duration unit",selectedKeys:[A],onSelectionChange:O=>{let Oe=Array.from(O)[0];Oe&&w(Oe);},size:"sm",radius:"lg",classNames:{base:"w-32",trigger:"bg-content2 data-[hover=true]:bg-content2 min-h-10",value:"text-sm"},children:kc.map(O=>jsxRuntime.jsx(ui.SelectItem,{children:N(Sc[O])},O))})]})]})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between text-sm",children:[jsxRuntime.jsxs("button",{type:"button",onClick:()=>J(O=>!O),className:"flex items-center gap-x-1 text-neutral-500 hover:text-foreground cursor-pointer transition-colors",children:[jsxRuntime.jsx("span",{children:N("predict.trade.odds")}),jsxRuntime.jsx(ui.ChevronDownIcon,{className:ui.cn("h-3.5 w-3.5 transition-transform",Z&&"rotate-180")})]}),Ie!=null&&jsxRuntime.jsx("span",{className:"text-foreground font-medium tabular-nums",children:N("predict.trade.chance",{percent:Ie})})]}),Z&&jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-1.5 border-l-2 border-default-300 pl-3 text-sm text-neutral-500",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.totalSize")}),jsxRuntime.jsx("span",{className:"tabular-nums text-foreground",children:!isNaN(i)&&i>0?`$${u.toFixed(2)}`:"\u2013"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.numContracts")}),jsxRuntime.jsx("span",{className:"tabular-nums text-foreground",children:!isNaN(l)&&l>0?Tr(l):"\u2013"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.payout")}),jsxRuntime.jsx("span",{className:"tabular-nums text-foreground",children:!isNaN(i)&&i>0?`$${c.toFixed(2)}`:"\u2013"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.estProfit")}),jsxRuntime.jsx("span",{className:"tabular-nums text-bullish",children:!isNaN(i)&&i>0&&a>0?`+$${a.toFixed(2)}`:"\u2013"})]})]})]}),jsxRuntime.jsx(ui.Button,{color:L,fullWidth:true,radius:"lg",size:"lg",isDisabled:m||d||!lt||f,isLoading:f||m||d,spinner:jsxRuntime.jsx(ui.Spinner,{size:"sm",color:"current"}),onPress:jt,children:Ge})]}),jsxRuntime.jsx(fn,{isOpen:ee.isOpen,onClose:ee.onClose,kycUrl:x})]})}function hn({event:e,market:t,variant:r,initialOutcome:n,chain:o,onInsufficientBalance:i}){let{outcome:s,orderType:l,quantity:a,limitPrice:c,shares:u,estimatedCost:p,potentialPayout:m,potentialProfit:d,usdcBalance:f,isBalanceLoading:g,isMarketDataLoading:h,isSubmitting:v,validation:S,isInsufficientBalance:P,supportsLimitOrder:E,kycRequired:x,kycUrl:C,expirationEnabled:y,expirationPreset:B,customDuration:A,customDurationUnit:V,setOutcome:$,setOrderType:k,setQuantity:W,setLimitPrice:I,setExpirationEnabled:Y,setExpirationPreset:j,setCustomDuration:w,setCustomDurationUnit:b,submit:N,notifyInsufficientBalance:Z}=ci({market:t,initialOutcome:n,onInsufficientBalance:i}),J=walletConnector.useAuthCallback(N),ee=react.useMemo(()=>e?on(e):void 0,[e]),_e=react.useMemo(()=>sn(t),[t]);return jsxRuntime.jsx(vi,{event:ee,market:_e,variant:r,outcome:s,orderType:l,quantity:a,limitPrice:c,shares:u,estimatedCost:p,potentialPayout:m,potentialProfit:d,usdcBalance:f,isBalanceLoading:g,isMarketDataLoading:h,isSubmitting:v,isValid:S.isValid,validationErrors:S.errors,isInsufficientBalance:P,onInsufficientBalance:i?Z:void 0,supportsLimitOrder:E,kycRequired:x,kycUrl:C,expirationEnabled:y,expirationPreset:B,customDuration:A,customDurationUnit:V,onOutcomeChange:$,onOrderTypeChange:k,onQuantityChange:W,onLimitPriceChange:I,onExpirationEnabledChange:Y,onExpirationPresetChange:j,onCustomDurationChange:w,onCustomDurationUnitChange:b,onSubmit:J})}var Lr="predict-trade";function vn({id:e=Lr}){return jsxRuntime.jsx(uiScaffold.AsyncModal,{id:e,children:t=>jsxRuntime.jsx(_c,{...t})})}function _c({params:e,isOpen:t,onOpenChange:r}){let{t:n}=i18n.useTranslation(),{isMobile:o}=ui.useScreen();return e?jsxRuntime.jsx(ui.StyledModal,{isOpen:t,onOpenChange:r,size:o?"lg":"md",backdrop:"blur",hideCloseButton:true,classNames:{base:"!bg-[#18181b] !rounded-[14px] !border !border-[rgba(39,39,42,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]",body:"!p-0"},children:jsxRuntime.jsx(ui.ModalContent,{children:jsxRuntime.jsxs("div",{className:o?"":"p-2",children:[jsxRuntime.jsx(hn,{event:e.event,market:e.market,initialOutcome:e.initialOutcome,chain:e.chain,variant:"flat",onInsufficientBalance:e.onInsufficientBalance}),jsxRuntime.jsx("div",{className:"px-4 pb-4",children:jsxRuntime.jsx("button",{type:"button",onClick:()=>r(false),className:"w-full h-12 rounded-xl text-sm font-medium text-zinc-400 hover:text-white hover:bg-[rgba(39,39,42,0.5)] transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:n("common.cancel")})})]})})}):null}var no={sortPreset:"volume",sortAsc:false,source:void 0,timeRemaining:void 0,minVolume:void 0,minLiquidity:void 0};function oo(e){let t=0;return e.source&&t++,e.timeRemaining&&t++,e.minVolume&&t++,e.minLiquidity&&t++,t}function bi({isOpen:e,onClose:t,value:r,onChange:n}){let{t:o}=i18n.useTranslation(),[i,s]=react.useState(r),l=react.useCallback(h=>{h?s(r):t();},[r,t]),a=react.useCallback(()=>{s(no);},[]),c=react.useCallback(()=>{n(i),t();},[i,n,t]),u=react.useCallback((h,v)=>{s(S=>({...S,[h]:v}));},[]),p=react.useMemo(()=>oo(i),[i]),m=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"polymarket",label:o("predict.platform.polymarket")},{value:"kalshi",label:o("predict.platform.kalshi")}],[o]),d=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"1d",label:o("predict.filter.lessThanDay")},{value:"7d",label:o("predict.filter.lessThanWeek")},{value:"30d",label:o("predict.filter.lessThanMonth")}],[o]),f=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"1000",label:">$1K"},{value:"10000",label:">$10K"},{value:"100000",label:">$100K"},{value:"1000000",label:">$1M"}],[o]),g=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"1000",label:">$1K"},{value:"10000",label:">$10K"},{value:"100000",label:">$100K"},{value:"1000000",label:">$1M"}],[o]);return jsxRuntime.jsx(ui.StyledModal,{isOpen:e,onOpenChange:l,size:"md",backdrop:"blur",scrollBehavior:"inside",classNames:{base:"!bg-[#18181b] !rounded-[14px] !border !border-[rgba(39,39,42,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]",body:"!p-0"},children:jsxRuntime.jsx(ui.ModalContent,{children:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between px-5 pt-5 pb-4",children:[jsxRuntime.jsx("h3",{className:"text-base font-semibold text-white",children:o("predict.filter.title")}),jsxRuntime.jsx(Fc,{onClick:()=>l(false)})]}),jsxRuntime.jsxs("div",{style:{padding:"0 20px 16px",display:"flex",flexDirection:"column",gap:20},children:[jsxRuntime.jsx(bn,{label:o("predict.filter.platform"),children:jsxRuntime.jsx(yn,{options:m,selected:i.source,onSelect:h=>u("source",h)})}),jsxRuntime.jsx(bn,{label:o("predict.filter.timeRemaining"),children:jsxRuntime.jsx(yn,{options:d,selected:i.timeRemaining,onSelect:h=>u("timeRemaining",h)})}),jsxRuntime.jsx(bn,{label:o("predict.filter.minVolume"),children:jsxRuntime.jsx(yn,{options:f,selected:i.minVolume,onSelect:h=>u("minVolume",h)})}),jsxRuntime.jsx(bn,{label:o("predict.filter.minLiquidity"),children:jsxRuntime.jsx(yn,{options:g,selected:i.minLiquidity,onSelect:h=>u("minLiquidity",h)})})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-3 px-5 py-4",style:{borderTop:"1px solid rgba(39,39,42,0.5)"},children:[jsxRuntime.jsx("button",{type:"button",className:"inline-flex items-center justify-center py-2.5 px-5 rounded-[10px] text-zinc-400 text-sm font-medium hover:text-white transition-colors cursor-pointer",onClick:a,children:o("predict.filter.reset")}),jsxRuntime.jsxs("button",{type:"button",className:"flex-1 inline-flex items-center justify-center gap-2 py-2.5 rounded-[10px] bg-[#c7ff2e] text-zinc-900 text-sm font-semibold hover:bg-[#c7ff2e]/90 transition-colors cursor-pointer",onClick:c,children:[o("predict.filter.showResults"),p>0&&jsxRuntime.jsxs("span",{style:{opacity:.7},children:["(",p,")"]})]})]})]})})})}function bn({label:e,children:t}){return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[jsxRuntime.jsx("span",{style:{fontSize:11,fontWeight:500,color:"#71717a",textTransform:"uppercase",letterSpacing:"0.05em"},children:e}),t]})}function Fc({onClick:e}){return jsxRuntime.jsx("button",{type:"button",onClick:e,className:"p-1 rounded-[10px] hover:bg-[rgba(39,39,42,0.5)] text-zinc-400 hover:text-white transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:jsxRuntime.jsxs("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})}function yn({options:e,selected:t,onSelect:r,allowDeselect:n=true}){return jsxRuntime.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:8},children:e.map(o=>{let i=t===o.value;return jsxRuntime.jsx("button",{type:"button",onClick:()=>{r(i&&n?void 0:o.value);},style:{flexShrink:0,borderRadius:10,padding:"6px 14px",fontSize:13,fontWeight:500,cursor:"pointer",transition:"all 0.15s",border:i?"1px solid rgba(199,255,46,0.3)":"1px solid rgba(63,63,70,0.5)",background:i?"rgba(199,255,46,0.08)":"rgba(39,39,42,0.4)",color:i?"#c7ff2e":"#a1a1aa"},onMouseEnter:s=>{i||(s.currentTarget.style.background="rgba(39,39,42,0.8)",s.currentTarget.style.color="#fff");},onMouseLeave:s=>{i||(s.currentTarget.style.background="rgba(39,39,42,0.4)",s.currentTarget.style.color="#a1a1aa");},children:o.label},o.value??"__all")})})}var Pi={start_time:{sort_by:"created_at"},volume:{sort_by:"volume"},liquidity:{sort_by:"liquidity"},ending_soon:{sort_by:"end_at"}},ki={start_time:"predict.sort.startTime",volume:"predict.sort.volume",liquidity:"predict.sort.liquidity",ending_soon:"predict.sort.endingSoon"},jc=["start_time","volume","liquidity","ending_soon"],Si={display:"inline-flex",alignItems:"center",gap:8,borderRadius:10,border:"1px solid rgba(63,63,70,0.5)",background:"rgba(39,39,42,0.6)",padding:"8px 12px",fontSize:14,color:"#d4d4d8",cursor:"pointer",transition:"all 0.15s"},Gc={position:"absolute",left:0,top:"100%",zIndex:20,marginTop:8,borderRadius:14,border:"1px solid rgba(39,39,42,1)",background:"rgba(24,24,27,1)",boxShadow:"0 25px 50px -12px rgba(0,0,0,0.5)",overflow:"hidden"};function Ni({sortPreset:e,onSortChange:t,sortAsc:r,onSortAscChange:n,onFilterPress:o,filterCount:i=0,className:s}){let{t:l}=i18n.useTranslation(),[a,c]=react.useState(false),u=react.useRef(null),p=react.useCallback(d=>{u.current&&!u.current.contains(d.target)&&c(false);},[]);react.useEffect(()=>(document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)),[p]),react.useEffect(()=>{if(!a)return;let d=f=>{f.key==="Escape"&&c(false);};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[a]);let m=wi[e];return jsxRuntime.jsxs("div",{className:s,style:{display:"flex",alignItems:"center",gap:8},children:[jsxRuntime.jsxs("div",{ref:u,style:{position:"relative"},children:[jsxRuntime.jsxs("button",{type:"button",style:Si,onMouseEnter:d=>{d.currentTarget.style.background="rgba(39,39,42,1)";},onMouseLeave:d=>{d.currentTarget.style.background="rgba(39,39,42,0.6)";},onClick:()=>c(d=>!d),children:[jsxRuntime.jsx(Yc,{}),jsxRuntime.jsx(m,{className:"size-4 shrink-0",style:{color:"#a1a1aa"}}),jsxRuntime.jsx("span",{className:"hidden sm:block",style:{color:"#d4d4d8"},children:l(ki[e])}),jsxRuntime.jsx(Qc,{open:a})]}),a&&jsxRuntime.jsx("div",{style:{...Gc,width:224,padding:4},children:jc.map(d=>{let f=wi[d],g=e===d;return jsxRuntime.jsxs("button",{type:"button",style:{display:"flex",width:"100%",alignItems:"center",gap:12,padding:"10px 12px",textAlign:"left",fontSize:14,border:"none",cursor:"pointer",transition:"all 0.15s",background:g?"rgba(199,255,46,0.08)":"transparent",color:g?"#c7ff2e":"#a1a1aa",borderRadius:10},onMouseEnter:h=>{g||(h.currentTarget.style.background="rgba(39,39,42,0.5)",h.currentTarget.style.color="#fff");},onMouseLeave:h=>{g||(h.currentTarget.style.background="transparent",h.currentTarget.style.color="#a1a1aa");},onClick:()=>{e===d?n(!r):t(d),c(false);},children:[jsxRuntime.jsx(f,{className:"size-4 shrink-0",style:{color:g?"#c7ff2e":"#71717a"}}),jsxRuntime.jsx("span",{style:{flex:1,fontWeight:500},children:l(ki[d])}),g&&jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",style:{width:16,height:16,color:"#c7ff2e",flexShrink:0},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M20 6 9 17l-5-5"})})]},d)})})]}),jsxRuntime.jsx("button",{type:"button",style:{borderRadius:10,border:"1px solid rgba(63,63,70,0.5)",background:"rgba(39,39,42,0.6)",width:36,height:36,color:"#a1a1aa",cursor:"pointer",transition:"all 0.15s",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:14},onMouseEnter:d=>{d.currentTarget.style.background="rgba(39,39,42,1)",d.currentTarget.style.color="#fff";},onMouseLeave:d=>{d.currentTarget.style.background="rgba(39,39,42,0.6)",d.currentTarget.style.color="#a1a1aa";},onClick:()=>n(!r),children:r?"\u2191":"\u2193"}),jsxRuntime.jsxs("div",{style:{position:"relative",display:"inline-flex"},children:[jsxRuntime.jsxs("button",{type:"button",style:Si,onMouseEnter:d=>{d.currentTarget.style.background="rgba(39,39,42,1)";},onMouseLeave:d=>{d.currentTarget.style.background="rgba(39,39,42,0.6)";},onClick:o,children:[jsxRuntime.jsx(qc,{}),jsxRuntime.jsx("span",{className:"hidden sm:block",style:{color:"#d4d4d8"},children:l("predict.filter.title")})]}),i>0&&jsxRuntime.jsx("span",{style:{position:"absolute",top:-4,right:-4,minWidth:16,height:16,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:8,background:"#c7ff2e",color:"#000",fontSize:10,fontWeight:600,padding:"0 4px"},children:i})]})]})}var wi={start_time:ui.CalendarIcon,volume:ui.ChartLineIcon,liquidity:ui.DropletIcon,ending_soon:ui.TimerIcon};function Yc(){return jsxRuntime.jsxs("svg",{viewBox:"0 0 24 24",style:{width:14,height:14,color:"#a1a1aa"},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"m21 16-4 4-4-4"}),jsxRuntime.jsx("path",{d:"M17 20V4"}),jsxRuntime.jsx("path",{d:"m3 8 4-4 4 4"}),jsxRuntime.jsx("path",{d:"M7 4v16"})]})}function qc(){return jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",style:{width:14,height:14,color:"#a1a1aa"},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z"})})}function Qc({open:e}){return jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",style:{width:14,height:14,color:"#71717a",transition:"transform 0.15s",transform:e?"rotate(180deg)":void 0},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"m6 9 6 6 6-6"})})}function Ei(e={}){let t=react.useMemo(()=>reactPredict.resolveEventsParams(e),[e.tagSlugSelection,e.limit,e.status,e.sort_by,e.sort_asc,e.source,e.with_markets,e.minVolume,e.minLiquidity,e.timeRemaining,e.markets_limit]),{data:r,isLoading:n,isFetching:o,isFetchingNextPage:i,isError:s,error:l,hasNextPage:a,fetchNextPage:c,refetch:u}=reactPredict.useInfiniteEvents(t),p=react.useMemo(()=>r?.pages.flatMap(f=>f.items).filter(f=>f!=null)??[],[r]),m=react.useCallback(()=>{c();},[c]),d=react.useCallback(()=>{u();},[u]);return {data:p,isLoading:n,isFetching:o&&!i,isFetchingMore:i,isError:s,error:l??null,hasMore:a??false,fetchMore:m,refetch:d}}var Ti=`
|
|
1
|
+
'use strict';var react=require('react'),ui=require('@liberfi.io/ui'),uiScaffold=require('@liberfi.io/ui-scaffold'),i18n=require('@liberfi.io/i18n'),jsxRuntime=require('react/jsx-runtime'),walletConnector=require('@liberfi.io/wallet-connector'),reactQuery=require('@tanstack/react-query'),reactPredict=require('@liberfi.io/react-predict'),types=require('@liberfi.io/types'),utils=require('@liberfi.io/utils'),eo=require('canvas-confetti'),reactWindow=require('react-window'),reactWindowInfiniteLoader=require('react-window-infinite-loader'),hooks=require('@liberfi.io/hooks'),recharts=require('recharts'),jotai=require('jotai'),utils$1=require('jotai/utils');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var eo__default=/*#__PURE__*/_interopDefault(eo);typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-predict"]="1.0.3");var yl="1.0.3";var kl={Weather:["Daily temperature","Snow and rain","Climate change","Natural disasters","Hurricanes"],Companies:["IPOs","Product launches","KPIs","Elon Musk","CEOs","Layoffs"],Crypto:["BTC","15 min","Hourly","ETH","SOL","DOGE","Pre-Market","XRP","BNB","HYPE"],Economics:["Growth","Fed","Inflation","Oil and energy","Employment","Housing","Jobs & Economy","Bankruptcy & Defaults","GDP","Global Central Banks"],Elections:["Primaries","International elections"],Entertainment:["Music","Movies","Music charts","Television","Awards","Video games","Oscars","Rotten Tomatoes"],Financials:["S&P","Nasdaq","Daily","Metals","Treasuries","Oil","EUR/USD","USD/JPY","WTI"],Mentions:["Politicians","Earnings","Entertainment"],Politics:["Trump","Congress","International","SCOTUS & courts","Local","Recurring","Iran","House"],Science:["AI","Energy","Space"],Social:null,Sports:["Soccer","Basketball","Baseball","Football","Hockey","Golf","Tennis","Motorsport","Esports","Boxing","MMA","Rugby","Lacrosse","Mentions","Chess","Cricket","Aussie Rules","Darts"],World:null},Qo=["Politics","Sports","Crypto","Economics","Financials","Elections","Entertainment","Companies","Science and Technology","Climate and Weather","Mentions","Social","World"],Xn=(()=>{let e=t=>{let r=Qo.indexOf(t);return r===-1?Qo.length:r};return Object.entries(kl).map(([t,r])=>({slug:t,label:t,tags:(r??[]).map(n=>({slug:n,label:n}))})).sort((t,r)=>e(t.slug)-e(r.slug))})();function Zo({categories:e,selectedCategory:t,selectedTag:r,activeTags:n,onCategorySelect:o,onTagSelect:i,trailing:s,pulsingTab:l="Trending",className:a}){let{t:c}=i18n.useTranslation(),u=react.useCallback(()=>{o(null);},[o]),p=c("predict.categories.trending");return jsxRuntime.jsxs("div",{className:ui.cn("sticky top-0 z-30 flex w-full flex-col justify-between gap-2 px-4 py-2.5 lg:px-4 lg:py-2",a),children:[jsxRuntime.jsx("style",{children:".cat-primary-row{display:flex;width:100%;flex-direction:column;gap:8px}@media(min-width:1024px){.cat-primary-row{flex-direction:row;align-items:center}}.cat-primary-row>.cat-tabs{min-width:0;overflow-x:auto;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none}.cat-primary-row>.cat-tabs::-webkit-scrollbar{display:none}@media(min-width:1024px){.cat-primary-row>.cat-tabs{flex:1 1 0%}}"}),jsxRuntime.jsxs("div",{className:"cat-primary-row",children:[jsxRuntime.jsx("div",{className:"cat-tabs hideScrollbar",children:jsxRuntime.jsxs("div",{className:"flex min-h-9 items-stretch gap-x-3 lg:min-h-10",children:[jsxRuntime.jsx(Xo,{label:p,isSelected:t===null,onPress:u,showPulse:p===l}),jsxRuntime.jsx(Nl,{}),e.map(m=>jsxRuntime.jsx(Xo,{label:m.category,isSelected:t===m.category,onPress:()=>o(m.category),badge:m.badge,showPulse:m.category===l},m.category))]})}),s&&jsxRuntime.jsx("div",{className:"flex-shrink-0",children:s})]}),t&&n.length>0&&jsxRuntime.jsx("div",{className:"hideScrollbar overflow-x-auto overflow-y-hidden flex items-center",children:jsxRuntime.jsxs("div",{className:"flex gap-x-1.5 pl-1 lg:w-full lg:gap-x-2",children:[jsxRuntime.jsx(Jo,{label:c("predict.categories.allMarkets"),isSelected:r===null,onPress:()=>i(null)}),n.map(m=>jsxRuntime.jsx(Jo,{label:m.label,icon:m.icon,isSelected:r===m.label,onPress:()=>i(m.label)},m.label))]})})]})}function Xo({label:e,isSelected:t,onPress:r,badge:n,showPulse:o}){return jsxRuntime.jsxs("button",{type:"button",onClick:r,className:ui.cn("relative shrink-0 cursor-pointer whitespace-nowrap border-b px-2.5 py-1.5 text-sm font-medium capitalize transition-colors",t?"border-primary/50 text-primary":"border-transparent text-neutral-500 hover:text-neutral-300"),children:[o?jsxRuntime.jsxs("span",{className:"flex items-center gap-x-1.5",children:[jsxRuntime.jsx("span",{className:"h-2 w-2 animate-pulse rounded-full bg-[rgb(240,68,56)]"}),jsxRuntime.jsx("span",{children:e})]}):e,n&&jsxRuntime.jsx("span",{className:"absolute -right-1 top-0 rounded bg-primary px-0.5 py-px text-[0.625rem] font-semibold leading-none text-neutral-950",children:n})]})}function Nl(){return jsxRuntime.jsx("span",{className:"flex items-center text-neutral-600","aria-hidden":"true",children:"|"})}function Jo({label:e,icon:t,isSelected:r,onPress:n}){return jsxRuntime.jsxs("button",{type:"button",onClick:n,className:ui.cn("flex shrink-0 items-center justify-center gap-x-1 min-w-14 rounded-2xl border px-3 py-1.5 text-sm font-medium uppercase transition-colors cursor-pointer",r?"border-primary/40 bg-primary/15 text-primary":"border-border/80 text-neutral-500 hover:bg-primary/10 hover:text-primary"),children:[t&&jsxRuntime.jsx("span",{className:ui.cn("iconify size-4",t)}),e]})}function L0({count:e=6}){return jsxRuntime.jsx("div",{className:"flex w-full flex-col gap-2 px-4 py-2.5 lg:px-4 lg:py-2",children:jsxRuntime.jsx("div",{className:"flex min-h-9 items-center gap-x-3 lg:min-h-10",children:Array.from({length:e}).map((t,r)=>jsxRuntime.jsx(ui.Skeleton,{className:"h-6 w-16 shrink-0 rounded"},r))})})}function Cl(e){return e.map(t=>({category:t.label,tags:t.tags.map(r=>r.label)}))}function Ml(e){return e?e.tags.map(t=>({label:t.label,icon:t.icon})):[]}function ri({onSelect:e,trailing:t,className:r}){let[n,o]=react.useState(null),[i,s]=react.useState(null),l=react.useCallback(m=>{o(m),s(null),e?.({categorySlug:m,tagSlug:null});},[e]),a=react.useCallback(m=>{s(m),e?.({categorySlug:n,tagSlug:m});},[n,e]),c=Cl(Xn),u=Xn.find(m=>m.slug===n),p=Ml(u);return jsxRuntime.jsx(Zo,{categories:c,selectedCategory:n,selectedTag:i,activeTags:p,onCategorySelect:l,onTagSelect:a,trailing:t,className:r})}function on(e){return {title:e.title,imageUrl:e.image_url}}function sn(e){let t=e.outcomes[0],r=e.outcomes[1];return {question:e.question,yesAsk:t?.best_ask??t?.price,noAsk:r?.best_ask??r?.price,yesBid:t?.best_bid,noBid:r?.best_bid,yesSubTitle:t?.label??"Yes",noSubTitle:r?.label??"No"}}var Er=24,Jn=4,an={ONE_MINUTE:1,ONE_HOUR:60,ONE_DAY:1440},qe={ONE_DAY:"1d",ONE_WEEK:"1w",ONE_MONTH:"1m",ALL:"all"},ln=qe.ALL,H0={[qe.ONE_DAY]:an.ONE_MINUTE,[qe.ONE_WEEK]:an.ONE_HOUR,[qe.ONE_MONTH]:an.ONE_HOUR,[qe.ALL]:an.ONE_DAY},z0={[qe.ONE_DAY]:300,[qe.ONE_WEEK]:3600,[qe.ONE_MONTH]:10800,[qe.ALL]:1440*60},$0={[qe.ONE_DAY]:1440*60,[qe.ONE_WEEK]:10080*60,[qe.ONE_MONTH]:720*60*60,[qe.ALL]:null},cn=1,dn=1,W0=1,U0=1,K0=99,fr={ONE_HOUR:"1h",SIX_HOURS:"6h",ONE_DAY:"1d",ONE_WEEK:"1w",MAX:"max"},V0=fr.ONE_WEEK,j0={[fr.ONE_HOUR]:60,[fr.SIX_HOURS]:60,[fr.ONE_DAY]:300,[fr.ONE_WEEK]:1800,[fr.MAX]:1800};var ii=react.createContext(null);function Zt(){let e=react.useContext(ii);if(!e)throw new Error("usePredictWallet must be used within a PredictWalletProvider");return e}var Ol=1e4;function Dl({pollingInterval:e=Ol,enabled:t=true,children:r}){let n=walletConnector.useWallets(),o=react.useMemo(()=>n.find(x=>x.chainNamespace===types.ChainNamespace.SOLANA&&x.isConnected)?.address,[n]),i=react.useMemo(()=>n.find(x=>x.chainNamespace===types.ChainNamespace.EVM&&x.isConnected)?.address,[n]),{data:s,isLoading:l,isFetching:a,error:c}=reactPredict.useBalance({source:"kalshi",user:o??""},{enabled:t&&!!o,refetchInterval:e}),{data:u,isLoading:p}=reactPredict.useDFlowKYC(o,{enabled:t&&!!o,refetchInterval:3e4}),{data:m,isLoading:d}=reactPredict.usePolymarketSetup(i,{enabled:t&&!!i,refetchInterval:3e4}),f=m?.safe_address,g=m?.verified??false,{data:h,isLoading:v,isFetching:S,error:P}=reactPredict.useBalance({source:"polymarket",user:i??""},{enabled:t&&g&&!!i,refetchInterval:e}),E=react.useMemo(()=>({solanaAddress:o,evmAddress:i,polymarketSafeAddress:f,kalshiUsdcBalance:s?Number(s.balance):null,polymarketUsdcBalance:g&&h?Number(h.balance):null,kalshiKycVerified:u?.verified??false,kalshiKycUrl:u?.kyc_url??null,kalshiKycLoading:p,polymarketSetupVerified:g,polymarketSafeDeployed:m?.safe_deployed??false,polymarketTokenApproved:m?.token_approved??false,polymarketSetupLoading:d,isLoading:l||v,isFetching:a||S,error:c??P??null}),[o,i,f,s,h,g,u,p,m,d,l,v,a,S,c,P]);return jsxRuntime.jsx(ii.Provider,{value:E,children:r})}var Fl={minutes:60,hours:3600,days:86400};function un(e,t,r){let n=Math.floor(Date.now()/1e3);switch(e){case "5m":return n+300;case "1h":return n+3600;case "12h":return n+720*60;case "24h":return n+1440*60;case "eod":{let o=new Date;return o.setUTCHours(23,59,59,0),Math.floor(o.getTime()/1e3)}case "custom":return n+t*Fl[r]}}function pn(e,t){let r=parseFloat(t);return !r||r<=0?e:Math.round(e/r)*r}function xe(e,t){let r=Math.pow(10,t);return Math.floor(e*r)/r}function mn(e,t,r){let n=e.match(/Size\s*\(([\d.]+)\)\s*lower than the minimum:\s*([\d.]+)/i);if(n)return t("predict.trade.polymarket.minOrderSize",{current:n[1],min:n[2]});let o=e.match(/balance:\s*(\d+),\s*sum of active orders:\s*(\d+)/i);if(o){let s=parseInt(o[1],10)/1e6,l=parseInt(o[2],10)/1e6,a=Math.max(0,s-l);return t("predict.trade.polymarket.insufficientBalance",{total:xe(s,2).toFixed(2),active:xe(l,2).toFixed(2),available:xe(a,2).toFixed(2)})}return /not enough balance/i.test(e)?t(r==="sell"?"predict.trade.insufficientShares":"predict.trade.insufficientBalance"):/max accuracy of/i.test(e)?t("predict.trade.polymarket.decimalAccuracy"):/tick size/i.test(e)?t("predict.trade.polymarket.tickSizeError"):/couldn.*fully filled|FOK.*filled or killed/i.test(e)?t("predict.trade.polymarket.fokNotFilled"):e.replace(/order\s+0x[a-f0-9]+\s+is invalid\.\s*/i,"")||e}function Tr(e,t=2){return parseFloat(xe(e,t).toFixed(t)).toString()}function er(){let e={startVelocity:30,spread:360,ticks:60,zIndex:9999};eo__default.default({...e,particleCount:80,origin:{x:.5,y:.4}}),setTimeout(()=>{eo__default.default({...e,particleCount:40,origin:{x:.3,y:.6}});},150),setTimeout(()=>{eo__default.default({...e,particleCount:40,origin:{x:.7,y:.6}});},300);}function ci({market:e,initialOutcome:t="yes",onInsufficientBalance:r}){let{t:n}=i18n.useTranslation(),{status:o}=walletConnector.useAuth(),i=walletConnector.useWallets(),s=walletConnector.useSwitchChain(),l=reactPredict.usePredictClient(),a=react.useContext(reactPredict.PolymarketContext),c=reactQuery.useQueryClient(),u=e.source,p=u==="polymarket",m=i.find(D=>D.chainNamespace===types.ChainNamespace.SOLANA&&D.isConnected),d=i.find(D=>D.chainNamespace===types.ChainNamespace.EVM&&D.isConnected&&"switchChain"in D),f=o==="authenticated",g=m?.address,h=d?.address,v=react.useMemo(()=>{if(u!=="polymarket")return;let D=e.provider_meta?.["polymarket.clobTokenIds"];return D?(typeof D=="string"?JSON.parse(D):D)[0]:void 0},[u,e.provider_meta]),{data:S,isLoading:P}=reactPredict.useTickSize(v),E=S?.minimum_tick_size?String(S.minimum_tick_size):"0.01",{data:x,isLoading:C}=reactPredict.useFeeRate(v),y=String(x?.base_fee??0),[B,A]=react.useState(t),[V,$]=react.useState("market"),[k,W]=react.useState(NaN),[I,Y]=react.useState(NaN),[j,w]=react.useState(false),[b,N]=react.useState(null),[Z,J]=react.useState(false),[ee,_e]=react.useState(false),[Re,Fe]=react.useState("1h"),[Ee,we]=react.useState(30),[ot,je]=react.useState("minutes"),Be=null,Ie=false,lt=null,Ge;try{let D=Zt();Be={kalshiUsdcBalance:D.kalshiUsdcBalance,polymarketUsdcBalance:D.polymarketUsdcBalance,isLoading:D.isLoading},Ie=D.kalshiKycVerified,lt=D.kalshiKycUrl,Ge=D.polymarketSafeAddress;}catch{}let L=react.useMemo(()=>{let D=B==="yes"?0:1,Pe=e.outcomes[D];return Pe?.best_ask??Pe?.price??.5},[e.outcomes,B]),fe=react.useCallback(D=>{$(D);},[]),He=react.useCallback(D=>{A(D),Y(NaN);},[]);react.useEffect(()=>{V==="limit"&&isNaN(I)&&Y(Math.round(L*100)/100);},[V,I,L]);let ct=react.useMemo(()=>isNaN(k)||k<=0?0:L>0?k/L:0,[k,L]),ze=react.useMemo(()=>isNaN(k)||k<=0?"0":String(Math.round(k*1e6)),[k]),jt=e.provider_meta?.["dflow.yesMint"]??"",O=e.provider_meta?.["dflow.noMint"]??"",Oe=utils.SOLANA_TOKENS.stablecoins.USDC.address,Ye=B==="yes"?jt:O,Gt=Oe,Nt=Ye,ur=u==="kalshi"?g??"":h??"",{data:ft,isLoading:$e}=reactPredict.usePositions({source:u,user:ur},{enabled:!!ur}),Vn=u==="kalshi"&&!!Gt&&!!Nt&&!!g&&ze!=="0",{refetch:Yr}=reactPredict.useDFlowQuote({inputMint:Gt,outputMint:Nt,amount:ze,userPublicKey:g??"",slippageBps:100},{enabled:Vn}),Ct=react.useMemo(()=>Be?u==="kalshi"?Be.kalshiUsdcBalance:Be.polymarketUsdcBalance:ft&&ft.positions.reduce((Pe,dt)=>dt.side==="USDC"||dt.side==="collateral"?Pe+(dt.current_value??0):Pe,0)||null,[Be,ft,u]),Bt=Be?Be.isLoading:$e,wr=react.useMemo(()=>V==="limit"&&p&&!isNaN(I)?I:L,[V,p,I,L]),qr=react.useMemo(()=>isNaN(k)||k<=0?0:k,[k]),jn=react.useMemo(()=>isNaN(k)||k<=0?0:wr>0?k/wr*1:0,[k,wr]),Qr=jn-qr,Gn=react.useCallback(D=>{if(isNaN(D)){W(NaN);return}W(Math.round(Math.max(0,D)*100)/100);},[]),Yt=react.useCallback(D=>{if(isNaN(D)){Y(NaN);return}let Pe=Math.max(.01,Math.min(.99,D));Y(Math.round(Pe*100)/100);},[]),gt=react.useCallback(()=>{W(NaN),Y(NaN),$("market"),_e(false),Fe("1h"),we(30),je("minutes");},[]),Mt=react.useMemo(()=>{let D=[];return isNaN(k)||k<=0?D.push(n("predict.trade.minAmountUsd",{amount:dn})):k<dn&&D.push(n("predict.trade.minAmountUsd",{amount:dn})),e.status!=="open"&&D.push(n("predict.trade.marketNotActive")),Ct!=null&&!isNaN(k)&&k>0&&k>xe(Ct,2)&&D.push(n("predict.trade.insufficientBalance")),V==="limit"&&p&&(isNaN(I)||I<.01||I>.99)&&D.push(n("predict.trade.limitPriceRange")),V==="limit"&&p&&ee&&Re==="custom"&&(isNaN(Ee)||Ee<=0)&&D.push(n("predict.trade.expiration.invalidDate")),{isValid:D.length===0,errors:D}},[k,e.status,Ct,V,p,I,ee,Re,Ee,n]),pr=react.useMemo(()=>Ct==null||isNaN(k)||k<=0?false:k>xe(Ct,2),[Ct,k]),Yn=react.useCallback(()=>{r?.(u);},[r,u]),{mutateAsync:Pr}=reactPredict.useDFlowSubmit(),{data:Nr}=reactPredict.useOrder({id:b??"",source:u},{enabled:!!b});react.useEffect(()=>{if(!Nr||!b)return;let{status:D}=Nr;D==="closed"?(N(null),w(false),ui.toast.success(n("predict.trade.submitSuccess")),er(),gt(),c.invalidateQueries({queryKey:["predict","positions"]})):(D==="failed"||D==="expired")&&(w(false),N(null),ui.toast.error(n("predict.trade.submitError")));},[Nr,b,c,gt,n]);let Xr=react.useCallback(async()=>{if(!g||!m)return;if(!Gt||!Nt){ui.toast.error("Missing token mint addresses"),w(false);return}if(!Ie){J(true),w(false);return}let ht=(await Yr()).data?.transaction;if(!ht){ui.toast.error(n("predict.trade.submitError")),w(false);return}let vt=Uint8Array.from(atob(ht),Qt=>Qt.charCodeAt(0)),it=await m.signTransaction(vt),qt=await Pr({signedTransaction:btoa(String.fromCharCode(...it)),orderContext:{user_public_key:g,input_mint:Gt,output_mint:Nt,amount:ze,price:String(L),side:"BUY",outcome:B==="yes"?"YES":"NO",market_slug:e.slug,slippage_bps:100}});N(qt.signature);},[g,m,Yr,Pr,Gt,Nt,ze,L,B,e.slug,n,Ie]),Jr=react.useCallback(async()=>{if(!d||!a)return;let D=d.chain,Pe=D!==types.Chain.POLYGON;Pe&&await s(types.Chain.POLYGON);try{let dt=await d.getEip1193Provider();if(!dt){ui.toast.error(n("predict.trade.submitError")),w(!1);return}let ht=!!Ge,vt={address:d.address,signatureType:ht?2:0,signTypedData:async(Tt,Qn,Yo,tn)=>{let zt=[];"name"in Tt&&zt.push({name:"name",type:"string"}),"version"in Tt&&zt.push({name:"version",type:"string"}),"chainId"in Tt&&zt.push({name:"chainId",type:"uint256"}),"verifyingContract"in Tt&&zt.push({name:"verifyingContract",type:"address"}),"salt"in Tt&&zt.push({name:"salt",type:"bytes32"});let rn={EIP712Domain:zt,...Qn};return await dt.request({method:"eth_signTypedData_v4",params:[d.address,JSON.stringify({domain:Tt,types:rn,primaryType:Yo,message:tn})]})}},it=a.credentials??await a.authenticate(vt),qt=B==="yes"?0:1,Qt="",xt=e.provider_meta?.["polymarket.clobTokenIds"];xt&&(Qt=(typeof xt=="string"?JSON.parse(xt):xt)[qt]??"");let Cr=e.provider_meta?.["polymarket.negRisk"]??!1,Zr=V==="limit"&&!isNaN(I)?I:L,Mr=pn(Zr,E),T=V==="limit"?ee?"GTD":"GTC":"FOK",ve=V==="market"?k:Mr>0?k/Mr:0,We={tokenId:Qt,price:Mr,size:ve,side:"BUY",orderType:T,tickSize:E,negRisk:Cr,...Ge&&{funderAddress:Ge},...V==="limit"&&ee&&{expiration:un(Re,Ee,ot)}},De=reactPredict.buildCtfExchangeDomain(Cr),st=reactPredict.buildOrderMessage({...We,signerAddress:vt.address,signatureType:vt.signatureType,feeRateBps:y}),Ue=await vt.signTypedData(De,reactPredict.CTF_ORDER_TYPES,"Order",st),Et=reactPredict.buildSignedOrder(st,Ue,We.orderType),Ne=reactPredict.buildClobPayload(Et,it.apiKey),Ht=JSON.stringify(Ne),en=await reactPredict.buildPolymarketL2Headers(it.address,{apiKey:it.apiKey,secret:it.secret,passphrase:it.passphrase,method:"POST",requestPath:"/order",body:Ht});await l.createPolymarketOrder(Ne,en),c.invalidateQueries({queryKey:["predict","orders"]}),c.invalidateQueries({queryKey:["predict","positions"]}),ui.toast.success(n("predict.trade.submitSuccess")),er(),gt(),w(!1);}finally{Pe&&D&&s(D).catch(()=>{});}},[d,a,s,B,e.provider_meta,V,I,L,k,l,c,ee,Re,Ee,ot,gt,n,E,y,Ge]),qn=react.useCallback(async()=>{if(!(!Mt.isValid||!f)){w(true),N(null),J(false);try{u==="kalshi"?await Xr():await Jr();}catch(D){let Pe=D instanceof Error?D.message:"",dt=u==="polymarket"&&Pe?mn(Pe,n,"buy"):Pe||void 0;ui.toast.error(dt||n("predict.trade.submitError")),w(false);}}},[Mt.isValid,f,u,Xr,Jr,n]);return {outcome:B,orderType:V,quantity:k,limitPrice:I,shares:ct,estimatedCost:qr,potentialPayout:jn,potentialProfit:Qr,usdcBalance:Ct,isBalanceLoading:Bt,isMarketDataLoading:u==="polymarket"&&(C||P),isSubmitting:j,validation:Mt,isInsufficientBalance:pr,source:u,supportsLimitOrder:p,kycRequired:Z,kycUrl:lt,expirationEnabled:ee,expirationPreset:Re,customDuration:Ee,customDurationUnit:ot,setOutcome:He,setOrderType:fe,setQuantity:Gn,setLimitPrice:Yt,setExpirationEnabled:_e,setExpirationPreset:Fe,setCustomDuration:we,setCustomDurationUnit:je,submit:qn,notifyInsufficientBalance:Yn}}function fn({isOpen:e,onClose:t,kycUrl:r}){let{t:n}=i18n.useTranslation();return jsxRuntime.jsx(ui.StyledModal,{isOpen:e,onOpenChange:o=>{o||t();},size:"md",classNames:{base:"!bg-[#18181b] !rounded-[14px] !border !border-[rgba(39,39,42,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]",body:"!p-0"},children:jsxRuntime.jsx(ui.ModalContent,{children:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between px-5 pt-5 pb-4",children:[jsxRuntime.jsx("h3",{className:"text-base font-semibold text-white",children:n("predict.trade.kycModalTitle")}),jsxRuntime.jsx("button",{type:"button",onClick:t,className:"p-1 rounded-[10px] hover:bg-[rgba(39,39,42,0.5)] text-zinc-400 hover:text-white transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:jsxRuntime.jsxs("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntime.jsxs("div",{className:"px-5 pb-5",children:[jsxRuntime.jsx("p",{className:"text-[13px] text-zinc-400 mb-4 text-left",children:n("predict.trade.kycModalDescription")}),jsxRuntime.jsx("div",{className:"flex flex-col gap-2 mb-4",children:["predict.trade.kycModalBullet1","predict.trade.kycModalBullet2","predict.trade.kycModalBullet3"].map(o=>jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 text-[13px] text-zinc-300",children:[jsxRuntime.jsx("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round",className:"text-[#c7ff2e] shrink-0",children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})}),jsxRuntime.jsx("span",{children:n(o)})]},o))}),r&&jsxRuntime.jsxs("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[13px] text-[#c7ff2e]/70 hover:text-[#c7ff2e] transition-colors mb-3",children:[n("predict.trade.goToKYC")," \u2192"]}),jsxRuntime.jsx("p",{className:"text-[11px] text-zinc-500 mb-5",children:n("predict.trade.kycModalNote")}),jsxRuntime.jsx("button",{type:"button",onClick:t,className:"w-full py-2.5 rounded-[10px] bg-[#c7ff2e] text-zinc-900 text-sm font-semibold hover:bg-[#c7ff2e]/90 transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:n("common.ok")})]})]})})})}var xc=`https://s1.chainstream.io/chains/sol/tokens/${utils.SOLANA_TOKENS.stablecoins.USDC.address}/image.png`,bc=["5m","1h","12h","24h","eod","custom"],yc={"5m":"predict.trade.expiration.5m","1h":"predict.trade.expiration.1h","12h":"predict.trade.expiration.12h","24h":"predict.trade.expiration.24h",eod:"predict.trade.expiration.eod",custom:"predict.trade.expiration.custom"},kc=["minutes","hours","days"],Sc={minutes:"predict.trade.expiration.minutes",hours:"predict.trade.expiration.hours",days:"predict.trade.expiration.days"},wc={maximumFractionDigits:0};function vi({event:e,market:t,variant:r="bordered",outcome:n,orderType:o,quantity:i,limitPrice:s,shares:l,potentialProfit:a,potentialPayout:c,estimatedCost:u,usdcBalance:p,isBalanceLoading:m,isMarketDataLoading:d,isSubmitting:f,isValid:g,validationErrors:h,isInsufficientBalance:v,onInsufficientBalance:S,supportsLimitOrder:P,kycRequired:E,kycUrl:x,expirationEnabled:C,expirationPreset:y,customDuration:B,customDurationUnit:A,onOutcomeChange:V,onOrderTypeChange:$,onQuantityChange:k,onLimitPriceChange:W,onExpirationEnabledChange:I,onExpirationPresetChange:Y,onCustomDurationChange:j,onCustomDurationUnitChange:w,onSubmit:b}){let{t:N}=i18n.useTranslation(),[Z,J]=react.useState(false),ee=ui.useDisclosure(),[_e,Re]=react.useState(""),Fe=react.useRef(false);react.useEffect(()=>{Fe.current||Re(isNaN(i)?"":String(i));},[i]);let[Ee,we]=react.useState(""),ot=react.useRef(false);react.useEffect(()=>{ot.current||(isNaN(s)?we(""):we(String(parseFloat((s*100).toFixed(2)))));},[s]);let je=react.useCallback(O=>{if(O!==""&&!/^\d*\.?\d{0,2}$/.test(O))return;if(we(O),O===""||O==="."){W(NaN);return}let Ye=parseFloat(O);isNaN(Ye)||W(Ye/100);},[W]),Be=react.useCallback(O=>{if(O!==""&&!/^\d*\.?\d{0,2}$/.test(O))return;if(Re(O),ze(false),O===""||O==="."){k(NaN);return}let Ye=parseFloat(O);isNaN(Ye)||k(Ye);},[k]);react.useEffect(()=>{E&&!ee.isOpen&&ee.onOpen();},[E]);let Ie=react.useMemo(()=>{let O=n==="yes"?t.yesAsk:t.noAsk;return O!=null?parseFloat((Number(O)*100).toFixed(2)):null},[n,t]),lt=!isNaN(i)&&i>0,Ge=react.useMemo(()=>{if(m)return N("predict.trade.loadingBalance");if(d)return N("predict.trade.loadingMarketData");if(f)return N("predict.trade.submitting");if(E)return N("predict.trade.kycRequired");if(!lt)return N("predict.trade.enterAmount");let O=N(n==="yes"?"predict.trade.yes":"predict.trade.no"),Oe=a>0?` \u2192 Win $${a.toFixed(2)}`:"";return `${N("predict.trade.buy")} ${O}${Oe}`},[m,d,f,E,lt,n,a,N]),L=react.useMemo(()=>n==="yes"?"primary":"secondary",[n]),fe=()=>{k(Math.floor((p??0)/2*100)/100);},He=()=>{k(xe(p??0,2));},[ct,ze]=react.useState(false),jt=()=>{if(E){ee.onOpen();return}if(v&&S){ze(false),S();return}if(!g){ze(true);return}ze(false),b();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex w-full flex-col gap-y-4 p-4",style:r==="bordered"?{borderRadius:14,border:"1px solid rgba(39,39,42,0.6)",background:"rgba(24,24,27,0.4)",transition:"border-color 0.2s"}:void 0,onMouseEnter:O=>{r==="bordered"&&(O.currentTarget.style.borderColor="rgba(63,63,70,0.8)");},onMouseLeave:O=>{r==="bordered"&&(O.currentTarget.style.borderColor="rgba(39,39,42,0.6)");},children:[e&&jsxRuntime.jsxs("div",{className:"flex items-center gap-x-3",children:[e.imageUrl&&jsxRuntime.jsx("img",{src:e.imageUrl,alt:e.title,className:"h-10 w-10 shrink-0 rounded-lg object-cover"}),jsxRuntime.jsxs("div",{className:"flex min-w-0 flex-col gap-y-0.5",children:[jsxRuntime.jsx("span",{className:"text-sm text-neutral-500 leading-tight line-clamp-1",children:e.title}),jsxRuntime.jsxs("span",{className:"text-base font-semibold leading-tight line-clamp-1",children:[jsxRuntime.jsxs("span",{className:n==="yes"?"text-bullish":"text-bearish",children:[N("predict.trade.buy")," ",N(n==="yes"?"predict.trade.yes":"predict.trade.no")]}),jsxRuntime.jsxs("span",{className:"text-foreground",children:[" \xB7 ",t.yesSubTitle]})]})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[P?jsxRuntime.jsxs(ui.Tabs,{variant:"underlined",selectedKey:o,onSelectionChange:O=>$(O),classNames:{tabList:"gap-x-4",tab:"px-0"},children:[jsxRuntime.jsx(ui.Tab,{title:N("predict.trade.market")},"market"),jsxRuntime.jsx(ui.Tab,{title:N("predict.trade.limit")},"limit")]}):jsxRuntime.jsx("span",{className:"text-sm font-medium text-foreground",children:N("predict.trade.market")}),o==="limit"&&P?jsxRuntime.jsx(ui.StyledInput,{"aria-label":"Limit price",placeholder:"50",size:"sm",radius:"none",inputMode:"decimal",value:Ee,onChange:O=>je(O.target.value),onFocus:()=>{ot.current=true;},onBlur:()=>{ot.current=false,isNaN(s)?we(""):we(String(parseFloat((s*100).toFixed(2))));},endContent:jsxRuntime.jsx("span",{className:"text-xl font-bold tabular-nums text-foreground",children:"\xA2"}),classNames:{base:"w-28",inputWrapper:"bg-content2 data-[hover=true]:bg-content2 group-data-[focus=true]:bg-content2 rounded-lg px-2 h-9 min-h-9",input:"text-xl font-bold tabular-nums text-right"}}):Ie!=null&&jsxRuntime.jsxs("span",{className:"text-xl font-bold tabular-nums",children:[Ie," \xA2"]})]}),jsxRuntime.jsx("div",{className:"flex gap-x-2",children:["yes","no"].map(O=>{let Oe=O==="yes"?t.yesAsk:t.noAsk;return jsxRuntime.jsx("div",{className:"flex flex-1 flex-col gap-y-1",children:jsxRuntime.jsxs("button",{type:"button",onClick:()=>V(O),className:`w-full rounded-lg border py-2 text-sm font-medium transition-colors cursor-pointer ${n===O?O==="yes"?"border-primary bg-primary-50 text-primary":"border-secondary bg-secondary-50 text-secondary":"border-default-400 text-foreground hover:border-default-500"}`,children:[jsxRuntime.jsx("span",{children:N(O==="yes"?"predict.trade.yes":"predict.trade.no")}),Oe!=null&&jsxRuntime.jsxs("span",{className:"ml-1 opacity-70",children:[parseFloat((Number(Oe)*100).toFixed(2)),"\xA2"]})]})},O)})}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-1.5",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between text-xs text-neutral-500",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium text-foreground",children:N("predict.trade.youArePaying")}),jsxRuntime.jsxs("div",{className:"flex items-center gap-x-2",children:[jsxRuntime.jsx("img",{src:xc,alt:"USDC",className:"h-3.5 w-3.5 rounded-full object-cover"}),jsxRuntime.jsx("span",{className:"font-medium text-foreground tabular-nums",children:p!=null?`${xe(p,2).toFixed(2)} USDC`:"\u2013"}),jsxRuntime.jsx("button",{type:"button",onClick:fe,className:"rounded px-1.5 py-0.5 bg-content2 hover:bg-content3 transition-colors cursor-pointer text-foreground font-medium",children:N("predict.trade.half")}),jsxRuntime.jsx("button",{type:"button",onClick:He,className:"rounded px-1.5 py-0.5 bg-content2 hover:bg-content3 transition-colors cursor-pointer text-foreground font-medium",children:N("predict.trade.max")})]})]}),jsxRuntime.jsx(ui.StyledInput,{"aria-label":"Trade amount",fullWidth:true,placeholder:"0",radius:"lg",size:"lg",inputMode:"decimal",value:_e,onChange:O=>Be(O.target.value),onFocus:()=>{Fe.current=true;},onBlur:()=>{Fe.current=false,Re(isNaN(i)?"":String(i));},startContent:jsxRuntime.jsx("span",{className:"text-default-600 text-xl",children:"$"}),classNames:{inputWrapper:"bg-content2 data-[hover=true]:bg-content2 group-data-[focus=true]:bg-content2 h-14 min-h-14",input:"text-lg"}}),ct&&h.length>0&&jsxRuntime.jsx("div",{className:"flex flex-col gap-y-0.5",children:h.map(O=>jsxRuntime.jsx("span",{className:"text-xs text-danger",children:O},O))})]}),o==="limit"&&P&&jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium text-primary",children:N("predict.trade.setExpiration")}),jsxRuntime.jsx(ui.StyledSwitch,{size:"sm",color:"primary",isSelected:C,onValueChange:I,"aria-label":N("predict.trade.setExpiration")})]}),C&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Select,{"aria-label":N("predict.trade.setExpiration"),selectedKeys:[y],onSelectionChange:O=>{let Oe=Array.from(O)[0];Oe&&Y(Oe);},size:"sm",radius:"lg",classNames:{trigger:"bg-content2 data-[hover=true]:bg-content2 min-h-10",value:"text-sm"},children:bc.map(O=>jsxRuntime.jsx(ui.SelectItem,{children:N(yc[O])},O))}),y==="custom"&&jsxRuntime.jsxs("div",{className:"flex gap-x-2",children:[jsxRuntime.jsx(ui.StyledNumberInput,{"aria-label":"Duration amount",size:"sm",radius:"lg",value:isNaN(B)?void 0:B,onValueChange:j,minValue:1,step:1,formatOptions:wc,classNames:{base:"flex-1",inputWrapper:"bg-content2 data-[hover=true]:bg-content2 group-data-[focus=true]:bg-content2 min-h-10",input:"text-sm"}}),jsxRuntime.jsx(ui.Select,{"aria-label":"Duration unit",selectedKeys:[A],onSelectionChange:O=>{let Oe=Array.from(O)[0];Oe&&w(Oe);},size:"sm",radius:"lg",classNames:{base:"w-32",trigger:"bg-content2 data-[hover=true]:bg-content2 min-h-10",value:"text-sm"},children:kc.map(O=>jsxRuntime.jsx(ui.SelectItem,{children:N(Sc[O])},O))})]})]})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between text-sm",children:[jsxRuntime.jsxs("button",{type:"button",onClick:()=>J(O=>!O),className:"flex items-center gap-x-1 text-neutral-500 hover:text-foreground cursor-pointer transition-colors",children:[jsxRuntime.jsx("span",{children:N("predict.trade.odds")}),jsxRuntime.jsx(ui.ChevronDownIcon,{className:ui.cn("h-3.5 w-3.5 transition-transform",Z&&"rotate-180")})]}),Ie!=null&&jsxRuntime.jsx("span",{className:"text-foreground font-medium tabular-nums",children:N("predict.trade.chance",{percent:Ie})})]}),Z&&jsxRuntime.jsxs("div",{className:"flex flex-col gap-y-1.5 border-l-2 border-default-300 pl-3 text-sm text-neutral-500",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.totalSize")}),jsxRuntime.jsx("span",{className:"tabular-nums text-foreground",children:!isNaN(i)&&i>0?`$${u.toFixed(2)}`:"\u2013"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.numContracts")}),jsxRuntime.jsx("span",{className:"tabular-nums text-foreground",children:!isNaN(l)&&l>0?Tr(l):"\u2013"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.payout")}),jsxRuntime.jsx("span",{className:"tabular-nums text-foreground",children:!isNaN(i)&&i>0?`$${c.toFixed(2)}`:"\u2013"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{children:N("predict.trade.estProfit")}),jsxRuntime.jsx("span",{className:"tabular-nums text-bullish",children:!isNaN(i)&&i>0&&a>0?`+$${a.toFixed(2)}`:"\u2013"})]})]})]}),jsxRuntime.jsx(ui.Button,{color:L,fullWidth:true,radius:"lg",size:"lg",isDisabled:m||d||!lt||f,isLoading:f||m||d,spinner:jsxRuntime.jsx(ui.Spinner,{size:"sm",color:"current"}),onPress:jt,children:Ge})]}),jsxRuntime.jsx(fn,{isOpen:ee.isOpen,onClose:ee.onClose,kycUrl:x})]})}function hn({event:e,market:t,variant:r,initialOutcome:n,chain:o,onInsufficientBalance:i}){let{outcome:s,orderType:l,quantity:a,limitPrice:c,shares:u,estimatedCost:p,potentialPayout:m,potentialProfit:d,usdcBalance:f,isBalanceLoading:g,isMarketDataLoading:h,isSubmitting:v,validation:S,isInsufficientBalance:P,supportsLimitOrder:E,kycRequired:x,kycUrl:C,expirationEnabled:y,expirationPreset:B,customDuration:A,customDurationUnit:V,setOutcome:$,setOrderType:k,setQuantity:W,setLimitPrice:I,setExpirationEnabled:Y,setExpirationPreset:j,setCustomDuration:w,setCustomDurationUnit:b,submit:N,notifyInsufficientBalance:Z}=ci({market:t,initialOutcome:n,onInsufficientBalance:i}),J=walletConnector.useAuthCallback(N),ee=react.useMemo(()=>e?on(e):void 0,[e]),_e=react.useMemo(()=>sn(t),[t]);return jsxRuntime.jsx(vi,{event:ee,market:_e,variant:r,outcome:s,orderType:l,quantity:a,limitPrice:c,shares:u,estimatedCost:p,potentialPayout:m,potentialProfit:d,usdcBalance:f,isBalanceLoading:g,isMarketDataLoading:h,isSubmitting:v,isValid:S.isValid,validationErrors:S.errors,isInsufficientBalance:P,onInsufficientBalance:i?Z:void 0,supportsLimitOrder:E,kycRequired:x,kycUrl:C,expirationEnabled:y,expirationPreset:B,customDuration:A,customDurationUnit:V,onOutcomeChange:$,onOrderTypeChange:k,onQuantityChange:W,onLimitPriceChange:I,onExpirationEnabledChange:Y,onExpirationPresetChange:j,onCustomDurationChange:w,onCustomDurationUnitChange:b,onSubmit:J})}var Lr="predict-trade";function vn({id:e=Lr}){return jsxRuntime.jsx(uiScaffold.AsyncModal,{id:e,children:t=>jsxRuntime.jsx(_c,{...t})})}function _c({params:e,isOpen:t,onOpenChange:r}){let{t:n}=i18n.useTranslation(),{isMobile:o}=ui.useScreen();return e?jsxRuntime.jsx(ui.StyledModal,{isOpen:t,onOpenChange:r,size:o?"lg":"md",backdrop:"blur",hideCloseButton:true,classNames:{base:"!bg-[#18181b] !rounded-[14px] !border !border-[rgba(39,39,42,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]",body:"!p-0"},children:jsxRuntime.jsx(ui.ModalContent,{children:jsxRuntime.jsxs("div",{className:o?"":"p-2",children:[jsxRuntime.jsx(hn,{event:e.event,market:e.market,initialOutcome:e.initialOutcome,chain:e.chain,variant:"flat",onInsufficientBalance:e.onInsufficientBalance}),jsxRuntime.jsx("div",{className:"px-4 pb-4",children:jsxRuntime.jsx("button",{type:"button",onClick:()=>r(false),className:"w-full h-12 rounded-xl text-sm font-medium text-zinc-400 hover:text-white hover:bg-[rgba(39,39,42,0.5)] transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:n("common.cancel")})})]})})}):null}var no={sortPreset:"volume",sortAsc:false,source:void 0,timeRemaining:void 0,minVolume:void 0,minLiquidity:void 0};function oo(e){let t=0;return e.source&&t++,e.timeRemaining&&t++,e.minVolume&&t++,e.minLiquidity&&t++,t}function bi({isOpen:e,onClose:t,value:r,onChange:n}){let{t:o}=i18n.useTranslation(),[i,s]=react.useState(r),l=react.useCallback(h=>{h?s(r):t();},[r,t]),a=react.useCallback(()=>{s(no);},[]),c=react.useCallback(()=>{n(i),t();},[i,n,t]),u=react.useCallback((h,v)=>{s(S=>({...S,[h]:v}));},[]),p=react.useMemo(()=>oo(i),[i]),m=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"polymarket",label:o("predict.platform.polymarket")},{value:"kalshi",label:o("predict.platform.kalshi")}],[o]),d=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"1d",label:o("predict.filter.lessThanDay")},{value:"7d",label:o("predict.filter.lessThanWeek")},{value:"30d",label:o("predict.filter.lessThanMonth")}],[o]),f=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"1000",label:">$1K"},{value:"10000",label:">$10K"},{value:"100000",label:">$100K"},{value:"1000000",label:">$1M"}],[o]),g=react.useMemo(()=>[{value:void 0,label:o("predict.filter.all")},{value:"1000",label:">$1K"},{value:"10000",label:">$10K"},{value:"100000",label:">$100K"},{value:"1000000",label:">$1M"}],[o]);return jsxRuntime.jsx(ui.StyledModal,{isOpen:e,onOpenChange:l,size:"md",backdrop:"blur",scrollBehavior:"inside",classNames:{base:"!bg-[#18181b] !rounded-[14px] !border !border-[rgba(39,39,42,1)] !shadow-[0_25px_50px_-12px_rgba(0,0,0,0.5)]",body:"!p-0"},children:jsxRuntime.jsx(ui.ModalContent,{children:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between px-5 pt-5 pb-4",children:[jsxRuntime.jsx("h3",{className:"text-base font-semibold text-white",children:o("predict.filter.title")}),jsxRuntime.jsx(Fc,{onClick:()=>l(false)})]}),jsxRuntime.jsxs("div",{style:{padding:"0 20px 16px",display:"flex",flexDirection:"column",gap:20},children:[jsxRuntime.jsx(bn,{label:o("predict.filter.platform"),children:jsxRuntime.jsx(yn,{options:m,selected:i.source,onSelect:h=>u("source",h)})}),jsxRuntime.jsx(bn,{label:o("predict.filter.timeRemaining"),children:jsxRuntime.jsx(yn,{options:d,selected:i.timeRemaining,onSelect:h=>u("timeRemaining",h)})}),jsxRuntime.jsx(bn,{label:o("predict.filter.minVolume"),children:jsxRuntime.jsx(yn,{options:f,selected:i.minVolume,onSelect:h=>u("minVolume",h)})}),jsxRuntime.jsx(bn,{label:o("predict.filter.minLiquidity"),children:jsxRuntime.jsx(yn,{options:g,selected:i.minLiquidity,onSelect:h=>u("minLiquidity",h)})})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-3 px-5 py-4",style:{borderTop:"1px solid rgba(39,39,42,0.5)"},children:[jsxRuntime.jsx("button",{type:"button",className:"inline-flex items-center justify-center py-2.5 px-5 rounded-[10px] text-zinc-400 text-sm font-medium hover:text-white transition-colors cursor-pointer",onClick:a,children:o("predict.filter.reset")}),jsxRuntime.jsxs("button",{type:"button",className:"flex-1 inline-flex items-center justify-center gap-2 py-2.5 rounded-[10px] bg-[#c7ff2e] text-zinc-900 text-sm font-semibold hover:bg-[#c7ff2e]/90 transition-colors cursor-pointer",onClick:c,children:[o("predict.filter.showResults"),p>0&&jsxRuntime.jsxs("span",{style:{opacity:.7},children:["(",p,")"]})]})]})]})})})}function bn({label:e,children:t}){return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[jsxRuntime.jsx("span",{style:{fontSize:11,fontWeight:500,color:"#71717a",textTransform:"uppercase",letterSpacing:"0.05em"},children:e}),t]})}function Fc({onClick:e}){return jsxRuntime.jsx("button",{type:"button",onClick:e,className:"p-1 rounded-[10px] hover:bg-[rgba(39,39,42,0.5)] text-zinc-400 hover:text-white transition-colors cursor-pointer focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",children:jsxRuntime.jsxs("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})}function yn({options:e,selected:t,onSelect:r,allowDeselect:n=true}){return jsxRuntime.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:8},children:e.map(o=>{let i=t===o.value;return jsxRuntime.jsx("button",{type:"button",onClick:()=>{r(i&&n?void 0:o.value);},style:{flexShrink:0,borderRadius:10,padding:"6px 14px",fontSize:13,fontWeight:500,cursor:"pointer",transition:"all 0.15s",border:i?"1px solid rgba(199,255,46,0.3)":"1px solid rgba(63,63,70,0.5)",background:i?"rgba(199,255,46,0.08)":"rgba(39,39,42,0.4)",color:i?"#c7ff2e":"#a1a1aa"},onMouseEnter:s=>{i||(s.currentTarget.style.background="rgba(39,39,42,0.8)",s.currentTarget.style.color="#fff");},onMouseLeave:s=>{i||(s.currentTarget.style.background="rgba(39,39,42,0.4)",s.currentTarget.style.color="#a1a1aa");},children:o.label},o.value??"__all")})})}var Pi={start_time:{sort_by:"created_at"},volume:{sort_by:"volume"},liquidity:{sort_by:"liquidity"},ending_soon:{sort_by:"end_at"}},ki={start_time:"predict.sort.startTime",volume:"predict.sort.volume",liquidity:"predict.sort.liquidity",ending_soon:"predict.sort.endingSoon"},jc=["start_time","volume","liquidity","ending_soon"],Si={display:"inline-flex",alignItems:"center",gap:8,borderRadius:10,border:"1px solid rgba(63,63,70,0.5)",background:"rgba(39,39,42,0.6)",padding:"8px 12px",fontSize:14,color:"#d4d4d8",cursor:"pointer",transition:"all 0.15s"},Gc={position:"absolute",left:0,top:"100%",zIndex:20,marginTop:8,borderRadius:14,border:"1px solid rgba(39,39,42,1)",background:"rgba(24,24,27,1)",boxShadow:"0 25px 50px -12px rgba(0,0,0,0.5)",overflow:"hidden"};function Ni({sortPreset:e,onSortChange:t,sortAsc:r,onSortAscChange:n,onFilterPress:o,filterCount:i=0,className:s}){let{t:l}=i18n.useTranslation(),[a,c]=react.useState(false),u=react.useRef(null),p=react.useCallback(d=>{u.current&&!u.current.contains(d.target)&&c(false);},[]);react.useEffect(()=>(document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)),[p]),react.useEffect(()=>{if(!a)return;let d=f=>{f.key==="Escape"&&c(false);};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[a]);let m=wi[e];return jsxRuntime.jsxs("div",{className:s,style:{display:"flex",alignItems:"center",gap:8},children:[jsxRuntime.jsxs("div",{ref:u,style:{position:"relative"},children:[jsxRuntime.jsxs("button",{type:"button",style:Si,onMouseEnter:d=>{d.currentTarget.style.background="rgba(39,39,42,1)";},onMouseLeave:d=>{d.currentTarget.style.background="rgba(39,39,42,0.6)";},onClick:()=>c(d=>!d),children:[jsxRuntime.jsx(Yc,{}),jsxRuntime.jsx(m,{className:"size-4 shrink-0",style:{color:"#a1a1aa"}}),jsxRuntime.jsx("span",{className:"hidden sm:block",style:{color:"#d4d4d8"},children:l(ki[e])}),jsxRuntime.jsx(Qc,{open:a})]}),a&&jsxRuntime.jsx("div",{style:{...Gc,width:224,padding:4},children:jc.map(d=>{let f=wi[d],g=e===d;return jsxRuntime.jsxs("button",{type:"button",style:{display:"flex",width:"100%",alignItems:"center",gap:12,padding:"10px 12px",textAlign:"left",fontSize:14,border:"none",cursor:"pointer",transition:"all 0.15s",background:g?"rgba(199,255,46,0.08)":"transparent",color:g?"#c7ff2e":"#a1a1aa",borderRadius:10},onMouseEnter:h=>{g||(h.currentTarget.style.background="rgba(39,39,42,0.5)",h.currentTarget.style.color="#fff");},onMouseLeave:h=>{g||(h.currentTarget.style.background="transparent",h.currentTarget.style.color="#a1a1aa");},onClick:()=>{e===d?n(!r):t(d),c(false);},children:[jsxRuntime.jsx(f,{className:"size-4 shrink-0",style:{color:g?"#c7ff2e":"#71717a"}}),jsxRuntime.jsx("span",{style:{flex:1,fontWeight:500},children:l(ki[d])}),g&&jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",style:{width:16,height:16,color:"#c7ff2e",flexShrink:0},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M20 6 9 17l-5-5"})})]},d)})})]}),jsxRuntime.jsx("button",{type:"button",style:{borderRadius:10,border:"1px solid rgba(63,63,70,0.5)",background:"rgba(39,39,42,0.6)",width:36,height:36,color:"#a1a1aa",cursor:"pointer",transition:"all 0.15s",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:14},onMouseEnter:d=>{d.currentTarget.style.background="rgba(39,39,42,1)",d.currentTarget.style.color="#fff";},onMouseLeave:d=>{d.currentTarget.style.background="rgba(39,39,42,0.6)",d.currentTarget.style.color="#a1a1aa";},onClick:()=>n(!r),children:r?"\u2191":"\u2193"}),jsxRuntime.jsxs("div",{style:{position:"relative",display:"inline-flex"},children:[jsxRuntime.jsxs("button",{type:"button",style:Si,onMouseEnter:d=>{d.currentTarget.style.background="rgba(39,39,42,1)";},onMouseLeave:d=>{d.currentTarget.style.background="rgba(39,39,42,0.6)";},onClick:o,children:[jsxRuntime.jsx(qc,{}),jsxRuntime.jsx("span",{className:"hidden sm:block",style:{color:"#d4d4d8"},children:l("predict.filter.title")})]}),i>0&&jsxRuntime.jsx("span",{style:{position:"absolute",top:-4,right:-4,minWidth:16,height:16,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:8,background:"#c7ff2e",color:"#000",fontSize:10,fontWeight:600,padding:"0 4px"},children:i})]})]})}var wi={start_time:ui.CalendarIcon,volume:ui.ChartLineIcon,liquidity:ui.DropletIcon,ending_soon:ui.TimerIcon};function Yc(){return jsxRuntime.jsxs("svg",{viewBox:"0 0 24 24",style:{width:14,height:14,color:"#a1a1aa"},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"m21 16-4 4-4-4"}),jsxRuntime.jsx("path",{d:"M17 20V4"}),jsxRuntime.jsx("path",{d:"m3 8 4-4 4 4"}),jsxRuntime.jsx("path",{d:"M7 4v16"})]})}function qc(){return jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",style:{width:14,height:14,color:"#a1a1aa"},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z"})})}function Qc({open:e}){return jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",style:{width:14,height:14,color:"#71717a",transition:"transform 0.15s",transform:e?"rotate(180deg)":void 0},fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"m6 9 6 6 6-6"})})}function Ei(e={}){let t=react.useMemo(()=>reactPredict.resolveEventsParams(e),[e.tagSlugSelection,e.limit,e.status,e.sort_by,e.sort_asc,e.source,e.with_markets,e.minVolume,e.minLiquidity,e.timeRemaining,e.markets_limit]),{data:r,isLoading:n,isFetching:o,isFetchingNextPage:i,isError:s,error:l,hasNextPage:a,fetchNextPage:c,refetch:u}=reactPredict.useInfiniteEvents(t),p=react.useMemo(()=>r?.pages.flatMap(f=>f.items).filter(f=>f!=null)??[],[r]),m=react.useCallback(()=>{c();},[c]),d=react.useCallback(()=>{u();},[u]);return {data:p,isLoading:n,isFetching:o&&!i,isFetchingMore:i,isError:s,error:l??null,hasMore:a??false,fetchMore:m,refetch:d}}var Ti=`
|
|
2
2
|
@keyframes evtShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
|
|
3
3
|
@media(max-width:1279px){.evt-skel-grid{grid-template-columns:repeat(3,1fr)!important}}
|
|
4
4
|
@media(max-width:1023px){.evt-skel-grid{grid-template-columns:repeat(2,1fr)!important}.evt-skel-card{min-height:200px!important}}
|