@spicenet-io/spiceflow-ui 4.10.0-dev.20260909.1 → 4.10.0-dev.20260909.2

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.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- "use strict";var Al=Object.create;var Or=Object.defineProperty;var Il=Object.getOwnPropertyDescriptor;var El=Object.getOwnPropertyNames;var Fl=Object.getPrototypeOf,Tl=Object.prototype.hasOwnProperty;var Bl=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of El(t))!Tl.call(e,o)&&o!==n&&Or(e,o,{get:()=>t[o],enumerable:!(s=Il(t,o))||s.enumerable});return e};var jl=(e,t,n)=>(n=e!=null?Al(Fl(e)):{},Bl(t||!e||!e.__esModule?Or(n,"default",{value:e,enumerable:!0}):n,e));const a=require("react/jsx-runtime"),d=require("react"),g=require("./privy-CDEv1O2j.js"),ln=require("wagmi"),A=require("@spicenet-io/spiceflow-core"),I=require("viem"),_t=require("viem/actions"),Mr=require("@privy-io/react-auth"),es=require("react-dom");require("@tanstack/react-query");const Rl="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@100;200;300;400;500;600;700&display=swap",Dl="spiceflow-ibm-plex-mono",Nl="spiceflow-preconnect-googleapis",Ol="spiceflow-preconnect-gstatic";function mo(e,t){if(document.getElementById(e))return;const n=t();n.id=e,document.head.appendChild(n)}function Ml(){typeof document>"u"||(mo(Nl,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.googleapis.com",e}),mo(Ol,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.gstatic.com",e.crossOrigin="",e}),mo(Dl,()=>{const e=document.createElement("link");return e.rel="stylesheet",e.href=Rl,e}))}const ts=(e,t,n,s)=>({width:e,height:e,fill:"none",className:t,"aria-hidden":n??!0,style:s}),Bn=({size:e=16,color:t="currentColor",strokeWidth:n=2,direction:s="down",className:o,style:r,"aria-hidden":i})=>a.jsx("svg",{...ts(e,o,i,{transform:s==="up"?"rotate(180deg)":void 0,transition:"transform 0.3s ease",...r}),viewBox:"0 0 16 16",children:a.jsx("path",{d:"M4 6L8 10L12 6",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),Pl=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsxs("svg",{...ts(e,s,r,o),viewBox:"0 0 24 24",children:[a.jsx("circle",{cx:"11",cy:"11",r:"8",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"}),a.jsx("path",{d:"m21 21-4.3-4.3",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})]}),Wl=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...ts(e,s,r,o),viewBox:"0 0 24 24",children:a.jsx("path",{d:"m6 9 6 6 6-6",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),Ul=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...ts(e,s,r,o),viewBox:"0 0 24 24",children:a.jsx("path",{d:"m9 18 6-6-6-6",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),Pr=({size:e=14,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...ts(e,s,r,o),viewBox:"0 0 16 16",children:a.jsx("path",{d:"M3 8L6.5 11.5L13 5",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),ho=({value:e,onChange:t,ariaLabel:n,placeholder:s,endAdornment:o,size:r="lg",dark:i,styles:l,inputRef:u,autoFocus:c})=>{const{dark:f,dk:p}=g.useSpiceBrand(l,i),m=i??f,h=r==="lg",x=h?"15px":"14px",y=h?"7px":"10px",b=h?g.radius.input:g.radius.sm,w=l?.fontFamily||g.font.ui,C=m?p.inputBg:"#FAFAFA",S=m?p.inputBorder:"#e5e7eb",k=m?p.textPrimary:"#374151",v=m?p.textSecondary:"#9ca3af";return a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",backgroundColor:C,borderRadius:b,boxShadow:m?"0 2px 4px rgba(0, 0, 0, 0.3)":"0 2px 4px rgba(0, 0, 0, 0.1)",padding:`${y} 5px`,border:`1px solid ${S}`},children:[a.jsx(Pl,{style:{color:v},size:24}),a.jsx("input",{ref:u,type:"text",role:"searchbox","aria-label":n,autoComplete:"off",spellCheck:!1,autoFocus:c,"data-spiceflow-focus":!0,placeholder:s,value:e,onChange:F=>t(F.target.value),style:{flex:1,backgroundColor:C,outline:"none",border:"none",color:k,fontSize:x,fontWeight:400,fontFamily:w}}),o]})},Wr=async(e,t)=>{try{const n=g.getChainsForAssets(),s=g.getClientForChain(t),o=await _t.getBalance(s,{address:e}),r=n[t],i=parseFloat((Number(o)/Math.pow(10,18)).toFixed(6)),l=g.getChainConfig(t),u=l?.supportedTokens?.find(c=>A.isNativeToken(c.address));return{address:A.ZERO_ADDRESS,name:r.chain.nativeCurrency.name,symbol:r.chain.nativeCurrency.symbol,decimals:r.chain.nativeCurrency.decimals,balance:o,balanceFormatted:i,balanceUsd:0,logoURI:u?.logo||l?.logo,isNative:!0,chainId:t}}catch(n){throw n}},Ll=async(e,t,n,s,o,r)=>{try{if(!I.isAddress(n))return null;const i=I.getAddress(n),l=I.isAddress(e)?I.getAddress(e):e,u=g.getClientForChain(t),c=await _t.readContract(u,{address:i,abi:I.erc20Abi,functionName:"balanceOf",args:[l]}),f=parseFloat((Number(c)/Math.pow(10,r)).toFixed(6));return f>0?{address:i,name:s,symbol:o,decimals:r,balance:c,balanceFormatted:f,balanceUsd:0,logoURI:void 0,isNative:!1,chainId:t}:null}catch(i){throw i}},Ur=(e,t)=>{const n=g.getChainConfig(t);if(!n)return e;const s=new Set(e.map(r=>r.address.toLowerCase())),o=e.some(r=>r.isNative);for(const r of n.supportedTokens||[])A.isNativeToken(r.address)&&o||s.has(r.address.toLowerCase())||e.push({address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,logoURI:r.logo,isNative:A.isNativeToken(r.address),chainId:t});if(!e.find(r=>r.isNative)){const r=n.supportedTokens?.find(i=>A.isNativeToken(i.address));e.push({address:A.ZERO_ADDRESS,name:n.nativeCurrency.name,symbol:n.nativeCurrency.symbol,decimals:n.nativeCurrency.decimals,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,logoURI:r?.logo||n.logo,isNative:!0,chainId:t})}return e},zl=async(e,t)=>{const n=[],s=async i=>{for(const l of i){const u=await Ll(e,t,l.address,l.name,l.symbol,l.decimals);u&&(u.logoURI=l.logo,n.push(u))}},o=await Wr(e,t);o.balanceFormatted>0&&n.push(o);const r=(g.getChainConfig(t)?.supportedTokens||[]).filter(i=>!A.isNativeToken(i.address));if(r.length>0)try{const i=g.getClientForChain(t),l=I.getAddress(e),u=r.filter(m=>I.isAddress(m.address)).map(m=>({address:I.getAddress(m.address),abi:I.erc20Abi,functionName:"balanceOf",args:[l]})),c=await i.multicall({contracts:u}),f=r.filter(m=>I.isAddress(m.address)),p=[];c.forEach((m,h)=>{if(m.status==="success"){const x=m.result;if(x&&x>0n){const y=f[h],b=parseFloat((Number(x)/Math.pow(10,y.decimals)).toFixed(6));b>0&&n.push({address:I.getAddress(y.address),name:y.name,symbol:y.symbol,decimals:y.decimals,balance:x,balanceFormatted:b,balanceUsd:0,logoURI:y.logo,isNative:!1,chainId:t})}}else p.push(f[h])}),await s(p)}catch{await s(r)}return{tokens:Ur(n,t),chainId:t}},ql=e=>{const t=g.getClientForChain(e).transport.url;if(typeof t!="string")return null;try{const{hostname:n,pathname:s}=new URL(t);if(!n.endsWith(".g.alchemy.com"))return null;const o=s.split("/").filter(Boolean).pop();return o?{network:n.slice(0,-14),key:o}:null}catch{return null}},Lr="https://api.g.alchemy.com/prices/v1",zr=25,Hl=.01,qr=e=>{const t=e?.prices?.find(s=>s.currency==="usd")?.value,n=parseFloat(t);return Number.isFinite(n)&&n>0?n:0},Vl=async(e,t)=>{const n=new Map;for(let s=0;s<t.length;s+=zr){const o=t.slice(s,s+zr),r=await fetch(`${Lr}/${e.key}/tokens/by-address`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({addresses:o.map(l=>({network:e.network,address:l}))})});if(!r.ok)throw new Error(`Alchemy price fetch failed: ${r.status}`);const i=await r.json();for(const l of i?.data??[]){const u=qr(l);u>0&&n.set(String(l.address).toLowerCase(),u)}}return n},Ql=async(e,t)=>{const n=await fetch(`${Lr}/${e.key}/tokens/by-symbol?symbols=${encodeURIComponent(t)}`);if(!n.ok)throw new Error(`Alchemy price fetch failed: ${n.status}`);const s=await n.json();return qr(s?.data?.[0])},Kl=async(e,t,n)=>{const s=g.getClientForChain(t),o=I.getAddress(e),{tokenBalances:r}=await s.request({method:"alchemy_getTokenBalances",params:[o,"erc20"]}),i=r.filter(x=>I.isAddress(x.contractAddress)&&!!x.tokenBalance&&BigInt(x.tokenBalance)>0n),l=g.getChainConfig(t)?.supportedTokens||[],u=x=>l.find(y=>y.address.toLowerCase()===x.toLowerCase()),c=[],f=await Wr(e,t),[p,m,h]=await Promise.all([Promise.all(i.map(async x=>{const y=u(x.contractAddress);return y?{name:y.name,symbol:y.symbol,decimals:y.decimals,logo:y.logo??null}:await s.request({method:"alchemy_getTokenMetadata",params:[x.contractAddress]})})),Vl(n,i.map(x=>x.contractAddress)),f.balanceFormatted>0?Ql(n,f.symbol):0]);return f.balanceFormatted>0&&c.push({...f,balanceUsd:h*f.balanceFormatted}),i.forEach((x,y)=>{const b=p[y];if(b.decimals===null)return;const w=BigInt(x.tokenBalance),C=parseFloat((Number(w)/Math.pow(10,b.decimals)).toFixed(6));if(C<=0)return;const S=m.get(x.contractAddress.toLowerCase()),k=S?S*C:0;!u(x.contractAddress)&&(!S||k<Hl)||c.push({address:I.getAddress(x.contractAddress),name:b.name||"Unknown",symbol:b.symbol||"UNKNOWN",decimals:b.decimals,balance:w,balanceFormatted:C,balanceUsd:k,logoURI:b.logo||void 0,isNative:!1,chainId:t})}),{tokens:Ur(c,t),chainId:t}},Hr=new Set,Yl=async(e,t)=>{try{const n=ql(t);if(n)try{return await Kl(e,t,n)}catch(s){Hr.has(t)||(Hr.add(t),console.warn(`Token discovery unavailable on chain ${t}; listing configured tokens only.`,s))}return await zl(e,t)}catch(n){throw n}},go=new Map,bn=async(e,t)=>{if(!e)throw new Error("Wallet address is required");const n=g.getChainsForAssets(),s=t&&t.length>0?new Set(t):null,o=Object.keys(n).map(Number).filter(l=>!s||s.has(l)),r=await Promise.allSettled(o.map(l=>{const u=`${e.toLowerCase()}:${l}`;let c=go.get(u);return c||(c=Yl(e,l).finally(()=>go.delete(u)),go.set(u,c)),c})),i={};return r.forEach((l,u)=>{l.status==="fulfilled"&&(i[o[u]]=l.value)}),i},xo=new WeakMap,wn=({address:e,supportedChains:t,fetchBalances:n,enabled:s=!0,refreshInterval:o=0})=>{const[r,i]=d.useState([]),[l,u]=d.useState(!1),[c,f]=d.useState(null),p=`${s}:${e?.toLowerCase()}:${[...t].sort().join(",")}`,m=d.useMemo(()=>({walletScope:p,fetchBalances:n}),[p,n]),h=d.useRef({scope:m,address:e,enabled:s,supportedChains:t,fetchBalances:n});h.current={scope:m,address:e,enabled:s,supportedChains:t,fetchBalances:n};const x=d.useRef(0),[y,b]=d.useState(),w=d.useCallback(async()=>{const k=h.current;if(!k.enabled||!k.address)return;const v=k.address.toLowerCase(),F=++x.current;u(!0);try{const T=await k.fetchBalances(k.address,k.supportedChains);if(h.current.scope!==k.scope||x.current!==F)return;const B=k.supportedChains.filter(E=>!T[E]);let j=xo.get(k.fetchBalances);j||(j=new Map,xo.set(k.fetchBalances,j));for(const E of Object.values(T))j.set(`${v}:${E.chainId}`,E.tokens);i(E=>[...Object.values(T).flatMap(R=>R.tokens),...B.flatMap(R=>j.get(`${v}:${R}`)??E.filter(D=>D.chainId===R))]),b(k.scope),f(B.length?`Balances could not refresh on ${B.map(E=>g.getChainConfig(E)?.name??E).join(", ")}. Previous balances are shown.`:null)}catch{if(h.current.scope!==k.scope||x.current!==F)return;const T=xo.get(k.fetchBalances);i(B=>k.supportedChains.flatMap(j=>T?.get(`${v}:${j}`)??B.filter(E=>E.chainId===j))),b(k.scope),f("Balances could not refresh. Previous balances are shown.")}finally{h.current.scope===k.scope&&x.current===F&&u(!1)}},[]),C=d.useCallback(k=>r.filter(v=>v.chainId===k),[r]),S=d.useCallback(()=>r.filter(k=>k.isNative),[r]);return d.useEffect(()=>{if(x.current++,i([]),b(void 0),f(null),u(!1),!s||!e)return;w();const k=()=>{w()};window.addEventListener("spiceflow:source-funding",k);const v=o?setInterval(k,o):void 0;return()=>{x.current++,clearInterval(v),window.removeEventListener("spiceflow:source-funding",k)}},[m,o,w]),{assets:y===m?r:[],loading:l,error:c,refreshAssets:w,getAssetsByChain:C,getNativeAssets:S}};function Gl(e,t=40,n=18){const s=e.length,o=[{maxLength:7,shrink:0},{maxLength:10,shrink:6},{maxLength:13,shrink:12},{maxLength:16,shrink:16},{maxLength:20,shrink:19}].find(r=>s<=r.maxLength);return Math.max(n,t-(o?.shrink??22))}const jn=({value:e,element:t="span",placeholder:n,ariaLabel:s,ariaInvalid:o,disabled:r,onChange:i,inputMode:l="decimal",autoComplete:u="off",dataSpiceflowFocus:c,fontFamily:f,fontWeight:p=700,color:m,textAlign:h,lineHeight:x=1,maxFontSize:y=40,minFontSize:b=18,overflow:w="ellipsis",title:C,style:S})=>{const k=Gl(e||n||"",y,b),v=w==="wrap"?{overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"}:w==="ellipsis"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:{},F={fontFamily:f,fontSize:`${k}px`,fontWeight:p,color:m,lineHeight:x,letterSpacing:0,textAlign:h,minWidth:0,maxWidth:"100%",...v,...S};return t==="input"?a.jsx("input",{type:"text",inputMode:l,autoComplete:u,"aria-label":s,"aria-invalid":o||void 0,"data-spiceflow-focus":c||void 0,value:e,onChange:i,placeholder:n,disabled:r,title:C,style:{backgroundColor:"transparent",border:"none",outline:"none",padding:0,width:"100%",...F}}):a.jsx(t,{title:C,style:F,children:e})},yo=({pct:e,isMax:t,primaryColor:n,dark:s,fillColor:o})=>{const r=e/100;return a.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",children:[a.jsx("circle",{cx:"7",cy:"7",r:"6.84375",fill:t?n:"none",stroke:t?n:s?"#4a5568":"#3C3E42",strokeWidth:"0.3125"}),!t&&r>0&&a.jsx("path",{d:`M 7 7 L 7 0.15625 A 6.84375 6.84375 0 ${r>.5?1:0} 1 ${7+6.84375*Math.sin(r*2*Math.PI)} ${7-6.84375*Math.cos(r*2*Math.PI)} Z`,fill:o})]})};var Vr="data:image/png;base64,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",Zl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAQlBMVEVMaXGGl/+Elf+HmP+Hmf+Hl/+Gl/+Flv+Glv+Gl/+Gl/+Gl/////+On/+Akv/4+f/v8f/i5v+9x//S2P+tuP+erP+W3PvUAAAAC3RSTlMArBlx7Isy/vvOXbb4wDYAAAAJcEhZcwAACxMAAAsTAQCanBgAAALuSURBVHjarVfbtqsgDOxu0UBpkOv//+pJRC0i2HZ58uTeqzOEyYXkduvY/Tn8KSEBpFB/w3O8/WTjoCSS6dn4S6rha477QxFGS0nHM56ckJL/ox73b+CDQAQJujKiQxTDR4qH4LN109gP8Ti/uyI46K4BUagTLZ4Cz+CZAsWzhx/oeP3RyImhjf/7ePzmxF8Hr7+zNsP3eL7GkWH4Bc8MlQ7P3/DMsIvFKHRLPzBsTWVBizIfVNMBg9H7mLQxTRdUkb9tfJxebNZjywuJW1bf2xcw4WXtzDF5bVqXuJ9HwETHNnPYeHRii0THgcwQyBxTBDQ9Fx7dEBr0TOCDYyeS6aigsFsCQIFgBh9YiVgxQA7EqM9KiCiS95nh5WsGPZ4k8ZZFRqfoY4shy9i8AaExxRgTMgcApuSODPMdRtn02wc7Z9HkPMsPa1ZVOsiRygga4udfZ5vTKKx/7GIBVFJHCUy0r705DNu3LQ9kEQ6NxMTXwWzhUTD7xlJr2MLvrZCBVazy2OD0iaC4BGh1k4cSLOSbbIuujKW4wT76aYefrGswuBJSEoBeUnaFk7nQcKEIJZRXMPsfM95O3p3KKAoRa/cJTh0pHKMybSqyiO8wMsG0wzODi7UK9u0Ah7FIJAj1+UyQcl4Gqi2uax+L/siJVKQyi+j251sbMoHTZrUqlctiojDGRX27WpivYNtdi4upKme0c/gXBmdzY7ZoOi/cWDeU7MJy+oKn3hzbT9/cFKt6pmKe9udnCoTeG103VW7EjrGZJMOD863GNzfVQ0EDP6aJUH61wBRHGZa23npYDDpuh8EnpPBRS6UUQOg9r8enzaDdmhmsPkH/da3bokkr/i0dwMmYU7lg0pRrwiVzNrW+n/dKhVzVVIbGnE9Jj86IA8glk87h+xGnGrJyzXwYNvdD1uUx7/qgeX3UvT5sXx/3ry8c11ee60vX9bXvvXjWfsC3i+d79YV19+WPH1bf/7B8Lxy8/isBINTp+v8Ph4CTcAywkiYAAAAASUVORK5CYII=",Xl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAPFBMVEVMaXGZhueZh+eYhuWXheWYh+eYhuaXheCYhuaah+j//fmhjvOSf+Sdi+q8sOzNxO/m4fT08fapmuja0/Jb/wGxAAAACnRSTlMArEz/IYtsA87sGIEBYwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAmJJREFUeNqtV4uSgyAMRIECGhTk///1otTKG3s2Mzdz03aXbEJIQkhuYv9jIx+komhKDnxk4v1F1wT+SoxcUj3PWu8Ex39U8lH4bzt4QthL6tlDA8OP5Iv1vMADGFc5+uRQnDWdEES81EwbNquXqDuBx8va6ZcXktUYBOkc/3GixsBvwA8neFGGGO7hdyeGAsMXeM/wBJ8ziLv6LwYeisD4f4lHhiAXmH9FvzYV3AchOw6At9gFKW4KANDbsttGoSyCKd1Ab4uxkzezhBQaRfQygHB3oj2FhjwT9QgifErM6jiOrQgAXe2UmcuiIKSuHG+mki2XCH0kYqzgF1vETyYszLFaxLBMNdsgDGNFAazRoUcwrDMlDYz28RS0newGcCRlDa8TK4YgxuORGj9x8NYVEsxjKQSp/pNAw5YRcJI/JP5nYeqxjAxeIfCeRQQDyWOos/y5xR2V4NIgYhRJVkjgpralBPcvQH4PsBxIX0DjJqKRdgYLtsYPUyqh60CsACXEQew7ECvAICZp7DqwQEIQXaR+CkzaoeKr3FewQdqg4mIy36VgLyZWz4G96N5vs8sKj0UPSlJGy4fAbWX88SgGQYgJVjDXi7JaaxYo9Oj4UQ0lrHCGdN25ceiEfNoZSfIomjhcKN26DarT0q4gaiyfe2C9u9hWNUBvRghbG+yd1AZNFFrjmu+ucXMF2j60OObE7f0m+mrv/5qQkimpO+IU8fKXQ9bDMe/5oPl81P3BsP183EeGu3GoLBw/WHnuLF20sXQ9X/ueL57PV99w+Z7P5Vvj8j3fXr7j9X/f/5Vsrv9/K3NM7mGXOq0AAAAASUVORK5CYII=",bo="data:image/svg+xml,%3csvg width='8' height='11' viewBox='57 6 8 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M62.7081 13.27C62.742 13.27 62.7642 13.3057 62.7491 13.3362V13.336L61.1229 16.6083C61.0892 16.6761 60.9926 16.6759 60.959 16.6083L59.3382 13.336C59.3232 13.3057 59.3453 13.27 59.3792 13.27H62.7081Z' fill='%23EA4B4B'/%3e %3cpath d='M61.0026 9.71913C61.0194 9.68524 61.0678 9.68524 61.0845 9.71913L62.747 13.0897C62.762 13.12 62.7399 13.1557 62.706 13.1557H59.3763C59.3424 13.1557 59.3203 13.12 59.3353 13.0897L61.0026 9.71913Z' fill='%23EA4B4B'/%3e %3cpath d='M60.8426 9.63827C60.8766 9.63827 60.8987 9.6741 60.8835 9.70444L59.2164 13.0594C59.1995 13.0932 59.1513 13.0932 59.1345 13.0594L57.5001 9.77047C57.47 9.70962 57.5142 9.63827 57.5821 9.63827H60.8426Z' fill='%23EA4B4B'/%3e %3cpath d='M64.5036 9.63617C64.5715 9.63618 64.6157 9.70753 64.5855 9.76838H64.5854L62.9512 13.0573C62.9344 13.0911 62.8862 13.0912 62.8692 13.0573L61.2021 9.70235C61.187 9.672 61.2091 9.63617 61.2431 9.63617H64.5036Z' fill='%23EA4B4B'/%3e %3cpath d='M62.8284 6.18281C62.862 6.11518 62.9586 6.11518 62.9922 6.18281L64.5855 9.38969C64.6157 9.45054 64.5715 9.52189 64.5036 9.52189H61.2431C61.2091 9.52189 61.187 9.48605 61.2021 9.45571L62.8283 6.18265L62.8284 6.18281Z' fill='%23EA4B4B'/%3e %3cpath d='M62.3131 6.13196C62.381 6.13196 62.4252 6.20331 62.3951 6.26416C62.154 6.74935 61.9128 7.23455 61.6718 7.71975H61.6716C61.4225 8.22125 61.1733 8.72259 60.9242 9.22409C60.9074 9.25799 60.859 9.25799 60.8422 9.22409L60.6305 8.79587C60.6275 8.78957 60.6259 8.78263 60.6259 8.77553V6.22349C60.6259 6.17297 60.6668 6.13196 60.7173 6.13196H62.3131Z' fill='%23EA4B4B'/%3e%3c/svg%3e";const ns=A.getChainMeta(1)?.logo??"",Jl=A.TOKENS.find(e=>e.symbol==="USDC")?.logo??"",Cn=Object.fromEntries([...A.getMainnetChains(),...A.getTestnetChains()].map(e=>[e.id,e.logo])),ss={metamask:Vr,metaMask:Vr,rabby:Zl,phantom:Xl},wo=Object.fromEntries(A.TOKENS.map(e=>[e.symbol,e.logo])),Co=({symbol:e,logoURI:t,size:n=20,theme:s})=>{const{theme:o}=g.useSpiceBrand(),r=s||o,[i,l]=d.useState(!1),u={width:`${n}px`,height:`${n}px`,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",fontSize:`${n*.4}px`,fontWeight:r.typography.fontWeight.bold,flexShrink:0,overflow:"hidden",backgroundColor:"#ffffff"},c=e.toUpperCase(),f=t||wo[c];if(f&&!i)return a.jsx("img",{src:f,alt:e,loading:"lazy",decoding:"async",style:{...u,objectFit:"cover"},onError:()=>l(!0)});const p=$l(e);return a.jsx("div",{style:{...u,...p.style},children:p.icon})},$l=e=>{const t=e.toUpperCase(),n={ETH:{bg:"#627EEA",text:"#FFFFFF",icon:"\u039E"},BTC:{bg:"#F7931A",text:"#FFFFFF",icon:"\u20BF"},USDC:{bg:"#2775CA",text:"#FFFFFF"},USDT:{bg:"#26A17B",text:"#FFFFFF"},DAI:{bg:"#F5AC37",text:"#FFFFFF"},WETH:{bg:"#627EEA",text:"#FFFFFF",icon:"\u039E"},WBTC:{bg:"#F09242",text:"#FFFFFF",icon:"\u20BF"},CBTC:{bg:"#F7931A",text:"#FFFFFF",icon:"\u20BF"},USD:{bg:"#26A17B",text:"#FFFFFF",icon:"$"},MATIC:{bg:"#8247E5",text:"#FFFFFF"},AVAX:{bg:"#E84142",text:"#FFFFFF"},SOL:{bg:"#9945FF",text:"#FFFFFF"},DOT:{bg:"#E6007A",text:"#FFFFFF"},ADA:{bg:"#0033AD",text:"#FFFFFF"},LINK:{bg:"#375BD2",text:"#FFFFFF"},UNI:{bg:"#FF007A",text:"#FFFFFF"},AAVE:{bg:"#B6509E",text:"#FFFFFF"},CRV:{bg:"#40E0D0",text:"#000000"}}[t];if(n)return{style:{backgroundColor:n.bg,color:n.text},icon:n.icon||t.charAt(0)};const s=t.split("").reduce((l,u)=>u.charCodeAt(0)+((l<<5)-l),0),o=Math.abs(s)%360,r=`hsl(${o}, 60%, 50%)`,i=o>180?"#FFFFFF":"#000000";return{style:{backgroundColor:r,color:i},icon:t.charAt(0)}},Qr=({chainId:e,name:t,size:n=16})=>{const s=e&&(Cn[e]||A.getChainMeta(e)?.logo)||"";return s?a.jsx("img",{src:s,alt:t||`Chain ${e}`,loading:"lazy",decoding:"async",width:n,height:n,style:{width:`${n}px`,height:`${n}px`,borderRadius:"50%",objectFit:"cover",flexShrink:0}}):null};function vo(e){return e.displaySymbol||e.symbol}function _l(e){return e.displayName||e.displaySymbol||e.name||e.symbol}function ko(e){return e.displayChainName||g.getChainName(e.chainId)}const ec=({selectedAsset:e,assets:t,onAssetSelect:n,showDropdown:s,onToggleDropdown:o,disabled:r=!1,theme:i,onViewAllAssets:l})=>{const{theme:u}=g.useSpiceBrand(),c=i||u,f=d.useRef(null),p=d.useRef(null),m=d.useRef(null),[h,x]=d.useState(null);d.useEffect(()=>{if(s&&p.current){const D=()=>{if(p.current){const O=p.current.getBoundingClientRect();x({top:O.bottom+6,right:window.innerWidth-O.right})}};return D(),window.addEventListener("scroll",D,!0),window.addEventListener("resize",D),()=>{window.removeEventListener("scroll",D,!0),window.removeEventListener("resize",D)}}else x(null)},[s]),d.useEffect(()=>{const D=O=>{f.current&&!f.current.contains(O.target)&&m.current&&!m.current.contains(O.target)&&s&&o()};return s&&document.addEventListener("mousedown",D),()=>{document.removeEventListener("mousedown",D)}},[s,o]);const[y,b]=d.useState(!1),w=c.mode==="light",C={backgroundColor:"transparent",border:`1px solid ${w?"#aaaaaa":c.colors.border}`,borderRadius:"6px",color:c.colors.text,cursor:r?"not-allowed":"pointer",padding:"8px 14px 8px 10px",width:"100%",display:"flex",flexDirection:"column",gap:"4px",opacity:r?.6:1,transition:g.transition.interactive,transform:y?"scale(0.98)":"scale(1)"},S={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"10px",minWidth:0},k={display:"flex",alignItems:"center",gap:"4px",paddingTop:"4px",borderTop:`1px solid ${c.colors.border}`},v=()=>h?{position:"fixed",top:`${h.top}px`,right:`${h.right}px`,backgroundColor:c.colors.secondary,border:`1px solid ${c.colors.border}`,borderRadius:c.borderRadius.md,boxShadow:c.shadows.lg,zIndex:g.z.dropdown,width:"200px",maxHeight:"300px",overflow:"auto"}:{},F={backgroundColor:"transparent",border:"none",color:c.colors.text,cursor:"pointer",padding:c.spacing.sm,width:"100%",display:"flex",alignItems:"center",gap:c.spacing.sm,transition:`background-color ${c.animation.normal}`,":hover":{backgroundColor:c.colors.surfaceHover}},T={display:"flex",flexDirection:"column",alignItems:"flex-start",flex:1},B={fontSize:c.typography.fontSize.sm,fontWeight:c.typography.fontWeight.medium},j={fontSize:c.typography.fontSize.xs,color:c.colors.textMuted},E={backgroundColor:"transparent",border:"none",borderTop:`1px solid ${c.colors.border}`,color:c.colors.primary,cursor:"pointer",padding:"10px 12px",width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontFamily:c.typography.fontFamily,fontSize:c.typography.fontSize.xs,fontWeight:c.typography.fontWeight.medium,textDecoration:"underline",textUnderlineOffset:"2px"},R={transition:`transform ${c.animation.normal}`,transform:s?"rotate(180deg)":"rotate(0deg)",flexShrink:0};return a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"relative"},ref:f,children:a.jsxs("div",{ref:p,style:C,onClick:r?void 0:o,onMouseLeave:()=>{b(!1)},onMouseDown:()=>b(!0),onMouseUp:()=>b(!1),children:[a.jsxs("div",{style:S,children:[a.jsx("div",{style:{display:"flex",alignItems:"center",gap:"8px",flex:1,minWidth:0},children:e?.asset?a.jsxs(a.Fragment,{children:[a.jsx(Co,{symbol:e.asset.symbol,logoURI:e.asset.logoURI,theme:c,size:24}),a.jsx("span",{style:{fontSize:"15px",fontWeight:500,color:c.colors.text,lineHeight:"1.5",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:vo(e.asset)})]}):a.jsx("span",{style:{fontSize:"14px",color:c.colors.textMuted},children:"Select"})}),a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:w?c.colors.textMuted:"#c7ccd4",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:R,children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]}),e?.asset&&a.jsxs("div",{style:k,children:[!e.asset.displayChainName&&a.jsx(Qr,{chainId:e.asset.chainId,theme:c}),a.jsx("span",{style:{fontSize:"11px",color:c.colors.textMuted},children:ko(e.asset)})]})]})}),s&&h&&es.createPortal(a.jsxs("div",{ref:m,style:v(),children:[t.length===0&&a.jsx("div",{style:{padding:"10px 12px",color:c.colors.textMuted,fontSize:c.typography.fontSize.xs},children:"No assets available"}),t.map(D=>a.jsxs("button",{style:F,onClick:()=>{n(D),o()},children:[a.jsx(Co,{symbol:D.symbol,logoURI:D.logoURI,theme:c},`${D.address}-${D.chainId}-${D._fundingWallet||D._source||""}`),a.jsxs("div",{style:T,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:c.spacing.xs},children:[a.jsx("span",{style:B,children:vo(D)}),!D.displayChainName&&a.jsx(Qr,{chainId:D.chainId,theme:c})]}),a.jsxs("span",{style:j,children:[g.formatBalance(D.balanceFormatted)," \u2022"," ",ko(D)]})]})]},D.receiptTokenId||`${D.address}-${D.chainId}-${D._fundingWallet||D._source||""}`)),l&&a.jsxs("button",{type:"button",style:E,onClick:()=>{o(),l()},children:[a.jsx("span",{children:"View all assets"}),a.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[a.jsx("path",{d:"M5 12h14"}),a.jsx("path",{d:"M13 5l7 7-7 7"})]})]})]}),document.body)]})},tc=({assets:e,selectedAsset:t,onAssetSelect:n,onAmountChange:s,disabled:o=!1,loading:r=!1,label:i="Select Asset",showBalance:l=!0,showMaxButton:u=!0,placeholder:c="0.0",theme:f,styles:p,maxAmount:m,resolveMaxAmount:h,hideAmountInput:x=!1,displayAmount:y,dark:b,onViewAllAssets:w})=>{const{theme:C,primaryColor:S,dark:k,dk:v}=g.useSpiceBrand(p,b),F=f||C,T=b??k,[B,j]=d.useState(!1),[E,R]=d.useState(null),[D,O]=d.useState(null),[H,U]=d.useState(!1),[V,Y]=d.useState(null),[N,L]=d.useState(t?.amount||""),z=d.useRef(null),G=d.useRef(""),Z=d.useRef(h),W=t?.asset?t.asset.receiptTokenId||`${t.asset.chainId}-${t.asset.address}-${t.asset._fundingWallet||t.asset._source||""}`:"",q=!!h,M=V??m;d.useEffect(()=>{Z.current=h},[h]),d.useEffect(()=>{W!==G.current&&(L(t?.amount||""),G.current=W)},[W,t?.amount]),d.useEffect(()=>{Y(null),U(!1)},[W,q,t?.asset?.balance]);const se=P=>{let oe=P;oe.startsWith(".")&&(oe="0"+oe);const fe=g.parseNumericInput(oe,t?.asset?.decimals);if(!fe){L(fe),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{s(fe)},300);return}if(M&&parseFloat(fe)>parseFloat(M)){L(M),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{s(M)},300);return}if(t?.asset){const _=parseFloat(fe),Q=t.asset.balanceFormatted,ee=t.asset.decimals;if(!isNaN(_)&&_>Q){const he=g.formatDecimalInput(Math.floor(Q*10**ee)/10**ee,ee);L(he),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{s(he)},300);return}}L(fe),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{s(fe)},300)},de=P=>{L(P),z.current&&clearTimeout(z.current),s(P)};d.useEffect(()=>{!M||!N||parseFloat(N)<=parseFloat(M)||de(M)},[M,N]);const ae=async()=>{if(t?.asset){const P=t.asset.decimals,oe=Z.current;if(V){de(V);return}if(oe){U(!0);try{const Q=await oe(t.asset);if(Q!==null){const ee=g.parseNumericInput(Q,P);Y(ee),de(ee);return}}catch(Q){console.warn("[AssetSelector] Failed to resolve max amount:",Q)}finally{U(!1)}}if(M){de(g.parseNumericInput(M,P));return}let fe=Math.floor(t.asset.balanceFormatted*10**P)/10**P;M&&fe>parseFloat(M)&&(fe=parseFloat(M));const _=g.formatDecimalInput(fe,P);de(_)}},ne=async P=>{if(t?.asset){if(P===100){await ae();return}const oe=t.asset.decimals,fe=t.asset.balanceFormatted*P/100;let _=Math.floor(fe*10**oe)/10**oe;M&&_>parseFloat(M)&&(_=parseFloat(M));const Q=g.formatDecimalInput(_,oe);de(Q)}},ce=t?.asset?.balanceFormatted??0,ue=parseFloat(N)||0,$=ce>0?ue/ce*100:0;d.useEffect(()=>()=>{z.current&&clearTimeout(z.current)},[]);const ve={backgroundColor:p?.assetSelector?.backgroundColor||p?.secondaryBackground||(T?v.cardBg:"#e9e9e9"),border:T?`0.5px solid ${v.cardBorder}`:"0.5px solid #A8A8A7",borderRadius:p?.assetSelector?.borderRadius||"6px",padding:p?.assetSelector?.padding||"16px",height:"auto",minHeight:x?void 0:"144px",display:"flex",flexDirection:"column",gap:"8px",position:"relative",opacity:o?.6:1};return r?a.jsx("div",{style:ve,children:a.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[a.jsx("div",{style:{backgroundColor:T?v.hoverBg:"#d1d5db",borderRadius:"4px",height:"16px",width:"60px"}}),a.jsx("div",{style:{backgroundColor:T?v.hoverBg:"#d1d5db",borderRadius:"4px",height:"40px",width:"150px"}})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"8px"},children:[a.jsx("div",{style:{backgroundColor:T?v.hoverBg:"#d1d5db",borderRadius:"4px",height:"12px",width:"80px"}}),a.jsx("div",{style:{backgroundColor:T?v.hoverBg:"#d1d5db",borderRadius:"6px",height:"46px",width:"128px"}})]})]})}):a.jsxs("div",{style:ve,children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:p?.fontFamily||F.typography.fontFamily,fontSize:"16px",fontWeight:500,color:T?v.textSecondary:"#7d7c7b",lineHeight:"24px"},children:i}),l&&t?.asset&&a.jsxs("span",{style:{fontFamily:p?.fontFamily||F.typography.fontFamily,fontSize:"12px",fontWeight:500,color:T?v.textSecondary:"#71757a",lineHeight:"16px"},children:["Balance: ",g.formatBalance(t.asset.balanceFormatted)]})]}),a.jsxs("div",{style:{display:"flex",justifyContent:x&&!y?"flex-start":"space-between",alignItems:"center",flex:1},children:[!x&&a.jsx(jn,{element:"input",ariaLabel:t?.asset?`${t.asset.symbol} amount`:"Amount",dataSpiceflowFocus:!0,value:N,onChange:P=>se(P.target.value),placeholder:c,disabled:o||!t?.asset,fontFamily:p?.fontFamily||F.typography.fontFamily,color:o?T?"rgba(255, 255, 255, 0.16)":"rgba(14, 13, 11, 0.16)":N?T?"#ffffff":"#0e0d0b":T?"#4a5568":"#d1d5db",lineHeight:"1.08",maxFontSize:40,minFontSize:22,style:{width:"100%",maxWidth:"200px"}}),a.jsx("div",{style:{width:"176px",position:"relative",flexShrink:0},children:a.jsx(ec,{selectedAsset:t,assets:e,onAssetSelect:n,showDropdown:B,onToggleDropdown:()=>j(!B),disabled:o,theme:F,onViewAllAssets:w})}),x&&y&&a.jsx(jn,{element:"span",value:y,title:y,fontFamily:p?.fontFamily||F.typography.fontFamily,color:T?"#ffffff":"#0e0d0b",lineHeight:"1.08",textAlign:"right",maxFontSize:40,minFontSize:22,style:{flex:1}})]}),!x&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px",height:"14px"},children:[0,25,50,75,100].map((P,oe)=>{const fe=Math.abs($-P)<1,_=oe===4,Q=E===P,ee=D===P;return a.jsx("button",{onClick:()=>ne(P),onMouseEnter:()=>R(P),onMouseLeave:()=>{R(null),O(null)},onMouseDown:()=>O(P),onMouseUp:()=>O(null),disabled:o||!t?.asset||P===100&&!u||P===100&&H,title:P===100&&!u?"Max unavailable":`${P}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:o||!t?.asset||P===100&&!u||P===100&&H?"not-allowed":"pointer",opacity:fe?1:Q?.8:.5,transform:ee?"scale(0.85)":Q?"scale(1.15)":"scale(1)",transition:g.transition.interactive},children:a.jsx(yo,{pct:P,isMax:_,primaryColor:S,dark:T,fillColor:T?v.textSecondary:"#3C3E42"})},P)})})]})},os=d.memo(tc),nc=new Set(["USDC","SUSD","USD","NUSD","USDT","DAI","ENUSD","USDG"]),Kr={ETH:"ethereum",WETH:"ethereum",BTC:"bitcoin",WBTC:"bitcoin",WCBTC:"bitcoin",CBTC:"bitcoin",ECBTC:"bitcoin",ARB:"arbitrum",MATIC:"matic-network",POL:"matic-network"};let vs=null;const sc=6e4;async function So(e){const t={},n=new Set,s={};for(const r of e){const i=r.toUpperCase();if(nc.has(i))t[i]=1;else if(Kr[i]){const l=Kr[i];n.add(l),s[i]=l}else t[i]=0}if(n.size===0)return t;const o=Date.now();if(vs&&o-vs.timestamp<sc){for(const[r,i]of Object.entries(s))t[r]=vs.prices[i]??0;return t}try{const r=Array.from(n).join(","),i=await fetch(`https://api.coingecko.com/api/v3/simple/price?ids=${r}&vs_currencies=usd`);if(!i.ok)throw new Error(`CoinGecko ${i.status}`);const l=await i.json(),u={};for(const c of n)u[c]=l[c]?.usd??0;vs={prices:u,timestamp:o};for(const[c,f]of Object.entries(s))t[c]=u[f]??0}catch(r){console.warn("[fetchTokenPrices] CoinGecko fetch failed:",r);for(const i of Object.keys(s))t[i]=t[i]??0}return t}function oc(e,t){return e.map(n=>{if(n.balanceUsd>0)return n;const s=t[n.symbol.toUpperCase()]??0;return{...n,balanceUsd:n.balanceFormatted*s}})}const rc=new Set(["cbtc","btc","wbtc","wcbtc","tbtc"]),ac=new Set(["usdc","usdt","dai","usdc.e","usdbc","usdg"]);async function ic(){const e=(await So(["BTC"])).BTC;if(!e||e<=0)throw new Error("Failed to fetch BTC/USD price");return e}function lc(e){return rc.has(e.toLowerCase())}function cc(e){return ac.has(e.toLowerCase())}function dc(e,t,n,s){const o=10n**12n,r=BigInt(Math.round(s*Number(o))),i=t-n,l=10n**BigInt(Math.abs(i));let u=e*r/o;return i>0?u=u/l:i<0&&(u=u*l),u}const rs=({size:e=20,strokeWidth:t=2,color:n="currentColor",style:s})=>a.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:n,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:s,children:[a.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]});var Ao="data:image/svg+xml,%3csvg width='108' height='22' viewBox='0 0 108 22' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M1.9916 11.9854V11.2041H3.98379C4.48835 11.2041 4.87897 11.0739 5.15566 10.8135C5.43236 10.5498 5.5707 10.1868 5.5707 9.72461V9.71484C5.5707 9.24935 5.43236 8.88639 5.15566 8.62598C4.87897 8.36556 4.48835 8.23535 3.98379 8.23535H1.9916V7.4541H4.2084C4.65111 7.4541 5.04173 7.5485 5.38027 7.7373C5.71882 7.92611 5.98411 8.18978 6.17617 8.52832C6.37148 8.86686 6.46914 9.25911 6.46914 9.70508V9.71484C6.46914 10.1608 6.37148 10.5547 6.17617 10.8965C5.98411 11.2383 5.71882 11.5052 5.38027 11.6973C5.04173 11.8893 4.65111 11.9854 4.2084 11.9854H1.9916ZM1.55215 14.5V7.4541H2.43106V14.5H1.55215ZM9.51875 14.5928C9.0207 14.5928 8.58939 14.4837 8.2248 14.2656C7.86348 14.0443 7.58353 13.7301 7.38496 13.3232C7.18965 12.9163 7.09199 12.4329 7.09199 11.873V11.8633C7.09199 11.3001 7.18965 10.8151 7.38496 10.4082C7.58353 10.0013 7.86348 9.6888 8.2248 9.4707C8.58939 9.2526 9.0207 9.14355 9.51875 9.14355C10.0201 9.14355 10.4514 9.2526 10.8127 9.4707C11.174 9.6888 11.4523 10.0013 11.6477 10.4082C11.8462 10.8151 11.9455 11.3001 11.9455 11.8633V11.873C11.9455 12.4329 11.8462 12.9163 11.6477 13.3232C11.4523 13.7301 11.174 14.0443 10.8127 14.2656C10.4514 14.4837 10.0201 14.5928 9.51875 14.5928ZM9.51875 13.8408C9.85078 13.8408 10.1324 13.7627 10.3635 13.6064C10.5946 13.4502 10.7704 13.2256 10.8908 12.9326C11.0145 12.6396 11.0764 12.2865 11.0764 11.873V11.8633C11.0764 11.4466 11.0145 11.0918 10.8908 10.7988C10.7704 10.5059 10.5946 10.2829 10.3635 10.1299C10.1324 9.97363 9.85078 9.89551 9.51875 9.89551C9.18672 9.89551 8.90514 9.97363 8.67402 10.1299C8.4429 10.2829 8.26549 10.5059 8.1418 10.7988C8.02135 11.0918 7.96113 11.4466 7.96113 11.8633V11.873C7.96113 12.2865 8.02135 12.6396 8.1418 12.9326C8.26549 13.2256 8.4429 13.4502 8.67402 13.6064C8.90514 13.7627 9.18672 13.8408 9.51875 13.8408ZM13.7842 14.5L12.3096 9.23633H13.1592L14.1943 13.4453H14.2725L15.4492 9.23633H16.2549L17.4316 13.4453H17.5098L18.5449 9.23633H19.3896L17.915 14.5H17.0605L15.8838 10.4277H15.8057L14.6338 14.5H13.7842ZM22.1658 14.5928C21.6645 14.5928 21.2332 14.4821 20.8719 14.2607C20.5138 14.0394 20.2371 13.7269 20.0418 13.3232C19.8497 12.9163 19.7537 12.4378 19.7537 11.8877V11.8828C19.7537 11.3392 19.8497 10.8623 20.0418 10.4521C20.2371 10.042 20.5122 9.72135 20.867 9.49023C21.2218 9.25911 21.6368 9.14355 22.1121 9.14355C22.5906 9.14355 23.0008 9.25423 23.3426 9.47559C23.6876 9.69694 23.9513 10.0062 24.1336 10.4033C24.3191 10.7972 24.4119 11.2562 24.4119 11.7803V12.1123H20.1932V11.4336H23.9773L23.5574 12.0537V11.7168C23.5574 11.3034 23.4956 10.9632 23.3719 10.6963C23.2482 10.4294 23.0773 10.2308 22.8592 10.1006C22.6411 9.96712 22.3904 9.90039 22.1072 9.90039C21.824 9.90039 21.5701 9.97038 21.3455 10.1104C21.1242 10.2471 20.9484 10.4505 20.8182 10.7207C20.688 10.9909 20.6229 11.3229 20.6229 11.7168V12.0537C20.6229 12.4281 20.6863 12.7487 20.8133 13.0156C20.9402 13.2793 21.1209 13.4827 21.3553 13.626C21.5896 13.766 21.8663 13.8359 22.1854 13.8359C22.423 13.8359 22.6297 13.8034 22.8055 13.7383C22.9813 13.6732 23.1261 13.5902 23.24 13.4893C23.354 13.3883 23.4337 13.2858 23.4793 13.1816L23.4988 13.1377H24.3484L24.3387 13.1768C24.2931 13.3558 24.2117 13.5299 24.0945 13.6992C23.9806 13.8652 23.8325 14.0166 23.6502 14.1533C23.4679 14.2868 23.2514 14.3942 23.0008 14.4756C22.7534 14.5537 22.4751 14.5928 22.1658 14.5928ZM25.4303 14.5V9.23633H26.2799V10.0176H26.358C26.4589 9.74089 26.6298 9.52604 26.8707 9.37305C27.1116 9.22005 27.4094 9.14355 27.7643 9.14355C27.8456 9.14355 27.9254 9.14844 28.0035 9.1582C28.0849 9.16471 28.1467 9.17122 28.1891 9.17773V10.0029C28.1012 9.98665 28.0149 9.97526 27.9303 9.96875C27.8489 9.95898 27.761 9.9541 27.6666 9.9541C27.3964 9.9541 27.1572 10.0078 26.9488 10.1152C26.7405 10.2227 26.5761 10.3724 26.4557 10.5645C26.3385 10.7565 26.2799 10.9811 26.2799 11.2383V14.5H25.4303ZM30.9408 14.5928C30.4395 14.5928 30.0082 14.4821 29.6469 14.2607C29.2888 14.0394 29.0121 13.7269 28.8168 13.3232C28.6247 12.9163 28.5287 12.4378 28.5287 11.8877V11.8828C28.5287 11.3392 28.6247 10.8623 28.8168 10.4521C29.0121 10.042 29.2872 9.72135 29.642 9.49023C29.9968 9.25911 30.4118 9.14355 30.8871 9.14355C31.3656 9.14355 31.7758 9.25423 32.1176 9.47559C32.4626 9.69694 32.7263 10.0062 32.9086 10.4033C33.0941 10.7972 33.1869 11.2562 33.1869 11.7803V12.1123H28.9682V11.4336H32.7523L32.3324 12.0537V11.7168C32.3324 11.3034 32.2706 10.9632 32.1469 10.6963C32.0232 10.4294 31.8523 10.2308 31.6342 10.1006C31.4161 9.96712 31.1654 9.90039 30.8822 9.90039C30.599 9.90039 30.3451 9.97038 30.1205 10.1104C29.8992 10.2471 29.7234 10.4505 29.5932 10.7207C29.463 10.9909 29.3979 11.3229 29.3979 11.7168V12.0537C29.3979 12.4281 29.4613 12.7487 29.5883 13.0156C29.7152 13.2793 29.8959 13.4827 30.1303 13.626C30.3646 13.766 30.6413 13.8359 30.9604 13.8359C31.198 13.8359 31.4047 13.8034 31.5805 13.7383C31.7563 13.6732 31.9011 13.5902 32.015 13.4893C32.129 13.3883 32.2087 13.2858 32.2543 13.1816L32.2738 13.1377H33.1234L33.1137 13.1768C33.0681 13.3558 32.9867 13.5299 32.8695 13.6992C32.7556 13.8652 32.6075 14.0166 32.4252 14.1533C32.2429 14.2868 32.0264 14.3942 31.7758 14.4756C31.5284 14.5537 31.2501 14.5928 30.9408 14.5928ZM36.1486 14.5928C35.7059 14.5928 35.3186 14.4805 34.9865 14.2559C34.6545 14.0312 34.3973 13.7155 34.215 13.3086C34.0328 12.8984 33.9416 12.4199 33.9416 11.873V11.8633C33.9416 11.3132 34.0328 10.8346 34.215 10.4277C34.3973 10.0208 34.6529 9.70508 34.9816 9.48047C35.3137 9.25586 35.7027 9.14355 36.1486 9.14355C36.3895 9.14355 36.6158 9.18262 36.8273 9.26074C37.0422 9.33561 37.2326 9.44141 37.3986 9.57812C37.5647 9.71484 37.6949 9.8776 37.7893 10.0664H37.8674V7.14648H38.717V14.5H37.8674V13.6602H37.7893C37.6818 13.8555 37.5467 14.0231 37.384 14.1631C37.2212 14.2998 37.0357 14.4056 36.8273 14.4805C36.619 14.5553 36.3928 14.5928 36.1486 14.5928ZM36.3439 13.8408C36.663 13.8408 36.938 13.7611 37.1691 13.6016C37.4003 13.4421 37.5777 13.2158 37.7014 12.9229C37.8251 12.6266 37.8869 12.2767 37.8869 11.873V11.8633C37.8869 11.4564 37.8251 11.1064 37.7014 10.8135C37.5777 10.5205 37.4003 10.2943 37.1691 10.1348C36.938 9.97526 36.663 9.89551 36.3439 9.89551C36.0249 9.89551 35.7499 9.97526 35.5188 10.1348C35.2909 10.291 35.1151 10.5156 34.9914 10.8086C34.871 11.1016 34.8107 11.4531 34.8107 11.8633V11.873C34.8107 12.2799 34.871 12.6315 34.9914 12.9277C35.1151 13.2207 35.2909 13.4469 35.5188 13.6064C35.7499 13.7627 36.0249 13.8408 36.3439 13.8408ZM45.1775 14.5928C44.9334 14.5928 44.7072 14.5553 44.4988 14.4805C44.2905 14.4056 44.1049 14.2998 43.9422 14.1631C43.7794 14.0231 43.6443 13.8555 43.5369 13.6602H43.4588V14.5H42.6092V7.14648H43.4588V10.0664H43.5369C43.6346 9.8776 43.7648 9.71484 43.9275 9.57812C44.0936 9.44141 44.2824 9.33561 44.4939 9.26074C44.7088 9.18262 44.9367 9.14355 45.1775 9.14355C45.6235 9.14355 46.0109 9.25586 46.3396 9.48047C46.6717 9.70508 46.9288 10.0208 47.1111 10.4277C47.2934 10.8346 47.3846 11.3132 47.3846 11.8633V11.873C47.3846 12.4199 47.2934 12.8984 47.1111 13.3086C46.9288 13.7155 46.6717 14.0312 46.3396 14.2559C46.0109 14.4805 45.6235 14.5928 45.1775 14.5928ZM44.9822 13.8408C45.3045 13.8408 45.5796 13.7627 45.8074 13.6064C46.0353 13.4469 46.2094 13.2207 46.3299 12.9277C46.4536 12.6315 46.5154 12.2799 46.5154 11.873V11.8633C46.5154 11.4531 46.4536 11.1016 46.3299 10.8086C46.2094 10.5156 46.0353 10.291 45.8074 10.1348C45.5796 9.97526 45.3045 9.89551 44.9822 9.89551C44.6632 9.89551 44.3881 9.97526 44.157 10.1348C43.9259 10.2943 43.7485 10.5205 43.6248 10.8135C43.5011 11.1064 43.4393 11.4564 43.4393 11.8633V11.873C43.4393 12.2767 43.5011 12.6266 43.6248 12.9229C43.7485 13.2158 43.9259 13.4421 44.157 13.6016C44.3881 13.7611 44.6632 13.8408 44.9822 13.8408ZM48.6568 16.3457C48.6015 16.3457 48.5396 16.3424 48.4713 16.3359C48.4029 16.3327 48.3395 16.3262 48.2809 16.3164V15.6182C48.3329 15.6279 48.3899 15.6344 48.4518 15.6377C48.5136 15.641 48.5738 15.6426 48.6324 15.6426C48.8733 15.6426 49.0702 15.5807 49.2232 15.457C49.3795 15.3333 49.5048 15.1201 49.5992 14.8174L49.6969 14.5049L47.7486 9.23633H48.6568L50.2779 14.0996L49.941 13.5674H50.3414L50.0045 14.0996L51.6207 9.23633H52.5143L50.4586 14.8223C50.3154 15.2161 50.164 15.5238 50.0045 15.7451C49.845 15.9665 49.6578 16.1211 49.443 16.209C49.2314 16.3001 48.9693 16.3457 48.6568 16.3457Z' fill='%230E0D0B'/%3e%3cpath d='M62.7081 13.27C62.742 13.27 62.7642 13.3057 62.7491 13.3362V13.336L61.1229 16.6083C61.0892 16.6761 60.9926 16.6759 60.959 16.6083L59.3382 13.336C59.3232 13.3057 59.3453 13.27 59.3792 13.27H62.7081Z' fill='%23EA4B4B'/%3e%3cpath d='M61.0026 9.71913C61.0194 9.68524 61.0678 9.68524 61.0845 9.71913L62.747 13.0897C62.762 13.12 62.7399 13.1557 62.706 13.1557H59.3763C59.3424 13.1557 59.3203 13.12 59.3353 13.0897L61.0026 9.71913Z' fill='%23EA4B4B'/%3e%3cpath d='M60.8426 9.63827C60.8766 9.63827 60.8987 9.6741 60.8835 9.70444L59.2164 13.0594C59.1995 13.0932 59.1513 13.0932 59.1345 13.0594L57.5001 9.77047C57.47 9.70962 57.5142 9.63827 57.5821 9.63827H60.8426Z' fill='%23EA4B4B'/%3e%3cpath d='M64.5036 9.63617C64.5715 9.63618 64.6157 9.70753 64.5855 9.76838H64.5854L62.9512 13.0573C62.9344 13.0911 62.8862 13.0912 62.8692 13.0573L61.2021 9.70235C61.187 9.672 61.2091 9.63617 61.2431 9.63617H64.5036Z' fill='%23EA4B4B'/%3e%3cpath d='M62.8284 6.18281C62.862 6.11518 62.9586 6.11518 62.9922 6.18281L64.5855 9.38969C64.6157 9.45054 64.5715 9.52189 64.5036 9.52189H61.2431C61.2091 9.52189 61.187 9.48605 61.2021 9.45571L62.8283 6.18265L62.8284 6.18281Z' fill='%23EA4B4B'/%3e%3cpath d='M62.3131 6.13196C62.381 6.13196 62.4252 6.20331 62.3951 6.26416C62.154 6.74935 61.9128 7.23455 61.6718 7.71975H61.6716C61.4225 8.22125 61.1733 8.72259 60.9242 9.22409C60.9074 9.25799 60.859 9.25799 60.8422 9.22409L60.6305 8.79587C60.6275 8.78957 60.6259 8.78263 60.6259 8.77553V6.22349C60.6259 6.17297 60.6668 6.13196 60.7173 6.13196H62.3131Z' fill='%23EA4B4B'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M74.8537 10.0096C75.2721 10.0096 75.654 10.1125 75.9993 10.3184C76.3513 10.5177 76.6303 10.8032 76.8361 11.1751C77.0487 11.547 77.1549 11.9953 77.1549 12.52V12.6495C77.1549 13.1675 77.052 13.6158 76.8461 13.9943C76.6402 14.3729 76.3613 14.6618 76.0093 14.861C75.664 15.0603 75.2788 15.1599 74.8537 15.1599C74.515 15.1599 74.2261 15.1134 73.9871 15.0204C73.7546 14.9341 73.5653 14.8212 73.4192 14.6817C73.2731 14.5423 73.1602 14.3995 73.0805 14.2534H72.941V16.9659L72.1541 16.0013V10.1491H72.9211V10.956H73.0352C73.2729 10.6733 73.3893 10.4911 73.6683 10.2985C73.9538 10.1059 74.349 10.0096 74.8537 10.0096ZM74.6445 10.7069C74.1464 10.7069 73.7347 10.8696 73.4092 11.195C73.0905 11.5138 72.9311 11.9621 72.9311 12.5399V12.6296C72.9311 13.2074 73.0905 13.659 73.4092 13.9844C73.7347 14.3032 74.1464 14.4626 74.6445 14.4626C75.1492 14.4626 75.5577 14.3032 75.8698 13.9844C76.1886 13.659 76.348 13.2074 76.348 12.6296V12.5399C76.348 11.9621 76.1886 11.5138 75.8698 11.195C75.5577 10.8696 75.1492 10.7069 74.6445 10.7069Z' fill='%230E0D0B'/%3e%3cpath d='M78.5848 11.9583L78.5555 15.4596L77.7681 14.4846V10.9583L78.5848 11.9583Z' fill='%230E0D0B'/%3e%3cpath d='M101.588 10.2986H102.444L103 10.986H101.588V10.9867H100.802L101.588 11.9623V14.1937C101.588 14.3929 101.685 14.4926 101.877 14.4926H102.379L102.928 15.17H101.668C101.389 15.17 101.173 15.0936 101.021 14.9409C100.874 14.7881 100.801 14.5789 100.801 14.3133V10.986H99.8799L99.3217 10.2986H100.801V9.13501H101.588V10.2986Z' fill='%230E0D0B'/%3e%3cpath d='M69.0133 7.90764C69.4848 7.90764 69.9065 7.99068 70.2784 8.15671C70.6569 8.3161 70.9525 8.55517 71.165 8.87395C71.3842 9.18609 71.4938 9.58126 71.4938 10.0594V10.4778H70.667V10.0594C70.667 9.72072 70.5939 9.44842 70.4477 9.24254C70.3083 9.03666 70.1124 8.88392 69.86 8.7843C69.6143 8.68469 69.332 8.63487 69.0133 8.63487C68.555 8.63487 68.1864 8.7378 67.9075 8.94367C67.6286 9.14291 67.4891 9.4285 67.4891 9.80041C67.4891 10.0461 67.5488 10.2453 67.6684 10.3981C67.7879 10.5508 67.9573 10.677 68.1764 10.7767C68.3956 10.8696 68.658 10.9527 68.9635 11.0257L69.4815 11.1552C69.8866 11.2416 70.2485 11.3611 70.5673 11.5138C70.8927 11.6599 71.1517 11.8625 71.3443 12.1215C71.5369 12.3739 71.6332 12.706 71.6332 13.1177C71.6332 13.5295 71.5303 13.8881 71.3244 14.1936C71.1185 14.4991 70.8263 14.7382 70.4477 14.9109C70.0758 15.0769 69.6375 15.1599 69.1328 15.1599C68.6281 15.1599 68.1765 15.0702 67.778 14.8909C67.3795 14.7116 67.0641 14.4426 66.8316 14.084C66.6058 13.7187 66.4929 13.2638 66.4929 12.7192V12.51H67.3197V12.7192C67.3197 13.297 67.4891 13.7287 67.8278 14.0143C68.1665 14.2932 68.6015 14.4327 69.1328 14.4327C69.6774 14.4327 70.0924 14.3098 70.378 14.0641C70.6636 13.8183 70.8064 13.5095 70.8064 13.1376C70.8064 12.8786 70.74 12.6727 70.6072 12.52C70.481 12.3673 70.3017 12.2444 70.0692 12.1514C69.8368 12.0518 69.5645 11.9655 69.2523 11.8924L68.7343 11.7629C68.3292 11.6566 67.9706 11.5271 67.6584 11.3744C67.3463 11.2216 67.1006 11.0224 66.9213 10.7767C66.7486 10.5243 66.6623 10.2022 66.6623 9.81035C66.6623 9.41852 66.7585 9.07981 66.9511 8.79424C67.1504 8.50866 67.426 8.28953 67.778 8.13678C68.1366 7.98404 68.5484 7.90764 69.0133 7.90764Z' fill='%230E0D0B'/%3e%3cpath d='M81.6544 10.0096C82.1193 10.0096 82.5145 10.0959 82.8399 10.2686C83.1719 10.4412 83.431 10.6704 83.6169 10.956C83.8095 11.2415 83.9324 11.5471 83.9855 11.8725L83.2185 12.0318C83.1853 11.7928 83.1056 11.5736 82.9794 11.3744C82.8598 11.1752 82.6905 11.0158 82.4713 10.8962C82.2521 10.7767 81.9832 10.7169 81.6644 10.7169C81.339 10.7169 81.0468 10.7899 80.7877 10.936C80.5354 11.0821 80.3328 11.2914 80.1801 11.5637C80.034 11.836 79.9609 12.1614 79.9609 12.5399V12.6296C79.9609 13.0081 80.034 13.3335 80.1801 13.6058C80.3328 13.8781 80.5354 14.0873 80.7877 14.2334C81.0468 14.3795 81.339 14.4526 81.6644 14.4526C82.1492 14.4526 82.5178 14.3264 82.7702 14.0741C83.0292 13.8217 83.1886 13.5095 83.2483 13.1376L84.0254 13.307C83.9523 13.6257 83.8195 13.9279 83.6269 14.2135C83.4343 14.4991 83.172 14.7282 82.8399 14.9009C82.5145 15.0735 82.1193 15.1599 81.6544 15.1599C81.1829 15.1599 80.7579 15.0603 80.3793 14.861C80.0074 14.6551 79.7119 14.363 79.4927 13.9844C79.2802 13.6059 79.1739 13.1575 79.1739 12.6395V12.5299C79.1739 12.0053 79.2802 11.557 79.4927 11.1851C79.7119 10.8066 80.0074 10.5177 80.3793 10.3184C80.7579 10.1126 81.1829 10.0096 81.6544 10.0096Z' fill='%230E0D0B'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M86.7515 10.0096C87.2097 10.0096 87.6149 10.1092 87.9668 10.3084C88.3188 10.501 88.5944 10.78 88.7937 11.1452C88.9929 11.5105 89.0925 11.9389 89.0925 12.4304V12.7889H85.1177C85.1377 13.3136 85.3071 13.7254 85.6258 14.0243C85.9446 14.3165 86.3431 14.4626 86.8212 14.4626C87.2396 14.4626 87.5617 14.3663 87.7875 14.1737C88.0133 13.9811 88.186 13.752 88.3056 13.4863L88.983 13.815C88.8833 14.0209 88.7439 14.2268 88.5646 14.4327C88.3919 14.6386 88.1628 14.8113 87.8772 14.9507C87.5983 15.0902 87.2396 15.1599 86.8013 15.1599C86.3099 15.1599 85.8782 15.057 85.5063 14.8511C85.1344 14.6386 84.8455 14.343 84.6396 13.9645C84.4337 13.5859 84.3307 13.1476 84.3307 12.6495V12.5299C84.3307 12.0252 84.4337 11.5836 84.6396 11.205C84.8455 10.8265 85.1311 10.5342 85.4963 10.3284C85.8616 10.1159 86.28 10.0096 86.7515 10.0096ZM86.7515 10.7069C86.3066 10.7069 85.9413 10.8331 85.6557 11.0855C85.3701 11.3378 85.1941 11.6898 85.1277 12.1414H88.2956C88.269 11.6898 88.113 11.3378 87.8274 11.0855C87.5485 10.8331 87.1898 10.7069 86.7515 10.7069Z' fill='%230E0D0B'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M97.1624 10.0096C97.6207 10.0096 98.0258 10.1092 98.3778 10.3084C98.7298 10.501 99.0054 10.78 99.2046 11.1452C99.4039 11.5105 99.5035 11.9389 99.5035 12.4304V12.7889H95.5287C95.5487 13.3136 95.718 13.7254 96.0368 14.0243C96.3555 14.3165 96.754 14.4626 97.2322 14.4626C97.6505 14.4626 97.9727 14.3663 98.1985 14.1737C98.4243 13.9811 98.5969 13.752 98.7165 13.4863L99.3939 13.815C99.2943 14.0209 99.1548 14.2268 98.9755 14.4327C98.8028 14.6386 98.5737 14.8113 98.2881 14.9507C98.0092 15.0902 97.6506 15.1599 97.2123 15.1599C96.7208 15.1599 96.2892 15.057 95.9172 14.8511C95.5453 14.6386 95.2564 14.343 95.0505 13.9645C94.8446 13.5859 94.7417 13.1476 94.7417 12.6495V12.5299C94.7417 12.0252 94.8446 11.5836 95.0505 11.205C95.2564 10.8265 95.542 10.5342 95.9073 10.3284C96.2725 10.1158 96.6909 10.0096 97.1624 10.0096ZM97.1624 10.7069C96.7175 10.7069 96.3522 10.8331 96.0666 11.0855C95.7811 11.3378 95.6051 11.6898 95.5387 12.1414H98.7066C98.68 11.6898 98.5239 11.3378 98.2383 11.0855C97.9594 10.8331 97.6008 10.7069 97.1624 10.7069Z' fill='%230E0D0B'/%3e%3cpath d='M92.2484 10.0594C92.6137 10.0594 92.9391 10.1358 93.2247 10.2885C93.5169 10.4413 93.7494 10.6671 93.9221 10.966C94.0947 11.2648 94.1811 11.6334 94.1811 12.0717V15.1458H93.394V12.1315C93.394 11.6467 93.2712 11.2947 93.0255 11.0755C92.7864 10.8564 92.461 10.7468 92.0492 10.7468C91.5777 10.7468 91.1925 10.8995 90.8936 11.205C90.6014 11.5105 90.4553 11.9655 90.4553 12.5698V15.1458H89.6683V10.1491H90.4354V10.9582H90.5361C90.7355 10.7018 90.8604 10.5342 91.1128 10.3483C91.3718 10.1557 91.7503 10.0594 92.2484 10.0594Z' fill='%230E0D0B'/%3e%3cpath d='M78.5932 10.9581H77.7681V10.1514H78.6L78.5932 10.9581Z' fill='%230E0D0B'/%3e%3c/svg%3e";const Yr=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(","),en=({isOpen:e,onClose:t,title:n,subtitle:s,children:o,overlayContent:r,overlayDimmed:i=!0,styles:l,theme:u,maxWidth:c="522px",dark:f,footerLinkText:p,bannerSrc:m,bannerAlt:h,closeOnBackdropClick:x=!1})=>{const{theme:y,dark:b,dk:w,palette:C}=g.useSpiceBrand(l,f),S=f??b,k=u||y,v=l?.fontFamily||k.typography.fontFamily||g.font.ui,F=l?.primaryColor||k.colors.primary,T=d.useRef(null),B=d.useRef(null),j=d.useRef(null),E=d.useId(),[R,D]=d.useState(!1),[O,H]=d.useState(!1),U=d.useRef(t);if(d.useEffect(()=>{U.current=t},[t]),d.useEffect(()=>{if(!e){H(!1);return}B.current=document.activeElement;const N=document.body.style.overflow;document.body.style.overflow="hidden";const L=requestAnimationFrame(()=>{const W=requestAnimationFrame(()=>H(!0));j.current=W}),z=()=>{const W=T.current;W&&(W.querySelectorAll(Yr)[0]??W).focus({preventScroll:!0})},G=W=>{if(W.key==="Escape"){W.stopPropagation(),U.current();return}if(W.key!=="Tab")return;const q=T.current;if(!q)return;const M=Array.from(q.querySelectorAll(Yr)).filter(ne=>!ne.hasAttribute("aria-hidden"));if(M.length===0){W.preventDefault(),q.focus();return}const se=M[0],de=M[M.length-1],ae=document.activeElement;W.shiftKey&&ae===se?(W.preventDefault(),de.focus()):!W.shiftKey&&ae===de&&(W.preventDefault(),se.focus())},Z=requestAnimationFrame(z);return document.addEventListener("keydown",G),()=>{cancelAnimationFrame(Z),cancelAnimationFrame(L),j.current&&cancelAnimationFrame(j.current),document.removeEventListener("keydown",G),document.body.style.overflow=N;const W=B.current;W&&typeof W.focus=="function"&&W.focus({preventScroll:!0})}},[e]),!e)return null;const V=!!m&&!R,Y=h??"";return a.jsx("div",{onMouseDown:N=>{x&&N.target===N.currentTarget&&U.current()},style:{position:"fixed",inset:0,backgroundColor:S?"rgba(0,0,0,0.72)":"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",padding:"clamp(16px, 4vw, 48px)",zIndex:g.z.modal,opacity:O?1:0,transition:`opacity ${g.duration.normal} ${g.easing.out}`},children:a.jsx("div",{ref:T,role:"dialog","aria-modal":"true","aria-labelledby":E,tabIndex:-1,style:{backgroundColor:C.shellBorder,borderRadius:"12px",padding:"5px",width:"100%",maxWidth:c,boxSizing:"border-box",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.4)",outline:"none",transform:O?"scale(1)":"scale(0.96)",transition:`transform ${g.duration.slow} ${g.easing.out}`,display:"flex",flexDirection:"column",maxHeight:"100%"},children:a.jsxs("div",{style:{backgroundColor:C.shell,border:`1px solid ${C.shellInnerBorder}`,borderRadius:"9px",width:"100%",padding:"0",display:"flex",flexDirection:"column",position:"relative",flex:"0 1 auto",minHeight:0,overflowY:"auto",overflowX:"hidden"},children:[r&&i&&a.jsx("div",{style:{position:"absolute",inset:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:5,pointerEvents:"none",borderRadius:"12px"},"aria-hidden":"true"}),V&&a.jsxs("div",{style:{position:"relative",width:"100%"},children:[a.jsx("img",{src:m,style:{width:"100%",height:"auto",display:"block",borderRadius:"6px 6px 0 0"},alt:Y,"aria-hidden":Y===""?"true":void 0,onError:()=>D(!0)}),a.jsx("button",{type:"button",onClick:t,"aria-label":"Close dialog",style:{position:"absolute",top:"8px",right:"8px",minWidth:"44px",minHeight:"44px",color:C.textPrimary,padding:"8px",backgroundColor:"transparent",borderRadius:"9999px",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1},children:a.jsx(rs,{size:28,strokeWidth:2.5})})]}),a.jsxs("div",{style:{padding:"28px 28px 0 28px",position:"relative"},children:[!V&&a.jsx("button",{type:"button",onClick:t,"aria-label":"Close dialog",style:{position:"absolute",top:"10px",right:"10px",minWidth:"44px",minHeight:"44px",color:C.textSecondary,padding:"10px",backgroundColor:"transparent",borderRadius:"50%",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.2s",fontSize:"18px",fontWeight:"600"},onMouseEnter:N=>{N.currentTarget.style.backgroundColor=S?`${F}1a`:"#f3f4f6"},onMouseLeave:N=>{N.currentTarget.style.backgroundColor="transparent"},children:a.jsx(rs,{size:24,strokeWidth:2.4})}),a.jsx("h2",{id:E,style:{fontSize:"22px",fontWeight:"700",color:C.textPrimary,margin:"0",fontFamily:v,lineHeight:"1.12"},children:n})]}),s&&a.jsx("div",{style:{padding:"11px 28px 13px 28px",fontSize:"12px",color:C.textSecondary,margin:"0",lineHeight:"1.35",fontFamily:v,borderBottom:S?`1px solid ${w.cardBorder}`:"1px solid #cdcfd1"},children:s}),o,a.jsxs("div",{style:{padding:"12px 28px",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("img",{src:Ao,alt:"","aria-hidden":"true",width:108,height:22,decoding:"async",style:{width:"108px",height:"22px",opacity:S?.85:1,filter:S?"brightness(0) invert(1)":"none",margin:0,display:"block"}}),a.jsx("a",{href:"https://spiceflow-docs.spicenet.io",target:"_blank",rel:"noopener noreferrer",style:{fontSize:"10px",color:C.textSecondary,textDecoration:"none",display:"flex",alignItems:"center",gap:"4px",fontFamily:v,lineHeight:"1"},children:a.jsx("span",{style:{color:F,textDecoration:"underline",fontWeight:"500"},children:p??"Learn more \u2192"})})]}),r]})})})};var Gr="data:image/svg+xml,%3csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.51484 1.22476C5.04689 0.494255 5.87167 0 6.83333 0C7.79352 0 8.62302 0.493038 9.15721 1.22447C10.0512 1.08473 10.9879 1.32154 11.6665 2.00014C12.3456 2.67921 12.5823 3.61677 12.4419 4.51135C13.1714 5.04616 13.6667 5.87042 13.6667 6.83333C13.6667 7.79624 13.1714 8.62051 12.4419 9.15532C12.5823 10.0499 12.3456 10.9875 11.6665 11.6665C10.986 12.3471 10.049 12.5769 9.15858 12.4403C8.62445 13.1728 7.79434 13.6667 6.83333 13.6667C5.86959 13.6667 5.04474 13.1705 4.50996 12.44C3.619 12.5772 2.68116 12.3475 2.00014 11.6665C1.31939 10.9858 1.08903 10.0476 1.23037 9.15532C0.501138 8.62162 0 7.79824 0 6.83333C0 5.86843 0.501137 5.04504 1.23037 4.51135C1.08903 3.61904 1.31939 2.68089 2.00014 2.00014C2.67986 1.32042 3.61766 1.08457 4.51484 1.22476ZM9.20928 5.95387C9.51334 5.74624 9.59152 5.33144 9.38389 5.02737C9.17626 4.72331 8.76145 4.64514 8.45739 4.85277L8.3995 4.89229C7.48372 5.51764 6.69012 6.30153 6.05487 7.20477L5.30449 6.45518C5.044 6.19497 4.62189 6.1952 4.36168 6.45569C4.10147 6.71618 4.10169 7.13829 4.36218 7.3985L5.7 8.73489C5.84693 8.88167 6.05387 8.95158 6.25971 8.924C6.46555 8.89641 6.64677 8.77448 6.74987 8.5942C7.34322 7.55668 8.16436 6.6674 9.1514 5.9934L9.20928 5.95387Z' fill='%23EA4B4B'/%3e%3c/svg%3e",uc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAASrdJREFUeAHtfQeYHMd15quemc0LLhjBiAEDCAYQiUkgRQDMBNNClBlkSwdYsqQ7fz7Jd2f7fLYOgD/rbMmyLZ19n0VZMmDLFCWaFMAcRBILRjAgMElgxIAUAZAEiMXmndB19arqVVXPzkzPzM7ODqj+ycX09FSnqvfqxXoNECFChAgRIkSIECFChAgRIkRoCDCYACxe3N01mGhL5gDmQg6mi4skxZW6GGNdnPMkNxdnXQC8a8xNMQaiXdHz0+9uu2L7EO65ws4tWvRy4L30zQOekucAlhKH4fZOz/dTHdCyradnbS8cBOhew7sSTYNJ8Py5HGLTRRckuY/jwbvEGCQlFWCXeNCF+6FCYDdTl9I2cyirUHe7x4SgVzQ1/cyZGA95HEsxD1Ken9uJ2yMjHdvWr2A1H4+aMQgyxUC84+uC+BaJx1gMNQYRP6EQoee3Gc+16BohLXs8L7Y+Fsvevemhn6aggYBM0dQy9HXRI2Y88omSHq9MQg2gEIEXYpRibSs5b/kQ4xHz1o/m2N3rb2lNQQ0wbmqau/jmZCzmrRREtTyfoHI5XzysDznfVw8t/sFtAhJiYHYHNZG528y0hbLvljntzfEFrgFOG/d35nnmXJ7ejnlMbsdiMdXOkU56e20i4a+ebEa5+fZhIbn9lWJzeal2PvY92H6Sw+J2utshhVCoQ/OP158liT5/gPLPKeCx4Dk9uS+EGBiszXBv9XgZpWoGmSskRjze9nXf5ytpNse/TCYL6UxGM0fVU0FDA59XTArQlEhAPBE3g6X6wV+95fGfroI6w0oMWOnuxyHI+FwwBEDWB8sUnwBgtyPz4JQlhkNNYnkUzcBffcctnaugSlTFIOdfeXMynWYbBEEkkQl8Mf2MjKYhnc6YNtz88wkEC3ZcU1MTtDQ3CQljGCUlpMmSekkTlBpiOtogpqgk7csKjhjNCin+SR2DIkBGaY4DxAMShqUywJZUI00qZpCzL715se9768T1pTE3PDICo6MZLUE+uTxRDFL6615saWmWjKLR6/u5Fdt67lgPE4jP3t6/WMyb68SmHA+UFMMZ/hvHGPlISEZxJAoX4wG5FXd9bkpF41ERg8xffPNyFvPWcBTZ4oqDg8NClcp9osR2tSBGQTulo6NNql1Mihq+fPNjt/8rTAB+6/aB5eICa+j7qOCKdC4aCwKOR5PQv5pjlsx9z1t+102tZY9H2QyyYPGN3dyLrUNuQEN7cGhIfPJoMPKAgxJDJmlvMyqXsNOWbOv5aQ/UEDf8ZLBbnH4dfR/OCvsvBxEKoEmoXC0Ok4jpfcmdt3T2lHNsWQyCnioxM27FmAXaG/0DQ8oLEjFHQSBfoMGOTILGvEBvUxOfVyubRHuqxHgotWpIMEc2Yo6SSAhJ0honzyP0Zpk3rxybxIMyINSFDeKskjkGBiPmCAPaAWiTDQ4No/TAKasrPco2oOcPagCh1G4AzRwjEXOUBZSu2FcSwn5OiD7sXrM/dDxCGWT+xZ9bJU6YRFkjmSNSq8oC8gVOKIOizzSSHrR8DcaJG28fXIXeKhwCsjkilAfsK+wzLUeS8Zam0PEoqWKhaiU0hR1obI6MjkpX7m+ip2o8QHULPVstzc06IMdnCHskBVUAVass+DtwGxlwKBNNVpUCbcT2BJOfSPwZ8GaUUrVKShBhd6xE5qA4h/RWQYRKIGd6ER/yuYrSYZ9CldARcol0NmKOaoB9hg4NHAucZBJOnxZCUQkiDXPGdmBCwvDwiIiOZ+UJI1QOlCJNTQloa2mR330+PHVbz/qKEutQemS4kh7oPRzOQoRxoE1IkZgWD9mR9NT1K6YWHI+iEsQD73r8ROmBzBHNVtUD+w6zDCj1phpbJMf49VItYNDwdseR7R4cO6Us/8+kYdSJpJayRYo+BWd+N0qPbOQiqRkwRw3BGSyGCiF4q5vLGFRjp4+ceoQH8472YMmJcTisrepUvwkH9iPXNgMvkX1e8AnmLl7e5bHR/cggAxgtF0ziQ32B8YPTZ54IU7umFG2TTqfh+S2vSbczAmfoU09OwlFHHFo0VR1tqqef3yZco/VlfFSz4rEYtLe3yu+cj5StZnWv298VG27aj9uYYzXSoOoVPuNfXtYKT6YycOJUD/pGAX68LQ2NipY4xkeYZJTcaGE1K1740JG5NEmhisXz0o/rgYsvPAf+6W/+FwXaCgIzh8+5/PNwoG9AfkfGuPNH34LOzvaS577xS38CL2z9JdQbbqq/GJqk+GdbOcfFR+JzQaeMN7L0OGtaDOYL6fFkSn2/4Yw43Pt6BnqHG/OmUYrEPZ1L11R4PApSn4crAMFZrzEJz3f9VYtLMgdiyyvbofdAv/n+2WsvCWWOffsPwMuvvQX1hspXs+tfYhCfU+6xzBdxDz0Gfr1FeQW44YxE4HuLiFzfcHoCGhWkQ2DfCkFScDwKUqAYg+nyBLnJGY0Tjp0GF5wbTj8PPPq0UaUwOfAz11wSeswvNmwSbtdJEPuawEmK5JzU9DDkvNh02m5UT+LJh3lw9rGxMfuvPjUOnc2NaYtwh7xx6UahNsWmaNnYn6Tp6uJPnwNdh3SWbIOS4NGeTeb7GbNOghOnH1vyGMwCuO3nD8FkwvfJk6X6uBwwp22jali3nJUoaNCiO7X7tDg0Ity+9IuMR0EGwUX98qBJ8O2iWnXlxZ8Kbff0c9tg1wd75TaqLTcvuzx0DXnqvV2w/c0dMJkgNYsXKFZRHCyJ/zaq9Dh2CoNPHV+cCa6blRiz0q9RYNbN88LFKoq7eaXtUf8RmT3rZJg/57SSbfDeUL0itLY0w9LLLoQw/Py+xybdbU02CIfKq4c06hLmZac3lWQAVLGWzmx0KcLLZxAxDkn89CdhyrrikoWQiJfuzLd3vi/du4Rz558JXVNKq2S46vG+R54y37kXAx5vhnrDIfJkBQeV37bOOKqDwcUnxkLb3TK7CVgDShFuPlmy0O9e6cPqC+zAyxadF9qu5+kXYf+BPrmNBLfs6iWhx/zyjbdh5693m+/psy6FoRv+DHhTK0SoHrec1STtjDAc1s5gWYPaIqXQUPkA559zFpyUPK5kG2SIhx9/1nyfdtRhgqnOhzCse2CD841BZu5VkE3Ohdy0k6GuqEJN4s5fIwFTSi49qXyiv25WE3Q0NZYYofJHxVCMQbro4Hris1eHu2lT7+2Gba+8br6jO7i9raXkMQf6B+Huhzaa77kjk+CLPzTqM6cuhHrC0VrLtkEESXVNQqw2FL91ZkIG2srFtE4mU1AaCVRyq1IjXTeu35C0trbAooXzQ9vdducDJk0ECfzm7itCj9n0wstw4MCg/sYhPW+peHKlN2dPXAA80QJ1g510KjHSuxqNOQ5t9eCKUyondnT5lqOS1RNSOrMKvVgK9XuQK5acD4cdWppmMMj22BMvmO8zTzwBFsw9HcLw8/sft2U2mQfZkywj8q5pkDn5XKg3Dvbs6GWnx2XFkEqBWb7nHlvFgROEsGEo4eYt5/DaAO2KzywNN7Sf2/xKwNC+/OLzQ0tQ7trzETz6xPPme+6404FPOdI2EMdnZ11YV4qt9FKNxktTWtBzVb2q9JkzGi8uUux2SsdB6oQjDz+0LEnwk7seMveFsY9yPF4bntocyAhIz71yTJvsSULNau2ECOUBDfPxpLLPPBzTUhrLFilG7UUZhNXRaY1BvrbW0nbA8MgoPLlpq/k+b/apcMas0h4otFXufcQa535zO+QKqVPxJkjPDncQ1BKVTkCNUgugXXihrj9t/AmIN81ONExcpNRQFAkU1m8osBLhDddcHNpuo4h99PVrQ1vc35WXXBCqXr22/W14+bU3zffsyecAb24r2LZe3qxqe7ZRNBKMiB/VPv67mXmYB3OnNUaUoRQZFbnD+g1H8vhj4PRTTwxt9xMnyXDKlA64+MKzQ49B2wMlD6GQekXwj5wB/tRjoB6o9D0mlbz6YSKB6evo2q0FsJDbl85unvTHCpMFRSVIPaSISjK8TJbqLIVdH3wEL277lfn+6fPnwdHTjih5DNbwemSDDSj6XUeBf+ys4geIiHp6drgkqx3K71/zfo1J1rGWnhqHKTVMXT/pUA/OOW7yPVql0g4nVcbF4zG47spFoe0e2/ickQTIVNde/ulQ9QpXDL75znvme/bomSb2UQzZ0y6CeinGlcw/jeASbopNzOInTJOfTIQN96QyyLzZs+CoIw4r2Uau4bjLqldTD+mEC4UECcP9v3gyIAVje98LPcafejTkpp0CDYtJ1EcuOCE2IUUYTjsiBqccNnlk2LAqFp6+e2m49Hj9rRS88fa75nu3iJe0t5VOMMQSO084Hi9E7MMUwIEPIQyj51wLDYtJkiRxEbT4rdkTN9NPqhSpVoJMtJv30K4pcN0V4Qxy/6NPBZj1GqFeheHBx5+Gj/buD+4Uj9P8wt2hx2anzxGernaYOFRP5ZOlaZ0r7ASsUjJRWHhCHKZ3NeaKqiIrCikvAyYMC889Czo7ShMiVkfHNBHCjOnHwJmnnVTyGGSm9Q9sLPhb4k0RUc+GrEdvnwrZ40ov2BofWNUSejLiBvhajZtnT/wMjwUfJiUuEhJfmrRI+k3XXx7aZuvL22H3nr3m+y3dV0JzU1PJY1BybHrxlYK/eX0fQmz3GxCGzIKrYeJQ3auqVVUUqDsumhGXke+JxpIZCTj9iMbJ0SKUDBRO1HhgcYXzz5kd2u4+YWgT0ON18UXnhB5z532PyUr0BB53GIr7kHjl8dBzZJPzgLdMVOoJqzyKbo6sL5CPbzqzCeoBjIt89oxE3Z+R533mo+TUMFE3u2jhgtBltQf6+uGehy2DzDo5GVq1BAnvQWetut/eBUO3/CVkj7EqU3y7+D09XPI86A6euMh6o6UeFsfC4+OQnFo/kl1wrFcXaVUJSt7NRAwlVjm/ooyqJRuf2SKryhO+cNM1oarJ26n34bXX3zHfs6d+CnLHngaZOZeZfV56CGJvvwhhSM+9QswQDTJYk8RT19Z5iSzGWq6aWV+PlqSoSnOxZJnLCRoVrLc7/6xZJdugJHDVq/bWVrjkovA1G3fd92hAfcmcohgxm5wTWHve9MpjEKgaVgD+USdB7vDjYSJQcd9OgvF6+pExmHNU/W2CRckYHN1Z5weuOBeLqyLPtQYS79LLLghVr955dxc8/dxL5vvC886SbuFSwGqJ9z78hPmOy2pzx5+hrjvlCMkkhPi7rwDbv6fk+cDzhJp1ATQEeOCjLrh5krJtWxNY3KFxypUWNtInaCgwwHfJp8MN7cefeB6GtHqFTIXqVRheevUN2OV4vDKnnC/T2CVw7fmZNp2dCVdvbGd43WiZm+VNzCzKoXFtEcyRWjCJq/4uOSkOXa11SvmhfyrNxZqIAcQCCzNOKG1oY8X2Bx619aswFeX8+WdCGH7y84eD6lXe7J89cX5Qzdr2CwjFIUdB9oSzYELQwLb6ivlNEJvEuJ1cczKr3lKk8IAUDhTq/2p6eUG8GAUPM7S3vrIdfukY2hd9ap5w8ZZWyfr6B6DnKWt4Z4Vhzo84IdhILoq61H794C3wPkpBGDKnTMx69YpjIXViqFlHFC5CXW989swEHFHXF/AUvlZRFavWgUIszXNRGVVLHnr8WfnKN3lzgog+f2N40O7J57bBgf4B8x2LwhXyQGXOXAyc2cGP//IJCENWuHv9zsOg1mhUFaseUfNykPDU2vX6oLiOVdyPWWPmvebyi0LLg+IryjY+vdl8n3VKMnQxFWb7rrvXBv+whE8uObdw2yNPDCyKSrz+DLDRwZLn5x2HCjUrXMWrGBUXbqgPQ936Qgae+3VuUlPsM2JMN6aycMerGagPqDrWWBT1YtVyPEi9CgOmiLzz7vvmmEsXnSdfW1YKez7cCxs3bTHfsyeKKPghRxZuHItDdpaNwcQ+fh9i7/0KwpCtpTerxn1baxzZweDvnx6FP3p4BF7e49f1VrFQ4TPvZuG/3jcM/7o1DYe01FPFqlSC1BDHHn0kLDgrPAHwP+551GxjEYcbr7ss9Jhf9DxnK7aLDk7PLn1Men7QIxZ/42kIQ/aE2eALg70mqGLMUXrUi1Te2efDt69ogQunx+DvnhmBlY+NCkaZ2Ir4mRyHp3Zm4X88OCIYIwOfPaMJ/uv5zbB3sF7sWVw+1yVUumzpYmgLKQ+KBRnwnR+EBXNmwbHHHFnyGJxx/uNey1RcSIjc8aXLB/kdUyF39EyTtBjf+TLAUJ/gyBJxlpYOyJx2ITRvugvGjSrHvF6vMupPc1i1YRS+c2ULXCbcrY+8lYW/fyYt3wGyfF6TfJNUrZAT47d1lw+3v5yRJLr01ARclIzDx8O+ZJaBdJ3qskEVdbFqNWWht+bqy8LVKwzyfdyr3jcoA4qXhh+D3q5Xf2XfN8hyOWCD+0seg4+VdlNP+j6CxBvPQhgys8LfP1IWquzXeiobu/p8+XZaLBG67PQE/HBZK5wmvFt/8sgIfP/5NOzuHz/hvtvrw18IRvzus6Nw5cw4fOvyVllvC6s1/u1To7B3qL56aEXJirX0YmF50FOFsR2G9Q/2mMgtliBddEG4xwuLMgTcpWKznGzdzMzzbaE48Zzxt54PndhzmHpy5AwYNw6SXEWUHI/vUN5EjIn89pwmWHtDq4h0gyDsEfjhi6Owrwoi/nDQh78RDPC/Hx+Fc4Q7+V+WtUlJldCm5k9fTsMrHzTOm0qLryis0Zz1uRuuDC2w8MGH+0T8w1Zsx6olxxwVUrVkaBgefHzszN/02kZgmZGSx0JbF2SPt56p+I6tQpLsLXkIMqJ0H9cA9aoaMx7g+1tvfSEN7+y3xNopAnj/SahZaKMc0uLBqscFo2xOw4HR8GfZ3e/D/xXS4o8fGoU502KwRkila4RK5db3feWDnLRB6okwn0lRL1YtBrDc8qB3P7wRcjkytAGuujQ81fz5za/C2zvGFmLARVHerjdDj8+cscRss1wGEq+FS57ciWdLO6cWqKguFkyO86tvhEuPVv57zvGValgf65uXtcA04fX6k4dG4N9fSsNQZuwd7hPH/uOmUfirjaMwGxnjM61w+cnxMXleKaFy/R/Rpt7PSA7eilSsWmHBnNNC61fhq6Z/ts6mfeCaj0+fOxfC8OBjzxRl4sT2J0OPz568AHjn4faY1zeJm8mWPAZra+WOr01MpKolt1B/vCm8Wv/vucLLlLFGFkqBbwmJkhbz258+MipVs4zY7hdS5a7XMvDtjSNwzBRPMtOSGfGCCZDDgrH+UUiX/cOTI1WrMtLHXbRBEMDnbrgqtNkvX38Ldr77rllPeunic4XHq3TVEqzY/vTzxZMNExghD1OzYk3CFrExEe+jd8TfztLH4EKqM8dXXK4aEpjEtCiJJ4UL9oE3ik8eGK/43flN8BeXNMOeAR9e+zAHv3g7B81CffrzJS3wGWHoF3tXOg77v2/LwKsfTq7dUbEEGa+KheVBF1+wILTdXcJN6/vC+wQYvfXhyovD1aunhDt49wfFbQaMjsffeiH0PJmZ55kluegBi5ehZsn6vvHql6FWQ+y0Hn0yzZZ/EGrSG3tLEzEyyhfmNsHco2OCKeJwzazijEHY8E4W1v2qvnZHJZgwFeu8BbOlDVIKg0MjTuYuh9NPOQHOOj28cNv9TrZvMSRefzqUyVFdyh0x3Xxveu2J0GOwQjy+lapaVF28epLFCHbLXz05KlSp2nHpR8Kj9QPhCJjM979XVTiuFsCcqh/8+OdwoG+gaJvN216Dvfs+Nt8/e90VEAtJLdn7cS+8sOVVCEP87c3g7d9VupFQmbKn2BeAeiKGEnvvtaLNcR1J81O3C6/XFqgW0iCsVhRMMpPsFvGR74qg4Wh2/BSN5/hmj3AAjE4id5SBIl4s3gvjBCYe/tV318AVN/4+3PfIk5DJjtVh193/mNlOJLBqSbjH6/a7HoLhkXRoO3T1Jt56PrSdfP0aZfiKabr5xXvGnkt4ueK/ego6/nEFtDx9uzj3KFQLaRAyWdmkkj7ubYTi1YjHhUp052vjV4n+/plR2L63AeIdzEiRguNRZE0661Ul+mHc+OCjj+EP/vTbcPPv/Slsf3OHmT337tsPj/Q8Y9qdt2AuTD9uWslz4bEPbQiPehPib2wKna354cdDxl2OKyQIG+oz3733fwVt//4/oe2ebwMb6YPxwunSshlEPMK4J6xa4o5XszLjt1rcuz0DPTsmNr+rXDBazuxXwCATEcTa8vJ2uPZ3/hD+8Bt/J4vBPfHsZlO1BK93Y/cVoZ6z7W+mJJOVi9ietyH2/uulG6GadZp9RyEb7oPYzpeAHfgAWu7/HnQI5pB5WzXsk0YPEoYB1SM02quJpGMay5otDWSUs7zPPJSOetV4HDHr9u4He2DDUy9AZ4d15XZ0tMHCMmIft931oFz/US5YdlR4s56F9HGlq6hkZy4E/vD3hSqlVLeWx38ktrNCkhyAmkOL9EqkM6794o2TfSGBmbY/2jwKf3RhS9nPgomQqzeMFAwoTjoqWZMuZvKU/oSJAGbuvr97r7inuEzkXrzw3NCqJVlhwzy68TmoFE3bhUrmlw4A8pZ2EVm/yHz3+vdNDHOAXs4smYSnyj1GMEfZbeuJx9/JyQh6OcCUdgwG7uxtMOawZStThX4uomJpfWyivSZIKSwOvxYqF6pgpVSP57f+UtozlQI9WbF3S3i9xDXx99jeX0M9QDGNSuABk+Mx2QHDQrjtpQw8+242tN1/CMN+Y6ox7I5CqDBQyKXXhNVpSLa9+gZ8/r98A1Z++1aZuFgIP1v3MFQFwYSJVwsHAFnfR9Dyi+9D2x0rIbZrO9QDmLgp5wUtpcuBz9SE1Shvhc3HPzyXKZkmgukqt7/UmMFA6lPGC49HsThIqt6DgXWwfnzH/XC5cAuvvf3ewMs39/f2yVKk1SLxztbA2nM2OgQJ4c7t+JevQdOWB2R8Y8JBAyFdvHIBVKrcQ0V72bZRTfuPh3z4qydGCwb8cNHTN3tGINNgNlQ+eCUqlsBOZUjWf8pC+2T1d34A1wmP1xOCKXDV4NMvvBSoWlIp2FAvxETgEMcvltoK7Wv/EFof/Wfhtu2HukN3aawSCcJzO+nQBhUiclnuv20NTjRIQ98R0fc9A43J2p7TmZwVtgkLerEyENsWh5xkkFKpwBOJt3a8Byu+thoWnjMb+geGYbxo3nQnJLY9BIl3X4HJADN/qkdzfvlGelPM24brM1SQcXJzskrhZ69m4LhD7Jx76wujsOnXjWt3uPD8WKrQ/oIM0t6USY2O4oMqfySTKwyh7vB9H55yavSOB7EPd8Bkl0NjnqcLMDAYafbLf7B0JgVx9e4MnPX8BmUQpJE1m9NwQpcnbBIfXnw/3HifTLgSpD83UnA8CqpY23rWC6OQ9+B8R+8wb1TRfjCA+s7zVMVK4a3rSck+Lg/rV0xF52iPPFeDDwQukNq6Oweb3stCtsHtDimNQf719Ig+LtSmVLp7D852nmaQiEPGAWOge3q9v7ceKoXHemhhT6MzycEAL9CHxcejKIO0tMD3pL4s/kcpEo1J9cC+k31oGCUX/rrdPMTT6e/hp3Q0RIMxbrgMks2OFh2PogyCapbQKdfiNqWgR+NSOWggPOxDKc/Z2u2b1qegQkg1S4+HiqNAhCrhOf2HffrQiqmpom2hJPzV8oPZGTAal/JBfYXlUz3TebpPq0AulzHHxhrrVX4HDRgL9p3bp4VQspvlTMf5KtyOxWPK7RtxSFkgWwH7zNPeK+zLaqQHQc50Hlslv3D5EqwIFcKoVtITyFaVkh6yPYQAbRHxkcI8KXx1mhzwiElCQcyBr6/mij1Sgjmqlh4EtEWE91tmOqAtEo1F+fAcDUi4ylP3fb49dDxCGUS6fDlf4uEiKjHMZI94kbpVFJ7DHBIcepnoQ6gB0Bbx/cwSPCfGHbyIScoCSltre3DVh+UcV04jVAuEBFlGKlYiETfqVjQ2FoxZ5nDX1nMPVoxHtcqHVAsYX+ZeM2KS4pD9o7dxUsll+Yow1cocC2VCDHCPOPsK+o4EYJjkN5xRKMKt7A4lOSglRHwsf+PZ9ZXHPUJw3+c7MS6ygjIcIiYZC+Vez+sXL7b8wRVTyh6Pirt05qe6u5kPa8SRXfgdKyNiSghB1m+C3wy4QTtljGuDXDFGL/NY9/Zn122ECcQ1P+7rFiJKjgcxC6aiNGo6Sr1ANpoF7/Ug3n3vF1orGo+q5pxZ53cnxWBsEGOQpJkSmcRlFHlLn9BByvfkIVN4QZdSKs1gSaqGalUpXLlmf9LzEhvEfSVpH3a9zz+5Y1AMRs119qGDxM9llpSrVgXOB+PAzPO7V4qrr3KCLnJVIDHKwV6coBhoGYAnY0N5XchgVVp4/irJtaoVlv54cCXTbnkXJNXlaHyCJDzT/xiXeoE2nLFVQ9n094rlWpV1jfEApYngh5XiTMuN3s3szEVMkv95sEDZWazAvrzZmcHaNMDqekmNYpDSJJZYibZPqXYHO5OEEa54vrVCaqyuRmpUcp2yodWu630G3YzD4jEXyiOoUt9diRSG/OPyjwk7VyGmLoRClUjE9x7uQ0+6bXIkRikgo8Tj8es5MGGjjB2PclHouas9ttC5KmkTejwX4wGsZ8ivXmLkY0L8HsnF3V3xUTbH4zwJPiTRVgGtHzOwerJ4oC4y9vOhCtcVvr1yOrVqYMEKZouIof7KMOYgjW5IiecRLm94KdMOqUZjimJYvGZ/V2tzyxzu55IeZ0nxPElfjA2aTUL6J42jAbgYC9YVdr6w/nZ/L7ZdzjnVPi76nvU6+1IxEZPzQY5Tymc85WXgpSHIpGrFFBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKEYpiQVJOuLt6VSMiUkrmcw3Txh+kMmMLQFUjJ5mpf2PnKzacqd79z/UKpD73MTTWhyupcrgPHPyzsncpmYVtvLzsoUhv2r+vuSjRB0k/AXMb96YyzJMfxEP3PGU+aqsFyH+9S5WZVuo8slUolCJnYw3XFZuZzTJWVFwh0NBVXddo7q8dgTK4ctvHoAuq88jR6mZMnxsPnvb7+3WMsxX15hRRnPm7vZBBLdYzANras9qk/NWMQZIp4HL4uNheJv8VQZ4QlLZZzPGbph+UN5e3vEdvrYzG4e8+e8qu11wNcMMVAixgPhuPBF3MiQE2+5sVKhuhBEjQSvWIKSocjygaZO+62GbPqgs6pqjnLc0hC18zEdRs6N7VW//r6okxf057HvSdQlSklQ6nvnmjt62uxjeDx9dmcd/fUq2qTVT1uBpk2jSdzOVgpHml5/m9IcOI3+afWiqh97u+NmP3uvqqd1kHhJ+7Hv0LldrAAmZCaqyebUYYf7E7mGFfjIQiTc5fNc2p6x7eTcF0unufoTReaaAsNiGIG5mzxAu3G7neZyJlaBEkrCQWKGwyzEGOaaUqdVfKHZhIvbk/lxeSCf3yJI3OeVZZ45XxtAtjq1nEyStUM4kiMlbQP73tkBCCdxnKOjUn8tQAOg3h2aG7GAhZBhhJYvXevrl1VR6DE6Gvyvy7ubaWzV/BCRv5xrl5DIOlPChEkUo+p9TkFdB+C+1N+My1NmBZIikDz1w7Yg6xUImbUvxVUveicwNxrFVIPGD4GvnHFawL5znvJMOoa4iFXH3LVPaugSlTFIFpqbEDbgqTC0BDA6Cj8RgIZpa1NSRY9finBOEvqJU32C6kR474YD55UMzOK7lFBHRkzOyPB+JKCiUqJWK06ZNoqe8QwEvA8xdPsszIlQOEl+M09n7ukwahfAQ7TUqMMMrUqHRYHwFmrRUoSjVQu7S2ZuqxyaVIxgxx+uNBnOawDbVwPD6u/T6q0qATIJK367dZo6Is+WbFvH6t5RRMX/fdes1io5D8XxDZVDmduREkNfDcXt+PrzsiG4Fybw5jlxCRgLDqHeMHyV1CdGqNekd4G3BC93dZyg8vJnpNtY+9NM4dhIMssxpYP2DmWgTUHq3uJNQstrBUU+2AtLFgx9br7KhqPihjksMP4cvGxBrfRrhgYUKpUBAuUIlOmBNSu5YJJ/hUmAH33XLtcjOAapSYJP092GI1dOzPzIMEHiAfBLePQV9rOb+dSCkmhMdTjtFOeLh6QYC7DBhhojOpVCtzeNV1L642Bp6GzCA70Em1c1TjBggneiinX31P2eJTNIII5usUHSg7JFP39QYM7gkU+k4jJZIlwCfdADdG37ppuHsPxkEou8PQQA4dog8RWzCcHAfvCccaObcPGbism0u7eMcxC7Kj8Tm4bdR3jTWNBBhzLAEXvO59p8/Q6sw9tkni76QJfjMfUZff1QBkoi0HQ5hBMsVUwRBcyxYEDkUoVBhyLzk5lxAv0is95tbJJRFwj6cVyW+WSZWF88+ygqvETIBhrQ1g3Lph4RkCFCcy63PEGuY5zAGu86Mk/4IJlBVfNWu3NXIOD4RHGAmZMfpUC7j4M3Y+9kHNBfZ2A7NT3SJ4zcbV4BwNllwh1Kz6vHJukrMqKwiuFBrlkjr6+iDnKAfYRqqDaxd2FfYieP6gBGMtt4L7fxcVUyNODgkeUWiXJAid0zrX3R3uZ5A/cECmGDQzxycFUIUHl9lW0qt9LyWRbNeGDJlqmZAJn5hrqPCqk4mu+4aqN+k1fiKkboz/1ti11UXucvibXloP5zZ6XrCX1EPLZ9HUU9wI37Ka9dIBCVvgsBsX9yb7q8kQf7l+3OHQ8QhlEGOWrMPqN10HmiNSq8oF9NaDfXq0zCL4G48T+ddesYspbxSEzqDxWXKsTvlZqNKHjdyI8pmWKjkJbgsTxRMLynWM0HdM+FTbRjIfHI9ViUJXba2keZJZ7tAlijlOET3TNfX1Nuga316LzmW2w90b3QqEce9/c2a8+6Y/n6DfxJTOk2/hJDzpCx6OkiiVmPKx8sQO3yVsVoXKgZws9XNolPkPYIymoAqhaMT8jx4MLbxXz0ybaHYxBgGMncBtzoLCDa59ohUWb3Qqu6uPAeMLASiDrDqb2+uI0h3MTC2RWvXOugaIHlNrmeqec8wOJqIL3xazNYp4iqNLpZ3KOiTeLcEmzYiwvN2PqsodSUAQlJYhgjpX4iWpCxBzVA4OnOf26cGG4r4Qq4fkZdSxOndm0YDZOJCYpjI+ZiaVGoWd1vU/t1hvgSAhNwFqCyH1a/aKj8Hocr+kb1Yhzpz04rZW0MmqeVbOktFIsoySNZg66D1IViY+sNNBt9LXp1riKs5MUUfdkfkQfgpFEph9yaTHB5GQbz/dKjkdRCeJKD1QTMDoeoXo0iSBvR4cZtqmVJjruX3dlErKeHA/IDWOswwnsAVBYQE7SOnbA81ymrtnLHUkSDBJaAUTnImI1DZ1YiA382RO656Hrch2UBB5sp38H2dzEZPTzyDN4LBjYtOcKniNw5wHJWvAZYglhtLfIPbx/aOrUFT2VvQZaMMf1eE5ktIg5xg/sQ00biMptkVz8eiUmMN6RUfRItobzSTaAnlnBMby5MX4de4M+zeyqP4008n2udSptdXNujXwesFnIrjH3ou0Qa2P4PNhO+wZ8a/sYf4K8hrKV8u5dkbhzLdMPWmraNnpKkGLPkTL4fzajJKH486a0FR2PogzCsIQoiwKBtQSqWgjRr4uhQjA/162M1Cwnb05ApZJqjuMN8rkl0jwCgwDRgmmv2vHgfs6MUa1ULCI6y2gMgucjRwHXx9trs8C1yXccUH84s84pOi7HmXsdeR6AADM6TgdG5zEBTe4xYhp7HdFdyCTYpRm+uGi/F9qJ7khxtv24jQHBiElqA4yJYGykUjUL13PA6Oh+qX5khzi6dyE/6mFVHR601PV3VxUC0LlZ4Fr2+gCTHkLH6zMZvcq5tHstAJOZm6ftqMM10+hz65/p5vL20/d8hS/42Pn3yQKZwLq1E803rgVyWngxEUBsU88xPHJoITWroASJx2EubZNxGWH8yMtwTpZ94EhWjodyz/rAiZYc49eoKOBKFxsPcWIfXHvTgsYt1/4lV+1R5+NM71ceAQBjROdJMilhlCTjjpSRqhIZ10zP+HrmZ67aQ89jXMlcc5S5hhZAeoYhN7O+F6cP6P64vb6+F+U4UEaKjVkIpmpKJAt1fUEGEccm9ac7oBHGCXdMhDdrTrnH5fxsUnlzclyq00R44OrrekbO6RC5HrugeqUI0TCGIlBltzqBOstphqgUPRp1RoscE6vTrQOEzwNBQ6Jsqxbmq2XGq2Ddvqo9MzYTPjxX8RfuMKe2u/SzKWakNmA6ycZt5P0T06pILlrtBccjXnBAcjA9sj8mBsggmKsl+jhZ7jEx8Kfj8Po5X/v7tUTAxXpEgEpnMhFkSgQEtUNrLDpAKGHVeEEourlSZ7iTMWKUG1+3JheT76o+zEgq7aIC7pbm51oBIlXMUdbUzXqBe9d5M8yupyLpp/wOxGFjr6U5Qd2g2sOs2mihvBiKaYjrWRIKoCCDgBb/UdS89sAJK656PVn+UV5SSQ7fztB6QlVEyowKZCZkbtQHS+ScW3erBCf6liqXbE1kahxbVv9XlGrsBWb9yiRO9GTOtGcJiHnJhgG6u2DqO/c13wOxgmE236TA62MtY5NR49gh1JDbhxijAWkGovNIG8LDh01CARRkEJ0WETHIBMBRWcvPy9IL0+xLByXRMntOTbkBY9b5jbZ0JNrGKjQN+dZMp3NRTFovSeeH/NadLNZ5NNQY5hlG3nwABp/4pr4tYlQ/LzZi4zDgsJLlPJKe3OUf/RDgSBm7tsSL0RMXzpMryCDc3ODEobmZQ6MCnz+dnpgOcOy6shmEdGgynmnaVDRtEwK5w31GkTIrkJi1GwpdwwcIpISIf5qmL4Lsni3cHxlgSLxTrv5HmAjw0X4Y3vIjuR2beoro/AHI9e92BAMYp4MyNxyh4huZ4EwYeeqdTatRvK9PIl28OVLQ+CGF7q2oihUw8muIpUsz8Nd/PQwnnNC4DILYu5fBH/xBKzz4YAJqCadPk2UegnGAJGAdglwuoF8YPYg0mqBZoK1ccv9rO55ZjYgHQ9sAThI5/t5+/tcgndrIBp/9v5DZtQWyu7dC/Oh5UGsMv3YH+H175I1NueyvBXPsgr77/kA/vGMzWV0RzPQg71pn9Ttu7IJQtpB1VTuzlfiYUeiQstLda4lvfrPxmQNx+OEcfvSj4caRdETNWs2SeVhc50cZjxHXdgaXM6tvXLvk2eTa3UoKuDb2KYdJSyn83rbgi+B1TIOWM2+Sn/jbwDPfhVpDSAoY3vwv8vrNp1wlr5U4er5iRKJdGgLlYFC+qEBAkzuapH7ewHeyVLSbmJ6Z3OQUYC2AujJIIiHYdEbjMwehrY3DEUfA5MMhbOaaHFwZoSbNnQiDG/Oacye6bswPYihfHy/3aeeR2Od1HA0tZ9xoLt+x6M/ksdm9b8LIq3fUdACHXvwRPgCPiWu2zf+i2d82/3fVk2uXLGUGKLczM84nxxVNbmEidk6OLNXGt1kC5PnV/aodHAWfqxiDSP241irWRNs1E4Fa33M1RjqXKwd9tdhHEYJe/6CHWhOFu7BIxUKY1UNo5lRtmfEpcSdWomkGpQdr7jTXTxwjZvRp8+Wxgy/8kPHRAagFUHqMvv6ATB1pmrmUeY4TAK/ZfMpSnV3i8/x4iZUe4NpnNg2GFk2ZHC8yNSBv3YxOXeMwtdA9FgsUdjnqWYQaohoGEQd1qYAZtyqDtVp1G312rnmCk/hgTh6UbUMBQGPca8KJT5nGm09dOuYWOpf8mTp0pJ8Pv/wzqAUO3P37kttjndM4MmU+2hd+DVhTp0l11xLRbBt1ksSBUau4TpHXfUSTCud5SYscHGYrOB4FGQRZ7WCc7Q8WVDrx2KRAR4eWurNZw6GJgsn1GpQdK12kectV3SW0lji0QBH/d1zxrYIjj7N76+ybpFqHDIKz/3ggJAdHwxwZt+3sLxa8Jkqxltk3mrnA10mLxuigGIkie2YYQ6ekyF6Tz8bMNqeULfPs3Ejlgs9d7AHq4eqNUB6k7qNVKJPCLgfc54ElsmBUJjXiPuUrMaVX0czrO6oXEktOUUrLrKUQP+yUovfRdo6Y5cWM7g/3Q/+jfwnjweDz/yyJOHHMPGg+9eri1zzrJkD7xH0+a3MwY2C7ggT/ZaadlhLO0luSpjyonhVEMRUr8BmhtjC5s+WCc7MqLmCYmtRw2uc7bWy+klqHoVdREUP5jJaXMEojlwxQ6r7FjN5+jjSeIfP+FvlXDQaf/yHkDuyR9955yZ9D6DUv/JpVoRz7g9K7ZDvOAhKBGzXMtpXtgBK87ARB+wtdv6QXK5IgE4PKVSyHpVx921ETAttKKpi1F9xmzWo1ROsjJhtWqDnnfClgJBdD65ybpSsWDx/c9EOoFLm+3TD03A/lfaHEKueazScuQqOdOc9tEx0dKZGXBWxVJ9VWTwh6PjC2GeiFU4Wpve5xkAiVg9OA+sGB18JBq1DMSg7tkTJ6OQczY5Iq4edA+05F9LpzmiD8m8q+nymXfkOeNi0kyNDWygx2wRzKdmjqgLZzv1T2cdiWU0axIXz1D6mg6lMni2kDnvqIU0F70188sLisYhsEEalYE4dK+paMDG7tD2Vr6MRw8uQo+8RZXsqDwgUc64WMczy27bwvBdy6YUgcNx+ajp0vz4YEj6ki5QClx8gvH5D30zpX2BZTys/tahLXbJ11deD5XUmgn4s+TXkhcPrMTfrl7jHMGPVjUNQGiZijceAOdnDdt0MgWjooSVOAQHxSrcCuD5HSQwQFT7u64ntqv+gP5Q3wkT4+tPWnZR3Td+8fSWbGa7afV770IHQs+jqwRIdJ2iSpyrVL1yihTm0txtU6+sByZDm52EkEX5sCjRBJj6BQ8eTDwdGpIEDwpGq4M6JRvSgWoImJcytgVEOhLl3+DagGiSNOEVLgZulNGt5yh5QOpTD82v2Q+fBNyZjt51fOHAiUcm3ztCpo4hyG5K36qZ+NJgp3EnEKXSix4Qdk6xhEDDJJqMgBIlNDzEI/TnlDzkzIrE6tGMaExcmXo1USW82QCcmxVKpL1aLjU6iaTYHccB8MbPj7km0Hn/2hvCFkrJbTK5dYhNb5N5Nhz403L5BdwJ1KkKqVTVPhqkiLbxlInoj6qQAiBpkkVCJFFAHoBd9Ua1erET7lINlSPo6havbpgKHHjBNMfG9f+HswHuCM3jrvRjkrj7y5EdLvFXb7DjzzQ/AP7JKeoinXfRvGAw/dvoIxOS3wQlZ3nt/KE1eigJbC9o+7koNDZTZIhIlFpSoWxSk495y8IvLfg3VROha5VqWUz1+rZ9z3zbnaF36pIiO5GDoEk8UOOVqe98C6P4bhV+83v6Hx3v/438Hg0z+QjNtyxtU1uWbrGddA0/HzbI6Z8daR7gTcJmgqNYpyTZREseusOKmqRWyQYutBIiN9AlFpfEnNgsyqSKaUjU0/UlOgcdOof0wbu04Cj4sdcgy0nnkN1ApNJ10EQy/+jPHRPt734GoYEEwhIu4MGQT/dG4Hq+U12xd+me2//au4GehNrYTq9S/kojJaJ9h+UJ5wFqMQU6RiNQyqmXxILZJ2pa1syCn2YV5Dxgv9a41YRPsFv1eTmZwQP3ImMa+0B3LD/SyHKtVIv9qtI9u1vGbT8fOh5UxpywRc2mDlqjbIteDgYMwwACfPgH6r1M0bYWJA83xFfWwGHlwvFrfpInodrk47Mq8a8Lmz7QMRaeuZ1RvJhZDeudkQpwlZagYmzxHuy374BtQSHYLRIdHJuHMNcoXrUkXg2ibylQ2qDfOdXC7jFSyASIIcBFAGpW+nQp9MCwBV10bb8DqVhPm6nVlWqttxzH36b1BLoKRI79wC1r0sLpPTt2vSOpSdNPj87VBLoKrYfs7NqlCdnjCYr20O1KmcAnZGfGAZrBy3zgviCxapWA0Dow6UfwCnGVCrEIzcl9IGdQJg9A5PkjL4nS7YMvtqaD5lEdQKKDk+vu2r3O/dZaL52jtE6R7WEOYgGan3zj+CXO/4UuVdtJ0tGKS5k6pCgqmH4tM6fe6UnHRcG5yse+C0qrDQ+eMQoe5wzemyj6HZThnpyl3pGOZmeOUuj3aoUlNaiGT3vAEf//groGUL0FvTwSb0SuS/PoGZQjycU0WRXO8u4brdzQGclxPKI0zqB2XUKqjC7mzk9R7Av8S0mZw1dwDPq+hjn1jbEXRtdTJu+5CZ1yKi69cXsRiuC3I5wlOXMAFGJydNjFFZC1/WrQNepNpLxCCTgIqZQ5amYVZKgB5Qp4gHRbyMB9hhQkUcjKf3vGENeWZKOWheobptYGiR6A20um7qX+uTOGUOmfYX2Fdy0AfY5kSteOr07jfye8HxMjGzg/NARW7VwnQG9QG3QRGq+MjpXMCpPbkqONCLRzU/ce6wXhCTVhfrNxkVqVfyAD3UvgqCKCnCbKoFs+V0EYycWwBGRqAJ0jJzESSOmkmTs0sTRF9j95mS7frU+tKCwCH74evM37+bm8P0dK/Pzcybd/VBXN9uvOsY1jR9AXiHBL1a+c4L535Y/n2C4RoGQy/dw4XaZgtQMHusqfOlfb56qrGmGa7PL1F7IYqDHAyws5ydtnwztVIqKrNSRLfzwdZfxMWHI/2sY9GXoVYQ54O+h/+WDb90n2VgU+ERyDCm8thyV+eir0DHovFF8F1kharXv+FW9ejEBcBdAQIkE1UT+dY3c3/MSMDC54+M9ElCJRKadGkVBOFmdaFvcomUvq9X5DKz9gGAIsVSvxh950UY3FQ7T5LX0glTrvjvmHJCJXaYoUefEiiZKTbReta1NWUOxEDPD8jFbIwuTm+3Neoo06uN6RUPuo32Quv+KcgiEYNMAir2YiHcd26QA0a7N2m/8iKB1R9MSgUz6e/9SFAj5a3fKAfIJK1zrmGU3+TGHmiftouhbW7tIukIlB7DW+/lFCnX67+s+shtAieTbmAe6CPuZjpDtKLwoIXzvg9G0oLgphmZ2Vu7WBHmvX2aifyhfhh4trbxCLRraKWeJTp3tlbEGOs6BmqJj9d8mft21aRyaVNGs8nFsmla4Kxbd16qoxCpWI2FSiSIqcyhNWZpKSsCMG+Jsi/s5Dr9nTlrQRwVTfw/+MxtvJaxiNEdL5prx4S61TbvOmibdy00TZ8v75np+8vsfh1qhcEt90L249329SGkXhopC4YBAn0DcpvTpEM6Ki9SJTEy0g8CcFMlkJOb36bvyskw+DY/+QvoABlTr0FWxQl1EG14gO2/ayUc/sUfwHiR3S8i6Ts2y/uITT2G4TljXdY7hd6uvT/6slTrBp75CbScthhqgYENt1Koh5FItZ4rx3mmTXd6KQrZSqaNXnjFKomkR8zRYCD1ydk2y21Ntiro/czMoro9t2+8NSmtkH5nszTax4v+x28VM/kuqfod/sVbA8yBaDp6Jky9YZW0AfB6I7/aAONF32Pymo7qyXV1d3D6x/ittOoH7oIyVxXVaSqFiT5SsQ4GEMH77toHHe+gvCttdDK9DtuxA4wSzjklMKpD+h4bnwRB6TG8+T4p1aZc8pWiNkarkBpNJ54ti1D33v+3fDxOArxm/2O3cp02YoI87rZ5fnoRqWUI90+rohQrqoJBIknSIHCIWhuiOmuXGAaMQeo7FT2Ys6rQsU+MoYoz+pDQ5avFgfu+I+dtTwT+OhbeUrJt58VfRj2f5/btYgNP/wSqRd+jtwLYNWDB56KkRenhA27qZPnBfuBmsjFzS4FXtSlEKtbBAJX1obJ0gVtDXYfQrXvVN+qXDAzqQs/k5+e6zA/FRvAcB+79TlVu38HN98DIqxtkJBqlB2spXTao+cSzoW3BdfJ+Bp76SVXXROkx9OI9mqh11rJSj5jNcDYOPJ20qKsg6T6RPzjMwnxVNZ9+y0fR4tURGgecYh56mwME6vEaSaEbWB3cZK/Kyh62ri/T+7h0+/Y/VfmM3veLWyV9xaceIwj/2rKOOeSa/yGCih08N9QH++/5DlSKff+GqfpMq5HqmbkJnDsLxoy01U4r7dXj+n2MjoYKNkWsgjgIqWwRJgaV9q02QBkNtHLhgrUrwNol+jeuD7PEQjaKVje4Y+wPPPkTafSWi0Exi+ewvTh+6o1/UfZxXmsndFzw2/IZhl68tyInAV4z8+vXrW3hG+aQ1K2eFVx1MuDqBcdWA6cfqH9YJEEaC5UwCafXE/hWfZJj71QyAWfADZFoe8VdOMQpiZCYCU8nZvQDZc7oyEh9D39fnq99wXVCdVoAlaDj05+DeNfR8jn6Hrm17OPwmkpnIolg328ioQ1vTpnsJv5h3u7JdMkjmhsC3j/f5+VLkOj1z40Fo05JnQisYY7wuS5fogxTlzmUlqXeNW7bqy1yexKRDb2yAUbfDp/R+x75vgzQ4XmmXP4VqBQoRfA4JN7RN1/g5VzzwMPimvt3M99dAajdTrbmLpDXjty5Rr/iphaYce1x7uRqKW6BSIIc/DDxQSUVrASh2ZBxV+2iImkAxjAnV688G+nxmjTELF3y6ig9Bl9QXq8pV3yFicAgVIO2s6XkkU6Dfbf/b+DD/SWv2f/EbeRUUHeq01rAyTtzsjb1MzHmTgBqflE5Vzxgr4BdBVkAURykzqjKvkMCyGnf7lg9m5lcFGd/nqoFRDRGtVKHMLft8JsvwuDz9xS9DZzJ8VxCReLtgsjHg87LvyqvLdy+igGKXfOh70sGYgH1kIGJeSom1/EgcOIhmonAqKXUL9zUKfZtcLGiQKFo38t5JEkmAjr2jegt+yCf9/om74prDyepG2alYSA2oD+5YRhzrHZ5ktZFzjBNH73r/ka+QSofyDiDz90jzzXlyq+y2KHjSzxsOflsaD9XMVlfz20FpYiUWMiwvmEOZTqQvU2TALjxIM5tqj3YiUI1kwY96H7zHeeGOKDgeBSTIOUPXgXI5Q4+jqt4tg8BrZrDSajcY8Tw9yrmcJIViRFkjpXHnFpyQK5QcIKIHNwAopptjfHuW2ITbl/e3zN2Ru978PsyQh+fKqTHOeOTHoRDrviqLF/KxTV7Hxqr3u27zSmsrb1QJn1dJhyCyRiwSYtahaK+MX2lLTU1TQA40lhPGBUxyIRIj1wO4IMPDh4m2bOHwYcfwoSgov7NgaZn32SSEJdJY0MGu0B5VyRh2Fex6cAgp7UhjA6TdbKYeTsAZQhLt+/G2yC7z7p9B567W3x/XzY75DN/XLMBRCk0ZfFvSyru3/Dvwmi3BjtKK/ndFJvWL+CUD8S0eqnz0XybRkMSwapZoFUoX0kZ0DERa7+o8+UqULEAaj9zEr7whXZ46y0PnDFuuD/fZ7Bjhwe///utkE5PDENX2r/mdQY8+GcWT7mr+biri5uldJxMFSrEYPR02V6tNkJG8Qf7eN9D/yTvEBnlwAPflwTVIVSittlLoJboWPTbqK5J1+yBB//J7D/wwD9xN1WG7tvYDEZdIiIHcFVJ7bww/WHtMW4liJ4bcIJhrPCIFEt3T4m/5ERIkeeei8HZZ5f/NqNPGsgGERNaquyDfD8llKYkqVBSIQBFCwwcYqcqIpzbTc0fepvSwJ1CDJS1x5jTHgaevUfYCNej+5cLJpE/Tln6n6HWQLfvIVf9Z9j342/AyBsvwsib+PcCMiYtbOegiwL5TCcWqh+YKVnkpq87wlkZZSzw7H7AW0XLB0SbHN9Z6P6KMUivvoMINYaSUFAZ0F6RPMAsdYMlCLP4QUNnpzLTwmZUaEKRdR0MUYEWJHQxeQ5xzMd3foulf/26/KVzye+w+KG1XRFIaD/vOsGQd0vG2Pdvf25vQ6WPacOKmXrE4KSH2IlCLy6mClsAQOWH1AGMjBSndBdXUigQKAqiWNmf3og5JgZOv6bKPARrQvd62uXCtffK1JgyVr9ULSSd+GYatQustE4nKSkgQRgJIoCgbAKWfvd12R5n+cRxp0qbgMiIOa3pSLWfaSMBAqdU5Ft40sUmzScvEBJESg5icEX1nI7jELhT7ghOTek+GO5gjqyVm1KLomPlF49xp0NEux1QAEVVrGIPE2F8IBVL9G+q7GNyPMXNLMptLhVTwTBdAM1SBFErJ1I3A2n1E/pq4wn2IOfSqMejTbJ37TfGLLorQCNKMmmqVYZDYSpihp3BKInm9jXFAnfux9ftfV0bDxv4Wse0MkJ894w5oZxTNEO41zX9plhPinS2s9B9FmMQ2ThikNqDJnyoRIL4/k5P1cfUrltHT9D0w8GWGaUd1E4btE6lRdI17LloclbnsIRNqowhXzuLs0DpU3WcbcadNow598xt9UfNA9I20CohNQz0Gbe8qIKdvqV5DsBtX8gN/XxgecyRKXRddaPMM+KOpwr1fUEGicVgm+8HZrsINQD1J/5lMhUY6RDbpl5Ny6z3BsgbRSqXGShDgHbW1IEz3M3o5TLUhsohgpmwuUPYgaGXEy3o2ZdZ5uSGTojyFdExbUDr43RFSArUmYLT9hqaq8BR2bhVmTTncKtAmVC55j3mHKOrtfp0Ri1NyfNlTDcmvVgexFJQAAUZJJGA1PCwvsGIQWoGdwbv6ICXessNFTZlUjDiqWK3WqfglG8lTwyBSotEVPpiSjWhSdxV4vNKluYb+0YeaILnVjJwrZrRCRw6BpNAK1M5qNKifoUJEFMzBkHpojUtM8sD2RgBaSKZ3+fu/XJiWupbfaSxT9QqXOaYJDp1V6hjoL3b2ebMS1AABeMgvb0MjfQePJcXZWvVDEIyE3qwj8s9bsZ3t4m2fKMa4Jie8PWcKlMrFCFxp9KiNm5NpUVwkha5Tlr0faufueoaHUv7KLho4hCg3K3mWvJeHDexTLM323Qj5lj5Sa9s8JW6xPULbdzrgh+8H3WckzRFKe2UmWvv38RQjIOKlt+q+IfqF6m2YnvWo/p4LEqRfw+eK2KQ2oH6UvTreqgQgiB71MF6YpcD7ujVighsHhLXRJP3hiWjxRDhu4XTAqkXdlvXglDVcTRD+hiZpvP5piE37ycB53q+ok9PJRUaO0kxA2M2K9m390LP4CRdknhyX/PskzPOTBZqKTHds2RMfVpp5+g1NepFnp56sSnnRcejKPm3tMD35IVZYOaLUCWoD7UicjdUCL/F/55JvBNSRBKBmo0Zc9R4Ik6KFmu/MOek63PLRKaNkwzsEibPi9zblY2KOfU7ADldV/9m1skTgxEDuyoUd5IIA2306j9O53bb6AxkamveQWiKVygJRIzMfK0K0nm5lTRMsiueWfDMqF90PIoyCKoA4mRrcRsHN/JojQ9xbe2Jflw7MsJSUCFQBeA5MR6SyjyjWmnVxRQtUFU8uEvYej8Dk7PkpGgwFQdQ87NvCZeRBcxpdlYmh5MkqJjO5ECBOc6qSdxJF+F6CmcAruRzmNAkHxqPlY6cG/UInCRFJUzddBQAHdWh+wJw0m9cpsILxJT08P01M9ZuSxXr95IKVDoNq8nrEqla1SMedIWshmqR81ebmRoNTOABewMpTlUy4dyd+S0xauqzcUFmZl+HyK10sXQlr2WkArA8nd980mo+ZoQXOLEbsImWQFYUD94jMbVjM7lM5zIf2LpX3DneuH8D9+dew4uDcriJ/7NQclF9CNnLmW4VbkVSpDq4KqoYm1XVSA+CnOk4X6VEQozrhUOO6kBeLidG4hq98iY08ZklqC4zcH0epUKhMe8F2geJXBvb6sx0PrBtSNLoTNygTZQbw8zcGPrGsDb3xMYQuS5hBPq53QmAOzaRqahoijIwaXvoWWBVKemhWoeCdzU3w1ZxviR+E/57mgAihACHW7jMaWJJjY6yGTBO7Fg+t0uQ1VaxmZTe3VxGU5RmAUk7dhZlNh7Nxvhxne9MaydjnsGZkPX0rL3FOopg9mh3rWfeSMVNwMJeTZtg9GmPtSFGEld0EHNyq/LolUiejT0vB8elbXar2UrvT81Ysy10PMpQnFjv6CgsAZ3AGI/ealgWiDkQQtWlPhw3xIzXO8rFuTCBURCOx+Jce2oYqTRGX9exQJqB1WIS5uj8VhXLtwfU78CtAW3VK3kjAanDSVliPOfrWdy2MddwVDT1Xbt4qR2AlVJgc8Zo270vl5cLql/qetZOksznoWTEXaLvyhuPMi0LlhI2yDK5JbqnqSlSt0oB+8adSMT3FVpdrQlOE2qBuMQytQgI/adxMJO1tEM0wRCxIlH5xESOKkIGtnX/BgnaEHKQ0IFUK+c4ZcfgpyOziK84pxfpMHBf+EOiI//c7jXdkkW+/c0cN2aNDFdJB0qlMst0vXhCGuayChLAijDVilC26S105x5xqRX03VEdIjgg5qC+ERPL8nSaVRz3CIMY4B7fi/0ucBWfQNcvUDg6zyhmZMwiNGES8TkGO+S/xYoI0KN6IvRGK/1KZwCaqTUjAQfr4mVkh4jjmLk3c2395+s3QxnCp1pe0nuV356byixUVtVlePXpJPT6Sn9DySGdEbmcsKn48pPXbit7PCom8aYm3i0+1ogrdyERZLMQ1dEC6+lzDHJ0k3dns2wjTCDeWj6328txMR68S2n0viC4nL0v8hUF7BKdykdcY5IIHXrg5gRgqp8zABNzoWP0JVQSo7UlyB6w9wG0CIVD4JXTnJt3dzg2DrFTMbvD+WYNHTd1xsOLeTLeodeU9Ao26Z7x41cqGo8qZQBPCjVrAxnuCFxv/pvKKMgUyByORE0JF/mSWqpVpfCrm2clm2JNGwRpJRXxcxwQxQOukcwt0bmGLA+Qsoam4ADhAzNMxWlpHwu2p22XIbizDDDQHgI2uIXmHHBS5fOy1gGMq8hkHRupxrwYk4NimMVLpTOjS0776fYUVIhxKUlCmqxE16WbhMe5Yhb6/kmEGxty1UzcFpPEKiFVvwfAJqQyTCns+J0zV/q+twoCTh1BnpJZJENYl5R18HArUhy65HZGt1Scr1S7+9Roa16w7fKJnTvHsjzi5matx9jrMee+8xnT06olDgj+kf2hzr6qb6jve/PWp6oaj3ExiL7DpLBHVoqN5QV/5cFPkjKNnCWcT/SO/3DM7w7WChf46npJjWJAaZKA2EqhWizH75xohYifXLE5XxO/3M8CdK63yd1q1TOX0JVqZAQD6UqcB1yu+ec1mcaGABgZMzbj2PktQKFGRGgWZgCWo5iWVPo4T4yHn1ldjdRwUQMGIUhGuV5soI2y2FyA5QvD4PyW32aiUWgedBmgwvvoEe17JktilIJUu7ym6wXBdYsZdbFJ82YMiMrdyTzf1gA3aoH/46zseWr1Hf1u7A0tAMi8UZaB1s5UQqBhOqOikelgmNFe2zAH08LLN+3ACDx3oAy/9YhfevpGBqqWGPmoIYO44F3CkzNH3HQS7RT8FDuT+sekaaUM/a5iZ5koxinEJM5vvUJK91I7rpbGyn1YiQS/i+2X1IKnxmKKYtjanezqSnTOycVZkuX8pKDSpNg9XUbiGZthTF3wu8R2V57WZNUavR2wBwrNero92SH0u5ELuB7cHdjAOcBRpeQ5e8Xmfm68WTwlfusVJ+gV7ogUi8VTsWz2pd7MUKpWTBEhQoQIESJEiBAhQoQIESJEaED8f8CLHLNBkXU/AAAAAElFTkSuQmCC",pc="data:image/png;base64,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";const fc=({size:e=20,active:t=!1,dark:n=!1})=>a.jsxs("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[a.jsx("rect",{x:"2",y:"4",width:"16",height:"2",rx:"1",fill:t?n?"#e5e7eb":"#111827":n?"#9ca3af":"#374151"}),a.jsx("rect",{x:"4",y:"9",width:"12",height:"2",rx:"1",fill:t?n?"#e5e7eb":"#111827":"#9ca3af"}),a.jsx("rect",{x:"6",y:"14",width:"8",height:"2",rx:"1",fill:t?n?"#e5e7eb":"#111827":"#9ca3af"})]}),Zr=({checked:e,primaryColor:t="#ef4444",dark:n=!1})=>a.jsx("div",{style:{width:"18px",height:"18px",borderRadius:"4px",border:e?"none":`2px solid ${n?"#4b5563":"#d1d5db"}`,backgroundColor:e?t:"transparent",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:g.transition.interactive},children:e&&a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:a.jsx("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),mc=e=>[e.chainId,e.symbol.trim().toLowerCase(),e.name.trim().toLowerCase()].join(":"),hc=e=>{const t=new Map;for(const n of e){const s=mc(n),o=t.get(s);if(!o){t.set(s,n);continue}const r=o.balance>0n,i=n.balance>0n;(!r&&i||n.balanceUsd>o.balanceUsd||n.balance>o.balance)&&t.set(s,n)}return Array.from(t.values())},gc=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onTokenSelect:s,walletAddress:o,supportedChainIds:r,network:i,prefetchedAssets:l,styles:u,dark:c})=>{const[f,p]=d.useState(""),[m,h]=d.useState(null),[x,y]=d.useState(null),[b,w]=d.useState(!1),[C,S]=d.useState(new Set),[k,v]=d.useState([]),F=d.useContext(g.SpiceFlowProviderContext),T=i||F?.network||"testnet",B=F?.allowedTokens,j=!!F?.isWhitelistGateActive,{dark:E,primaryColor:R,dk:D}=g.useSpiceBrand(u,c),O=E?D.cardBg:"white",H=E?`${R}55`:"#F4A5A5",U=E?"0 4px 12px rgba(0, 0, 0, 0.4)":"0 4px 12px rgba(0, 0, 0, 0.15)",V=E?D.hoverBg:"#E9E9E9",Y=E?D.hoverBg:"#f9fafb",N=E?D.textPrimary:"#374151",L=E?D.textPrimary:"#111827",z=E?D.textSecondary:"#9ca3af",G=E?`${R}22`:"#FBDBDB",Z=E?`${R}55`:"#F4A5A5",W=d.useMemo(()=>r||F?.supportedChainIds||A.getChainIdsByNetwork(T),[r,F?.supportedChainIds,T]),q=d.useMemo(()=>W.map(Q=>{const ee=g.getChainConfig(Q);return ee?{id:Q,name:ee.displayName,icon:Cn[Q]||ns}:null}).filter(Boolean),[W]),M=d.useMemo(()=>{const Q=new Set,ee=new Set;for(const he of W){const X=g.getChainConfig(he);if(X){Q.add(X.nativeCurrency?.symbol?.toUpperCase()||"ETH");for(const Se of X.supportedTokens||[])Q.add(Se.symbol.toUpperCase()),ee.add(Se.address.toLowerCase())}}return{symbols:Q,addresses:ee}},[W]),se=l===void 0,{assets:de,loading:ae}=wn({address:se?o:void 0,supportedChains:W,fetchBalances:bn,enabled:e&&se&&!!o,refreshInterval:e?5e3:0}),ne=l??(se?de:[]),ce=l===null||se&&ae,ue=d.useMemo(()=>{if(j)return[];if(!ne)return[];let Q=ne.filter(ee=>ee.isNative?!0:M.symbols.has(ee.symbol.toUpperCase())||M.addresses.has(ee.address.toLowerCase()));return B&&B.length>0&&(Q=Q.filter(ee=>B.includes(ee.symbol.toLowerCase())||ee.isNative&&B.includes("native"))),Q},[ne,M,B,j]);d.useEffect(()=>{if(!ue||ue.length===0){v([]);return}const Q=ue.filter(X=>X.balanceUsd===0&&X.balanceFormatted>0).map(X=>X.symbol),ee=Array.from(new Set(Q));if(ee.length===0){v(ue);return}let he=!1;return So(ee).then(X=>{he||v(oc(ue,X))}),()=>{he=!0}},[ue]);const $=d.useMemo(()=>{let Q=k.filter(ee=>ee.balanceUsd>=.01||ee.balanceFormatted>=1e-4||ee.balanceFormatted===0);if(C.size>0&&(Q=Q.filter(ee=>C.has(ee.chainId))),f.trim()){const ee=f.toLowerCase();Q=Q.filter(he=>he.name.toLowerCase().includes(ee)||he.symbol.toLowerCase().includes(ee)||he.address.toLowerCase().includes(ee))}return Q=hc(Q),Q.sort((ee,he)=>{const X=ee.balanceFormatted>0?1:0,Se=he.balanceFormatted>0?1:0;return Se!==X?Se-X:he.balanceUsd!==ee.balanceUsd?he.balanceUsd-ee.balanceUsd:he.balanceFormatted-ee.balanceFormatted}),Q},[k,f,C]),ve=Q=>`${Q.chainId}-${Q.address}`;d.useEffect(()=>{const Q=document.createElement("link");return Q.href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@100;200;300;400;500;600;700&display=swap",Q.rel="stylesheet",document.head.appendChild(Q),()=>{document.head.removeChild(Q)}},[]),d.useEffect(()=>{e||(p(""),h(null),w(!1),S(new Set))},[e]);const P=Q=>{s(Q)},oe=Q=>{S(ee=>{const he=new Set(ee);return he.has(Q)?he.delete(Q):he.add(Q),he})},fe=()=>{S(new Set)},_=C.size===0;return a.jsxs(en,{isOpen:e,onClose:t,title:"Select a Token",bannerSrc:pc,bannerAlt:"Select token banner",styles:u,dark:E,closeOnBackdropClick:n,children:[a.jsx("div",{style:{padding:"20px 20px"},children:a.jsx(ho,{value:f,onChange:p,ariaLabel:"Search tokens",placeholder:"Search token name, symbol or address",dark:E,styles:u,endAdornment:a.jsxs("div",{style:{position:"relative",flexShrink:0},children:[a.jsx("button",{onClick:()=>w(Q=>!Q),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"5px",borderRadius:"3px",backgroundColor:b||!_?V:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},children:a.jsx(fc,{size:20,active:!_,dark:E})}),b&&a.jsxs("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,backgroundColor:O,borderRadius:"8px",border:`1px solid ${H}`,boxShadow:U,padding:"8px",minWidth:"220px",zIndex:100},children:[a.jsxs("button",{onClick:fe,style:{width:"100%",display:"flex",alignItems:"center",gap:"10px",padding:"8px",borderRadius:"6px",backgroundColor:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},onMouseEnter:Q=>Q.currentTarget.style.backgroundColor=Y,onMouseLeave:Q=>Q.currentTarget.style.backgroundColor="transparent",children:[a.jsx(Zr,{checked:_,primaryColor:R,dark:E}),a.jsx("img",{src:uc,alt:"All Networks",loading:"lazy",decoding:"async",width:20,height:20,style:{width:"20px",height:"20px",borderRadius:"4px",objectFit:"cover"}}),a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:N},children:"ALL NETWORKS"})]}),q.map(Q=>a.jsxs("button",{onClick:()=>oe(Q.id),style:{width:"100%",display:"flex",alignItems:"center",gap:"10px",padding:"8px",borderRadius:"6px",backgroundColor:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},onMouseEnter:ee=>ee.currentTarget.style.backgroundColor=Y,onMouseLeave:ee=>ee.currentTarget.style.backgroundColor="transparent",children:[a.jsx(Zr,{checked:C.has(Q.id),primaryColor:R,dark:E}),a.jsx("img",{src:Q.icon,alt:Q.name,loading:"lazy",decoding:"async",width:20,height:20,style:{width:"20px",height:"20px",borderRadius:"50%"}}),a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:N},children:Q.name.toUpperCase()})]},Q.id))]})]})})}),a.jsxs("div",{style:{padding:"0 32px 20px",display:"flex",flexDirection:"column",gap:"8px",maxHeight:"400px",overflowY:"auto"},children:[ce&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:g.font.mono,fontSize:"13px",color:z},children:"Loading balances..."}),!ce&&$.length===0&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:g.font.mono,fontSize:"13px",color:z},children:"No tokens found"}),$.map(Q=>{const ee=ve(Q),he=m===ee,X=x===ee,Se=g.getChainConfig(Q.chainId)?.displayName||`Chain ${Q.chainId}`;return a.jsxs("button",{onClick:()=>P(Q),onMouseEnter:()=>y(ee),onMouseLeave:()=>y(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:he?G:"transparent",border:he||X?`1px solid ${Z}`:"1px solid transparent",cursor:"pointer",transition:g.transition.interactive},children:[a.jsx("div",{style:{flexShrink:0},children:a.jsx(Co,{symbol:Q.symbol,logoURI:Q.logoURI,size:40})}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"2px",flex:1,minWidth:0},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"15px",fontWeight:500,letterSpacing:"0.4px",color:L,textAlign:"left"},children:Q.name}),a.jsx("img",{src:Gr,alt:"","aria-hidden":"true",loading:"lazy",decoding:"async",width:14,height:14,style:{width:"14px",height:"14px"}})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[Cn[Q.chainId]&&a.jsx("img",{src:Cn[Q.chainId],alt:"",loading:"lazy",decoding:"async",width:14,height:14,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsxs("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:400,color:z,textAlign:"left"},children:[Q.symbol," \xB7 ",Se]})]})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"2px",flexShrink:0},children:[Q.balanceUsd>0&&a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"16px",fontWeight:600,color:L},children:g.formatUsd(Q.balanceUsd)}),a.jsxs("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:400,color:z},children:[g.formatBalance(Q.balanceFormatted)," ",Q.symbol]})]})]},ee)})]})]})},Xr=({dk:e,dark:t,message:n,buttonLabel:s,onAction:o,disabled:r=!1})=>a.jsxs("div",{style:{padding:"12px",backgroundColor:e.warningBg,borderRadius:"8px",border:`1px solid ${e.warningBorder}`},children:[a.jsx("p",{style:{margin:"0 0 10px 0",color:e.warningText,fontSize:"14px"},children:n}),a.jsx("button",{onClick:o,disabled:r,style:{width:"100%",padding:"8px 12px",borderRadius:"6px",border:`1px solid ${t?e.warningBorder:"#fbbf24"}`,backgroundColor:t?e.cardBg:"white",cursor:r?"not-allowed":"pointer",fontWeight:600,fontSize:"13px",color:e.warningText,opacity:r?.6:1},children:s})]}),Jr=({dk:e,dark:t,borderRadius:n,children:s})=>a.jsx("div",{style:{padding:"8px 12px",marginBottom:"8px",backgroundColor:t?e.warningBg:"#fffbeb",border:`1px solid ${e.warningBorder}`,borderRadius:n,fontSize:"12px",color:e.warningText,lineHeight:"1.4"},children:s});var xc="data:image/png;base64,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";const cn=e=>new Promise(t=>setTimeout(t,e)),Io=e=>{const t=(e.id||"").toLowerCase(),n=(e.name||"").toLowerCase();return t.startsWith("io.privy.wallet")||n.includes("privy wallet")},yc=({dark:e,dk:t,primaryColor:n,disabled:s,onError:o})=>{const[r,i]=d.useState(!1),{connectWallet:l}=Mr.useConnectWallet({onSuccess:()=>{i(!1)},onError:u=>{i(!1),o(g.sanitizeError(u,"Failed to connect wallet."))}});return a.jsxs("button",{onClick:()=>{s||r||(i(!0),l({walletChainType:"ethereum-only"}))},disabled:s||r,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:r?e?t.hoverBg:"#f3f4f6":"transparent",border:`2px solid ${e?`${n}33`:`${n}55`}`,cursor:s||r?"not-allowed":"pointer",opacity:s?.6:1,transition:g.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:e?t.cardBg:"#f3f4f6"},children:a.jsx("img",{src:ss.metamask,alt:"Browser wallet",style:{width:"26px",height:"26px",objectFit:"contain"}})}),a.jsx("span",{className:"ibm-plex-mono",style:{fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:t.textPrimary,flex:1,textAlign:"left",fontFamily:g.font.mono},children:r?"Opening wallet picker...":"MetaMask / Browser Wallet"})]})},bc=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onWalletSelect:s,onContinue:o,requiredChainId:r,styles:i})=>{const{dark:l,primaryColor:u,dk:c,theme:f}=g.useSpiceBrand(i),p=d.useContext(g.SpiceFlowProviderContext),[m,h]=d.useState(null),[x,y]=d.useState(!1),[b,w]=d.useState(null),[C,S]=d.useState(!1),[k,v]=d.useState(null),[F,T]=d.useState(!1);d.useEffect(()=>{e||(w(null),S(!1),y(!1),v(null))},[e]);const{address:B,chain:j,connector:E,isConnected:R}=ln.useAccount(),D=p?.provider==="privy"&&E&&Io(E)?void 0:B,O=R&&!!D,{connectors:H,connect:U}=ln.useConnect(),{disconnect:V}=ln.useDisconnect(),{switchChainAsync:Y}=ln.useSwitchChain(),{reconnect:N}=ln.useReconnect(),L=d.useRef(!1),z=A.getChainIdsByNetwork(p?.network||"testnet");d.useEffect(()=>{e&&!O&&!L.current&&N()},[e,O,N]),d.useEffect(()=>{e||(L.current=!1)},[e]);const G=d.useRef(j);d.useEffect(()=>{G.current=j},[j]);const Z=(r?g.getChainConfig(r):null)?.displayName||j?.name||`Chain ${j?.id||r}`,W=P=>P.type==="announced"||typeof P.ready=="boolean"&&P.ready?!0:P.type==="injected"?typeof window<"u"&&!!window.ethereum:!0,q=H.filter(P=>{const oe=P.name.toLowerCase(),fe=(P.id||"").toLowerCase();return p?.provider==="privy"&&Io(P)||["safe"].includes(P.type)?!1:P.type==="walletConnect"?!!P?.options?.projectId:P.type==="announced"?!0:P.type==="injected"||["metamask","rabby","phantom","coinbase","trust","rainbow"].some(_=>oe.includes(_)||fe.includes(_))?W(P):!1}),M=async P=>{if(!(C||x))try{if(S(!0),v(P.uid),w(null),await U({connector:P}),await cn(500),s&&s(P.id),r){y(!0);try{j?.id!==r&&(await Y({chainId:r}),await de(r)||w("Please switch to the correct network in your wallet to continue."))}catch(oe){console.error("Chain switch error:",oe),w(g.describeChainSwitchError(oe))}finally{y(!1)}}await cn(800)}catch(oe){console.error("Connection error:",oe),g.isUserRejection(oe)?w("Connection rejected. Please try again."):w(g.sanitizeError(oe,"Failed to connect wallet."))}finally{S(!1),v(null)}},se=P=>{if(P.icon)return P.icon;const oe=(P.name||"").toLowerCase();for(const[fe,_]of Object.entries(ss))if(oe.includes(fe.toLowerCase()))return _;if(!Io(P)&&(P.type==="injected"||P.type==="announced")&&typeof window<"u"&&window.ethereum){const fe=window.ethereum;if(fe.isMetaMask)return ss.metamask;if(fe.isRabby)return ss.rabby;if(fe.isPhantom)return ss.phantom}return null},de=async P=>{let oe=0;const fe=20;for(;oe<fe;){if(await cn(100),G.current?.id===P)return w(null),!0;oe++}return!1},ae=async P=>{y(!0),w(null);try{await Y({chainId:P}),await de(P)||w("Unable to switch to the correct network. Please switch manually in your wallet to continue.")}catch(oe){console.error("Manual chain switch error:",oe),w(g.describeChainSwitchError(oe))}finally{y(!1)}},ne=async P=>{x||(T(!1),await ae(P))},ce=async()=>{if(!x){if(!r){T(P=>!P);return}await ae(r)}},ue=async()=>{L.current=!0;try{await V()}finally{w(null),S(!1),y(!1),v(null),T(!1)}},$=O&&!x&&!C&&(!r||j?.id===r),ve=O&&!x&&!C&&r&&j?.id!==r;return a.jsxs(en,{isOpen:e,onClose:t,title:"Connect Wallet",styles:i,dark:l,bannerSrc:xc,bannerAlt:"Connect wallet banner",closeOnBackdropClick:n,children:[a.jsxs("div",{style:{padding:"0 24px 20px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"20px"},children:[b&&a.jsx(Xr,{dk:c,dark:l,message:b,buttonLabel:x?"Switching...":"Try Switch Again",onAction:ce,disabled:x}),x&&a.jsxs("div",{style:{padding:"12px",backgroundColor:l?c.infoBg:"#dbeafe",borderRadius:"8px",display:"flex",alignItems:"center",gap:"10px",marginTop:"20px"},children:[a.jsx(g.Spinner,{size:20,color:l?c.infoText:"#3b82f6"}),a.jsx("p",{style:{margin:0,color:l?c.infoText:"#1e40af",fontSize:"14px"},children:"Switching network..."})]}),O&&D?a.jsxs("div",{style:{border:`1px solid ${l?c.successBorder:"#02974F"}`,borderRadius:"8px",overflow:"hidden",marginTop:"20px"},children:[a.jsxs("div",{style:{backgroundColor:l?c.successBg:"#00FFA81C",padding:"14px 18px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("div",{style:{width:"22px",height:"22px",borderRadius:"50%",backgroundColor:"#02974F",display:"flex",alignItems:"center",justifyContent:"center",color:"white",fontSize:"14px",fontWeight:"bold"},children:"\u2713"}),a.jsx("span",{className:"ibm-plex-mono",style:{color:l?c.successText:"#02974F",fontWeight:600,fontSize:"14px",letterSpacing:"0.5px"},children:"WALLET CONNECTED"})]}),a.jsx("div",{style:{width:"38px",height:"38px",borderRadius:"50%",backgroundColor:l?c.cardBg:"#f3f4f6",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:E&&se(E)?a.jsx("img",{src:se(E),alt:E.name,style:{width:"24px",height:"24px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?c.textPrimary:"inherit"},children:E?.name?.charAt(0)||"W"})})]}),a.jsxs("div",{style:{padding:"18px",backgroundColor:l?c.cardBg:"white"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"14px"},children:[a.jsx("span",{className:"ibm-plex-mono",style:{color:l?c.textSecondary:"#939291",fontSize:"13px",fontWeight:500,letterSpacing:"0.3px"},children:"ADDRESS:"}),a.jsx("span",{className:"ibm-plex-mono",style:{color:l?c.textPrimary:"black",fontSize:"14px",fontWeight:600,fontFamily:g.font.mono,letterSpacing:"0.3px"},children:g.truncateAddress(D)})]}),F&&a.jsx("div",{style:{marginBottom:"12px",border:`1px solid ${l?c.inputBorder:"#E5E7EB"}`,borderRadius:"8px",overflow:"hidden",backgroundColor:c.cardBg},children:z.map(P=>{const oe=g.getChainConfig(P);if(!oe)return null;const fe=j?.id===P;return a.jsxs("button",{onClick:()=>{fe?T(!1):ne(P)},style:{width:"100%",display:"flex",alignItems:"center",gap:"8px",padding:"10px 12px",backgroundColor:fe?l?`${u}15`:`${u}10`:"transparent",border:"none",borderBottom:`1px solid ${l?c.inputBorder:"#E5E7EB"}`,cursor:fe?"default":"pointer",transition:"background-color 0.15s"},onMouseEnter:_=>{fe||(_.currentTarget.style.backgroundColor=l?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.03)")},onMouseLeave:_=>{_.currentTarget.style.backgroundColor=fe?l?`${u}15`:`${u}10`:"transparent"},children:[a.jsx("img",{src:Cn[P]||ns,alt:oe.displayName,style:{width:"20px",height:"20px",borderRadius:"50%",objectFit:"contain"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:fe?600:400,color:l?c.textPrimary:"#1f2937",fontFamily:g.font.mono},children:oe.displayName}),fe&&a.jsx("span",{style:{marginLeft:"auto",fontSize:"11px",color:u,fontWeight:500},children:"Connected"})]},P)})}),a.jsxs("button",{className:"ibm-plex-mono",onClick:ue,style:{width:"100%",padding:"10px",backgroundColor:"transparent",border:`1px solid ${l?c.inputBorder:"#E5E7EB"}`,borderRadius:"6px",cursor:"pointer",fontSize:"13px",fontWeight:500,color:l?c.textSecondary:"#9CA3AF",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"16px"},children:"\u27F2"}),"DISCONNECT"]})]})]}):a.jsxs(a.Fragment,{children:[p?.provider==="privy"&&a.jsx(yc,{dark:l,dk:c,primaryColor:u,disabled:C||x,onError:w}),q.map(P=>{const oe=W(P),fe=k===P.uid,_=!oe||C||fe;return a.jsxs("button",{onClick:()=>{_||M(P)},onMouseEnter:()=>!_&&h(P.uid),onMouseLeave:()=>h(null),disabled:_,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:fe?l?c.hoverBg:"#f3f4f6":"transparent",border:m===P.uid&&!_?`2px solid ${l?`${u}44`:`${u}66`}`:"2px solid transparent",cursor:_?"not-allowed":"pointer",opacity:_?.6:1,transition:g.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:l?c.cardBg:"#f3f4f6"},children:se(P)?a.jsx("img",{src:se(P),alt:P.name,style:{width:"26px",height:"26px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?c.textPrimary:"inherit"},children:P.name.charAt(0)})}),a.jsxs("span",{className:"ibm-plex-mono",style:{fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:_?l?c.inputPlaceholder:"#9ca3af":l?c.textPrimary:"#111827",flex:1,textAlign:"left",fontFamily:g.font.mono},children:[fe?"Connecting...":P.name,!oe&&!fe&&a.jsx("span",{style:{fontSize:"12px",marginLeft:"8px"},children:"(Not detected)"})]})]},P.uid)})]})]}),ve&&!b&&a.jsx("div",{style:{padding:"0 24px 20px"},children:a.jsx(Xr,{dk:c,dark:l,message:`Please switch to ${Z} to continue.`,buttonLabel:x?"Switching...":"Switch Network",onAction:ce,disabled:x})}),a.jsx("div",{style:{padding:"0 24px 25px"},children:a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:async()=>{$&&(await cn(300),o?await o():t())},disabled:!$,theme:f,dark:l,styles:i,children:C?"CONNECTING...":x?"SWITCHING NETWORK...":"CONTINUE"})})]})};function as(e){const t=d.useRef(0),n=d.useRef(null),s=d.useRef(e.run);s.current=e.run;const o=d.useRef(e.onSkip);o.current=e.onSkip;const r=d.useRef(e.onCleanup);r.current=e.onCleanup,d.useEffect(()=>{if(!e.shouldRun){t.current+=1,n.current?.abort(),o.current?.();return}let i=!1,l=!1;const u=async p=>{if(p&&l)return;n.current?.abort();const m=new AbortController;n.current=m;const h=++t.current;l=!0;try{await s.current({isBackground:p,isCurrent:()=>!i&&t.current===h,signal:m.signal})}finally{l=!1}},c=window.setTimeout(()=>void u(!1),e.delayMs??250),f=e.backgroundIntervalMs?window.setInterval(()=>void u(!0),e.backgroundIntervalMs):void 0;return()=>{i=!0,n.current?.abort(),clearTimeout(c),f!==void 0&&window.clearInterval(f),r.current?.()}},[e.shouldRun,e.delayMs,e.backgroundIntervalMs,...e.deps])}const Eo=new Set(["WBTC","CBTC"]),$r=new Set(["btc","wbtc","wcbtc","cbtc"]);function Fo(e,t){return!e||!t?!1:e===t?!0:Eo.has(e)&&Eo.has(t)}function Rn(e){const[t,n,s]=e.split(":");if(t!=="evm"||!n||!s)return null;const o=Number(n);if(!Number.isFinite(o))return null;const r=s.startsWith("0x")?s.toLowerCase():`0x${s.toLowerCase()}`;return{chainId:o,address:r}}function ks(e){return(e??"").trim().replace(/^test\s+/i,"").replace(/^spice/i,"").toLowerCase().replace(/[^a-z0-9]/g,"")}function wc(e){return new Set([e.receiptTokenName,e.displaySymbol,e.symbol,e.displayName,e.name].map(ks).filter(Boolean))}function Cc(e,t){const n=wc(e),s=[t.symbol,t.name,t.equivalenceGroup].map(ks);if(s.some(i=>i&&n.has(i)))return!0;const o=[...n].some(i=>$r.has(i)),r=s.some(i=>$r.has(i))||Eo.has(t.equivalenceGroup??"");return o&&r}function _r(e,t,n){const s=new Set(t.map(ks).filter(Boolean)),o=r=>{if(n&&g.addressesEqual(r.address,n))return 0;const i=[r.symbol,r.name,r.equivalenceGroup].map(ks).findIndex(l=>l&&s.has(l));return i===-1?4:i+1};return[...e].sort((r,i)=>{const l=o(r)-o(i);return l!==0?l:r.address.toLowerCase().localeCompare(i.address.toLowerCase())})}function zn(e,t){const n=e.chainTokens?Object.keys(e.chainTokens):[],s=[];for(const o of n){const r=Rn(o);if(!r||r.chainId!==t)continue;const i=r.address,l=A.getTokenByAddress(i,t);l&&(!Ss(e,i,t)&&!(e.isUniversal&&Cc(e,l))||s.some(u=>g.addressesEqual(u,i))||s.push(i))}return _r(s.map(o=>{const r=A.getTokenByAddress(o,t);return{address:o,symbol:r?.symbol,name:r?.name,equivalenceGroup:r?.equivalenceGroup}}),[e.receiptTokenName,e.displaySymbol,e.symbol,e.displayName,e.name],e.chainId===t&&!e.isUniversal?e.address:void 0).map(o=>o.address)}function Ss(e,t,n){return e.chainId===n&&g.addressesEqual(e.address,t)?!0:is(e.address,e.chainId,t,n)}async function vc(e,t){const n=g.getClientForChain(e),s=A.getEscrowContractAddress(e);return A.isNativeToken(t)?n.getBalance({address:s}):await n.readContract({address:t,abi:I.erc20Abi,functionName:"balanceOf",args:[s]})}function ea(e,t,n){const s=A.getTokensForChain(n),o=A.getTokenByAddress(e,t),r=s.find(i=>g.addressesEqual(i.address,e)&&(!A.isNativeToken(e)||t===n||Fo(o?.equivalenceGroup,i.equivalenceGroup)));if(r)return r;if(o)return _r(s.filter(i=>Fo(i.equivalenceGroup,o.equivalenceGroup)),[o.symbol,o.name,o.equivalenceGroup])[0]}function Lt(e,t){if(e.chainId===t)return e.address;const n=ea(e.address,e.chainId,t);return n?n.address:null}async function To(e,t,n={}){const s=Lt(e,t),o=zn(e,t);if(o.length===0)return s;if(o.length===1)return o[0];const r=n.requiredAmount??0n,i=n.requiredAmountDecimals;if(i!==void 0&&(!Number.isInteger(i)||i<0||i>255))throw new Error("requiredAmountDecimals must be an integer between 0 and 255");const l=async u=>{const c=i===void 0?o.map(()=>0):await Promise.all(o.map(h=>g.getTokenDecimals(t,h))),f=Math.max(i??0,...c),p=r*10n**BigInt(f-(i??0)),m=o.map((h,x)=>({candidate:h,balance:(u.get(A.isNativeToken(h)?"native":h.toLowerCase())??0n)*10n**BigInt(f-c[x])})).filter(h=>h.balance>0n).sort((h,x)=>h.balance===x.balance?0:h.balance>x.balance?-1:1);return m.length===0?null:((r>0n?m.find(h=>h.balance>=p):m[0])??m[0]).candidate};try{const u=await Promise.all(o.map(async p=>({key:A.isNativeToken(p)?"native":p.toLowerCase(),value:await vc(t,p)}))),c=new Map(u.map(({key:p,value:m})=>[p,m])),f=await l(c);if(f)return f}catch{}return s}function is(e,t,n,s){const o=A.getTokenByAddress(e,t),r=A.getTokenByAddress(n,s);return o&&r?Fo(o.equivalenceGroup,r.equivalenceGroup):A.isNativeToken(e)||A.isNativeToken(n)?!1:A.areEquivalent(e,n)}function As(e,t){return is(e.address,e.chainId,t.address,t.chainId)}const kc={usdc:[8453,1,42161,5115,4114],usdt:[1],btc:[4114,42161,1,5115],wbtc:[1],weth:[8453,1],eth:[8453,1,42161,4663,84532,46630],ctusd:[5115,4114],wcbtc:[5115,4114]},Sc={btc:["wcbtc","cbtc","wbtc"]};function Is(e){return e.replace(/^test\s*/i,"").replace(/^spice/i,"").trim()}function dn(e){return Is(e).toLowerCase()}function ta(e){return dn(e??"").replace(/[^a-z0-9]/g,"")}function Bo(e){const t=dn(e);return[t,...Sc[t]??[]].filter(Boolean)}function Ac(e){try{return BigInt(e.balanceAvailable||"0")}catch{return 0n}}function na(e){return Array.isArray(e.chainTokens)?e.chainTokens:Object.keys(e.chainTokens??{})}function Ic(e,t,n,s=[]){const o=g.getChainConfig(t),r=n.toLowerCase(),i=r===A.ZERO_ADDRESS.toLowerCase()?o?.nativeCurrency.decimals??18:o?.supportedTokens?.find(u=>u.address.toLowerCase()===r)?.decimals??18,l=new Set(s.map(ta).filter(Boolean));return e.reduce((u,c)=>{const f=Ac(c),p=c.decimals??i,m=A.convertAmountBetweenDecimals(f,p,i);if(na(c).some(x=>{const y=Rn(x);return y&&is(y.address,y.chainId,n,t)}))return u+m;if(l.size===0)return u;const h=ta(c.tokenName||c.receiptToken);return l.has(h)?u+m:u},0n)}function Ec(e,t){const n=new Set([...Bo(t),...Bo(Is(t))]);return[...e].sort((s,o)=>{const r=dn(s.symbol),i=dn(o.symbol),l=dn(s.name),u=dn(o.name),c=n.has(r)?0:n.has(l)?1:2,f=n.has(i)?0:n.has(u)?1:2;return c!==f?c-f:s.address.toLowerCase().localeCompare(o.address.toLowerCase())})[0]}function Fc(e){const t=e&&e.length>0?e:Object.keys(g.CHAIN_CONFIGS).map(Number).filter(Number.isFinite),n=new Map;for(const s of t){const o=g.getChainConfig(s);if(!o)continue;const r=`${s}:${A.ZERO_ADDRESS.toLowerCase()}`;n.has(r)||n.set(r,{address:A.ZERO_ADDRESS,chainId:s,symbol:o.nativeCurrency.symbol,name:o.nativeCurrency.name,decimals:o.nativeCurrency.decimals,isNative:!0,logoURI:wo[o.nativeCurrency.symbol]??o.logo});for(const i of o.supportedTokens??[]){const l=i.address.toLowerCase(),u=`${s}:${l}`;n.has(u)||n.set(u,{address:l,chainId:s,symbol:i.symbol,name:i.name,decimals:i.decimals,isNative:A.isNativeToken(l),logoURI:i.logo})}}return n}function Tc(e,t){const n=Fc(t),s=Is(e.tokenName),o=dn(e.tokenName),r=Bo(e.tokenName),i=Array.isArray(e.chainTokens)?e.chainTokens.map(x=>[x,void 0]):Object.entries(e.chainTokens??{}),l=i.map(([x])=>Rn(x)).filter(x=>x!==null),u=new Map(i.map(([x,y])=>[x,y])),c=(x,y)=>{const b=u.get(`evm:${y.chainId}:${y.address.slice(2).toLowerCase()}`);return{...x,name:typeof b?.name=="string"&&b.name.length>0?b.name:x.name,decimals:typeof b?.decimals=="number"?b.decimals:x.decimals}},f=l.map(x=>{const y=n.get(`${x.chainId}:${x.address.toLowerCase()}`);return y?c(y,x):void 0}).filter(x=>x!==void 0),p=kc[o]??[];if(p.length>0)for(const x of p){const y=f.find(b=>b.chainId===x);if(y)return y}if(f.length>0)return Ec(f,e.tokenName);const m=Array.from(n.values()).filter(x=>r.includes(dn(x.symbol))||r.includes(dn(x.name)));if(p.length>0)for(const x of p){const y=m.find(b=>b.chainId===x);if(y)return y}if(m.length>0)return m[0];const h=l[0];if(h){const x=u.get(`evm:${h.chainId}:${h.address.slice(2).toLowerCase()}`);return{address:h.address,chainId:h.chainId,symbol:s||e.tokenName,name:typeof x?.name=="string"&&x.name.length>0?x.name:s||e.tokenName,decimals:typeof x?.decimals=="number"?x.decimals:e.decimals??18,isNative:A.isNativeToken(h.address),logoURI:void 0}}}function Bc(e,t){let n;try{n=BigInt(e.balanceAvailable||"0")}catch{return null}if(n<=0n)return null;if(t?.length){const x=na(e).map(Rn).filter(y=>y!==null);if(x.length>0&&!x.some(y=>t.includes(y.chainId)))return null}const s=Tc(e,t),o=s?.decimals??e.decimals??18,r=e.decimals??o,i=A.convertAmountBetweenDecimals(n,r,o),l=s?.address??A.ZERO_ADDRESS,u=s?.chainId??0,c=Is(e.tokenName),f=s?.symbol??c,p=s?.name??c,m=parseFloat(I.formatUnits(i,o)),h=typeof e.balanceUsd=="number"?e.balanceUsd:typeof e.balanceUsd=="string"&&Number(e.balanceUsd)||0;return{address:l,symbol:f,name:p,decimals:o,chainId:u,balance:i,balanceFormatted:m,balanceUsd:h,isNative:s?.isNative??A.isNativeToken(l),logoURI:s?.logoURI,displaySymbol:e.tokenName||f,displayName:e.tokenName||p,displayChainName:"Spicenet",receiptTokenId:e.receiptToken,receiptTokenName:e.tokenName||p,receiptTokenDecimals:r,chainTokens:e.chainTokens&&!Array.isArray(e.chainTokens)?e.chainTokens:void 0,isUniversal:!0}}function jc(e,t){return(t||"").trim()||`Transaction ${e}. The transaction was rejected on-chain. This may be due to insufficient balance, price changes, or health factor constraints. Please verify your positions and try again.`}const Rc=350,Dc=2500;async function sa(e){const{actionId:t,intentIndex:n,intentId:s,stepIndex:o,maxPolls:r=48,maxExecuteAttempts:i=3,pollsBeforeRetry:l=5,maxConsecutiveStatusErrors:u=15,onStatusMessage:c,onStepUpdate:f,signal:p,chainId:m}=e;if(p?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");let h="pending",x,y,b=0,w=0,C,S;const k=new Promise((F,T)=>{C=F,S=()=>T(new g.SpiceflowError("ABORT","Execution transaction aborted"))}),v=()=>{b++,g.relayerService.executeStep(t,n,o,{action:"execute"}).then(F=>{F.transactionHash&&(x=F.transactionHash),F.status==="success"&&C({status:F.status,transactionHash:F.transactionHash})}).catch(F=>{const T=F instanceof Error?F.message:String(F);console.warn(`[execution] executeStep ${o} attempt ${b} error (will poll):`,T)})};p?.addEventListener("abort",S,{once:!0});try{v();for(let F=0;F<r;F++){const T=F===0?Rc:Dc;try{const j=await Promise.race([cn(T).then(()=>{}),k]);if(p?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const E=j??await Promise.race([g.relayerService.checkStepStatus(s,o).then(D=>D.data),k]);if(p?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");w=0,h=E.status,y=E.error;const R=E.transactionHash;R&&(x=R),f?.({status:h,transactionHash:x,error:y})}catch(j){if(j instanceof Error&&(j.name==="AbortError"||j instanceof g.SpiceflowError&&j.code==="ABORT")||(w++,w>=u))throw j;continue}if(h==="created"&&F>=b*l&&b<i&&v(),h==="reverted"||h==="error")throw new g.SpiceflowError("ON_CHAIN_REVERT",jc(h,y),{status:h,txHash:x,actionId:t,intentId:s,stepId:o,chainId:m});if(h==="success"||h==="completed")return x;let B="Waiting for solver...";h==="executing"?B="Transaction executing...":h==="submitted"?B="Transaction submitted...":h==="created"&&(B="Waiting for relayer..."),c?.(B,x)}throw new g.SpiceflowError("POLLING_EXHAUSTED",`Transaction is still processing (status: ${h}). This doesn't mean it failed \u2014 the solver may still complete it. Check your positions in a few minutes, or try refreshing the page.`,{actionId:t,intentId:s,stepId:o,lastStatus:h,pollAttempts:r,maxPolls:r,txHash:x})}finally{p?.removeEventListener("abort",S)}}async function Es(e){const{actionId:t,intentIndex:n,intentId:s,totalSteps:o,delayBeforeSpicenetStepMs:r=5e3,isSpicenetStep:i,maxExecuteAttemptsForStep:l,maxPolls:u=48,onStatusMessage:c,onStepUpdate:f,signal:p}=e;let m;for(let h=0;h<o;h++){h>0&&i?.(h)&&r>0&&await cn(r);const x=l?.(h)??3,y=await sa({actionId:t,intentIndex:n,intentId:s,stepIndex:h,maxPolls:u,maxExecuteAttempts:x,maxConsecutiveStatusErrors:x===6?5:15,onStatusMessage:c,onStepUpdate:f?b=>f(h,b):void 0,signal:p});y&&(m=y)}return m}const Nc="0xa9059cbb";function Fs(e,t){return e.map(n=>{if(n.domain==="spicenet"||A.isSpicenetChainId(n.chainId)||n.calls.length===0)return n;const s=new Set((n.tokenTransfers??[]).filter(i=>(i.from==="escrow"||i.from==="solver")&&g.addressesEqual(i.to,t)).map(i=>i.token.toLowerCase()));if(s.size===0)return n;const o=[...s].some(A.isNativeToken);let r=0;for(const i of n.calls){if(o&&i.value>0n&&i.data==="0x"&&!g.addressesEqual(i.to,t)){r+=1;continue}if(!i.data?.startsWith(Nc))break;try{const l=I.decodeFunctionData({abi:I.erc20Abi,data:i.data});if(l.functionName!=="transfer")break;const[u]=l.args;if(g.addressesEqual(u,t)||!s.has(i.to.toLowerCase()))break;r+=1}catch{break}}return r===0?n:{...n,calls:n.calls.slice(r)}})}function oa(e,t){if(e.length!==t.length)return!1;const n=A.hashChainBatches(e),s=A.hashChainBatches(t);return n.every((o,r)=>o.hash===s[r]?.hash)}const ra=15;function Oc(e){return e.now-e.lastProgressAt>=e.pollTimeoutMs}function aa(e,t){return{intentId:e,steps:t.map(n=>({...n,status:"pending"})),overallStatus:"processing"}}function Ts(e,t,n){const s=e.steps.map(l=>({...l})),o=s[t];if(!o)return e;n.status==="success"||n.status==="completed"?(s[t]={...o,status:"success",transactionHash:n.transactionHash},t+1<s.length&&s[t+1].status==="pending"&&(s[t+1]={...s[t+1],status:"processing"})):n.status==="reverted"||n.status==="error"?s[t]={...o,status:"failed",transactionHash:n.transactionHash,error:n.error}:s[t]={...o,status:"processing"};const r=s.some(l=>l.status==="failed"),i=s.every(l=>l.status==="success");return{...e,steps:s,overallStatus:r?"failed":i?"success":"processing"}}function Mc({checkStepStatus:e,retryStep:t,maxRetries:n=3,pollingInterval:s=2500,pollTimeoutMs:o=3e5}){const[r,i]=d.useState(null),l=d.useRef(null),u=d.useRef(null),c=d.useRef(!1),f=d.useRef(!1),p=d.useRef(0),m=d.useRef({}),h=d.useRef(0),x=d.useCallback(k=>{l.current=k,i(k)},[]),y=d.useCallback(()=>{u.current&&(clearInterval(u.current),u.current=null)},[]),b=d.useCallback(()=>{p.current=0,m.current={},h.current=0,c.current=!0,y(),x(null)},[y,x]),w=d.useCallback((k,v)=>{y(),c.current=!1,x(aa(k,v))},[y,x]),C=d.useCallback((k,v)=>{const F=l.current;F&&x(Ts(F,k,v))},[x]),S=d.useCallback((k,v)=>{y(),c.current=!1,f.current=!1,p.current=0,m.current={},h.current=Date.now(),x(aa(k,v));const F=async()=>{if(!(c.current||f.current||!e)){f.current=!0;try{if(Oc({now:Date.now(),lastProgressAt:h.current,pollTimeoutMs:o})){const j=l.current;j&&x({...j,steps:j.steps.map(E=>E.status==="success"?E:{...E,status:"failed",error:"Taking longer than expected. It may still complete - check the explorer, then refresh."}),overallStatus:"failed"}),c.current=!0,y();return}const T=l.current;if(!T)return;const B=T.steps.findIndex(j=>j.status!=="success");if(B===-1){c.current=!0,y();return}if(!(B===0||T.steps[B-1].status==="success"))return;try{const j=T.steps[B].stepId,{data:E}=await e(k,j);if(p.current=0,E.status==="success"&&(h.current=Date.now()),E.status==="reverted"){const D=m.current[j]||0;if(t&&D<n){m.current[j]=D+1;try{await t(k,j)}catch(O){console.error(`[intentStatus] retry failed for step ${j}:`,O)}x(Ts(l.current,B,{status:"executing"}));return}}const R=Ts(l.current,B,E);x(R),R.overallStatus!=="processing"&&(c.current=!0,y())}catch(j){p.current+=1,console.error(`[intentStatus] poll error (${p.current}/${ra}):`,j),p.current>=ra&&(x(Ts(l.current,B,{status:"error"})),c.current=!0,y())}}finally{f.current=!1}}};F(),u.current=setInterval(F,s)},[e,t,n,s,o,y,x]);return d.useEffect(()=>()=>y(),[y]),{intentStatus:r,startStatusPolling:S,beginStatusTracking:w,applyStepUpdate:C,stopStatusPolling:y,clearStatus:b}}function Pc(e,t){const n=A.hashChainBatches(e).map(s=>s.hash);return I.keccak256(I.encodeAbiParameters([{type:"string"},{type:"uint256"},{type:"uint256"},{type:"bytes32[]"}],["ecdsa",0n,t,n]))}async function ia(e,t,n,s,o){if(s?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const r={raw:Pc(t,n)},i=o?await e.signMessage(r,o):await e.signMessage(r),l=typeof i=="string"?i:i.signature;if(!l)throw new g.SpiceflowError("SIGNATURE_FAILED","Failed to sign intent authorization. The wallet returned an empty signature.");return l}function Wc(e){return e.domain==="spicenet"||A.isSpicenetChainId(e.chainId)}async function ls(e){const{chainBatches:t,signingAddress:n,actions:s,cache:o,signal:r,onSignatureRequested:i}=e;if(r?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const l=[...new Set(t.filter(f=>!Wc(f)).map(f=>f.chainId))].map(f=>({chainId:f,client:g.getClientForChain(f),delegateContract:g.getDelegateContractAddress(f)})),[u]=await Promise.all([Promise.all(l.map(async({chainId:f,client:p,delegateContract:m})=>{const h=Number(await A.getAccountNonce(n,p)),x=[n.toLowerCase(),f,m.toLowerCase(),h].join(":");return{chainId:f,delegateContract:m,nonce:h,cacheKey:x,cached:o?.get(x)}})),l.length?s.prepareSigning?.():void 0]),c=[];for(const{chainId:f,delegateContract:p,nonce:m,cacheKey:h,cached:x}of u){if(x){c.push(x);continue}if(r?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const y=await s.signAuthorization({contractAddress:p,chainId:f,nonce:m},i),b={r:y.r,s:y.s,yParity:y.yParity,address:y.address??p,chainId:Number(y.chainId??f),nonce:Number(y.nonce??m)};o?.set(h,b),c.push(b)}return c}function qn(e,t){return e<=0n||t<=0n?0n:(e*t+10000n-1n)/10000n}function Bs(e,t,n){const s=(e>t?e-t:0n)*10000n/(10000n+n),o=qn(s,n),r=s>0n,i=r?o+t:0n;return{netAmount:s,spicenetFee:r?o:0n,totalFee:i,grossAmount:s+i,coversFees:r}}function vn(e,t,n){if(e===t)return!0;const s=e>t?e:t;return s===0n?!1:(e>t?e-t:t-e)*10000n<=s*n}function la(e,t){const n=I.formatUnits(e,t);return n.includes(".")?n.replace(/\.?0+$/,"")||"0":n}function Yt(e){const t=BigInt(e.feeBreakdown.spicenetFee),n=BigInt(e.feeBreakdown.gasFee),s=BigInt(e.feeBreakdown.bridgeFee??"0"),o=t+n+s;return{spicenetFee:t,gasFee:n,bridgeFee:s,totalFee:o}}function ca(e){const t=BigInt(e.quotedAmount),n=BigInt(e.totalDebit),{totalFee:s}=Yt(e);return t>0n||n>0n||s>0n}function Uc(e){const t=BigInt(e.quotedAmount),n=BigInt(e.totalDebit),{totalFee:s}=Yt(e),o=t+s;return n>o?n:o}function Lc(e){const t=[];for(const n of e.intents)for(const s of n.batches)t.push(BigInt(s.quotedAmount));return t.length!==1?null:t[0]}function jo(e,t){const n=e.intents.flatMap(c=>c.batches).filter(ca);if(n.length===0||n.length>1&&t.actionAmount===void 0)return null;let s=0n,o=0n,r=0n,i=0n;for(const c of n){const f=Yt(c);s+=f.gasFee,o+=f.spicenetFee,r+=f.bridgeFee,i+=f.totalFee}const l=n.some(c=>c.gasQuoteSource==="estimated")?"estimated":n.some(c=>c.gasQuoteSource==="configured_fallback")?"configured_fallback":n[0].gasQuoteSource,u=t.actionAmount??BigInt(n[0].quotedAmount);return{symbol:t.symbol,decimals:t.decimals,grossAmount:u+i,netAmount:u,totalFee:i,spicenetFee:o,gasFee:s,bridgeFee:r,gasQuoteSource:l}}function un(e,t){const n=e.intents.flatMap(f=>f.batches).filter(ca);if(n.length===0)return null;const s=n.filter(f=>f.chainId===t.chainId),o=s.length>0?s:n;if(o.length>1)return null;const r=o[0],{gasFee:i,spicenetFee:l,bridgeFee:u,totalFee:c}=Yt(r);return{chainId:r.chainId,tokenAddress:t.tokenAddress,symbol:t.symbol,decimals:t.decimals,grossAmount:Uc(r),netAmount:BigInt(r.quotedAmount),totalFee:c,gasFee:i,spicenetFee:l,bridgeFee:u,gasQuoteSource:r.gasQuoteSource}}const Dn=10n,zc=10n,qc=5;function Ro(e){return e.map(t=>({...t,calls:[...t.calls],tokenTransfers:t.tokenTransfers?[...t.tokenTransfers]:void 0}))}function js({token:e,recipient:t,amount:n}){return{to:e,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[t,n]})}}function Hc({chainBatches:e,token:t,amount:n}){const s=Ro(e),o=s[s.length-1];if(!o)return s;const r=A.getEscrowContractAddress(o.chainId);return o.calls=[...o.calls,js({token:t,recipient:r,amount:n})],s}function da({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:o}){const r=Ro(e),i=r[r.length-1];if(!i)throw new g.SpiceflowError("INVALID_PARAMS","Action-output escrow funding requires at least one chain batch.");const l=qn(s,zc),u=o+l;if(u>=s)throw new g.SpiceflowError("INVALID_PARAMS","Borrow amount is too small after gas and Spicenet fees.",{grossAmount:s.toString(),gasFee:o.toString(),spicenetFee:l.toString()});const c=s-u,f=A.getEscrowContractAddress(i.chainId),p=[];return o>0n&&p.push(js({token:n,recipient:A.SPICE_GAS_FEE_RECIPIENT,amount:o})),l>0n&&p.push(js({token:n,recipient:A.SPICE_PLATFORM_FEE_RECIPIENT,amount:l})),i.calls=[...i.calls,...p,js({token:n,recipient:f,amount:c})],i.tokenTransfers=[...i.tokenTransfers??[],...o>0n?[{from:t,to:A.SPICE_GAS_FEE_RECIPIENT,token:n,amount:o}]:[],...l>0n?[{from:t,to:A.SPICE_PLATFORM_FEE_RECIPIENT,token:n,amount:l}]:[],{from:t,to:f,token:n,amount:c}],{chainBatches:r,gasFee:o,spicenetFee:l,netEscrowAmount:c,outputCredit:{chainId:i.chainId,token:n,amount:s}}}async function Do({chainBatches:e,user:t,token:n,grossAmount:s,chainAuthorizations:o}){let r=0n,i=da({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r});for(let l=0;l<qc;l+=1){const u=A.hashChainBatches(i.chainBatches),c=(await g.relayerService.estimateBatchGas({user:t,outputToken:n,chainBatches:i.chainBatches.map((f,p)=>({...f,hash:u[p].hash})),chainAuthorizations:o})).gasFee;if(c<=r&&(r-c)*100n<=c*15n)return i;r=r>0n&&c>r?c+(c+99n)/100n:c,i=da({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r})}throw new g.SpiceflowError("INVALID_PARAMS","Action-output fee estimate did not converge. Please retry.")}function cs(e){return A.isSpicenetChainId(e.chainId)}const Vc="0xa9059cbb";function Rs(e,t){return`${e}:${t.toLowerCase()}`}function ua(e,t){return t===A.ZERO_ADDRESS.toLowerCase()?{symbol:g.getChainName(e),decimals:18}:A.getTokenByAddress(t,e)??{symbol:"tokens",decimals:18}}function Qc(e,t){const n=A.getTokenByAddress(t,e);return[n?.equivalenceGroup,n?.symbol,n?.name]}async function Kc(e){return g.getWalletBalanceEntries(e)}async function Yc(e,t,n){const s=new Map,o=new Map,r=new Map,i=new Map,l=new Map;for(const c of n?.actionOutputCredits??[]){const f=Rs(c.chainId,c.token);l.set(f,(l.get(f)??0n)+c.amount)}for(const c of e){if(cs(c))continue;for(const m of c.tokenTransfers??[]){if(m.from!=="escrow"&&m.from!=="solver"||!g.addressesEqual(m.to,t))continue;const h=BigInt(m.amount??0);if(h<=0n)continue;const x=Rs(c.chainId,m.token);o.set(x,(o.get(x)??0n)+h),m.from==="escrow"&&r.set(x,(r.get(x)??0n)+h)}const f=A.getEscrowContract(c.chainId),p=m=>!!f&&f!==A.ZERO_ADDRESS&&g.addressesEqual(m,f);for(const m of c.calls){if(m.value&&m.value>0n){const h=Rs(c.chainId,A.ZERO_ADDRESS);s.set(h,(s.get(h)??0n)+m.value),p(m.to)&&i.set(h,(i.get(h)??0n)+m.value)}if(m.data?.startsWith(Vc))try{const h=I.decodeFunctionData({abi:I.erc20Abi,data:m.data});if(h.functionName!=="transfer")continue;const[x,y]=h.args,b=m.to.toLowerCase(),w=Rs(c.chainId,b);s.set(w,(s.get(w)??0n)+y),p(x)&&i.set(w,(i.get(w)??0n)+y)}catch{}}}let u=null;for(const[c,f]of r){const p=f-(i.get(c)??0n);if(p<=0n)continue;const[m,h]=c.split(":"),x=Number(m),y=ua(x,h);u??(u=await Kc(t));const b=Ic(u,x,h,Qc(x,h));if(!(b>=p))throw new g.SpiceflowError("INVALID_PARAMS",`Insufficient Spice ${y.symbol}: needs ${I.formatUnits(p,y.decimals)}, has ${I.formatUnits(b,y.decimals)}.`,{chainId:x,token:h,userAddress:t,requiredAmount:p.toString(),balance:b.toString(),balanceSource:"spice"})}for(const[c,f]of s){if(f<=0n)continue;const[p,m]=c.split(":"),h=Number(p),x=f-(o.get(c)??0n)-(l.get(c)??0n);if(x<=0n)continue;const y=g.getClientForChain(h),b=m===A.ZERO_ADDRESS.toLowerCase()?await y.getBalance({address:t}):await y.readContract({address:m,abi:I.erc20Abi,functionName:"balanceOf",args:[t]});if(b>=x)continue;const w=ua(h,m);throw new g.SpiceflowError("INVALID_PARAMS",`Insufficient ${w.symbol} on ${g.getChainName(h)}: needs ${I.formatUnits(x,w.decimals)}, has ${I.formatUnits(b,w.decimals)}.`,{chainId:h,token:m,userAddress:t,requiredAmount:x.toString(),balance:b.toString(),balanceSource:"wallet"})}}function Gc({chainBatches:e,tokenAddress:t,tokenTransferAmount:n,useCustomTransfers:s}){if(!(e.some(cs)||!(s?e.some(o=>cs(o)?!1:(o.tokenTransfers??[]).some(r=>r.from==="escrow"&&BigInt(r.amount??0)>0n)):n>0n)))throw new g.SpiceflowError("INVALID_PARAMS","Payouts funded from Spice balance require a Spicenet funding batch before the destination chain batch. Deposits into Spice balance and gas-only actions do not need one.",{tokenAddress:t,tokenTransferAmount:n.toString(),useCustomTransfers:!!s})}function Zc(e,t,n,s){t.forEach((o,r)=>{if(!o.to||!o.from||!o.token||o.amount===void 0)throw new g.SpiceflowError("INVALID_TOKEN_TRANSFER",`tokenTransfers[${r}] on chain ${e} is missing required fields (to/from/token/amount). This usually means the embedded wallet wasn't ready when the intent was built \u2014 please retry.`,{chainId:e,transferIndex:r,transfer:{from:o.from,to:o.to,token:o.token,amount:o.amount?.toString()},signingAddress:n,useCustomTransfers:s})})}function No({user:e,chainBatches:t,tokenAddress:n,tokenTransferAmount:s,exp:o,signature:r,chainAuthorizations:i,useCustomTransfers:l}){const u=t,c=A.hashChainBatches(u),f=u.filter(p=>!cs(p)).length;if(Gc({chainBatches:u,tokenAddress:n,tokenTransferAmount:s,useCustomTransfers:l}),!l&&s>0n&&f>1)throw new g.SpiceflowError("INVALID_PARAMS","Multiple non-Spicenet batches require explicit tokenTransfers. Pass useCustomTransfers with per-batch transfers instead of relying on the default escrow payout injection.",{nonSpicenetBatchCount:f,tokenAddress:n,tokenTransferAmount:s.toString()});return{user:e,...i?{chainAuthorizations:i}:{},intents:[{mode:"7702",signatureType:"ecdsa",signature:r,nbf:0,exp:o,chainBatches:c.map((p,m)=>{const h=u[m],x=cs(h)?[]:l?h.tokenTransfers??[]:s>0n?[{from:"escrow",to:e,token:n,amount:s}]:[];return Zc(Number(p.chainId),x,e,l),{hash:p.hash,chainId:Number(p.chainId),tokenTransfers:x,calls:p.calls}})}]}}function pa(e,t){const n=t?.depositToEscrow?.gasFundingSource==="action-output"?t.depositToEscrow:null,s=t?.depositToEscrow&&!n?Hc({chainBatches:e,token:t.depositToEscrow.token,amount:t.depositToEscrow.amount}):Ro(e);return{actionOutputDeposit:n,batches:s}}let Oo=!1;function Hn(){const{address:e,isConnected:t,isAuthenticated:n,actions:s}=g.useWallet(),o=d.useRef(null),{intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:u,clearStatus:c}=Mc({checkStepStatus:(b,w)=>g.relayerService.checkStepStatus(b,w),retryStep:async(b,w)=>{const[C,S]=b.split("/"),k=parseInt(S||"0",10);await g.relayerService.executeStep(C,k,w,{action:"execute"})}}),f=d.useRef(s),p=d.useRef(new Map);f.current=s;const m=d.useCallback((b,w,C,S)=>ls({chainBatches:b,signingAddress:w,actions:f.current,cache:p.current,signal:C,onSignatureRequested:S}),[]),h=d.useCallback((b,w,C,S)=>ia(f.current,b,w,C,S),[]),x=d.useCallback(async(b,w,C,S,k,v)=>{const F=(T,B,j)=>{S?.({step:T,message:B,...j})};if(Oo)throw new g.SpiceflowError("CONCURRENT_EXECUTION","A execution transaction is already in progress. Please wait.");Oo=!0;try{if(!e)throw new g.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const T=v?.userOverride||e,{actionOutputDeposit:B,batches:j}=pa(b,v);let E=j,R=[],D=v?.useCustomTransfers;F("building","Preparing your wallet and transaction...");const O=await m(E,T,k,()=>F("signing-delegation","Confirm the authorization in your wallet..."));if(F("building","Checking transaction fees and balances..."),k?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const H=BigInt(Math.floor(Date.now()/1e3)+3600);if(B){const q=await Do({chainBatches:b,user:T,token:B.token,grossAmount:B.amount,chainAuthorizations:O});E=q.chainBatches,R=[q.outputCredit],D=!0}if(!v?.skipPreSubmitFeeEstimate){let q=!1;for(let M=0;M<10;M++){const se=v?.feeExecutionMode==="user-transfer"?Fs(E,T):E,de=No({user:T,chainBatches:se,tokenAddress:w,tokenTransferAmount:C,exp:Number(H),signature:"0x00",chainAuthorizations:O,useCustomTransfers:D}),ae=await g.relayerService.estimateActionFees(de,{signal:k});o.current=ae;const ne=await v?.adjustBatchesForEstimate?.({feeEstimate:ae,chainBatches:E}),ce=!!ne&&oa(E,ne);if(!ne||ce){q=!0;break}E=ne}if(!q)throw new g.SpiceflowError("INVALID_PARAMS","Fee estimate did not converge. Please retry.")}if(v?.prepareForSigning){const q=await v.prepareForSigning(E);if(q.length!==E.length||q.some((M,se)=>M.chainId!==E[se].chainId||M.domain!==E[se].domain))throw new Error("The funded route changed before signing");E=q}v?.resolveActionOutputCredits&&(R=await v.resolveActionOutputCredits()),v?.skipUserFundingPreflight||await Yc(E,T,{actionOutputCredits:R}),await v?.validateBeforeSubmit?.(E),F("building","Preparing the signing request...");const U=await h(E,H,k,()=>F("signing-intent","Confirm the transaction in your wallet..."));if(k?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");await v?.validateBeforeSubmit?.(E),F("submitting","Submitting to relayer...");const V=No({user:T,chainBatches:E,tokenAddress:w,tokenTransferAmount:C,exp:Number(H),signature:U,chainAuthorizations:O,useCustomTransfers:D}),Y=await g.relayerService.createAction(V),[N,L]=Y.intentIds[0].split("/"),z=parseInt(L||"0",10),G=`${N}/${z}`;F("executing","Executing on chain..."),F("executing","Executing on chain...",{actionId:N,intentId:G,intentIndex:z,totalSteps:E.length});const Z=E.length,W=await Es({actionId:N,intentIndex:z,intentId:G,totalSteps:Z,signal:k,isSpicenetStep:q=>E[q]?.domain==="spicenet",maxExecuteAttemptsForStep:q=>E[q]?.domain==="spicenet"?6:3,maxPolls:180,onStatusMessage:(q,M)=>{F("executing",q,{txHash:M,actionId:N,intentId:G,intentIndex:z,totalSteps:Z})}});if(v?.requireDestinationReceipt&&!/^0x[0-9a-f]{64}$/i.test(W??""))throw new Error("The destination receipt is not available yet; resume this route to confirm completion");return F("success","Transaction successful!",{txHash:W,actionId:N,intentId:G,intentIndex:z,totalSteps:Z}),W||N}catch(T){throw console.error("[Execution] Error:",T),F("error",T.message||"Transaction failed",{error:T.message}),T}finally{Oo=!1}},[e,n,m,h]),y=d.useCallback(async(b,w,C,S)=>{if(!e)throw new g.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const k=S?.userOverride||e,{actionOutputDeposit:v,batches:F}=pa(b,S);let T=F;const B=S?.feeExecutionMode==="user-transfer"?Fs(T,k):T,j=S?.signAuthorizationsForEstimate?await m(B,k):void 0;let E=S?.useCustomTransfers;v&&(T=(await Do({chainBatches:b,user:k,token:v.token,grossAmount:v.amount,chainAuthorizations:j})).chainBatches,E=!0);const R=S?.feeExecutionMode==="user-transfer"?Fs(T,k):T,D=No({user:k,chainBatches:R,tokenAddress:w,tokenTransferAmount:C,exp:Math.floor(Date.now()/1e3)+3600,signature:"0x00",chainAuthorizations:j,useCustomTransfers:E}),O=await g.relayerService.estimateActionFees(D,{signal:S?.signal});return o.current=O,O},[e,m]);return{execute:x,estimate:y,lastFeeEstimate:o.current,hasEmbeddedWallet:t&&n,intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:u,clearStatus:c}}const Mo=({color:e})=>a.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[a.jsx("circle",{cx:"7",cy:"7",r:"6.5",stroke:e,strokeWidth:"1.2"}),a.jsx("path",{d:"M7 6v4",stroke:e,strokeWidth:"1.2",strokeLinecap:"round"}),a.jsx("circle",{cx:"7",cy:"4.5",r:"0.7",fill:e})]}),fa=({content:e,label:t="More info",textColor:n="#f9fafb",backgroundColor:s="#111827",borderColor:o="rgba(255,255,255,0.08)",accentColor:r="#9ca3af",children:i})=>{const l=d.useId(),[u,c]=d.useState(!1),f=d.useRef(null),[p,m]=d.useState(!1),[h,x]=d.useState(null);d.useEffect(()=>{m(!0)},[]),d.useLayoutEffect(()=>{if(!u||!f.current)return;const b=()=>{if(!f.current)return;const w=f.current.getBoundingClientRect(),C=Math.min(220,window.innerWidth-48),S=Math.min(Math.max(w.left+w.width/2,24+C/2),window.innerWidth-24-C/2),k=w.top>84;x({top:k?w.top-10:w.bottom+10,left:S,placement:k?"top":"bottom"})};return b(),window.addEventListener("scroll",b,!0),window.addEventListener("resize",b),()=>{window.removeEventListener("scroll",b,!0),window.removeEventListener("resize",b)}},[u]);const y=u&&p&&h?es.createPortal(a.jsxs("span",{id:l,role:"tooltip",style:{position:"fixed",left:h.left,top:h.top,transform:h.placement==="top"?"translate(-50%, -100%)":"translate(-50%, 0)",width:"220px",maxWidth:"min(220px, calc(100vw - 48px))",padding:"10px 12px",borderRadius:"10px",backgroundColor:s,color:n,border:`1px solid ${o}`,boxShadow:"0 18px 45px rgba(0,0,0,0.28)",fontSize:"11px",lineHeight:"1.45",fontWeight:500,textAlign:"left",zIndex:g.z.tooltip,pointerEvents:"none"},children:[e,a.jsx("span",{"aria-hidden":"true",style:{position:"absolute",left:"50%",width:"10px",height:"10px",transform:"translateX(-50%) rotate(45deg)",backgroundColor:s,...h.placement==="top"?{bottom:"-6px",borderRight:`1px solid ${o}`,borderBottom:`1px solid ${o}`}:{top:"-6px",borderTop:`1px solid ${o}`,borderLeft:`1px solid ${o}`}}})]}),document.body):null;return a.jsxs(a.Fragment,{children:[a.jsx("span",{ref:f,style:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),children:a.jsx("button",{type:"button","aria-label":t,"aria-describedby":u?l:void 0,onFocus:()=>c(!0),onBlur:()=>c(!1),style:{width:"18px",height:"18px",borderRadius:"999px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:`1px solid ${o}`,backgroundColor:"transparent",color:r,cursor:"help",padding:0,outline:"none",boxShadow:u?`0 0 0 2px ${r}26`:"none",transition:"border-color 120ms ease, box-shadow 120ms ease, color 120ms ease"},children:i||a.jsx(Mo,{color:r})})}),y]})};function Ds(e,t){if(e===0n)return"0";const n=10n**BigInt(t),s=e/n,o=(e%n).toString().padStart(t,"0").replace(/0+$/,"");return o?`${s.toString()}.${o}`:s.toString()}function Po(e,t,n){const s=`${Ds(e,t)} ${n}`;return e===0n?s:`-${s}`}const Xc=({fontFamily:e,textPrimary:t,textSecondary:n,cardBg:s,cardBorder:o,resolvedDark:r,darkCardBorder:i,primaryColor:l,feePreview:u,isLoading:c,errorText:f,directExecutionFeeNote:p=!1})=>{const m=r?i??o:"#e5e7eb",h=r?"#111214":"#111827",x=r?"rgba(255,255,255,0.08)":"rgba(17,24,39,0.12)",y="#f87171",b=r?"#d1d5db":"#4b5563",w=r?"#f3f4f6":t,[C,S]=d.useState(!1),k=!!f,v=k?null:u,F=v?[{label:"Total Required",help:"Total amount required to fund this action.",value:`${Ds(v.grossAmount,v.decimals)} ${v.symbol}`,tone:"default"},{label:"Spicenet Fee",help:"Fees paid to Spicenet for intent processing and execution.",value:Po(v.spicenetFee,v.decimals,v.symbol),tone:"fee"},{label:"Network Fee",help:"Network fee shown in the same token you are using for this action.",value:Po(v.gasFee,v.decimals,v.symbol),tone:"fee"},...v.bridgeFee&&v.bridgeFee>0n?[{label:"Bridge Fee",help:"Estimated cost to rebalance liquidity for this action.",value:Po(v.bridgeFee,v.decimals,v.symbol),tone:"fee"}]:[],{label:"Used in TX",help:"Resulting amount of funds used in the transaction.",value:`${Ds(v.netAmount,v.decimals)} ${v.symbol}`,tone:"default"}]:[],T=v?`${Ds(v.grossAmount,v.decimals)} ${v.symbol}`:null;return k?a.jsx("div",{style:{backgroundColor:s,border:`1px solid ${o}`,borderRadius:r?"8px":"7px",padding:"14px 16px 12px 16px",marginBottom:"16px",boxShadow:r?"inset 0 1px 0 rgba(255,255,255,0.03)":"none"},children:a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[a.jsx("span",{style:{fontSize:"17px",fontWeight:500,color:b,fontFamily:e,lineHeight:"24px"},children:"Fee"}),a.jsx("div",{style:{color:y,fontSize:"12px",lineHeight:"1.55",fontFamily:e},children:f})]})}):a.jsxs("div",{style:{backgroundColor:s,border:`1px solid ${o}`,borderRadius:r?"8px":"7px",padding:"14px 16px 12px 16px",marginBottom:"16px",boxShadow:r?"inset 0 1px 0 rgba(255,255,255,0.03)":"none"},children:[a.jsxs("button",{type:"button",onClick:()=>S(B=>!B),style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",gap:"12px",marginBottom:C?"14px":0,background:"none",border:"none",padding:0,cursor:"pointer",textAlign:"left"},children:[a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[a.jsx("span",{style:{fontSize:"17px",fontWeight:500,color:b,fontFamily:e,lineHeight:"24px"},children:"Fee"}),C&&a.jsx("span",{style:{fontSize:"12px",color:n,fontFamily:e,lineHeight:"1.45"},children:"What is funded, spent, and taken as fees"})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[T&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"2px",minWidth:0},children:[a.jsx("span",{style:{fontSize:"10px",fontWeight:700,color:n,fontFamily:e,letterSpacing:"0.08em",textTransform:"uppercase"},children:"Total required"}),a.jsx("span",{style:{fontSize:"14px",fontWeight:700,color:w,fontFamily:e,whiteSpace:"nowrap"},children:T})]}),c&&!p&&a.jsx("span",{style:{fontSize:"11px",fontWeight:600,color:l,fontFamily:e,padding:"6px 9px",borderRadius:"999px",backgroundColor:r?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.035)",border:`1px solid ${r?m:"rgba(0,0,0,0.06)"}`,whiteSpace:"nowrap"},children:"Recalculating"}),a.jsx(Bn,{color:n,direction:C?"up":"down",style:{flexShrink:0}})]})]}),a.jsx("div",{style:{overflow:"hidden",maxHeight:C?"480px":"0px",opacity:C?1:0,transition:"max-height 0.24s ease, opacity 0.18s ease"},children:p?a.jsx("p",{style:{margin:0,color:n,fontSize:"12px",lineHeight:"1.55",fontFamily:e},children:"This path executes directly from the external wallet. Network gas is paid in-wallet, so Spicenet cannot pre-estimate that gas or charge a Spicenet fee here."}):F.length>0?a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{display:"grid",gap:"10px"},children:F.map((B,j)=>a.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",alignItems:"center",gap:"12px",paddingTop:j===0?0:"10px",borderTop:j===0?"none":`1px solid ${m}`,opacity:c?.74:1,transition:"opacity 120ms ease"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0},children:[a.jsx("span",{style:{fontSize:"12px",color:n,fontFamily:e,fontWeight:500},children:B.label}),a.jsx(fa,{content:B.help,label:`${B.label} info`,textColor:"#f9fafb",backgroundColor:h,borderColor:x,accentColor:r?"#8f96a3":"#6b7280"})]}),a.jsx("span",{style:{fontSize:"12px",color:B.tone==="fee"?y:w,fontFamily:g.font.mono,textAlign:"right",fontWeight:B.label==="Used in TX"?600:500,letterSpacing:"-0.01em"},children:B.value})]},B.label))}),a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:`1px solid ${m}`,fontSize:"11px",color:n,fontFamily:e,lineHeight:"1.45"},children:v?.gasQuoteSource==="estimated"?"Gas quote uses a live estimate.":v?.gasQuoteSource==="configured_fallback"?"Gas quote uses a configured fallback.":"Gas quote is currently zero."})]}):a.jsx("div",{style:{fontSize:"12px",color:f?y:n,fontFamily:e,opacity:f?1:.8,lineHeight:"1.5"},children:f||"Waiting for fee estimate..."})})]})},Wo=d.memo(Xc);function Jc(e,t){switch(e){case"success":return{bg:t.successBg,border:t.successBorder,text:t.successText};case"warning":return{bg:t.warningBg,border:t.warningBorder,text:t.warningText};case"error":return{bg:t.errorBg,border:t.errorBorder,text:t.errorText};case"info":return{bg:t.infoBg,border:t.infoBorder,text:t.infoText}}}const kn=({variant:e,palette:t,children:n,icon:s,style:o,fontFamily:r,size:i="default"})=>{const l=Jc(e,t),u=i==="compact";return a.jsxs("div",{role:e==="error"?"alert":"status",style:{backgroundColor:l.bg,border:`1px solid ${l.border}`,borderRadius:u?"7px":"8px",padding:u?"8px 10px":"12px 16px",color:l.text,fontSize:u?"12px":"13px",lineHeight:u?1.4:1.5,display:"flex",alignItems:"flex-start",gap:u?"6px":"8px",fontFamily:r,...o},children:[s&&a.jsx("span",{style:{flexShrink:0,display:"flex",alignItems:"center"},children:s}),a.jsx("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:n})]})},ma=g.font.mono,Vn=({label:e,value:t,palette:n,valueColor:s,labelColor:o,style:r})=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",...r},children:[a.jsx("span",{style:{fontSize:"12px",color:o??n.textSecondary,fontFamily:ma,fontWeight:500,letterSpacing:"0.03em",flexShrink:0,whiteSpace:"nowrap"},children:e}),a.jsx("span",{style:{fontSize:"13px",color:s??n.textPrimary,fontWeight:500,fontFamily:ma,minWidth:0,textAlign:"right",overflowWrap:"anywhere"},children:t})]}),Uo=({onClick:e,label:t="Add Funds",color:n,fontFamily:s,style:o})=>{const[r,i]=d.useState(!1);return a.jsxs("button",{type:"button",onClick:e,"data-spiceflow-focus":!0,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{background:"none",border:"none",cursor:"pointer",padding:0,display:"inline-flex",alignItems:"center",gap:"4px",color:n,fontSize:"12px",fontWeight:500,fontFamily:s,textDecoration:"underline",textUnderlineOffset:"2px",whiteSpace:"nowrap",opacity:r?.75:1,transition:"opacity 150ms ease",...o},children:[t,a.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[a.jsx("circle",{cx:"6",cy:"6",r:"5"}),a.jsx("path",{d:"M6 4v4M4 6h4",strokeLinecap:"round"})]})]})},$c="This deposit didn't confirm in time. It may still have gone through, so check the explorer and refresh your balance before retrying.";function _c(e){return e?.overallStatus!=="failed"?{isFailed:!1,failureMessage:null}:{isFailed:!0,failureMessage:e.steps?.find(t=>t.status==="failed"&&!!t.error)?.error||$c}}const Ns=a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#10b981"}),a.jsx("path",{d:"M6 10l3 3 5-6",stroke:"#ffffff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),ed=({isOpen:e,onClose:t,onConfirm:n,data:s,isExecuting:o=!1,error:r=null,theme:i,styles:l,intentStatus:u,postDepositStatus:c="idle",hasPostDepositInstruction:f=!1})=>{const{dark:p,dk:m,theme:h}=g.useSpiceBrand(l),[x,y]=d.useState(!1),[b,w]=d.useState(!0);d.useEffect(()=>{e||y(!1)},[e]);const C=()=>{y(!0),setTimeout(()=>{t()},300)},S=()=>{w(!b)};if(!e||!s)return null;const k=u?.overallStatus==="processing",v=u?.overallStatus==="success",F=!!u,{isFailed:T,failureMessage:B}=_c(u),j=!F&&f,E=j&&c==="executing",R=j&&c==="success",D=v&&f&&(c==="idle"||c==="executing")||E,O=v&&(!f||c==="success"||c==="error")||R||j&&c==="error",H=p?m.cardBg:"#ffffff",U=p?"0 -4px 20px rgba(0, 0, 0, 0.4)":"0 -4px 20px rgba(0, 0, 0, 0.15)",V=m.textSecondary,Y=p?m.textPrimary:"#1f2937",N=p?m.textPrimary:"#1f2937",L=Z=>a.jsx("div",{style:{marginBottom:i.spacing.md,padding:i.spacing.md,backgroundColor:l?.errorMessage?.backgroundColor||(i.mode==="light"?"#fef2f2":`${i.colors.error}20`),border:`1px solid ${l?.errorMessage?.borderColor||(i.mode==="light"?"#fecaca":i.colors.error)}`,borderRadius:l?.errorMessage?.borderRadius||i.borderRadius.md},children:a.jsx("p",{style:{color:l?.errorMessage?.color||i.colors.error,fontSize:l?.errorMessage?.fontSize||i.typography.fontSize.sm,margin:0,fontFamily:l?.errorMessage?.fontFamily||l?.fontFamily||i.typography.fontFamily},children:Z})}),z={fontSize:i.typography.fontSize.sm,fontWeight:500,color:V,fontFamily:g.font.mono,letterSpacing:"0.5px"},G=(Z,W,q=Y)=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:z,children:Z}),a.jsx("span",{style:{fontSize:i.typography.fontSize.sm,fontWeight:500,color:q,fontFamily:g.font.mono},children:W})]});return a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:x?"slideDown 0.3s ease-in":"slideUp 0.3s ease-out",pointerEvents:"auto"},children:[a.jsxs("div",{style:{backgroundColor:H,borderRadius:"0",width:"100%",maxWidth:"522px",margin:"0 auto",padding:"18px 24px",boxShadow:U},children:[!v&&!R&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:i.spacing.md},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer"},onClick:S,children:[a.jsx("span",{style:{fontSize:"13px",fontWeight:i.typography.fontWeight.medium,color:V,fontFamily:l?.fontFamily||i.typography.fontFamily},children:"Transaction Details"}),a.jsx(Bn,{color:V,direction:b?"up":"down"})]}),a.jsx("button",{onClick:Z=>{Z.stopPropagation(),t()},style:{background:"none",border:"none",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:V,transition:"color 0.2s ease"},onMouseEnter:Z=>{Z.currentTarget.style.color=N},onMouseLeave:Z=>{Z.currentTarget.style.color=V},children:a.jsx(rs,{size:16})})]}),a.jsxs("div",{style:{marginBottom:i.spacing.lg,display:"flex",flexDirection:"column",gap:i.spacing.md,overflow:"hidden",maxHeight:b?"200px":"0px",opacity:b?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease"},children:[G("NETWORK",s.network),G("DEPOSITED AMOUNT",s.amount,i.colors.success),s.creditedAmount&&G("CREDITED AMOUNT",s.creditedAmount),s.spicenetFee&&G("SPICENET FEE",s.spicenetFee),s.networkFee&&G("EST. NETWORK FEE",s.networkFee)]})]}),r&&!F&&L(r),T&&B&&L(B),a.jsx(g.Button,{onClick:O||T?C:n,variant:"outline",fullWidth:!0,disabled:o||k||D||E,styles:l,theme:h,children:o||k||E||D?"PROCESSING...":O?"CONTINUE \u2192":T?"CLOSE":"CONFIRM DEPOSIT"}),O&&a.jsx("p",{style:{marginTop:i.spacing.md,marginBottom:0,fontSize:"14px",color:V,textAlign:"center",fontFamily:l?.fontFamily||i.typography.fontFamily},children:"Your funds are now available in your Account"}),a.jsx("div",{style:{marginTop:i.spacing.md,display:"flex",justifyContent:"center",alignItems:"center"},children:a.jsx("img",{src:Ao,alt:"Powered by SpiceNet",style:{height:"auto",width:"130px",opacity:1,filter:p?"brightness(0) invert(1) opacity(0.7)":"none"}})})]}),a.jsx("style",{children:`
2
+ "use strict";var Al=Object.create;var Mr=Object.defineProperty;var Il=Object.getOwnPropertyDescriptor;var El=Object.getOwnPropertyNames;var Fl=Object.getPrototypeOf,Tl=Object.prototype.hasOwnProperty;var Bl=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of El(t))!Tl.call(e,o)&&o!==n&&Mr(e,o,{get:()=>t[o],enumerable:!(s=Il(t,o))||s.enumerable});return e};var jl=(e,t,n)=>(n=e!=null?Al(Fl(e)):{},Bl(t||!e||!e.__esModule?Mr(n,"default",{value:e,enumerable:!0}):n,e));const a=require("react/jsx-runtime"),u=require("react"),g=require("./privy-CDEv1O2j.js"),pn=require("wagmi"),A=require("@spicenet-io/spiceflow-core"),I=require("viem"),on=require("viem/actions"),Or=require("@privy-io/react-auth"),qn=require("react-dom");require("@tanstack/react-query");const Rl="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@100;200;300;400;500;600;700&display=swap",Dl="spiceflow-ibm-plex-mono",Nl="spiceflow-preconnect-googleapis",Ml="spiceflow-preconnect-gstatic";function co(e,t){if(document.getElementById(e))return;const n=t();n.id=e,document.head.appendChild(n)}function Ol(){typeof document>"u"||(co(Nl,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.googleapis.com",e}),co(Ml,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.gstatic.com",e.crossOrigin="",e}),co(Dl,()=>{const e=document.createElement("link");return e.rel="stylesheet",e.href=Rl,e}))}const es=(e,t,n,s)=>({width:e,height:e,fill:"none",className:t,"aria-hidden":n??!0,style:s}),Bn=({size:e=16,color:t="currentColor",strokeWidth:n=2,direction:s="down",className:o,style:r,"aria-hidden":i})=>a.jsx("svg",{...es(e,o,i,{transform:s==="up"?"rotate(180deg)":void 0,transition:"transform 0.3s ease",...r}),viewBox:"0 0 16 16",children:a.jsx("path",{d:"M4 6L8 10L12 6",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),Wl=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsxs("svg",{...es(e,s,r,o),viewBox:"0 0 24 24",children:[a.jsx("circle",{cx:"11",cy:"11",r:"8",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"}),a.jsx("path",{d:"m21 21-4.3-4.3",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})]}),Pl=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...es(e,s,r,o),viewBox:"0 0 24 24",children:a.jsx("path",{d:"m6 9 6 6 6-6",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),Ul=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...es(e,s,r,o),viewBox:"0 0 24 24",children:a.jsx("path",{d:"m9 18 6-6-6-6",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),Wr=({size:e=14,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...es(e,s,r,o),viewBox:"0 0 16 16",children:a.jsx("path",{d:"M3 8L6.5 11.5L13 5",stroke:t,strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round"})}),uo=({value:e,onChange:t,ariaLabel:n,placeholder:s,endAdornment:o,size:r="lg",dark:i,styles:l,inputRef:d,autoFocus:c})=>{const{dark:m,dk:p}=g.useSpiceBrand(l,i),f=i??m,h=r==="lg",x=h?"15px":"14px",b=h?"7px":"10px",y=h?g.radius.input:g.radius.sm,w=l?.fontFamily||g.font.ui,S=f?p.inputBg:"#FAFAFA",v=f?p.inputBorder:"#e5e7eb",k=f?p.textPrimary:"#374151",C=f?p.textSecondary:"#9ca3af";return a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",backgroundColor:S,borderRadius:y,boxShadow:f?"0 2px 4px rgba(0, 0, 0, 0.3)":"0 2px 4px rgba(0, 0, 0, 0.1)",padding:`${b} 5px`,border:`1px solid ${v}`},children:[a.jsx(Wl,{style:{color:C},size:24}),a.jsx("input",{ref:d,type:"text",role:"searchbox","aria-label":n,autoComplete:"off",spellCheck:!1,autoFocus:c,"data-spiceflow-focus":!0,placeholder:s,value:e,onChange:E=>t(E.target.value),style:{flex:1,backgroundColor:S,outline:"none",border:"none",color:k,fontSize:x,fontWeight:400,fontFamily:w}}),o]})},Pr=async(e,t)=>{try{const n=g.getChainsForAssets(),s=g.getClientForChain(t),o=await on.getBalance(s,{address:e}),r=n[t],i=parseFloat((Number(o)/Math.pow(10,18)).toFixed(6)),l=g.getChainConfig(t),d=l?.supportedTokens?.find(c=>A.isNativeToken(c.address));return{address:A.ZERO_ADDRESS,name:r.chain.nativeCurrency.name,symbol:r.chain.nativeCurrency.symbol,decimals:r.chain.nativeCurrency.decimals,balance:o,balanceFormatted:i,balanceUsd:0,logoURI:d?.logo||l?.logo,isNative:!0,chainId:t}}catch(n){throw n}},Ll=async(e,t,n,s,o,r)=>{try{if(!I.isAddress(n))return null;const i=I.getAddress(n),l=I.isAddress(e)?I.getAddress(e):e,d=g.getClientForChain(t),c=await on.readContract(d,{address:i,abi:I.erc20Abi,functionName:"balanceOf",args:[l]}),m=parseFloat((Number(c)/Math.pow(10,r)).toFixed(6));return m>0?{address:i,name:s,symbol:o,decimals:r,balance:c,balanceFormatted:m,balanceUsd:0,logoURI:void 0,isNative:!1,chainId:t}:null}catch(i){throw i}},Ur=(e,t)=>{const n=g.getChainConfig(t);if(!n)return e;const s=new Set(e.map(r=>r.address.toLowerCase())),o=e.some(r=>r.isNative);for(const r of n.supportedTokens||[])A.isNativeToken(r.address)&&o||s.has(r.address.toLowerCase())||e.push({address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,logoURI:r.logo,isNative:A.isNativeToken(r.address),chainId:t});if(!e.find(r=>r.isNative)){const r=n.supportedTokens?.find(i=>A.isNativeToken(i.address));e.push({address:A.ZERO_ADDRESS,name:n.nativeCurrency.name,symbol:n.nativeCurrency.symbol,decimals:n.nativeCurrency.decimals,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,logoURI:r?.logo||n.logo,isNative:!0,chainId:t})}return e},zl=async(e,t)=>{const n=[],s=async i=>{for(const l of i){const d=await Ll(e,t,l.address,l.name,l.symbol,l.decimals);d&&(d.logoURI=l.logo,n.push(d))}},o=await Pr(e,t);o.balanceFormatted>0&&n.push(o);const r=(g.getChainConfig(t)?.supportedTokens||[]).filter(i=>!A.isNativeToken(i.address));if(r.length>0)try{const i=g.getClientForChain(t),l=I.getAddress(e),d=r.filter(f=>I.isAddress(f.address)).map(f=>({address:I.getAddress(f.address),abi:I.erc20Abi,functionName:"balanceOf",args:[l]})),c=await i.multicall({contracts:d}),m=r.filter(f=>I.isAddress(f.address)),p=[];c.forEach((f,h)=>{if(f.status==="success"){const x=f.result;if(x&&x>0n){const b=m[h],y=parseFloat((Number(x)/Math.pow(10,b.decimals)).toFixed(6));y>0&&n.push({address:I.getAddress(b.address),name:b.name,symbol:b.symbol,decimals:b.decimals,balance:x,balanceFormatted:y,balanceUsd:0,logoURI:b.logo,isNative:!1,chainId:t})}}else p.push(m[h])}),await s(p)}catch{await s(r)}return{tokens:Ur(n,t),chainId:t}},ql=e=>{const t=g.getClientForChain(e).transport.url;if(typeof t!="string")return null;try{const{hostname:n,pathname:s}=new URL(t);if(!n.endsWith(".g.alchemy.com"))return null;const o=s.split("/").filter(Boolean).pop();return o?{network:n.slice(0,-14),key:o}:null}catch{return null}},Lr="https://api.g.alchemy.com/prices/v1",zr=25,Hl=.01,qr=e=>{const t=e?.prices?.find(s=>s.currency==="usd")?.value,n=parseFloat(t);return Number.isFinite(n)&&n>0?n:0},Vl=async(e,t)=>{const n=new Map;for(let s=0;s<t.length;s+=zr){const o=t.slice(s,s+zr),r=await fetch(`${Lr}/${e.key}/tokens/by-address`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({addresses:o.map(l=>({network:e.network,address:l}))})});if(!r.ok)throw new Error(`Alchemy price fetch failed: ${r.status}`);const i=await r.json();for(const l of i?.data??[]){const d=qr(l);d>0&&n.set(String(l.address).toLowerCase(),d)}}return n},Ql=async(e,t)=>{const n=await fetch(`${Lr}/${e.key}/tokens/by-symbol?symbols=${encodeURIComponent(t)}`);if(!n.ok)throw new Error(`Alchemy price fetch failed: ${n.status}`);const s=await n.json();return qr(s?.data?.[0])},Kl=async(e,t,n)=>{const s=g.getClientForChain(t),o=I.getAddress(e),{tokenBalances:r}=await s.request({method:"alchemy_getTokenBalances",params:[o,"erc20"]}),i=r.filter(x=>I.isAddress(x.contractAddress)&&!!x.tokenBalance&&BigInt(x.tokenBalance)>0n),l=g.getChainConfig(t)?.supportedTokens||[],d=x=>l.find(b=>b.address.toLowerCase()===x.toLowerCase()),c=[],m=await Pr(e,t),[p,f,h]=await Promise.all([Promise.all(i.map(async x=>{const b=d(x.contractAddress);return b?{name:b.name,symbol:b.symbol,decimals:b.decimals,logo:b.logo??null}:await s.request({method:"alchemy_getTokenMetadata",params:[x.contractAddress]})})),Vl(n,i.map(x=>x.contractAddress)),m.balanceFormatted>0?Ql(n,m.symbol):0]);return m.balanceFormatted>0&&c.push({...m,balanceUsd:h*m.balanceFormatted}),i.forEach((x,b)=>{const y=p[b];if(y.decimals===null)return;const w=BigInt(x.tokenBalance),S=parseFloat((Number(w)/Math.pow(10,y.decimals)).toFixed(6));if(S<=0)return;const v=f.get(x.contractAddress.toLowerCase()),k=v?v*S:0;!d(x.contractAddress)&&(!v||k<Hl)||c.push({address:I.getAddress(x.contractAddress),name:y.name||"Unknown",symbol:y.symbol||"UNKNOWN",decimals:y.decimals,balance:w,balanceFormatted:S,balanceUsd:k,logoURI:y.logo||void 0,isNative:!1,chainId:t})}),{tokens:Ur(c,t),chainId:t}},Hr=new Set,Yl=async(e,t)=>{try{const n=ql(t);if(n)try{return await Kl(e,t,n)}catch(s){Hr.has(t)||(Hr.add(t),console.warn(`Token discovery unavailable on chain ${t}; listing configured tokens only.`,s))}return await zl(e,t)}catch(n){throw n}},po=new Map,fn=async(e,t)=>{if(!e)throw new Error("Wallet address is required");const n=g.getChainsForAssets(),s=t&&t.length>0?new Set(t):null,o=Object.keys(n).map(Number).filter(l=>!s||s.has(l)),r=await Promise.allSettled(o.map(l=>{const d=`${e.toLowerCase()}:${l}`;let c=po.get(d);return c||(c=Yl(e,l).finally(()=>po.delete(d)),po.set(d,c)),c})),i={};return r.forEach((l,d)=>{l.status==="fulfilled"&&(i[o[d]]=l.value)}),i},fo=new WeakMap,mn=({address:e,supportedChains:t,fetchBalances:n,enabled:s=!0,refreshInterval:o=0})=>{const[r,i]=u.useState([]),[l,d]=u.useState(!1),[c,m]=u.useState(null),p=`${s}:${e?.toLowerCase()}:${[...t].sort().join(",")}`,f=u.useMemo(()=>({walletScope:p,fetchBalances:n}),[p,n]),h=u.useRef({scope:f,address:e,enabled:s,supportedChains:t,fetchBalances:n});h.current={scope:f,address:e,enabled:s,supportedChains:t,fetchBalances:n};const x=u.useRef(0),[b,y]=u.useState(),w=u.useCallback(async()=>{const k=h.current;if(!k.enabled||!k.address)return;const C=k.address.toLowerCase(),E=++x.current;d(!0);try{const F=await k.fetchBalances(k.address,k.supportedChains);if(h.current.scope!==k.scope||x.current!==E)return;const B=k.supportedChains.filter(T=>!F[T]);let j=fo.get(k.fetchBalances);j||(j=new Map,fo.set(k.fetchBalances,j));for(const T of Object.values(F))j.set(`${C}:${T.chainId}`,T.tokens);i(T=>[...Object.values(F).flatMap(R=>R.tokens),...B.flatMap(R=>j.get(`${C}:${R}`)??T.filter(D=>D.chainId===R))]),y(k.scope),m(B.length?`Balances could not refresh on ${B.map(T=>g.getChainConfig(T)?.name??T).join(", ")}. Previous balances are shown.`:null)}catch{if(h.current.scope!==k.scope||x.current!==E)return;const F=fo.get(k.fetchBalances);i(B=>k.supportedChains.flatMap(j=>F?.get(`${C}:${j}`)??B.filter(T=>T.chainId===j))),y(k.scope),m("Balances could not refresh. Previous balances are shown.")}finally{h.current.scope===k.scope&&x.current===E&&d(!1)}},[]),S=u.useCallback(k=>r.filter(C=>C.chainId===k),[r]),v=u.useCallback(()=>r.filter(k=>k.isNative),[r]);return u.useEffect(()=>{if(x.current++,i([]),y(void 0),m(null),d(!1),!s||!e)return;w();const k=()=>{w()};window.addEventListener("spiceflow:source-funding",k);const C=o?setInterval(k,o):void 0;return()=>{x.current++,clearInterval(C),window.removeEventListener("spiceflow:source-funding",k)}},[f,o,w]),{assets:b===f?r:[],loading:l,error:c,refreshAssets:w,getAssetsByChain:S,getNativeAssets:v}};function Gl(e,t=40,n=18){const s=e.length,o=[{maxLength:7,shrink:0},{maxLength:10,shrink:6},{maxLength:13,shrink:12},{maxLength:16,shrink:16},{maxLength:20,shrink:19}].find(r=>s<=r.maxLength);return Math.max(n,t-(o?.shrink??22))}const jn=({value:e,element:t="span",placeholder:n,ariaLabel:s,ariaInvalid:o,disabled:r,onChange:i,inputMode:l="decimal",autoComplete:d="off",dataSpiceflowFocus:c,fontFamily:m,fontWeight:p=700,color:f,textAlign:h,lineHeight:x=1,maxFontSize:b=40,minFontSize:y=18,overflow:w="ellipsis",title:S,style:v})=>{const k=Gl(e||n||"",b,y),C=w==="wrap"?{overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"}:w==="ellipsis"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:{},E={fontFamily:m,fontSize:`${k}px`,fontWeight:p,color:f,lineHeight:x,letterSpacing:0,textAlign:h,minWidth:0,maxWidth:"100%",...C,...v};return t==="input"?a.jsx("input",{type:"text",inputMode:l,autoComplete:d,"aria-label":s,"aria-invalid":o||void 0,"data-spiceflow-focus":c||void 0,value:e,onChange:i,placeholder:n,disabled:r,title:S,style:{backgroundColor:"transparent",border:"none",outline:"none",padding:0,width:"100%",...E}}):a.jsx(t,{title:S,style:E,children:e})},mo=({pct:e,isMax:t,primaryColor:n,dark:s,fillColor:o})=>{const r=e/100;return a.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",children:[a.jsx("circle",{cx:"7",cy:"7",r:"6.84375",fill:t?n:"none",stroke:t?n:s?"#4a5568":"#3C3E42",strokeWidth:"0.3125"}),!t&&r>0&&a.jsx("path",{d:`M 7 7 L 7 0.15625 A 6.84375 6.84375 0 ${r>.5?1:0} 1 ${7+6.84375*Math.sin(r*2*Math.PI)} ${7-6.84375*Math.cos(r*2*Math.PI)} Z`,fill:o})]})};var Vr="data:image/png;base64,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",Zl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAQlBMVEVMaXGGl/+Elf+HmP+Hmf+Hl/+Gl/+Flv+Glv+Gl/+Gl/+Gl/////+On/+Akv/4+f/v8f/i5v+9x//S2P+tuP+erP+W3PvUAAAAC3RSTlMArBlx7Isy/vvOXbb4wDYAAAAJcEhZcwAACxMAAAsTAQCanBgAAALuSURBVHjarVfbtqsgDOxu0UBpkOv//+pJRC0i2HZ58uTeqzOEyYXkduvY/Tn8KSEBpFB/w3O8/WTjoCSS6dn4S6rha477QxFGS0nHM56ckJL/ox73b+CDQAQJujKiQxTDR4qH4LN109gP8Ti/uyI46K4BUagTLZ4Cz+CZAsWzhx/oeP3RyImhjf/7ePzmxF8Hr7+zNsP3eL7GkWH4Bc8MlQ7P3/DMsIvFKHRLPzBsTWVBizIfVNMBg9H7mLQxTRdUkb9tfJxebNZjywuJW1bf2xcw4WXtzDF5bVqXuJ9HwETHNnPYeHRii0THgcwQyBxTBDQ9Fx7dEBr0TOCDYyeS6aigsFsCQIFgBh9YiVgxQA7EqM9KiCiS95nh5WsGPZ4k8ZZFRqfoY4shy9i8AaExxRgTMgcApuSODPMdRtn02wc7Z9HkPMsPa1ZVOsiRygga4udfZ5vTKKx/7GIBVFJHCUy0r705DNu3LQ9kEQ6NxMTXwWzhUTD7xlJr2MLvrZCBVazy2OD0iaC4BGh1k4cSLOSbbIuujKW4wT76aYefrGswuBJSEoBeUnaFk7nQcKEIJZRXMPsfM95O3p3KKAoRa/cJTh0pHKMybSqyiO8wMsG0wzODi7UK9u0Ah7FIJAj1+UyQcl4Gqi2uax+L/siJVKQyi+j251sbMoHTZrUqlctiojDGRX27WpivYNtdi4upKme0c/gXBmdzY7ZoOi/cWDeU7MJy+oKn3hzbT9/cFKt6pmKe9udnCoTeG103VW7EjrGZJMOD863GNzfVQ0EDP6aJUH61wBRHGZa23npYDDpuh8EnpPBRS6UUQOg9r8enzaDdmhmsPkH/da3bokkr/i0dwMmYU7lg0pRrwiVzNrW+n/dKhVzVVIbGnE9Jj86IA8glk87h+xGnGrJyzXwYNvdD1uUx7/qgeX3UvT5sXx/3ry8c11ee60vX9bXvvXjWfsC3i+d79YV19+WPH1bf/7B8Lxy8/isBINTp+v8Ph4CTcAywkiYAAAAASUVORK5CYII=",Xl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAPFBMVEVMaXGZhueZh+eYhuWXheWYh+eYhuaXheCYhuaah+j//fmhjvOSf+Sdi+q8sOzNxO/m4fT08fapmuja0/Jb/wGxAAAACnRSTlMArEz/IYtsA87sGIEBYwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAmJJREFUeNqtV4uSgyAMRIECGhTk///1otTKG3s2Mzdz03aXbEJIQkhuYv9jIx+komhKDnxk4v1F1wT+SoxcUj3PWu8Ex39U8lH4bzt4QthL6tlDA8OP5Iv1vMADGFc5+uRQnDWdEES81EwbNquXqDuBx8va6ZcXktUYBOkc/3GixsBvwA8neFGGGO7hdyeGAsMXeM/wBJ8ziLv6LwYeisD4f4lHhiAXmH9FvzYV3AchOw6At9gFKW4KANDbsttGoSyCKd1Ab4uxkzezhBQaRfQygHB3oj2FhjwT9QgifErM6jiOrQgAXe2UmcuiIKSuHG+mki2XCH0kYqzgF1vETyYszLFaxLBMNdsgDGNFAazRoUcwrDMlDYz28RS0newGcCRlDa8TK4YgxuORGj9x8NYVEsxjKQSp/pNAw5YRcJI/JP5nYeqxjAxeIfCeRQQDyWOos/y5xR2V4NIgYhRJVkjgpralBPcvQH4PsBxIX0DjJqKRdgYLtsYPUyqh60CsACXEQew7ECvAICZp7DqwQEIQXaR+CkzaoeKr3FewQdqg4mIy36VgLyZWz4G96N5vs8sKj0UPSlJGy4fAbWX88SgGQYgJVjDXi7JaaxYo9Oj4UQ0lrHCGdN25ceiEfNoZSfIomjhcKN26DarT0q4gaiyfe2C9u9hWNUBvRghbG+yd1AZNFFrjmu+ucXMF2j60OObE7f0m+mrv/5qQkimpO+IU8fKXQ9bDMe/5oPl81P3BsP183EeGu3GoLBw/WHnuLF20sXQ9X/ueL57PV99w+Z7P5Vvj8j3fXr7j9X/f/5Vsrv9/K3NM7mGXOq0AAAAASUVORK5CYII=",ts="data:image/svg+xml,%3csvg width='8' height='11' viewBox='57 6 8 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M62.7081 13.27C62.742 13.27 62.7642 13.3057 62.7491 13.3362V13.336L61.1229 16.6083C61.0892 16.6761 60.9926 16.6759 60.959 16.6083L59.3382 13.336C59.3232 13.3057 59.3453 13.27 59.3792 13.27H62.7081Z' fill='%23EA4B4B'/%3e %3cpath d='M61.0026 9.71913C61.0194 9.68524 61.0678 9.68524 61.0845 9.71913L62.747 13.0897C62.762 13.12 62.7399 13.1557 62.706 13.1557H59.3763C59.3424 13.1557 59.3203 13.12 59.3353 13.0897L61.0026 9.71913Z' fill='%23EA4B4B'/%3e %3cpath d='M60.8426 9.63827C60.8766 9.63827 60.8987 9.6741 60.8835 9.70444L59.2164 13.0594C59.1995 13.0932 59.1513 13.0932 59.1345 13.0594L57.5001 9.77047C57.47 9.70962 57.5142 9.63827 57.5821 9.63827H60.8426Z' fill='%23EA4B4B'/%3e %3cpath d='M64.5036 9.63617C64.5715 9.63618 64.6157 9.70753 64.5855 9.76838H64.5854L62.9512 13.0573C62.9344 13.0911 62.8862 13.0912 62.8692 13.0573L61.2021 9.70235C61.187 9.672 61.2091 9.63617 61.2431 9.63617H64.5036Z' fill='%23EA4B4B'/%3e %3cpath d='M62.8284 6.18281C62.862 6.11518 62.9586 6.11518 62.9922 6.18281L64.5855 9.38969C64.6157 9.45054 64.5715 9.52189 64.5036 9.52189H61.2431C61.2091 9.52189 61.187 9.48605 61.2021 9.45571L62.8283 6.18265L62.8284 6.18281Z' fill='%23EA4B4B'/%3e %3cpath d='M62.3131 6.13196C62.381 6.13196 62.4252 6.20331 62.3951 6.26416C62.154 6.74935 61.9128 7.23455 61.6718 7.71975H61.6716C61.4225 8.22125 61.1733 8.72259 60.9242 9.22409C60.9074 9.25799 60.859 9.25799 60.8422 9.22409L60.6305 8.79587C60.6275 8.78957 60.6259 8.78263 60.6259 8.77553V6.22349C60.6259 6.17297 60.6668 6.13196 60.7173 6.13196H62.3131Z' fill='%23EA4B4B'/%3e%3c/svg%3e";const ns=A.getChainMeta(1)?.logo??"",Jl=A.TOKENS.find(e=>e.symbol==="USDC")?.logo??"",Sn=Object.fromEntries([...A.getMainnetChains(),...A.getTestnetChains()].map(e=>[e.id,e.logo])),ss={metamask:Vr,metaMask:Vr,rabby:Zl,phantom:Xl},ho=Object.fromEntries(A.TOKENS.map(e=>[e.symbol,e.logo])),go=({symbol:e,logoURI:t,size:n=20,theme:s})=>{const{theme:o}=g.useSpiceBrand(),r=s||o,[i,l]=u.useState(!1),d={width:`${n}px`,height:`${n}px`,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",fontSize:`${n*.4}px`,fontWeight:r.typography.fontWeight.bold,flexShrink:0,overflow:"hidden",backgroundColor:"#ffffff"},c=e.toUpperCase(),m=t||ho[c];if(m&&!i)return a.jsx("img",{src:m,alt:e,loading:"lazy",decoding:"async",style:{...d,objectFit:"cover"},onError:()=>l(!0)});const p=$l(e);return a.jsx("div",{style:{...d,...p.style},children:p.icon})},$l=e=>{const t=e.toUpperCase(),n={ETH:{bg:"#627EEA",text:"#FFFFFF",icon:"\u039E"},BTC:{bg:"#F7931A",text:"#FFFFFF",icon:"\u20BF"},USDC:{bg:"#2775CA",text:"#FFFFFF"},USDT:{bg:"#26A17B",text:"#FFFFFF"},DAI:{bg:"#F5AC37",text:"#FFFFFF"},WETH:{bg:"#627EEA",text:"#FFFFFF",icon:"\u039E"},WBTC:{bg:"#F09242",text:"#FFFFFF",icon:"\u20BF"},CBTC:{bg:"#F7931A",text:"#FFFFFF",icon:"\u20BF"},USD:{bg:"#26A17B",text:"#FFFFFF",icon:"$"},MATIC:{bg:"#8247E5",text:"#FFFFFF"},AVAX:{bg:"#E84142",text:"#FFFFFF"},SOL:{bg:"#9945FF",text:"#FFFFFF"},DOT:{bg:"#E6007A",text:"#FFFFFF"},ADA:{bg:"#0033AD",text:"#FFFFFF"},LINK:{bg:"#375BD2",text:"#FFFFFF"},UNI:{bg:"#FF007A",text:"#FFFFFF"},AAVE:{bg:"#B6509E",text:"#FFFFFF"},CRV:{bg:"#40E0D0",text:"#000000"}}[t];if(n)return{style:{backgroundColor:n.bg,color:n.text},icon:n.icon||t.charAt(0)};const s=t.split("").reduce((l,d)=>d.charCodeAt(0)+((l<<5)-l),0),o=Math.abs(s)%360,r=`hsl(${o}, 60%, 50%)`,i=o>180?"#FFFFFF":"#000000";return{style:{backgroundColor:r,color:i},icon:t.charAt(0)}},Qr=({chainId:e,name:t,size:n=16})=>{const s=e&&(Sn[e]||A.getChainMeta(e)?.logo)||"";return s?a.jsx("img",{src:s,alt:t||`Chain ${e}`,loading:"lazy",decoding:"async",width:n,height:n,style:{width:`${n}px`,height:`${n}px`,borderRadius:"50%",objectFit:"cover",flexShrink:0}}):null};function xo(e){return e.displaySymbol||e.symbol}function _l(e){return e.displayName||e.displaySymbol||e.name||e.symbol}function yo(e){return e.displayChainName||g.getChainName(e.chainId)}const ec=({selectedAsset:e,assets:t,onAssetSelect:n,showDropdown:s,onToggleDropdown:o,disabled:r=!1,theme:i,onViewAllAssets:l})=>{const{theme:d}=g.useSpiceBrand(),c=i||d,m=u.useRef(null),p=u.useRef(null),f=u.useRef(null),[h,x]=u.useState(null);u.useEffect(()=>{if(s&&p.current){const D=()=>{if(p.current){const M=p.current.getBoundingClientRect();x({top:M.bottom+6,right:window.innerWidth-M.right})}};return D(),window.addEventListener("scroll",D,!0),window.addEventListener("resize",D),()=>{window.removeEventListener("scroll",D,!0),window.removeEventListener("resize",D)}}else x(null)},[s]),u.useEffect(()=>{const D=M=>{m.current&&!m.current.contains(M.target)&&f.current&&!f.current.contains(M.target)&&s&&o()};return s&&document.addEventListener("mousedown",D),()=>{document.removeEventListener("mousedown",D)}},[s,o]);const[b,y]=u.useState(!1),w=c.mode==="light",S={backgroundColor:"transparent",border:`1px solid ${w?"#aaaaaa":c.colors.border}`,borderRadius:"6px",color:c.colors.text,cursor:r?"not-allowed":"pointer",padding:"8px 14px 8px 10px",width:"100%",display:"flex",flexDirection:"column",gap:"4px",opacity:r?.6:1,transition:g.transition.interactive,transform:b?"scale(0.98)":"scale(1)"},v={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"10px",minWidth:0},k={display:"flex",alignItems:"center",gap:"4px",paddingTop:"4px",borderTop:`1px solid ${c.colors.border}`},C=()=>h?{position:"fixed",top:`${h.top}px`,right:`${h.right}px`,backgroundColor:c.colors.secondary,border:`1px solid ${c.colors.border}`,borderRadius:c.borderRadius.md,boxShadow:c.shadows.lg,zIndex:g.z.dropdown,width:"200px",maxHeight:"300px",overflow:"auto"}:{},E={backgroundColor:"transparent",border:"none",color:c.colors.text,cursor:"pointer",padding:c.spacing.sm,width:"100%",display:"flex",alignItems:"center",gap:c.spacing.sm,transition:`background-color ${c.animation.normal}`,":hover":{backgroundColor:c.colors.surfaceHover}},F={display:"flex",flexDirection:"column",alignItems:"flex-start",flex:1},B={fontSize:c.typography.fontSize.sm,fontWeight:c.typography.fontWeight.medium},j={fontSize:c.typography.fontSize.xs,color:c.colors.textMuted},T={backgroundColor:"transparent",border:"none",borderTop:`1px solid ${c.colors.border}`,color:c.colors.primary,cursor:"pointer",padding:"10px 12px",width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontFamily:c.typography.fontFamily,fontSize:c.typography.fontSize.xs,fontWeight:c.typography.fontWeight.medium,textDecoration:"underline",textUnderlineOffset:"2px"},R={transition:`transform ${c.animation.normal}`,transform:s?"rotate(180deg)":"rotate(0deg)",flexShrink:0};return a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"relative"},ref:m,children:a.jsxs("div",{ref:p,style:S,onClick:r?void 0:o,onMouseLeave:()=>{y(!1)},onMouseDown:()=>y(!0),onMouseUp:()=>y(!1),children:[a.jsxs("div",{style:v,children:[a.jsx("div",{style:{display:"flex",alignItems:"center",gap:"8px",flex:1,minWidth:0},children:e?.asset?a.jsxs(a.Fragment,{children:[a.jsx(go,{symbol:e.asset.symbol,logoURI:e.asset.logoURI,theme:c,size:24}),a.jsx("span",{style:{fontSize:"15px",fontWeight:500,color:c.colors.text,lineHeight:"1.5",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:xo(e.asset)})]}):a.jsx("span",{style:{fontSize:"14px",color:c.colors.textMuted},children:"Select"})}),a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:w?c.colors.textMuted:"#c7ccd4",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:R,children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]}),e?.asset&&a.jsxs("div",{style:k,children:[!e.asset.displayChainName&&a.jsx(Qr,{chainId:e.asset.chainId,theme:c}),a.jsx("span",{style:{fontSize:"11px",color:c.colors.textMuted},children:yo(e.asset)})]})]})}),s&&h&&qn.createPortal(a.jsxs("div",{ref:f,style:C(),children:[t.length===0&&a.jsx("div",{style:{padding:"10px 12px",color:c.colors.textMuted,fontSize:c.typography.fontSize.xs},children:"No assets available"}),t.map(D=>a.jsxs("button",{style:E,onClick:()=>{n(D),o()},children:[a.jsx(go,{symbol:D.symbol,logoURI:D.logoURI,theme:c},`${D.address}-${D.chainId}-${D._fundingWallet||D._source||""}`),a.jsxs("div",{style:F,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:c.spacing.xs},children:[a.jsx("span",{style:B,children:xo(D)}),!D.displayChainName&&a.jsx(Qr,{chainId:D.chainId,theme:c})]}),a.jsxs("span",{style:j,children:[g.formatBalance(D.balanceFormatted)," \u2022"," ",yo(D)]})]})]},D.receiptTokenId||`${D.address}-${D.chainId}-${D._fundingWallet||D._source||""}`)),l&&a.jsxs("button",{type:"button",style:T,onClick:()=>{o(),l()},children:[a.jsx("span",{children:"View all assets"}),a.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[a.jsx("path",{d:"M5 12h14"}),a.jsx("path",{d:"M13 5l7 7-7 7"})]})]})]}),document.body)]})},tc=({assets:e,selectedAsset:t,onAssetSelect:n,onAmountChange:s,disabled:o=!1,loading:r=!1,label:i="Select Asset",showBalance:l=!0,showMaxButton:d=!0,placeholder:c="0.0",theme:m,styles:p,maxAmount:f,resolveMaxAmount:h,hideAmountInput:x=!1,displayAmount:b,dark:y,onViewAllAssets:w})=>{const{theme:S,primaryColor:v,dark:k,dk:C}=g.useSpiceBrand(p,y),E=m||S,F=y??k,[B,j]=u.useState(!1),[T,R]=u.useState(null),[D,M]=u.useState(null),[W,q]=u.useState(!1),[z,X]=u.useState(null),[N,H]=u.useState(t?.amount||""),V=u.useRef(null),G=u.useRef(""),J=u.useRef(h),U=t?.asset?t.asset.receiptTokenId||`${t.asset.chainId}-${t.asset.address}-${t.asset._fundingWallet||t.asset._source||""}`:"",L=!!h,O=z??f;u.useEffect(()=>{J.current=h},[h]),u.useEffect(()=>{U!==G.current&&(H(t?.amount||""),G.current=U)},[U,t?.amount]),u.useEffect(()=>{X(null),q(!1)},[U,L,t?.asset?.balance]);const ee=P=>{let ae=P;ae.startsWith(".")&&(ae="0"+ae);const he=g.parseNumericInput(ae,t?.asset?.decimals);if(!he){H(he),V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{s(he)},300);return}if(O&&parseFloat(he)>parseFloat(O)){H(O),V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{s(O)},300);return}if(t?.asset){const ne=parseFloat(he),Q=t.asset.balanceFormatted,te=t.asset.decimals;if(!isNaN(ne)&&ne>Q){const be=g.formatDecimalInput(Math.floor(Q*10**te)/10**te,te);H(be),V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{s(be)},300);return}}H(he),V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{s(he)},300)},ue=P=>{H(P),V.current&&clearTimeout(V.current),s(P)};u.useEffect(()=>{!O||!N||parseFloat(N)<=parseFloat(O)||ue(O)},[O,N]);const re=async()=>{if(t?.asset){const P=t.asset.decimals,ae=J.current;if(z){ue(z);return}if(ae){q(!0);try{const Q=await ae(t.asset);if(Q!==null){const te=g.parseNumericInput(Q,P);X(te),ue(te);return}}catch(Q){console.warn("[AssetSelector] Failed to resolve max amount:",Q)}finally{q(!1)}}if(O){ue(g.parseNumericInput(O,P));return}let he=Math.floor(t.asset.balanceFormatted*10**P)/10**P;O&&he>parseFloat(O)&&(he=parseFloat(O));const ne=g.formatDecimalInput(he,P);ue(ne)}},se=async P=>{if(t?.asset){if(P===100){await re();return}const ae=t.asset.decimals,he=t.asset.balanceFormatted*P/100;let ne=Math.floor(he*10**ae)/10**ae;O&&ne>parseFloat(O)&&(ne=parseFloat(O));const Q=g.formatDecimalInput(ne,ae);ue(Q)}},ie=t?.asset?.balanceFormatted??0,ce=parseFloat(N)||0,_=ie>0?ce/ie*100:0;u.useEffect(()=>()=>{V.current&&clearTimeout(V.current)},[]);const Ce={backgroundColor:p?.assetSelector?.backgroundColor||p?.secondaryBackground||(F?C.cardBg:"#e9e9e9"),border:F?`0.5px solid ${C.cardBorder}`:"0.5px solid #A8A8A7",borderRadius:p?.assetSelector?.borderRadius||"6px",padding:p?.assetSelector?.padding||"16px",height:"auto",minHeight:x?void 0:"144px",display:"flex",flexDirection:"column",gap:"8px",position:"relative",opacity:o?.6:1};return r?a.jsx("div",{style:Ce,children:a.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[a.jsx("div",{style:{backgroundColor:F?C.hoverBg:"#d1d5db",borderRadius:"4px",height:"16px",width:"60px"}}),a.jsx("div",{style:{backgroundColor:F?C.hoverBg:"#d1d5db",borderRadius:"4px",height:"40px",width:"150px"}})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"8px"},children:[a.jsx("div",{style:{backgroundColor:F?C.hoverBg:"#d1d5db",borderRadius:"4px",height:"12px",width:"80px"}}),a.jsx("div",{style:{backgroundColor:F?C.hoverBg:"#d1d5db",borderRadius:"6px",height:"46px",width:"128px"}})]})]})}):a.jsxs("div",{style:Ce,children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:p?.fontFamily||E.typography.fontFamily,fontSize:"16px",fontWeight:500,color:F?C.textSecondary:"#7d7c7b",lineHeight:"24px"},children:i}),l&&t?.asset&&a.jsxs("span",{style:{fontFamily:p?.fontFamily||E.typography.fontFamily,fontSize:"12px",fontWeight:500,color:F?C.textSecondary:"#71757a",lineHeight:"16px"},children:["Balance: ",g.formatBalance(t.asset.balanceFormatted)]})]}),a.jsxs("div",{style:{display:"flex",justifyContent:x&&!b?"flex-start":"space-between",alignItems:"center",flex:1},children:[!x&&a.jsx(jn,{element:"input",ariaLabel:t?.asset?`${t.asset.symbol} amount`:"Amount",dataSpiceflowFocus:!0,value:N,onChange:P=>ee(P.target.value),placeholder:c,disabled:o||!t?.asset,fontFamily:p?.fontFamily||E.typography.fontFamily,color:o?F?"rgba(255, 255, 255, 0.16)":"rgba(14, 13, 11, 0.16)":N?F?"#ffffff":"#0e0d0b":F?"#4a5568":"#d1d5db",lineHeight:"1.08",maxFontSize:40,minFontSize:22,style:{width:"100%",maxWidth:"200px"}}),a.jsx("div",{style:{width:"176px",position:"relative",flexShrink:0},children:a.jsx(ec,{selectedAsset:t,assets:e,onAssetSelect:n,showDropdown:B,onToggleDropdown:()=>j(!B),disabled:o,theme:E,onViewAllAssets:w})}),x&&b&&a.jsx(jn,{element:"span",value:b,title:b,fontFamily:p?.fontFamily||E.typography.fontFamily,color:F?"#ffffff":"#0e0d0b",lineHeight:"1.08",textAlign:"right",maxFontSize:40,minFontSize:22,style:{flex:1}})]}),!x&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px",height:"14px"},children:[0,25,50,75,100].map((P,ae)=>{const he=Math.abs(_-P)<1,ne=ae===4,Q=T===P,te=D===P;return a.jsx("button",{onClick:()=>se(P),onMouseEnter:()=>R(P),onMouseLeave:()=>{R(null),M(null)},onMouseDown:()=>M(P),onMouseUp:()=>M(null),disabled:o||!t?.asset||P===100&&!d||P===100&&W,title:P===100&&!d?"Max unavailable":`${P}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:o||!t?.asset||P===100&&!d||P===100&&W?"not-allowed":"pointer",opacity:he?1:Q?.8:.5,transform:te?"scale(0.85)":Q?"scale(1.15)":"scale(1)",transition:g.transition.interactive},children:a.jsx(mo,{pct:P,isMax:ne,primaryColor:v,dark:F,fillColor:F?C.textSecondary:"#3C3E42"})},P)})})]})},os=u.memo(tc),nc=new Set(["USDC","SUSD","USD","NUSD","USDT","DAI","ENUSD","USDG"]),Kr={ETH:"ethereum",WETH:"ethereum",BTC:"bitcoin",WBTC:"bitcoin",WCBTC:"bitcoin",CBTC:"bitcoin",ECBTC:"bitcoin",ARB:"arbitrum",MATIC:"matic-network",POL:"matic-network"};let vs=null;const sc=6e4;async function bo(e){const t={},n=new Set,s={};for(const r of e){const i=r.toUpperCase();if(nc.has(i))t[i]=1;else if(Kr[i]){const l=Kr[i];n.add(l),s[i]=l}else t[i]=0}if(n.size===0)return t;const o=Date.now();if(vs&&o-vs.timestamp<sc){for(const[r,i]of Object.entries(s))t[r]=vs.prices[i]??0;return t}try{const r=Array.from(n).join(","),i=await fetch(`https://api.coingecko.com/api/v3/simple/price?ids=${r}&vs_currencies=usd`);if(!i.ok)throw new Error(`CoinGecko ${i.status}`);const l=await i.json(),d={};for(const c of n)d[c]=l[c]?.usd??0;vs={prices:d,timestamp:o};for(const[c,m]of Object.entries(s))t[c]=d[m]??0}catch(r){console.warn("[fetchTokenPrices] CoinGecko fetch failed:",r);for(const i of Object.keys(s))t[i]=t[i]??0}return t}function oc(e,t){return e.map(n=>{if(n.balanceUsd>0)return n;const s=t[n.symbol.toUpperCase()]??0;return{...n,balanceUsd:n.balanceFormatted*s}})}const rc=new Set(["cbtc","btc","wbtc","wcbtc","tbtc"]),ac=new Set(["usdc","usdt","dai","usdc.e","usdbc","usdg"]);async function ic(){const e=(await bo(["BTC"])).BTC;if(!e||e<=0)throw new Error("Failed to fetch BTC/USD price");return e}function lc(e){return rc.has(e.toLowerCase())}function cc(e){return ac.has(e.toLowerCase())}function dc(e,t,n,s){const o=10n**12n,r=BigInt(Math.round(s*Number(o))),i=t-n,l=10n**BigInt(Math.abs(i));let d=e*r/o;return i>0?d=d/l:i<0&&(d=d*l),d}const rs=({size:e=20,strokeWidth:t=2,color:n="currentColor",style:s})=>a.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:n,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:s,children:[a.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]});var wo="data:image/svg+xml,%3csvg width='108' height='22' viewBox='0 0 108 22' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M1.9916 11.9854V11.2041H3.98379C4.48835 11.2041 4.87897 11.0739 5.15566 10.8135C5.43236 10.5498 5.5707 10.1868 5.5707 9.72461V9.71484C5.5707 9.24935 5.43236 8.88639 5.15566 8.62598C4.87897 8.36556 4.48835 8.23535 3.98379 8.23535H1.9916V7.4541H4.2084C4.65111 7.4541 5.04173 7.5485 5.38027 7.7373C5.71882 7.92611 5.98411 8.18978 6.17617 8.52832C6.37148 8.86686 6.46914 9.25911 6.46914 9.70508V9.71484C6.46914 10.1608 6.37148 10.5547 6.17617 10.8965C5.98411 11.2383 5.71882 11.5052 5.38027 11.6973C5.04173 11.8893 4.65111 11.9854 4.2084 11.9854H1.9916ZM1.55215 14.5V7.4541H2.43106V14.5H1.55215ZM9.51875 14.5928C9.0207 14.5928 8.58939 14.4837 8.2248 14.2656C7.86348 14.0443 7.58353 13.7301 7.38496 13.3232C7.18965 12.9163 7.09199 12.4329 7.09199 11.873V11.8633C7.09199 11.3001 7.18965 10.8151 7.38496 10.4082C7.58353 10.0013 7.86348 9.6888 8.2248 9.4707C8.58939 9.2526 9.0207 9.14355 9.51875 9.14355C10.0201 9.14355 10.4514 9.2526 10.8127 9.4707C11.174 9.6888 11.4523 10.0013 11.6477 10.4082C11.8462 10.8151 11.9455 11.3001 11.9455 11.8633V11.873C11.9455 12.4329 11.8462 12.9163 11.6477 13.3232C11.4523 13.7301 11.174 14.0443 10.8127 14.2656C10.4514 14.4837 10.0201 14.5928 9.51875 14.5928ZM9.51875 13.8408C9.85078 13.8408 10.1324 13.7627 10.3635 13.6064C10.5946 13.4502 10.7704 13.2256 10.8908 12.9326C11.0145 12.6396 11.0764 12.2865 11.0764 11.873V11.8633C11.0764 11.4466 11.0145 11.0918 10.8908 10.7988C10.7704 10.5059 10.5946 10.2829 10.3635 10.1299C10.1324 9.97363 9.85078 9.89551 9.51875 9.89551C9.18672 9.89551 8.90514 9.97363 8.67402 10.1299C8.4429 10.2829 8.26549 10.5059 8.1418 10.7988C8.02135 11.0918 7.96113 11.4466 7.96113 11.8633V11.873C7.96113 12.2865 8.02135 12.6396 8.1418 12.9326C8.26549 13.2256 8.4429 13.4502 8.67402 13.6064C8.90514 13.7627 9.18672 13.8408 9.51875 13.8408ZM13.7842 14.5L12.3096 9.23633H13.1592L14.1943 13.4453H14.2725L15.4492 9.23633H16.2549L17.4316 13.4453H17.5098L18.5449 9.23633H19.3896L17.915 14.5H17.0605L15.8838 10.4277H15.8057L14.6338 14.5H13.7842ZM22.1658 14.5928C21.6645 14.5928 21.2332 14.4821 20.8719 14.2607C20.5138 14.0394 20.2371 13.7269 20.0418 13.3232C19.8497 12.9163 19.7537 12.4378 19.7537 11.8877V11.8828C19.7537 11.3392 19.8497 10.8623 20.0418 10.4521C20.2371 10.042 20.5122 9.72135 20.867 9.49023C21.2218 9.25911 21.6368 9.14355 22.1121 9.14355C22.5906 9.14355 23.0008 9.25423 23.3426 9.47559C23.6876 9.69694 23.9513 10.0062 24.1336 10.4033C24.3191 10.7972 24.4119 11.2562 24.4119 11.7803V12.1123H20.1932V11.4336H23.9773L23.5574 12.0537V11.7168C23.5574 11.3034 23.4956 10.9632 23.3719 10.6963C23.2482 10.4294 23.0773 10.2308 22.8592 10.1006C22.6411 9.96712 22.3904 9.90039 22.1072 9.90039C21.824 9.90039 21.5701 9.97038 21.3455 10.1104C21.1242 10.2471 20.9484 10.4505 20.8182 10.7207C20.688 10.9909 20.6229 11.3229 20.6229 11.7168V12.0537C20.6229 12.4281 20.6863 12.7487 20.8133 13.0156C20.9402 13.2793 21.1209 13.4827 21.3553 13.626C21.5896 13.766 21.8663 13.8359 22.1854 13.8359C22.423 13.8359 22.6297 13.8034 22.8055 13.7383C22.9813 13.6732 23.1261 13.5902 23.24 13.4893C23.354 13.3883 23.4337 13.2858 23.4793 13.1816L23.4988 13.1377H24.3484L24.3387 13.1768C24.2931 13.3558 24.2117 13.5299 24.0945 13.6992C23.9806 13.8652 23.8325 14.0166 23.6502 14.1533C23.4679 14.2868 23.2514 14.3942 23.0008 14.4756C22.7534 14.5537 22.4751 14.5928 22.1658 14.5928ZM25.4303 14.5V9.23633H26.2799V10.0176H26.358C26.4589 9.74089 26.6298 9.52604 26.8707 9.37305C27.1116 9.22005 27.4094 9.14355 27.7643 9.14355C27.8456 9.14355 27.9254 9.14844 28.0035 9.1582C28.0849 9.16471 28.1467 9.17122 28.1891 9.17773V10.0029C28.1012 9.98665 28.0149 9.97526 27.9303 9.96875C27.8489 9.95898 27.761 9.9541 27.6666 9.9541C27.3964 9.9541 27.1572 10.0078 26.9488 10.1152C26.7405 10.2227 26.5761 10.3724 26.4557 10.5645C26.3385 10.7565 26.2799 10.9811 26.2799 11.2383V14.5H25.4303ZM30.9408 14.5928C30.4395 14.5928 30.0082 14.4821 29.6469 14.2607C29.2888 14.0394 29.0121 13.7269 28.8168 13.3232C28.6247 12.9163 28.5287 12.4378 28.5287 11.8877V11.8828C28.5287 11.3392 28.6247 10.8623 28.8168 10.4521C29.0121 10.042 29.2872 9.72135 29.642 9.49023C29.9968 9.25911 30.4118 9.14355 30.8871 9.14355C31.3656 9.14355 31.7758 9.25423 32.1176 9.47559C32.4626 9.69694 32.7263 10.0062 32.9086 10.4033C33.0941 10.7972 33.1869 11.2562 33.1869 11.7803V12.1123H28.9682V11.4336H32.7523L32.3324 12.0537V11.7168C32.3324 11.3034 32.2706 10.9632 32.1469 10.6963C32.0232 10.4294 31.8523 10.2308 31.6342 10.1006C31.4161 9.96712 31.1654 9.90039 30.8822 9.90039C30.599 9.90039 30.3451 9.97038 30.1205 10.1104C29.8992 10.2471 29.7234 10.4505 29.5932 10.7207C29.463 10.9909 29.3979 11.3229 29.3979 11.7168V12.0537C29.3979 12.4281 29.4613 12.7487 29.5883 13.0156C29.7152 13.2793 29.8959 13.4827 30.1303 13.626C30.3646 13.766 30.6413 13.8359 30.9604 13.8359C31.198 13.8359 31.4047 13.8034 31.5805 13.7383C31.7563 13.6732 31.9011 13.5902 32.015 13.4893C32.129 13.3883 32.2087 13.2858 32.2543 13.1816L32.2738 13.1377H33.1234L33.1137 13.1768C33.0681 13.3558 32.9867 13.5299 32.8695 13.6992C32.7556 13.8652 32.6075 14.0166 32.4252 14.1533C32.2429 14.2868 32.0264 14.3942 31.7758 14.4756C31.5284 14.5537 31.2501 14.5928 30.9408 14.5928ZM36.1486 14.5928C35.7059 14.5928 35.3186 14.4805 34.9865 14.2559C34.6545 14.0312 34.3973 13.7155 34.215 13.3086C34.0328 12.8984 33.9416 12.4199 33.9416 11.873V11.8633C33.9416 11.3132 34.0328 10.8346 34.215 10.4277C34.3973 10.0208 34.6529 9.70508 34.9816 9.48047C35.3137 9.25586 35.7027 9.14355 36.1486 9.14355C36.3895 9.14355 36.6158 9.18262 36.8273 9.26074C37.0422 9.33561 37.2326 9.44141 37.3986 9.57812C37.5647 9.71484 37.6949 9.8776 37.7893 10.0664H37.8674V7.14648H38.717V14.5H37.8674V13.6602H37.7893C37.6818 13.8555 37.5467 14.0231 37.384 14.1631C37.2212 14.2998 37.0357 14.4056 36.8273 14.4805C36.619 14.5553 36.3928 14.5928 36.1486 14.5928ZM36.3439 13.8408C36.663 13.8408 36.938 13.7611 37.1691 13.6016C37.4003 13.4421 37.5777 13.2158 37.7014 12.9229C37.8251 12.6266 37.8869 12.2767 37.8869 11.873V11.8633C37.8869 11.4564 37.8251 11.1064 37.7014 10.8135C37.5777 10.5205 37.4003 10.2943 37.1691 10.1348C36.938 9.97526 36.663 9.89551 36.3439 9.89551C36.0249 9.89551 35.7499 9.97526 35.5188 10.1348C35.2909 10.291 35.1151 10.5156 34.9914 10.8086C34.871 11.1016 34.8107 11.4531 34.8107 11.8633V11.873C34.8107 12.2799 34.871 12.6315 34.9914 12.9277C35.1151 13.2207 35.2909 13.4469 35.5188 13.6064C35.7499 13.7627 36.0249 13.8408 36.3439 13.8408ZM45.1775 14.5928C44.9334 14.5928 44.7072 14.5553 44.4988 14.4805C44.2905 14.4056 44.1049 14.2998 43.9422 14.1631C43.7794 14.0231 43.6443 13.8555 43.5369 13.6602H43.4588V14.5H42.6092V7.14648H43.4588V10.0664H43.5369C43.6346 9.8776 43.7648 9.71484 43.9275 9.57812C44.0936 9.44141 44.2824 9.33561 44.4939 9.26074C44.7088 9.18262 44.9367 9.14355 45.1775 9.14355C45.6235 9.14355 46.0109 9.25586 46.3396 9.48047C46.6717 9.70508 46.9288 10.0208 47.1111 10.4277C47.2934 10.8346 47.3846 11.3132 47.3846 11.8633V11.873C47.3846 12.4199 47.2934 12.8984 47.1111 13.3086C46.9288 13.7155 46.6717 14.0312 46.3396 14.2559C46.0109 14.4805 45.6235 14.5928 45.1775 14.5928ZM44.9822 13.8408C45.3045 13.8408 45.5796 13.7627 45.8074 13.6064C46.0353 13.4469 46.2094 13.2207 46.3299 12.9277C46.4536 12.6315 46.5154 12.2799 46.5154 11.873V11.8633C46.5154 11.4531 46.4536 11.1016 46.3299 10.8086C46.2094 10.5156 46.0353 10.291 45.8074 10.1348C45.5796 9.97526 45.3045 9.89551 44.9822 9.89551C44.6632 9.89551 44.3881 9.97526 44.157 10.1348C43.9259 10.2943 43.7485 10.5205 43.6248 10.8135C43.5011 11.1064 43.4393 11.4564 43.4393 11.8633V11.873C43.4393 12.2767 43.5011 12.6266 43.6248 12.9229C43.7485 13.2158 43.9259 13.4421 44.157 13.6016C44.3881 13.7611 44.6632 13.8408 44.9822 13.8408ZM48.6568 16.3457C48.6015 16.3457 48.5396 16.3424 48.4713 16.3359C48.4029 16.3327 48.3395 16.3262 48.2809 16.3164V15.6182C48.3329 15.6279 48.3899 15.6344 48.4518 15.6377C48.5136 15.641 48.5738 15.6426 48.6324 15.6426C48.8733 15.6426 49.0702 15.5807 49.2232 15.457C49.3795 15.3333 49.5048 15.1201 49.5992 14.8174L49.6969 14.5049L47.7486 9.23633H48.6568L50.2779 14.0996L49.941 13.5674H50.3414L50.0045 14.0996L51.6207 9.23633H52.5143L50.4586 14.8223C50.3154 15.2161 50.164 15.5238 50.0045 15.7451C49.845 15.9665 49.6578 16.1211 49.443 16.209C49.2314 16.3001 48.9693 16.3457 48.6568 16.3457Z' fill='%230E0D0B'/%3e%3cpath d='M62.7081 13.27C62.742 13.27 62.7642 13.3057 62.7491 13.3362V13.336L61.1229 16.6083C61.0892 16.6761 60.9926 16.6759 60.959 16.6083L59.3382 13.336C59.3232 13.3057 59.3453 13.27 59.3792 13.27H62.7081Z' fill='%23EA4B4B'/%3e%3cpath d='M61.0026 9.71913C61.0194 9.68524 61.0678 9.68524 61.0845 9.71913L62.747 13.0897C62.762 13.12 62.7399 13.1557 62.706 13.1557H59.3763C59.3424 13.1557 59.3203 13.12 59.3353 13.0897L61.0026 9.71913Z' fill='%23EA4B4B'/%3e%3cpath d='M60.8426 9.63827C60.8766 9.63827 60.8987 9.6741 60.8835 9.70444L59.2164 13.0594C59.1995 13.0932 59.1513 13.0932 59.1345 13.0594L57.5001 9.77047C57.47 9.70962 57.5142 9.63827 57.5821 9.63827H60.8426Z' fill='%23EA4B4B'/%3e%3cpath d='M64.5036 9.63617C64.5715 9.63618 64.6157 9.70753 64.5855 9.76838H64.5854L62.9512 13.0573C62.9344 13.0911 62.8862 13.0912 62.8692 13.0573L61.2021 9.70235C61.187 9.672 61.2091 9.63617 61.2431 9.63617H64.5036Z' fill='%23EA4B4B'/%3e%3cpath d='M62.8284 6.18281C62.862 6.11518 62.9586 6.11518 62.9922 6.18281L64.5855 9.38969C64.6157 9.45054 64.5715 9.52189 64.5036 9.52189H61.2431C61.2091 9.52189 61.187 9.48605 61.2021 9.45571L62.8283 6.18265L62.8284 6.18281Z' fill='%23EA4B4B'/%3e%3cpath d='M62.3131 6.13196C62.381 6.13196 62.4252 6.20331 62.3951 6.26416C62.154 6.74935 61.9128 7.23455 61.6718 7.71975H61.6716C61.4225 8.22125 61.1733 8.72259 60.9242 9.22409C60.9074 9.25799 60.859 9.25799 60.8422 9.22409L60.6305 8.79587C60.6275 8.78957 60.6259 8.78263 60.6259 8.77553V6.22349C60.6259 6.17297 60.6668 6.13196 60.7173 6.13196H62.3131Z' fill='%23EA4B4B'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M74.8537 10.0096C75.2721 10.0096 75.654 10.1125 75.9993 10.3184C76.3513 10.5177 76.6303 10.8032 76.8361 11.1751C77.0487 11.547 77.1549 11.9953 77.1549 12.52V12.6495C77.1549 13.1675 77.052 13.6158 76.8461 13.9943C76.6402 14.3729 76.3613 14.6618 76.0093 14.861C75.664 15.0603 75.2788 15.1599 74.8537 15.1599C74.515 15.1599 74.2261 15.1134 73.9871 15.0204C73.7546 14.9341 73.5653 14.8212 73.4192 14.6817C73.2731 14.5423 73.1602 14.3995 73.0805 14.2534H72.941V16.9659L72.1541 16.0013V10.1491H72.9211V10.956H73.0352C73.2729 10.6733 73.3893 10.4911 73.6683 10.2985C73.9538 10.1059 74.349 10.0096 74.8537 10.0096ZM74.6445 10.7069C74.1464 10.7069 73.7347 10.8696 73.4092 11.195C73.0905 11.5138 72.9311 11.9621 72.9311 12.5399V12.6296C72.9311 13.2074 73.0905 13.659 73.4092 13.9844C73.7347 14.3032 74.1464 14.4626 74.6445 14.4626C75.1492 14.4626 75.5577 14.3032 75.8698 13.9844C76.1886 13.659 76.348 13.2074 76.348 12.6296V12.5399C76.348 11.9621 76.1886 11.5138 75.8698 11.195C75.5577 10.8696 75.1492 10.7069 74.6445 10.7069Z' fill='%230E0D0B'/%3e%3cpath d='M78.5848 11.9583L78.5555 15.4596L77.7681 14.4846V10.9583L78.5848 11.9583Z' fill='%230E0D0B'/%3e%3cpath d='M101.588 10.2986H102.444L103 10.986H101.588V10.9867H100.802L101.588 11.9623V14.1937C101.588 14.3929 101.685 14.4926 101.877 14.4926H102.379L102.928 15.17H101.668C101.389 15.17 101.173 15.0936 101.021 14.9409C100.874 14.7881 100.801 14.5789 100.801 14.3133V10.986H99.8799L99.3217 10.2986H100.801V9.13501H101.588V10.2986Z' fill='%230E0D0B'/%3e%3cpath d='M69.0133 7.90764C69.4848 7.90764 69.9065 7.99068 70.2784 8.15671C70.6569 8.3161 70.9525 8.55517 71.165 8.87395C71.3842 9.18609 71.4938 9.58126 71.4938 10.0594V10.4778H70.667V10.0594C70.667 9.72072 70.5939 9.44842 70.4477 9.24254C70.3083 9.03666 70.1124 8.88392 69.86 8.7843C69.6143 8.68469 69.332 8.63487 69.0133 8.63487C68.555 8.63487 68.1864 8.7378 67.9075 8.94367C67.6286 9.14291 67.4891 9.4285 67.4891 9.80041C67.4891 10.0461 67.5488 10.2453 67.6684 10.3981C67.7879 10.5508 67.9573 10.677 68.1764 10.7767C68.3956 10.8696 68.658 10.9527 68.9635 11.0257L69.4815 11.1552C69.8866 11.2416 70.2485 11.3611 70.5673 11.5138C70.8927 11.6599 71.1517 11.8625 71.3443 12.1215C71.5369 12.3739 71.6332 12.706 71.6332 13.1177C71.6332 13.5295 71.5303 13.8881 71.3244 14.1936C71.1185 14.4991 70.8263 14.7382 70.4477 14.9109C70.0758 15.0769 69.6375 15.1599 69.1328 15.1599C68.6281 15.1599 68.1765 15.0702 67.778 14.8909C67.3795 14.7116 67.0641 14.4426 66.8316 14.084C66.6058 13.7187 66.4929 13.2638 66.4929 12.7192V12.51H67.3197V12.7192C67.3197 13.297 67.4891 13.7287 67.8278 14.0143C68.1665 14.2932 68.6015 14.4327 69.1328 14.4327C69.6774 14.4327 70.0924 14.3098 70.378 14.0641C70.6636 13.8183 70.8064 13.5095 70.8064 13.1376C70.8064 12.8786 70.74 12.6727 70.6072 12.52C70.481 12.3673 70.3017 12.2444 70.0692 12.1514C69.8368 12.0518 69.5645 11.9655 69.2523 11.8924L68.7343 11.7629C68.3292 11.6566 67.9706 11.5271 67.6584 11.3744C67.3463 11.2216 67.1006 11.0224 66.9213 10.7767C66.7486 10.5243 66.6623 10.2022 66.6623 9.81035C66.6623 9.41852 66.7585 9.07981 66.9511 8.79424C67.1504 8.50866 67.426 8.28953 67.778 8.13678C68.1366 7.98404 68.5484 7.90764 69.0133 7.90764Z' fill='%230E0D0B'/%3e%3cpath d='M81.6544 10.0096C82.1193 10.0096 82.5145 10.0959 82.8399 10.2686C83.1719 10.4412 83.431 10.6704 83.6169 10.956C83.8095 11.2415 83.9324 11.5471 83.9855 11.8725L83.2185 12.0318C83.1853 11.7928 83.1056 11.5736 82.9794 11.3744C82.8598 11.1752 82.6905 11.0158 82.4713 10.8962C82.2521 10.7767 81.9832 10.7169 81.6644 10.7169C81.339 10.7169 81.0468 10.7899 80.7877 10.936C80.5354 11.0821 80.3328 11.2914 80.1801 11.5637C80.034 11.836 79.9609 12.1614 79.9609 12.5399V12.6296C79.9609 13.0081 80.034 13.3335 80.1801 13.6058C80.3328 13.8781 80.5354 14.0873 80.7877 14.2334C81.0468 14.3795 81.339 14.4526 81.6644 14.4526C82.1492 14.4526 82.5178 14.3264 82.7702 14.0741C83.0292 13.8217 83.1886 13.5095 83.2483 13.1376L84.0254 13.307C83.9523 13.6257 83.8195 13.9279 83.6269 14.2135C83.4343 14.4991 83.172 14.7282 82.8399 14.9009C82.5145 15.0735 82.1193 15.1599 81.6544 15.1599C81.1829 15.1599 80.7579 15.0603 80.3793 14.861C80.0074 14.6551 79.7119 14.363 79.4927 13.9844C79.2802 13.6059 79.1739 13.1575 79.1739 12.6395V12.5299C79.1739 12.0053 79.2802 11.557 79.4927 11.1851C79.7119 10.8066 80.0074 10.5177 80.3793 10.3184C80.7579 10.1126 81.1829 10.0096 81.6544 10.0096Z' fill='%230E0D0B'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M86.7515 10.0096C87.2097 10.0096 87.6149 10.1092 87.9668 10.3084C88.3188 10.501 88.5944 10.78 88.7937 11.1452C88.9929 11.5105 89.0925 11.9389 89.0925 12.4304V12.7889H85.1177C85.1377 13.3136 85.3071 13.7254 85.6258 14.0243C85.9446 14.3165 86.3431 14.4626 86.8212 14.4626C87.2396 14.4626 87.5617 14.3663 87.7875 14.1737C88.0133 13.9811 88.186 13.752 88.3056 13.4863L88.983 13.815C88.8833 14.0209 88.7439 14.2268 88.5646 14.4327C88.3919 14.6386 88.1628 14.8113 87.8772 14.9507C87.5983 15.0902 87.2396 15.1599 86.8013 15.1599C86.3099 15.1599 85.8782 15.057 85.5063 14.8511C85.1344 14.6386 84.8455 14.343 84.6396 13.9645C84.4337 13.5859 84.3307 13.1476 84.3307 12.6495V12.5299C84.3307 12.0252 84.4337 11.5836 84.6396 11.205C84.8455 10.8265 85.1311 10.5342 85.4963 10.3284C85.8616 10.1159 86.28 10.0096 86.7515 10.0096ZM86.7515 10.7069C86.3066 10.7069 85.9413 10.8331 85.6557 11.0855C85.3701 11.3378 85.1941 11.6898 85.1277 12.1414H88.2956C88.269 11.6898 88.113 11.3378 87.8274 11.0855C87.5485 10.8331 87.1898 10.7069 86.7515 10.7069Z' fill='%230E0D0B'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M97.1624 10.0096C97.6207 10.0096 98.0258 10.1092 98.3778 10.3084C98.7298 10.501 99.0054 10.78 99.2046 11.1452C99.4039 11.5105 99.5035 11.9389 99.5035 12.4304V12.7889H95.5287C95.5487 13.3136 95.718 13.7254 96.0368 14.0243C96.3555 14.3165 96.754 14.4626 97.2322 14.4626C97.6505 14.4626 97.9727 14.3663 98.1985 14.1737C98.4243 13.9811 98.5969 13.752 98.7165 13.4863L99.3939 13.815C99.2943 14.0209 99.1548 14.2268 98.9755 14.4327C98.8028 14.6386 98.5737 14.8113 98.2881 14.9507C98.0092 15.0902 97.6506 15.1599 97.2123 15.1599C96.7208 15.1599 96.2892 15.057 95.9172 14.8511C95.5453 14.6386 95.2564 14.343 95.0505 13.9645C94.8446 13.5859 94.7417 13.1476 94.7417 12.6495V12.5299C94.7417 12.0252 94.8446 11.5836 95.0505 11.205C95.2564 10.8265 95.542 10.5342 95.9073 10.3284C96.2725 10.1158 96.6909 10.0096 97.1624 10.0096ZM97.1624 10.7069C96.7175 10.7069 96.3522 10.8331 96.0666 11.0855C95.7811 11.3378 95.6051 11.6898 95.5387 12.1414H98.7066C98.68 11.6898 98.5239 11.3378 98.2383 11.0855C97.9594 10.8331 97.6008 10.7069 97.1624 10.7069Z' fill='%230E0D0B'/%3e%3cpath d='M92.2484 10.0594C92.6137 10.0594 92.9391 10.1358 93.2247 10.2885C93.5169 10.4413 93.7494 10.6671 93.9221 10.966C94.0947 11.2648 94.1811 11.6334 94.1811 12.0717V15.1458H93.394V12.1315C93.394 11.6467 93.2712 11.2947 93.0255 11.0755C92.7864 10.8564 92.461 10.7468 92.0492 10.7468C91.5777 10.7468 91.1925 10.8995 90.8936 11.205C90.6014 11.5105 90.4553 11.9655 90.4553 12.5698V15.1458H89.6683V10.1491H90.4354V10.9582H90.5361C90.7355 10.7018 90.8604 10.5342 91.1128 10.3483C91.3718 10.1557 91.7503 10.0594 92.2484 10.0594Z' fill='%230E0D0B'/%3e%3cpath d='M78.5932 10.9581H77.7681V10.1514H78.6L78.5932 10.9581Z' fill='%230E0D0B'/%3e%3c/svg%3e";const Yr=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(","),rn=({isOpen:e,onClose:t,title:n,subtitle:s,children:o,overlayContent:r,overlayDimmed:i=!0,styles:l,theme:d,maxWidth:c="522px",dark:m,footerLinkText:p,bannerSrc:f,bannerAlt:h,closeOnBackdropClick:x=!1})=>{const{theme:b,dark:y,dk:w,palette:S}=g.useSpiceBrand(l,m),v=m??y,k=d||b,C=l?.fontFamily||k.typography.fontFamily||g.font.ui,E=l?.primaryColor||k.colors.primary,F=u.useRef(null),B=u.useRef(null),j=u.useRef(null),T=u.useId(),[R,D]=u.useState(!1),[M,W]=u.useState(!1),q=u.useRef(t);if(u.useEffect(()=>{q.current=t},[t]),u.useEffect(()=>{if(!e){W(!1);return}B.current=document.activeElement;const N=document.body.style.overflow;document.body.style.overflow="hidden";const H=requestAnimationFrame(()=>{const U=requestAnimationFrame(()=>W(!0));j.current=U}),V=()=>{const U=F.current;U&&(U.querySelectorAll(Yr)[0]??U).focus({preventScroll:!0})},G=U=>{if(U.key==="Escape"){U.stopPropagation(),q.current();return}if(U.key!=="Tab")return;const L=F.current;if(!L)return;const O=Array.from(L.querySelectorAll(Yr)).filter(se=>!se.hasAttribute("aria-hidden"));if(O.length===0){U.preventDefault(),L.focus();return}const ee=O[0],ue=O[O.length-1],re=document.activeElement;U.shiftKey&&re===ee?(U.preventDefault(),ue.focus()):!U.shiftKey&&re===ue&&(U.preventDefault(),ee.focus())},J=requestAnimationFrame(V);return document.addEventListener("keydown",G),()=>{cancelAnimationFrame(J),cancelAnimationFrame(H),j.current&&cancelAnimationFrame(j.current),document.removeEventListener("keydown",G),document.body.style.overflow=N;const U=B.current;U&&typeof U.focus=="function"&&U.focus({preventScroll:!0})}},[e]),!e)return null;const z=!!f&&!R,X=h??"";return a.jsx("div",{onMouseDown:N=>{x&&N.target===N.currentTarget&&q.current()},style:{position:"fixed",inset:0,backgroundColor:v?"rgba(0,0,0,0.72)":"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",padding:"clamp(16px, 4vw, 48px)",zIndex:g.z.modal,opacity:M?1:0,transition:`opacity ${g.duration.normal} ${g.easing.out}`},children:a.jsx("div",{ref:F,role:"dialog","aria-modal":"true","aria-labelledby":T,tabIndex:-1,style:{backgroundColor:S.shellBorder,borderRadius:"12px",padding:"5px",width:"100%",maxWidth:c,boxSizing:"border-box",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.4)",outline:"none",transform:M?"scale(1)":"scale(0.96)",transition:`transform ${g.duration.slow} ${g.easing.out}`,display:"flex",flexDirection:"column",maxHeight:"100%"},children:a.jsxs("div",{style:{backgroundColor:S.shell,border:`1px solid ${S.shellInnerBorder}`,borderRadius:"9px",width:"100%",padding:"0",display:"flex",flexDirection:"column",position:"relative",flex:"0 1 auto",minHeight:0,overflowY:"auto",overflowX:"hidden"},children:[r&&i&&a.jsx("div",{style:{position:"absolute",inset:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:5,pointerEvents:"none",borderRadius:"12px"},"aria-hidden":"true"}),z&&a.jsxs("div",{style:{position:"relative",width:"100%"},children:[a.jsx("img",{src:f,style:{width:"100%",height:"auto",display:"block",borderRadius:"6px 6px 0 0"},alt:X,"aria-hidden":X===""?"true":void 0,onError:()=>D(!0)}),a.jsx("button",{type:"button",onClick:t,"aria-label":"Close dialog",style:{position:"absolute",top:"8px",right:"8px",minWidth:"44px",minHeight:"44px",color:S.textPrimary,padding:"8px",backgroundColor:"transparent",borderRadius:"9999px",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1},children:a.jsx(rs,{size:28,strokeWidth:2.5})})]}),a.jsxs("div",{style:{padding:"28px 28px 0 28px",position:"relative"},children:[!z&&a.jsx("button",{type:"button",onClick:t,"aria-label":"Close dialog",style:{position:"absolute",top:"10px",right:"10px",minWidth:"44px",minHeight:"44px",color:S.textSecondary,padding:"10px",backgroundColor:"transparent",borderRadius:"50%",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.2s",fontSize:"18px",fontWeight:"600"},onMouseEnter:N=>{N.currentTarget.style.backgroundColor=v?`${E}1a`:"#f3f4f6"},onMouseLeave:N=>{N.currentTarget.style.backgroundColor="transparent"},children:a.jsx(rs,{size:24,strokeWidth:2.4})}),a.jsx("h2",{id:T,style:{fontSize:"22px",fontWeight:"700",color:S.textPrimary,margin:"0",fontFamily:C,lineHeight:"1.12"},children:n})]}),s&&a.jsx("div",{style:{padding:"11px 28px 13px 28px",fontSize:"12px",color:S.textSecondary,margin:"0",lineHeight:"1.35",fontFamily:C,borderBottom:v?`1px solid ${w.cardBorder}`:"1px solid #cdcfd1"},children:s}),o,a.jsxs("div",{style:{padding:"12px 28px",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("img",{src:wo,alt:"","aria-hidden":"true",width:108,height:22,decoding:"async",style:{width:"108px",height:"22px",opacity:v?.85:1,filter:v?"brightness(0) invert(1)":"none",margin:0,display:"block"}}),a.jsx("a",{href:"https://spiceflow-docs.spicenet.io",target:"_blank",rel:"noopener noreferrer",style:{fontSize:"10px",color:S.textSecondary,textDecoration:"none",display:"flex",alignItems:"center",gap:"4px",fontFamily:C,lineHeight:"1"},children:a.jsx("span",{style:{color:E,textDecoration:"underline",fontWeight:"500"},children:p??"Learn more \u2192"})})]}),r]})})})};var Gr="data:image/svg+xml,%3csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.51484 1.22476C5.04689 0.494255 5.87167 0 6.83333 0C7.79352 0 8.62302 0.493038 9.15721 1.22447C10.0512 1.08473 10.9879 1.32154 11.6665 2.00014C12.3456 2.67921 12.5823 3.61677 12.4419 4.51135C13.1714 5.04616 13.6667 5.87042 13.6667 6.83333C13.6667 7.79624 13.1714 8.62051 12.4419 9.15532C12.5823 10.0499 12.3456 10.9875 11.6665 11.6665C10.986 12.3471 10.049 12.5769 9.15858 12.4403C8.62445 13.1728 7.79434 13.6667 6.83333 13.6667C5.86959 13.6667 5.04474 13.1705 4.50996 12.44C3.619 12.5772 2.68116 12.3475 2.00014 11.6665C1.31939 10.9858 1.08903 10.0476 1.23037 9.15532C0.501138 8.62162 0 7.79824 0 6.83333C0 5.86843 0.501137 5.04504 1.23037 4.51135C1.08903 3.61904 1.31939 2.68089 2.00014 2.00014C2.67986 1.32042 3.61766 1.08457 4.51484 1.22476ZM9.20928 5.95387C9.51334 5.74624 9.59152 5.33144 9.38389 5.02737C9.17626 4.72331 8.76145 4.64514 8.45739 4.85277L8.3995 4.89229C7.48372 5.51764 6.69012 6.30153 6.05487 7.20477L5.30449 6.45518C5.044 6.19497 4.62189 6.1952 4.36168 6.45569C4.10147 6.71618 4.10169 7.13829 4.36218 7.3985L5.7 8.73489C5.84693 8.88167 6.05387 8.95158 6.25971 8.924C6.46555 8.89641 6.64677 8.77448 6.74987 8.5942C7.34322 7.55668 8.16436 6.6674 9.1514 5.9934L9.20928 5.95387Z' fill='%23EA4B4B'/%3e%3c/svg%3e",uc="data:image/png;base64,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",pc="data:image/png;base64,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";const fc=({size:e=20,active:t=!1,dark:n=!1})=>a.jsxs("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[a.jsx("rect",{x:"2",y:"4",width:"16",height:"2",rx:"1",fill:t?n?"#e5e7eb":"#111827":n?"#9ca3af":"#374151"}),a.jsx("rect",{x:"4",y:"9",width:"12",height:"2",rx:"1",fill:t?n?"#e5e7eb":"#111827":"#9ca3af"}),a.jsx("rect",{x:"6",y:"14",width:"8",height:"2",rx:"1",fill:t?n?"#e5e7eb":"#111827":"#9ca3af"})]}),Zr=({checked:e,primaryColor:t="#ef4444",dark:n=!1})=>a.jsx("div",{style:{width:"18px",height:"18px",borderRadius:"4px",border:e?"none":`2px solid ${n?"#4b5563":"#d1d5db"}`,backgroundColor:e?t:"transparent",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:g.transition.interactive},children:e&&a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:a.jsx("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),mc=e=>[e.chainId,e.symbol.trim().toLowerCase(),e.name.trim().toLowerCase()].join(":"),hc=e=>{const t=new Map;for(const n of e){const s=mc(n),o=t.get(s);if(!o){t.set(s,n);continue}const r=o.balance>0n,i=n.balance>0n;(!r&&i||n.balanceUsd>o.balanceUsd||n.balance>o.balance)&&t.set(s,n)}return Array.from(t.values())},gc=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onTokenSelect:s,walletAddress:o,supportedChainIds:r,network:i,prefetchedAssets:l,styles:d,dark:c})=>{const[m,p]=u.useState(""),[f,h]=u.useState(null),[x,b]=u.useState(null),[y,w]=u.useState(!1),[S,v]=u.useState(new Set),[k,C]=u.useState([]),E=u.useContext(g.SpiceFlowProviderContext),F=i||E?.network||"testnet",B=E?.allowedTokens,j=!!E?.isWhitelistGateActive,{dark:T,primaryColor:R,dk:D}=g.useSpiceBrand(d,c),M=T?D.cardBg:"white",W=T?`${R}55`:"#F4A5A5",q=T?"0 4px 12px rgba(0, 0, 0, 0.4)":"0 4px 12px rgba(0, 0, 0, 0.15)",z=T?D.hoverBg:"#E9E9E9",X=T?D.hoverBg:"#f9fafb",N=T?D.textPrimary:"#374151",H=T?D.textPrimary:"#111827",V=T?D.textSecondary:"#9ca3af",G=T?`${R}22`:"#FBDBDB",J=T?`${R}55`:"#F4A5A5",U=u.useMemo(()=>r||E?.supportedChainIds||A.getChainIdsByNetwork(F),[r,E?.supportedChainIds,F]),L=u.useMemo(()=>U.map(Q=>{const te=g.getChainConfig(Q);return te?{id:Q,name:te.displayName,icon:Sn[Q]||ns}:null}).filter(Boolean),[U]),O=u.useMemo(()=>{const Q=new Set,te=new Set;for(const be of U){const $=g.getChainConfig(be);if($){Q.add($.nativeCurrency?.symbol?.toUpperCase()||"ETH");for(const Se of $.supportedTokens||[])Q.add(Se.symbol.toUpperCase()),te.add(Se.address.toLowerCase())}}return{symbols:Q,addresses:te}},[U]),ee=l===void 0,{assets:ue,loading:re}=mn({address:ee?o:void 0,supportedChains:U,fetchBalances:fn,enabled:e&&ee&&!!o,refreshInterval:e?5e3:0}),se=l??(ee?ue:[]),ie=l===null||ee&&re,ce=u.useMemo(()=>{if(j)return[];if(!se)return[];let Q=se.filter(te=>te.isNative?!0:O.symbols.has(te.symbol.toUpperCase())||O.addresses.has(te.address.toLowerCase()));return B&&B.length>0&&(Q=Q.filter(te=>B.includes(te.symbol.toLowerCase())||te.isNative&&B.includes("native"))),Q},[se,O,B,j]);u.useEffect(()=>{if(!ce||ce.length===0){C([]);return}const Q=ce.filter($=>$.balanceUsd===0&&$.balanceFormatted>0).map($=>$.symbol),te=Array.from(new Set(Q));if(te.length===0){C(ce);return}let be=!1;return bo(te).then($=>{be||C(oc(ce,$))}),()=>{be=!0}},[ce]);const _=u.useMemo(()=>{let Q=k.filter(te=>te.balanceUsd>=.01||te.balanceFormatted>=1e-4||te.balanceFormatted===0);if(S.size>0&&(Q=Q.filter(te=>S.has(te.chainId))),m.trim()){const te=m.toLowerCase();Q=Q.filter(be=>be.name.toLowerCase().includes(te)||be.symbol.toLowerCase().includes(te)||be.address.toLowerCase().includes(te))}return Q=hc(Q),Q.sort((te,be)=>{const $=te.balanceFormatted>0?1:0,Se=be.balanceFormatted>0?1:0;return Se!==$?Se-$:be.balanceUsd!==te.balanceUsd?be.balanceUsd-te.balanceUsd:be.balanceFormatted-te.balanceFormatted}),Q},[k,m,S]),Ce=Q=>`${Q.chainId}-${Q.address}`;u.useEffect(()=>{const Q=document.createElement("link");return Q.href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@100;200;300;400;500;600;700&display=swap",Q.rel="stylesheet",document.head.appendChild(Q),()=>{document.head.removeChild(Q)}},[]),u.useEffect(()=>{e||(p(""),h(null),w(!1),v(new Set))},[e]);const P=Q=>{s(Q)},ae=Q=>{v(te=>{const be=new Set(te);return be.has(Q)?be.delete(Q):be.add(Q),be})},he=()=>{v(new Set)},ne=S.size===0;return a.jsxs(rn,{isOpen:e,onClose:t,title:"Select a Token",bannerSrc:pc,bannerAlt:"Select token banner",styles:d,dark:T,closeOnBackdropClick:n,children:[a.jsx("div",{style:{padding:"20px 20px"},children:a.jsx(uo,{value:m,onChange:p,ariaLabel:"Search tokens",placeholder:"Search token name, symbol or address",dark:T,styles:d,endAdornment:a.jsxs("div",{style:{position:"relative",flexShrink:0},children:[a.jsx("button",{onClick:()=>w(Q=>!Q),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"5px",borderRadius:"3px",backgroundColor:y||!ne?z:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},children:a.jsx(fc,{size:20,active:!ne,dark:T})}),y&&a.jsxs("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,backgroundColor:M,borderRadius:"8px",border:`1px solid ${W}`,boxShadow:q,padding:"8px",minWidth:"220px",zIndex:100},children:[a.jsxs("button",{onClick:he,style:{width:"100%",display:"flex",alignItems:"center",gap:"10px",padding:"8px",borderRadius:"6px",backgroundColor:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},onMouseEnter:Q=>Q.currentTarget.style.backgroundColor=X,onMouseLeave:Q=>Q.currentTarget.style.backgroundColor="transparent",children:[a.jsx(Zr,{checked:ne,primaryColor:R,dark:T}),a.jsx("img",{src:uc,alt:"All Networks",loading:"lazy",decoding:"async",width:20,height:20,style:{width:"20px",height:"20px",borderRadius:"4px",objectFit:"cover"}}),a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:N},children:"ALL NETWORKS"})]}),L.map(Q=>a.jsxs("button",{onClick:()=>ae(Q.id),style:{width:"100%",display:"flex",alignItems:"center",gap:"10px",padding:"8px",borderRadius:"6px",backgroundColor:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},onMouseEnter:te=>te.currentTarget.style.backgroundColor=X,onMouseLeave:te=>te.currentTarget.style.backgroundColor="transparent",children:[a.jsx(Zr,{checked:S.has(Q.id),primaryColor:R,dark:T}),a.jsx("img",{src:Q.icon,alt:Q.name,loading:"lazy",decoding:"async",width:20,height:20,style:{width:"20px",height:"20px",borderRadius:"50%"}}),a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:N},children:Q.name.toUpperCase()})]},Q.id))]})]})})}),a.jsxs("div",{style:{padding:"0 32px 20px",display:"flex",flexDirection:"column",gap:"8px",maxHeight:"400px",overflowY:"auto"},children:[ie&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:g.font.mono,fontSize:"13px",color:V},children:"Loading balances..."}),!ie&&_.length===0&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:g.font.mono,fontSize:"13px",color:V},children:"No tokens found"}),_.map(Q=>{const te=Ce(Q),be=f===te,$=x===te,Se=g.getChainConfig(Q.chainId)?.displayName||`Chain ${Q.chainId}`;return a.jsxs("button",{onClick:()=>P(Q),onMouseEnter:()=>b(te),onMouseLeave:()=>b(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:be?G:"transparent",border:be||$?`1px solid ${J}`:"1px solid transparent",cursor:"pointer",transition:g.transition.interactive},children:[a.jsx("div",{style:{flexShrink:0},children:a.jsx(go,{symbol:Q.symbol,logoURI:Q.logoURI,size:40})}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"2px",flex:1,minWidth:0},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"15px",fontWeight:500,letterSpacing:"0.4px",color:H,textAlign:"left"},children:Q.name}),a.jsx("img",{src:Gr,alt:"","aria-hidden":"true",loading:"lazy",decoding:"async",width:14,height:14,style:{width:"14px",height:"14px"}})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[Sn[Q.chainId]&&a.jsx("img",{src:Sn[Q.chainId],alt:"",loading:"lazy",decoding:"async",width:14,height:14,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsxs("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:400,color:V,textAlign:"left"},children:[Q.symbol," \xB7 ",Se]})]})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"2px",flexShrink:0},children:[Q.balanceUsd>0&&a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"16px",fontWeight:600,color:H},children:g.formatUsd(Q.balanceUsd)}),a.jsxs("span",{style:{fontFamily:g.font.mono,fontSize:"12px",fontWeight:400,color:V},children:[g.formatBalance(Q.balanceFormatted)," ",Q.symbol]})]})]},te)})]})]})},Xr=({dk:e,dark:t,message:n,buttonLabel:s,onAction:o,disabled:r=!1})=>a.jsxs("div",{style:{padding:"12px",backgroundColor:e.warningBg,borderRadius:"8px",border:`1px solid ${e.warningBorder}`},children:[a.jsx("p",{style:{margin:"0 0 10px 0",color:e.warningText,fontSize:"14px"},children:n}),a.jsx("button",{onClick:o,disabled:r,style:{width:"100%",padding:"8px 12px",borderRadius:"6px",border:`1px solid ${t?e.warningBorder:"#fbbf24"}`,backgroundColor:t?e.cardBg:"white",cursor:r?"not-allowed":"pointer",fontWeight:600,fontSize:"13px",color:e.warningText,opacity:r?.6:1},children:s})]}),Jr=({dk:e,dark:t,borderRadius:n,children:s})=>a.jsx("div",{style:{padding:"8px 12px",marginBottom:"8px",backgroundColor:t?e.warningBg:"#fffbeb",border:`1px solid ${e.warningBorder}`,borderRadius:n,fontSize:"12px",color:e.warningText,lineHeight:"1.4"},children:s});var xc="data:image/png;base64,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";const hn=e=>new Promise(t=>setTimeout(t,e)),Co=e=>{const t=(e.id||"").toLowerCase(),n=(e.name||"").toLowerCase();return t.startsWith("io.privy.wallet")||n.includes("privy wallet")},yc=({dark:e,dk:t,primaryColor:n,disabled:s,onError:o})=>{const[r,i]=u.useState(!1),{connectWallet:l}=Or.useConnectWallet({onSuccess:()=>{i(!1)},onError:d=>{i(!1),o(g.sanitizeError(d,"Failed to connect wallet."))}});return a.jsxs("button",{onClick:()=>{s||r||(i(!0),l({walletChainType:"ethereum-only"}))},disabled:s||r,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:r?e?t.hoverBg:"#f3f4f6":"transparent",border:`2px solid ${e?`${n}33`:`${n}55`}`,cursor:s||r?"not-allowed":"pointer",opacity:s?.6:1,transition:g.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:e?t.cardBg:"#f3f4f6"},children:a.jsx("img",{src:ss.metamask,alt:"Browser wallet",style:{width:"26px",height:"26px",objectFit:"contain"}})}),a.jsx("span",{className:"ibm-plex-mono",style:{fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:t.textPrimary,flex:1,textAlign:"left",fontFamily:g.font.mono},children:r?"Opening wallet picker...":"MetaMask / Browser Wallet"})]})},bc=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onWalletSelect:s,onContinue:o,requiredChainId:r,styles:i})=>{const{dark:l,primaryColor:d,dk:c,theme:m}=g.useSpiceBrand(i),p=u.useContext(g.SpiceFlowProviderContext),[f,h]=u.useState(null),[x,b]=u.useState(!1),[y,w]=u.useState(null),[S,v]=u.useState(!1),[k,C]=u.useState(null),[E,F]=u.useState(!1);u.useEffect(()=>{e||(w(null),v(!1),b(!1),C(null))},[e]);const{address:B,chain:j,connector:T,isConnected:R}=pn.useAccount(),D=p?.provider==="privy"&&T&&Co(T)?void 0:B,M=R&&!!D,{connectors:W,connect:q}=pn.useConnect(),{disconnect:z}=pn.useDisconnect(),{switchChainAsync:X}=pn.useSwitchChain(),{reconnect:N}=pn.useReconnect(),H=u.useRef(!1),V=A.getChainIdsByNetwork(p?.network||"testnet");u.useEffect(()=>{e&&!M&&!H.current&&N()},[e,M,N]),u.useEffect(()=>{e||(H.current=!1)},[e]);const G=u.useRef(j);u.useEffect(()=>{G.current=j},[j]);const J=(r?g.getChainConfig(r):null)?.displayName||j?.name||`Chain ${j?.id||r}`,U=P=>P.type==="announced"||typeof P.ready=="boolean"&&P.ready?!0:P.type==="injected"?typeof window<"u"&&!!window.ethereum:!0,L=W.filter(P=>{const ae=P.name.toLowerCase(),he=(P.id||"").toLowerCase();return p?.provider==="privy"&&Co(P)||["safe"].includes(P.type)?!1:P.type==="walletConnect"?!!P?.options?.projectId:P.type==="announced"?!0:P.type==="injected"||["metamask","rabby","phantom","coinbase","trust","rainbow"].some(ne=>ae.includes(ne)||he.includes(ne))?U(P):!1}),O=async P=>{if(!(S||x))try{if(v(!0),C(P.uid),w(null),await q({connector:P}),await hn(500),s&&s(P.id),r){b(!0);try{j?.id!==r&&(await X({chainId:r}),await ue(r)||w("Please switch to the correct network in your wallet to continue."))}catch(ae){console.error("Chain switch error:",ae),w(g.describeChainSwitchError(ae))}finally{b(!1)}}await hn(800)}catch(ae){console.error("Connection error:",ae),g.isUserRejection(ae)?w("Connection rejected. Please try again."):w(g.sanitizeError(ae,"Failed to connect wallet."))}finally{v(!1),C(null)}},ee=P=>{if(P.icon)return P.icon;const ae=(P.name||"").toLowerCase();for(const[he,ne]of Object.entries(ss))if(ae.includes(he.toLowerCase()))return ne;if(!Co(P)&&(P.type==="injected"||P.type==="announced")&&typeof window<"u"&&window.ethereum){const he=window.ethereum;if(he.isMetaMask)return ss.metamask;if(he.isRabby)return ss.rabby;if(he.isPhantom)return ss.phantom}return null},ue=async P=>{let ae=0;const he=20;for(;ae<he;){if(await hn(100),G.current?.id===P)return w(null),!0;ae++}return!1},re=async P=>{b(!0),w(null);try{await X({chainId:P}),await ue(P)||w("Unable to switch to the correct network. Please switch manually in your wallet to continue.")}catch(ae){console.error("Manual chain switch error:",ae),w(g.describeChainSwitchError(ae))}finally{b(!1)}},se=async P=>{x||(F(!1),await re(P))},ie=async()=>{if(!x){if(!r){F(P=>!P);return}await re(r)}},ce=async()=>{H.current=!0;try{await z()}finally{w(null),v(!1),b(!1),C(null),F(!1)}},_=M&&!x&&!S&&(!r||j?.id===r),Ce=M&&!x&&!S&&r&&j?.id!==r;return a.jsxs(rn,{isOpen:e,onClose:t,title:"Connect Wallet",styles:i,dark:l,bannerSrc:xc,bannerAlt:"Connect wallet banner",closeOnBackdropClick:n,children:[a.jsxs("div",{style:{padding:"0 24px 20px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"20px"},children:[y&&a.jsx(Xr,{dk:c,dark:l,message:y,buttonLabel:x?"Switching...":"Try Switch Again",onAction:ie,disabled:x}),x&&a.jsxs("div",{style:{padding:"12px",backgroundColor:l?c.infoBg:"#dbeafe",borderRadius:"8px",display:"flex",alignItems:"center",gap:"10px",marginTop:"20px"},children:[a.jsx(g.Spinner,{size:20,color:l?c.infoText:"#3b82f6"}),a.jsx("p",{style:{margin:0,color:l?c.infoText:"#1e40af",fontSize:"14px"},children:"Switching network..."})]}),M&&D?a.jsxs("div",{style:{border:`1px solid ${l?c.successBorder:"#02974F"}`,borderRadius:"8px",overflow:"hidden",marginTop:"20px"},children:[a.jsxs("div",{style:{backgroundColor:l?c.successBg:"#00FFA81C",padding:"14px 18px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("div",{style:{width:"22px",height:"22px",borderRadius:"50%",backgroundColor:"#02974F",display:"flex",alignItems:"center",justifyContent:"center",color:"white",fontSize:"14px",fontWeight:"bold"},children:"\u2713"}),a.jsx("span",{className:"ibm-plex-mono",style:{color:l?c.successText:"#02974F",fontWeight:600,fontSize:"14px",letterSpacing:"0.5px"},children:"WALLET CONNECTED"})]}),a.jsx("div",{style:{width:"38px",height:"38px",borderRadius:"50%",backgroundColor:l?c.cardBg:"#f3f4f6",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:T&&ee(T)?a.jsx("img",{src:ee(T),alt:T.name,style:{width:"24px",height:"24px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?c.textPrimary:"inherit"},children:T?.name?.charAt(0)||"W"})})]}),a.jsxs("div",{style:{padding:"18px",backgroundColor:l?c.cardBg:"white"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"14px"},children:[a.jsx("span",{className:"ibm-plex-mono",style:{color:l?c.textSecondary:"#939291",fontSize:"13px",fontWeight:500,letterSpacing:"0.3px"},children:"ADDRESS:"}),a.jsx("span",{className:"ibm-plex-mono",style:{color:l?c.textPrimary:"black",fontSize:"14px",fontWeight:600,fontFamily:g.font.mono,letterSpacing:"0.3px"},children:g.truncateAddress(D)})]}),E&&a.jsx("div",{style:{marginBottom:"12px",border:`1px solid ${l?c.inputBorder:"#E5E7EB"}`,borderRadius:"8px",overflow:"hidden",backgroundColor:c.cardBg},children:V.map(P=>{const ae=g.getChainConfig(P);if(!ae)return null;const he=j?.id===P;return a.jsxs("button",{onClick:()=>{he?F(!1):se(P)},style:{width:"100%",display:"flex",alignItems:"center",gap:"8px",padding:"10px 12px",backgroundColor:he?l?`${d}15`:`${d}10`:"transparent",border:"none",borderBottom:`1px solid ${l?c.inputBorder:"#E5E7EB"}`,cursor:he?"default":"pointer",transition:"background-color 0.15s"},onMouseEnter:ne=>{he||(ne.currentTarget.style.backgroundColor=l?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.03)")},onMouseLeave:ne=>{ne.currentTarget.style.backgroundColor=he?l?`${d}15`:`${d}10`:"transparent"},children:[a.jsx("img",{src:Sn[P]||ns,alt:ae.displayName,style:{width:"20px",height:"20px",borderRadius:"50%",objectFit:"contain"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:he?600:400,color:l?c.textPrimary:"#1f2937",fontFamily:g.font.mono},children:ae.displayName}),he&&a.jsx("span",{style:{marginLeft:"auto",fontSize:"11px",color:d,fontWeight:500},children:"Connected"})]},P)})}),a.jsxs("button",{className:"ibm-plex-mono",onClick:ce,style:{width:"100%",padding:"10px",backgroundColor:"transparent",border:`1px solid ${l?c.inputBorder:"#E5E7EB"}`,borderRadius:"6px",cursor:"pointer",fontSize:"13px",fontWeight:500,color:l?c.textSecondary:"#9CA3AF",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"16px"},children:"\u27F2"}),"DISCONNECT"]})]})]}):a.jsxs(a.Fragment,{children:[p?.provider==="privy"&&a.jsx(yc,{dark:l,dk:c,primaryColor:d,disabled:S||x,onError:w}),L.map(P=>{const ae=U(P),he=k===P.uid,ne=!ae||S||he;return a.jsxs("button",{onClick:()=>{ne||O(P)},onMouseEnter:()=>!ne&&h(P.uid),onMouseLeave:()=>h(null),disabled:ne,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:he?l?c.hoverBg:"#f3f4f6":"transparent",border:f===P.uid&&!ne?`2px solid ${l?`${d}44`:`${d}66`}`:"2px solid transparent",cursor:ne?"not-allowed":"pointer",opacity:ne?.6:1,transition:g.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:l?c.cardBg:"#f3f4f6"},children:ee(P)?a.jsx("img",{src:ee(P),alt:P.name,style:{width:"26px",height:"26px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?c.textPrimary:"inherit"},children:P.name.charAt(0)})}),a.jsxs("span",{className:"ibm-plex-mono",style:{fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:ne?l?c.inputPlaceholder:"#9ca3af":l?c.textPrimary:"#111827",flex:1,textAlign:"left",fontFamily:g.font.mono},children:[he?"Connecting...":P.name,!ae&&!he&&a.jsx("span",{style:{fontSize:"12px",marginLeft:"8px"},children:"(Not detected)"})]})]},P.uid)})]})]}),Ce&&!y&&a.jsx("div",{style:{padding:"0 24px 20px"},children:a.jsx(Xr,{dk:c,dark:l,message:`Please switch to ${J} to continue.`,buttonLabel:x?"Switching...":"Switch Network",onAction:ie,disabled:x})}),a.jsx("div",{style:{padding:"0 24px 25px"},children:a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:async()=>{_&&(await hn(300),o?await o():t())},disabled:!_,theme:m,dark:l,styles:i,children:S?"CONNECTING...":x?"SWITCHING NETWORK...":"CONTINUE"})})]})};function as(e){const t=u.useRef(0),n=u.useRef(null),s=u.useRef(e.run);s.current=e.run;const o=u.useRef(e.onSkip);o.current=e.onSkip;const r=u.useRef(e.onCleanup);r.current=e.onCleanup,u.useEffect(()=>{if(!e.shouldRun){t.current+=1,n.current?.abort(),o.current?.();return}let i=!1,l=!1;const d=async p=>{if(p&&l)return;n.current?.abort();const f=new AbortController;n.current=f;const h=++t.current;l=!0;try{await s.current({isBackground:p,isCurrent:()=>!i&&t.current===h,signal:f.signal})}finally{l=!1}},c=window.setTimeout(()=>void d(!1),e.delayMs??250),m=e.backgroundIntervalMs?window.setInterval(()=>void d(!0),e.backgroundIntervalMs):void 0;return()=>{i=!0,n.current?.abort(),clearTimeout(c),m!==void 0&&window.clearInterval(m),r.current?.()}},[e.shouldRun,e.delayMs,e.backgroundIntervalMs,...e.deps])}const vo=new Set(["WBTC","CBTC"]),$r=new Set(["btc","wbtc","wcbtc","cbtc"]);function ko(e,t){return!e||!t?!1:e===t?!0:vo.has(e)&&vo.has(t)}function Rn(e){const[t,n,s]=e.split(":");if(t!=="evm"||!n||!s)return null;const o=Number(n);if(!Number.isFinite(o))return null;const r=s.startsWith("0x")?s.toLowerCase():`0x${s.toLowerCase()}`;return{chainId:o,address:r}}function ks(e){return(e??"").trim().replace(/^test\s+/i,"").replace(/^spice/i,"").toLowerCase().replace(/[^a-z0-9]/g,"")}function wc(e){return new Set([e.receiptTokenName,e.displaySymbol,e.symbol,e.displayName,e.name].map(ks).filter(Boolean))}function Cc(e,t){const n=wc(e),s=[t.symbol,t.name,t.equivalenceGroup].map(ks);if(s.some(i=>i&&n.has(i)))return!0;const o=[...n].some(i=>$r.has(i)),r=s.some(i=>$r.has(i))||vo.has(t.equivalenceGroup??"");return o&&r}function _r(e,t,n){const s=new Set(t.map(ks).filter(Boolean)),o=r=>{if(n&&g.addressesEqual(r.address,n))return 0;const i=[r.symbol,r.name,r.equivalenceGroup].map(ks).findIndex(l=>l&&s.has(l));return i===-1?4:i+1};return[...e].sort((r,i)=>{const l=o(r)-o(i);return l!==0?l:r.address.toLowerCase().localeCompare(i.address.toLowerCase())})}function Dn(e,t){const n=e.chainTokens?Object.keys(e.chainTokens):[],s=[];for(const o of n){const r=Rn(o);if(!r||r.chainId!==t)continue;const i=r.address,l=A.getTokenByAddress(i,t);l&&(!Ss(e,i,t)&&!(e.isUniversal&&Cc(e,l))||s.some(d=>g.addressesEqual(d,i))||s.push(i))}return _r(s.map(o=>{const r=A.getTokenByAddress(o,t);return{address:o,symbol:r?.symbol,name:r?.name,equivalenceGroup:r?.equivalenceGroup}}),[e.receiptTokenName,e.displaySymbol,e.symbol,e.displayName,e.name],e.chainId===t&&!e.isUniversal?e.address:void 0).map(o=>o.address)}function Ss(e,t,n){return e.chainId===n&&g.addressesEqual(e.address,t)?!0:is(e.address,e.chainId,t,n)}async function vc(e,t){const n=g.getClientForChain(e),s=A.getEscrowContractAddress(e);return A.isNativeToken(t)?n.getBalance({address:s}):await n.readContract({address:t,abi:I.erc20Abi,functionName:"balanceOf",args:[s]})}function ea(e,t,n){const s=A.getTokensForChain(n),o=A.getTokenByAddress(e,t),r=s.find(i=>g.addressesEqual(i.address,e)&&(!A.isNativeToken(e)||t===n||ko(o?.equivalenceGroup,i.equivalenceGroup)));if(r)return r;if(o)return _r(s.filter(i=>ko(i.equivalenceGroup,o.equivalenceGroup)),[o.symbol,o.name,o.equivalenceGroup])[0]}function Qt(e,t){if(e.chainId===t)return e.address;const n=ea(e.address,e.chainId,t);return n?n.address:null}async function So(e,t,n={}){const s=Qt(e,t),o=Dn(e,t);if(o.length===0)return s;if(o.length===1)return o[0];const r=n.requiredAmount??0n,i=n.requiredAmountDecimals;if(i!==void 0&&(!Number.isInteger(i)||i<0||i>255))throw new Error("requiredAmountDecimals must be an integer between 0 and 255");const l=async d=>{const c=i===void 0?o.map(()=>0):await Promise.all(o.map(h=>g.getTokenDecimals(t,h))),m=Math.max(i??0,...c),p=r*10n**BigInt(m-(i??0)),f=o.map((h,x)=>({candidate:h,balance:(d.get(A.isNativeToken(h)?"native":h.toLowerCase())??0n)*10n**BigInt(m-c[x])})).filter(h=>h.balance>0n).sort((h,x)=>h.balance===x.balance?0:h.balance>x.balance?-1:1);return f.length===0?null:((r>0n?f.find(h=>h.balance>=p):f[0])??f[0]).candidate};try{const d=await Promise.all(o.map(async p=>({key:A.isNativeToken(p)?"native":p.toLowerCase(),value:await vc(t,p)}))),c=new Map(d.map(({key:p,value:f})=>[p,f])),m=await l(c);if(m)return m}catch{}return s}function is(e,t,n,s){const o=A.getTokenByAddress(e,t),r=A.getTokenByAddress(n,s);return o&&r?ko(o.equivalenceGroup,r.equivalenceGroup):A.isNativeToken(e)||A.isNativeToken(n)?!1:A.areEquivalent(e,n)}function As(e,t){return is(e.address,e.chainId,t.address,t.chainId)}const kc={usdc:[8453,1,42161,5115,4114],usdt:[1],btc:[4114,42161,1,5115],wbtc:[1],weth:[8453,1],eth:[8453,1,42161,4663,84532,46630],ctusd:[5115,4114],wcbtc:[5115,4114]},Sc={btc:["wcbtc","cbtc","wbtc"]};function Is(e){return e.replace(/^test\s*/i,"").replace(/^spice/i,"").trim()}function gn(e){return Is(e).toLowerCase()}function ta(e){return gn(e??"").replace(/[^a-z0-9]/g,"")}function Ao(e){const t=gn(e);return[t,...Sc[t]??[]].filter(Boolean)}function Ac(e){try{return BigInt(e.balanceAvailable||"0")}catch{return 0n}}function na(e){return Array.isArray(e.chainTokens)?e.chainTokens:Object.keys(e.chainTokens??{})}function Ic(e,t,n,s=[]){const o=g.getChainConfig(t),r=n.toLowerCase(),i=r===A.ZERO_ADDRESS.toLowerCase()?o?.nativeCurrency.decimals??18:o?.supportedTokens?.find(d=>d.address.toLowerCase()===r)?.decimals??18,l=new Set(s.map(ta).filter(Boolean));return e.reduce((d,c)=>{const m=Ac(c),p=c.decimals??i,f=A.convertAmountBetweenDecimals(m,p,i);if(na(c).some(x=>{const b=Rn(x);return b&&is(b.address,b.chainId,n,t)}))return d+f;if(l.size===0)return d;const h=ta(c.tokenName||c.receiptToken);return l.has(h)?d+f:d},0n)}function Ec(e,t){const n=new Set([...Ao(t),...Ao(Is(t))]);return[...e].sort((s,o)=>{const r=gn(s.symbol),i=gn(o.symbol),l=gn(s.name),d=gn(o.name),c=n.has(r)?0:n.has(l)?1:2,m=n.has(i)?0:n.has(d)?1:2;return c!==m?c-m:s.address.toLowerCase().localeCompare(o.address.toLowerCase())})[0]}function Fc(e){const t=e&&e.length>0?e:Object.keys(g.CHAIN_CONFIGS).map(Number).filter(Number.isFinite),n=new Map;for(const s of t){const o=g.getChainConfig(s);if(!o)continue;const r=`${s}:${A.ZERO_ADDRESS.toLowerCase()}`;n.has(r)||n.set(r,{address:A.ZERO_ADDRESS,chainId:s,symbol:o.nativeCurrency.symbol,name:o.nativeCurrency.name,decimals:o.nativeCurrency.decimals,isNative:!0,logoURI:ho[o.nativeCurrency.symbol]??o.logo});for(const i of o.supportedTokens??[]){const l=i.address.toLowerCase(),d=`${s}:${l}`;n.has(d)||n.set(d,{address:l,chainId:s,symbol:i.symbol,name:i.name,decimals:i.decimals,isNative:A.isNativeToken(l),logoURI:i.logo})}}return n}function Tc(e,t){const n=Fc(t),s=Is(e.tokenName),o=gn(e.tokenName),r=Ao(e.tokenName),i=Array.isArray(e.chainTokens)?e.chainTokens.map(x=>[x,void 0]):Object.entries(e.chainTokens??{}),l=i.map(([x])=>Rn(x)).filter(x=>x!==null),d=new Map(i.map(([x,b])=>[x,b])),c=(x,b)=>{const y=d.get(`evm:${b.chainId}:${b.address.slice(2).toLowerCase()}`);return{...x,name:typeof y?.name=="string"&&y.name.length>0?y.name:x.name,decimals:typeof y?.decimals=="number"?y.decimals:x.decimals}},m=l.map(x=>{const b=n.get(`${x.chainId}:${x.address.toLowerCase()}`);return b?c(b,x):void 0}).filter(x=>x!==void 0),p=kc[o]??[];if(p.length>0)for(const x of p){const b=m.find(y=>y.chainId===x);if(b)return b}if(m.length>0)return Ec(m,e.tokenName);const f=Array.from(n.values()).filter(x=>r.includes(gn(x.symbol))||r.includes(gn(x.name)));if(p.length>0)for(const x of p){const b=f.find(y=>y.chainId===x);if(b)return b}if(f.length>0)return f[0];const h=l[0];if(h){const x=d.get(`evm:${h.chainId}:${h.address.slice(2).toLowerCase()}`);return{address:h.address,chainId:h.chainId,symbol:s||e.tokenName,name:typeof x?.name=="string"&&x.name.length>0?x.name:s||e.tokenName,decimals:typeof x?.decimals=="number"?x.decimals:e.decimals??18,isNative:A.isNativeToken(h.address),logoURI:void 0}}}function Bc(e,t){let n;try{n=BigInt(e.balanceAvailable||"0")}catch{return null}if(n<=0n)return null;if(t?.length){const x=na(e).map(Rn).filter(b=>b!==null);if(x.length>0&&!x.some(b=>t.includes(b.chainId)))return null}const s=Tc(e,t),o=s?.decimals??e.decimals??18,r=e.decimals??o,i=A.convertAmountBetweenDecimals(n,r,o),l=s?.address??A.ZERO_ADDRESS,d=s?.chainId??0,c=Is(e.tokenName),m=s?.symbol??c,p=s?.name??c,f=parseFloat(I.formatUnits(i,o)),h=typeof e.balanceUsd=="number"?e.balanceUsd:typeof e.balanceUsd=="string"&&Number(e.balanceUsd)||0;return{address:l,symbol:m,name:p,decimals:o,chainId:d,balance:i,balanceFormatted:f,balanceUsd:h,isNative:s?.isNative??A.isNativeToken(l),logoURI:s?.logoURI,displaySymbol:e.tokenName||m,displayName:e.tokenName||p,displayChainName:"Spicenet",receiptTokenId:e.receiptToken,receiptTokenName:e.tokenName||p,receiptTokenDecimals:r,chainTokens:e.chainTokens&&!Array.isArray(e.chainTokens)?e.chainTokens:void 0,isUniversal:!0}}function jc(e,t){return(t||"").trim()||`Transaction ${e}. The transaction was rejected on-chain. This may be due to insufficient balance, price changes, or health factor constraints. Please verify your positions and try again.`}const Rc=350,Dc=2500;async function sa(e){const{actionId:t,intentIndex:n,intentId:s,stepIndex:o,maxPolls:r=48,maxExecuteAttempts:i=3,pollsBeforeRetry:l=5,maxConsecutiveStatusErrors:d=15,onStatusMessage:c,onStepUpdate:m,signal:p,chainId:f}=e;if(p?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");let h="pending",x,b,y=0,w=0,S,v;const k=new Promise((E,F)=>{S=E,v=()=>F(new g.SpiceflowError("ABORT","Execution transaction aborted"))}),C=()=>{y++,g.relayerService.executeStep(t,n,o,{action:"execute"}).then(E=>{E.transactionHash&&(x=E.transactionHash),E.status==="success"&&S({status:E.status,transactionHash:E.transactionHash})}).catch(E=>{const F=E instanceof Error?E.message:String(E);console.warn(`[execution] executeStep ${o} attempt ${y} error (will poll):`,F)})};p?.addEventListener("abort",v,{once:!0});try{C();for(let E=0;E<r;E++){const F=E===0?Rc:Dc;try{const j=await Promise.race([hn(F).then(()=>{}),k]);if(p?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const T=j??await Promise.race([g.relayerService.checkStepStatus(s,o).then(D=>D.data),k]);if(p?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");w=0,h=T.status,b=T.error;const R=T.transactionHash;R&&(x=R),m?.({status:h,transactionHash:x,error:b})}catch(j){if(j instanceof Error&&(j.name==="AbortError"||j instanceof g.SpiceflowError&&j.code==="ABORT")||(w++,w>=d))throw j;continue}if(h==="created"&&E>=y*l&&y<i&&C(),h==="reverted"||h==="error")throw new g.SpiceflowError("ON_CHAIN_REVERT",jc(h,b),{status:h,txHash:x,actionId:t,intentId:s,stepId:o,chainId:f});if(h==="success"||h==="completed")return x;let B="Waiting for solver...";h==="executing"?B="Transaction executing...":h==="submitted"?B="Transaction submitted...":h==="created"&&(B="Waiting for relayer..."),c?.(B,x)}throw new g.SpiceflowError("POLLING_EXHAUSTED",`Transaction is still processing (status: ${h}). This doesn't mean it failed \u2014 the solver may still complete it. Check your positions in a few minutes, or try refreshing the page.`,{actionId:t,intentId:s,stepId:o,lastStatus:h,pollAttempts:r,maxPolls:r,txHash:x})}finally{p?.removeEventListener("abort",v)}}async function Io(e){const{actionId:t,intentIndex:n,intentId:s,totalSteps:o,delayBeforeSpicenetStepMs:r=5e3,isSpicenetStep:i,maxExecuteAttemptsForStep:l,maxPolls:d=48,onStatusMessage:c,onStepUpdate:m,signal:p}=e;let f;for(let h=0;h<o;h++){h>0&&i?.(h)&&r>0&&await hn(r);const x=l?.(h)??3,b=await sa({actionId:t,intentIndex:n,intentId:s,stepIndex:h,maxPolls:d,maxExecuteAttempts:x,maxConsecutiveStatusErrors:x===6?5:15,onStatusMessage:c,onStepUpdate:m?y=>m(h,y):void 0,signal:p});b&&(f=b)}return f}const Nc="0xa9059cbb";function Es(e,t){return e.map(n=>{if(n.domain==="spicenet"||A.isSpicenetChainId(n.chainId)||n.calls.length===0)return n;const s=new Set((n.tokenTransfers??[]).filter(i=>(i.from==="escrow"||i.from==="solver")&&g.addressesEqual(i.to,t)).map(i=>i.token.toLowerCase()));if(s.size===0)return n;const o=[...s].some(A.isNativeToken);let r=0;for(const i of n.calls){if(o&&i.value>0n&&i.data==="0x"&&!g.addressesEqual(i.to,t)){r+=1;continue}if(!i.data?.startsWith(Nc))break;try{const l=I.decodeFunctionData({abi:I.erc20Abi,data:i.data});if(l.functionName!=="transfer")break;const[d]=l.args;if(g.addressesEqual(d,t)||!s.has(i.to.toLowerCase()))break;r+=1}catch{break}}return r===0?n:{...n,calls:n.calls.slice(r)}})}function oa(e,t){if(e.length!==t.length)return!1;const n=A.hashChainBatches(e),s=A.hashChainBatches(t);return n.every((o,r)=>o.hash===s[r]?.hash)}const ra=15;function Mc(e){return e.now-e.lastProgressAt>=e.pollTimeoutMs}function aa(e,t){return{intentId:e,steps:t.map(n=>({...n,status:"pending"})),overallStatus:"processing"}}function Fs(e,t,n){const s=e.steps.map(l=>({...l})),o=s[t];if(!o)return e;n.status==="success"||n.status==="completed"?(s[t]={...o,status:"success",transactionHash:n.transactionHash},t+1<s.length&&s[t+1].status==="pending"&&(s[t+1]={...s[t+1],status:"processing"})):n.status==="reverted"||n.status==="error"?s[t]={...o,status:"failed",transactionHash:n.transactionHash,error:n.error}:s[t]={...o,status:"processing"};const r=s.some(l=>l.status==="failed"),i=s.every(l=>l.status==="success");return{...e,steps:s,overallStatus:r?"failed":i?"success":"processing"}}function Oc({checkStepStatus:e,retryStep:t,maxRetries:n=3,pollingInterval:s=2500,pollTimeoutMs:o=3e5}){const[r,i]=u.useState(null),l=u.useRef(null),d=u.useRef(null),c=u.useRef(!1),m=u.useRef(!1),p=u.useRef(0),f=u.useRef({}),h=u.useRef(0),x=u.useCallback(k=>{l.current=k,i(k)},[]),b=u.useCallback(()=>{d.current&&(clearInterval(d.current),d.current=null)},[]),y=u.useCallback(()=>{p.current=0,f.current={},h.current=0,c.current=!0,b(),x(null)},[b,x]),w=u.useCallback((k,C)=>{b(),c.current=!1,x(aa(k,C))},[b,x]),S=u.useCallback((k,C)=>{const E=l.current;E&&x(Fs(E,k,C))},[x]),v=u.useCallback((k,C)=>{b(),c.current=!1,m.current=!1,p.current=0,f.current={},h.current=Date.now(),x(aa(k,C));const E=async()=>{if(!(c.current||m.current||!e)){m.current=!0;try{if(Mc({now:Date.now(),lastProgressAt:h.current,pollTimeoutMs:o})){const j=l.current;j&&x({...j,steps:j.steps.map(T=>T.status==="success"?T:{...T,status:"failed",error:"Taking longer than expected. It may still complete - check the explorer, then refresh."}),overallStatus:"failed"}),c.current=!0,b();return}const F=l.current;if(!F)return;const B=F.steps.findIndex(j=>j.status!=="success");if(B===-1){c.current=!0,b();return}if(!(B===0||F.steps[B-1].status==="success"))return;try{const j=F.steps[B].stepId,{data:T}=await e(k,j);if(p.current=0,T.status==="success"&&(h.current=Date.now()),T.status==="reverted"){const D=f.current[j]||0;if(t&&D<n){f.current[j]=D+1;try{await t(k,j)}catch(M){console.error(`[intentStatus] retry failed for step ${j}:`,M)}x(Fs(l.current,B,{status:"executing"}));return}}const R=Fs(l.current,B,T);x(R),R.overallStatus!=="processing"&&(c.current=!0,b())}catch(j){p.current+=1,console.error(`[intentStatus] poll error (${p.current}/${ra}):`,j),p.current>=ra&&(x(Fs(l.current,B,{status:"error"})),c.current=!0,b())}}finally{m.current=!1}}};E(),d.current=setInterval(E,s)},[e,t,n,s,o,b,x]);return u.useEffect(()=>()=>b(),[b]),{intentStatus:r,startStatusPolling:v,beginStatusTracking:w,applyStepUpdate:S,stopStatusPolling:b,clearStatus:y}}function Wc(e,t){const n=A.hashChainBatches(e).map(s=>s.hash);return I.keccak256(I.encodeAbiParameters([{type:"string"},{type:"uint256"},{type:"uint256"},{type:"bytes32[]"}],["ecdsa",0n,t,n]))}async function ia(e,t,n,s,o){if(s?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const r={raw:Wc(t,n)},i=o?await e.signMessage(r,o):await e.signMessage(r),l=typeof i=="string"?i:i.signature;if(!l)throw new g.SpiceflowError("SIGNATURE_FAILED","Failed to sign intent authorization. The wallet returned an empty signature.");return l}function Pc(e){return e.domain==="spicenet"||A.isSpicenetChainId(e.chainId)}async function ls(e){const{chainBatches:t,signingAddress:n,actions:s,cache:o,signal:r,onSignatureRequested:i}=e;if(r?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const l=[...new Set(t.filter(m=>!Pc(m)).map(m=>m.chainId))].map(m=>({chainId:m,client:g.getClientForChain(m),delegateContract:g.getDelegateContractAddress(m)})),[d]=await Promise.all([Promise.all(l.map(async({chainId:m,client:p,delegateContract:f})=>{const h=Number(await A.getAccountNonce(n,p)),x=[n.toLowerCase(),m,f.toLowerCase(),h].join(":");return{chainId:m,delegateContract:f,nonce:h,cacheKey:x,cached:o?.get(x)}})),l.length?s.prepareSigning?.():void 0]),c=[];for(const{chainId:m,delegateContract:p,nonce:f,cacheKey:h,cached:x}of d){if(x){c.push(x);continue}if(r?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");const b=await s.signAuthorization({contractAddress:p,chainId:m,nonce:f},i),y={r:b.r,s:b.s,yParity:b.yParity,address:b.address??p,chainId:Number(b.chainId??m),nonce:Number(b.nonce??f)};o?.set(h,y),c.push(y)}return c}function Hn(e,t){return e<=0n||t<=0n?0n:(e*t+10000n-1n)/10000n}function Ts(e,t,n){const s=(e>t?e-t:0n)*10000n/(10000n+n),o=Hn(s,n),r=s>0n,i=r?o+t:0n;return{netAmount:s,spicenetFee:r?o:0n,totalFee:i,grossAmount:s+i,coversFees:r}}function Nn(e,t,n){if(e===t)return!0;const s=e>t?e:t;return s===0n?!1:(e>t?e-t:t-e)*10000n<=s*n}function la(e,t){const n=I.formatUnits(e,t);return n.includes(".")?n.replace(/\.?0+$/,"")||"0":n}function an(e){const t=BigInt(e.feeBreakdown.spicenetFee),n=BigInt(e.feeBreakdown.gasFee),s=BigInt(e.feeBreakdown.bridgeFee??"0"),o=t+n+s;return{spicenetFee:t,gasFee:n,bridgeFee:s,totalFee:o}}function ca(e){const t=BigInt(e.quotedAmount),n=BigInt(e.totalDebit),{totalFee:s}=an(e);return t>0n||n>0n||s>0n}function Uc(e){const t=BigInt(e.quotedAmount),n=BigInt(e.totalDebit),{totalFee:s}=an(e),o=t+s;return n>o?n:o}function Lc(e){const t=[];for(const n of e.intents)for(const s of n.batches)t.push(BigInt(s.quotedAmount));return t.length!==1?null:t[0]}function Eo(e,t){const n=e.intents.flatMap(c=>c.batches).filter(ca);if(n.length===0||n.length>1&&t.actionAmount===void 0)return null;let s=0n,o=0n,r=0n,i=0n;for(const c of n){const m=an(c);s+=m.gasFee,o+=m.spicenetFee,r+=m.bridgeFee,i+=m.totalFee}const l=n.some(c=>c.gasQuoteSource==="estimated")?"estimated":n.some(c=>c.gasQuoteSource==="configured_fallback")?"configured_fallback":n[0].gasQuoteSource,d=t.actionAmount??BigInt(n[0].quotedAmount);return{symbol:t.symbol,decimals:t.decimals,grossAmount:d+i,netAmount:d,totalFee:i,spicenetFee:o,gasFee:s,bridgeFee:r,gasQuoteSource:l}}function xn(e,t){const n=e.intents.flatMap(m=>m.batches).filter(ca);if(n.length===0)return null;const s=n.filter(m=>m.chainId===t.chainId),o=s.length>0?s:n;if(o.length>1)return null;const r=o[0],{gasFee:i,spicenetFee:l,bridgeFee:d,totalFee:c}=an(r);return{chainId:r.chainId,tokenAddress:t.tokenAddress,symbol:t.symbol,decimals:t.decimals,grossAmount:Uc(r),netAmount:BigInt(r.quotedAmount),totalFee:c,gasFee:i,spicenetFee:l,bridgeFee:d,gasQuoteSource:r.gasQuoteSource}}const Mn=10n,zc=10n,qc=5;function Fo(e){return e.map(t=>({...t,calls:[...t.calls],tokenTransfers:t.tokenTransfers?[...t.tokenTransfers]:void 0}))}function Bs({token:e,recipient:t,amount:n}){return{to:e,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[t,n]})}}function Hc({chainBatches:e,token:t,amount:n}){const s=Fo(e),o=s[s.length-1];if(!o)return s;const r=A.getEscrowContractAddress(o.chainId);return o.calls=[...o.calls,Bs({token:t,recipient:r,amount:n})],s}function da({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:o}){const r=Fo(e),i=r[r.length-1];if(!i)throw new g.SpiceflowError("INVALID_PARAMS","Action-output escrow funding requires at least one chain batch.");const l=Hn(s,zc),d=o+l;if(d>=s)throw new g.SpiceflowError("INVALID_PARAMS","Borrow amount is too small after gas and Spicenet fees.",{grossAmount:s.toString(),gasFee:o.toString(),spicenetFee:l.toString()});const c=s-d,m=A.getEscrowContractAddress(i.chainId),p=[];return o>0n&&p.push(Bs({token:n,recipient:A.SPICE_GAS_FEE_RECIPIENT,amount:o})),l>0n&&p.push(Bs({token:n,recipient:A.SPICE_PLATFORM_FEE_RECIPIENT,amount:l})),i.calls=[...i.calls,...p,Bs({token:n,recipient:m,amount:c})],i.tokenTransfers=[...i.tokenTransfers??[],...o>0n?[{from:t,to:A.SPICE_GAS_FEE_RECIPIENT,token:n,amount:o}]:[],...l>0n?[{from:t,to:A.SPICE_PLATFORM_FEE_RECIPIENT,token:n,amount:l}]:[],{from:t,to:m,token:n,amount:c}],{chainBatches:r,gasFee:o,spicenetFee:l,netEscrowAmount:c,outputCredit:{chainId:i.chainId,token:n,amount:s}}}async function To({chainBatches:e,user:t,token:n,grossAmount:s,chainAuthorizations:o}){let r=0n,i=da({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r});for(let l=0;l<qc;l+=1){const d=A.hashChainBatches(i.chainBatches),c=(await g.relayerService.estimateBatchGas({user:t,outputToken:n,chainBatches:i.chainBatches.map((m,p)=>({...m,hash:d[p].hash})),chainAuthorizations:o})).gasFee;if(c<=r&&(r-c)*100n<=c*15n)return i;r=r>0n&&c>r?c+(c+99n)/100n:c,i=da({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r})}throw new g.SpiceflowError("INVALID_PARAMS","Action-output fee estimate did not converge. Please retry.")}function cs(e){return A.isSpicenetChainId(e.chainId)}const Vc="0xa9059cbb";function js(e,t){return`${e}:${t.toLowerCase()}`}function ua(e,t){return t===A.ZERO_ADDRESS.toLowerCase()?{symbol:g.getChainName(e),decimals:18}:A.getTokenByAddress(t,e)??{symbol:"tokens",decimals:18}}function Qc(e,t){const n=A.getTokenByAddress(t,e);return[n?.equivalenceGroup,n?.symbol,n?.name]}async function Kc(e){return g.getWalletBalanceEntries(e)}async function Yc(e,t,n){const s=new Map,o=new Map,r=new Map,i=new Map,l=new Map;for(const c of n?.actionOutputCredits??[]){const m=js(c.chainId,c.token);l.set(m,(l.get(m)??0n)+c.amount)}for(const c of e){if(cs(c))continue;for(const f of c.tokenTransfers??[]){if(f.from!=="escrow"&&f.from!=="solver"||!g.addressesEqual(f.to,t))continue;const h=BigInt(f.amount??0);if(h<=0n)continue;const x=js(c.chainId,f.token);o.set(x,(o.get(x)??0n)+h),f.from==="escrow"&&r.set(x,(r.get(x)??0n)+h)}const m=A.getEscrowContract(c.chainId),p=f=>!!m&&m!==A.ZERO_ADDRESS&&g.addressesEqual(f,m);for(const f of c.calls){if(f.value&&f.value>0n){const h=js(c.chainId,A.ZERO_ADDRESS);s.set(h,(s.get(h)??0n)+f.value),p(f.to)&&i.set(h,(i.get(h)??0n)+f.value)}if(f.data?.startsWith(Vc))try{const h=I.decodeFunctionData({abi:I.erc20Abi,data:f.data});if(h.functionName!=="transfer")continue;const[x,b]=h.args,y=f.to.toLowerCase(),w=js(c.chainId,y);s.set(w,(s.get(w)??0n)+b),p(x)&&i.set(w,(i.get(w)??0n)+b)}catch{}}}let d=null;for(const[c,m]of r){const p=m-(i.get(c)??0n);if(p<=0n)continue;const[f,h]=c.split(":"),x=Number(f),b=ua(x,h);d??(d=await Kc(t));const y=Ic(d,x,h,Qc(x,h));if(!(y>=p))throw new g.SpiceflowError("INVALID_PARAMS",`Insufficient Spice ${b.symbol}: needs ${I.formatUnits(p,b.decimals)}, has ${I.formatUnits(y,b.decimals)}.`,{chainId:x,token:h,userAddress:t,requiredAmount:p.toString(),balance:y.toString(),balanceSource:"spice"})}for(const[c,m]of s){if(m<=0n)continue;const[p,f]=c.split(":"),h=Number(p),x=m-(o.get(c)??0n)-(l.get(c)??0n);if(x<=0n)continue;const b=g.getClientForChain(h),y=f===A.ZERO_ADDRESS.toLowerCase()?await b.getBalance({address:t}):await b.readContract({address:f,abi:I.erc20Abi,functionName:"balanceOf",args:[t]});if(y>=x)continue;const w=ua(h,f);throw new g.SpiceflowError("INVALID_PARAMS",`Insufficient ${w.symbol} on ${g.getChainName(h)}: needs ${I.formatUnits(x,w.decimals)}, has ${I.formatUnits(y,w.decimals)}.`,{chainId:h,token:f,userAddress:t,requiredAmount:x.toString(),balance:y.toString(),balanceSource:"wallet"})}}function Gc({chainBatches:e,tokenAddress:t,tokenTransferAmount:n,useCustomTransfers:s}){if(!(e.some(cs)||!(s?e.some(o=>cs(o)?!1:(o.tokenTransfers??[]).some(r=>r.from==="escrow"&&BigInt(r.amount??0)>0n)):n>0n)))throw new g.SpiceflowError("INVALID_PARAMS","Payouts funded from Spice balance require a Spicenet funding batch before the destination chain batch. Deposits into Spice balance and gas-only actions do not need one.",{tokenAddress:t,tokenTransferAmount:n.toString(),useCustomTransfers:!!s})}function Zc(e,t,n,s){t.forEach((o,r)=>{if(!o.to||!o.from||!o.token||o.amount===void 0)throw new g.SpiceflowError("INVALID_TOKEN_TRANSFER",`tokenTransfers[${r}] on chain ${e} is missing required fields (to/from/token/amount). This usually means the embedded wallet wasn't ready when the intent was built \u2014 please retry.`,{chainId:e,transferIndex:r,transfer:{from:o.from,to:o.to,token:o.token,amount:o.amount?.toString()},signingAddress:n,useCustomTransfers:s})})}function Bo({user:e,chainBatches:t,tokenAddress:n,tokenTransferAmount:s,exp:o,signature:r,chainAuthorizations:i,useCustomTransfers:l}){const d=t,c=A.hashChainBatches(d),m=d.filter(p=>!cs(p)).length;if(Gc({chainBatches:d,tokenAddress:n,tokenTransferAmount:s,useCustomTransfers:l}),!l&&s>0n&&m>1)throw new g.SpiceflowError("INVALID_PARAMS","Multiple non-Spicenet batches require explicit tokenTransfers. Pass useCustomTransfers with per-batch transfers instead of relying on the default escrow payout injection.",{nonSpicenetBatchCount:m,tokenAddress:n,tokenTransferAmount:s.toString()});return{user:e,...i?{chainAuthorizations:i}:{},intents:[{mode:"7702",signatureType:"ecdsa",signature:r,nbf:0,exp:o,chainBatches:c.map((p,f)=>{const h=d[f],x=cs(h)?[]:l?h.tokenTransfers??[]:s>0n?[{from:"escrow",to:e,token:n,amount:s}]:[];return Zc(Number(p.chainId),x,e,l),{hash:p.hash,chainId:Number(p.chainId),tokenTransfers:x,calls:p.calls}})}]}}function pa(e,t){const n=t?.depositToEscrow?.gasFundingSource==="action-output"?t.depositToEscrow:null,s=t?.depositToEscrow&&!n?Hc({chainBatches:e,token:t.depositToEscrow.token,amount:t.depositToEscrow.amount}):Fo(e);return{actionOutputDeposit:n,batches:s}}let jo=!1;function ds(){const{address:e,isConnected:t,isAuthenticated:n,actions:s}=g.useWallet(),o=u.useRef(null),{intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:d,clearStatus:c}=Oc({checkStepStatus:(y,w)=>g.relayerService.checkStepStatus(y,w),retryStep:async(y,w)=>{const[S,v]=y.split("/"),k=parseInt(v||"0",10);await g.relayerService.executeStep(S,k,w,{action:"execute"})}}),m=u.useRef(s),p=u.useRef(new Map);m.current=s;const f=u.useCallback((y,w,S,v)=>ls({chainBatches:y,signingAddress:w,actions:m.current,cache:p.current,signal:S,onSignatureRequested:v}),[]),h=u.useCallback((y,w,S,v)=>ia(m.current,y,w,S,v),[]),x=u.useCallback(async(y,w,S,v,k,C)=>{const E=(F,B,j)=>{v?.({step:F,message:B,...j})};if(jo)throw new g.SpiceflowError("CONCURRENT_EXECUTION","A execution transaction is already in progress. Please wait.");jo=!0;try{if(!e)throw new g.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const F=C?.userOverride||e,{actionOutputDeposit:B,batches:j}=pa(y,C);let T=j,R=[],D=C?.useCustomTransfers;E("building","Preparing your wallet and transaction...");const M=await f(T,F,k,()=>E("signing-delegation","Confirm the authorization in your wallet..."));if(E("building","Checking transaction fees and balances..."),k?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");if(C?.prepareAfterAuthorization){const L=await C.prepareAfterAuthorization(T);if(L.length!==T.length||L.some((O,ee)=>O.chainId!==T[ee].chainId||O.domain!==T[ee].domain))throw new Error("The authorized route changed before fee estimation");T=L}const W=BigInt(Math.floor(Date.now()/1e3)+3600);if(B){const L=await To({chainBatches:y,user:F,token:B.token,grossAmount:B.amount,chainAuthorizations:M});T=L.chainBatches,R=[L.outputCredit],D=!0}if(!C?.skipPreSubmitFeeEstimate){let L=!1;for(let O=0;O<10;O++){const ee=C?.feeExecutionMode==="user-transfer"?Es(T,F):T,ue=Bo({user:F,chainBatches:ee,tokenAddress:w,tokenTransferAmount:S,exp:Number(W),signature:"0x00",chainAuthorizations:M,useCustomTransfers:D}),re=await g.relayerService.estimateActionFees(ue,{signal:k});o.current=re;const se=await C?.adjustBatchesForEstimate?.({feeEstimate:re,chainBatches:T}),ie=!!se&&oa(T,se);if(!se||ie){L=!0;break}T=se}if(!L)throw new g.SpiceflowError("INVALID_PARAMS","Fee estimate did not converge. Please retry.")}if(C?.prepareForSigning){const L=await C.prepareForSigning(T);if(L.length!==T.length||L.some((O,ee)=>O.chainId!==T[ee].chainId||O.domain!==T[ee].domain))throw new Error("The funded route changed before signing");T=L}C?.resolveActionOutputCredits&&(R=await C.resolveActionOutputCredits()),C?.skipUserFundingPreflight||await Yc(T,F,{actionOutputCredits:R}),await C?.validateBeforeSubmit?.(T),E("building","Preparing the signing request...");const q=await h(T,W,k,()=>E("signing-intent","Confirm the transaction in your wallet..."));if(k?.aborted)throw new g.SpiceflowError("ABORT","Execution transaction aborted");await C?.validateBeforeSubmit?.(T),E("submitting","Submitting to relayer...");const z=Bo({user:F,chainBatches:T,tokenAddress:w,tokenTransferAmount:S,exp:Number(W),signature:q,chainAuthorizations:M,useCustomTransfers:D}),X=await g.relayerService.createAction(z),[N,H]=X.intentIds[0].split("/"),V=parseInt(H||"0",10),G=`${N}/${V}`;E("executing","Executing on chain..."),E("executing","Executing on chain...",{actionId:N,intentId:G,intentIndex:V,totalSteps:T.length});const J=T.length,U=await Io({actionId:N,intentIndex:V,intentId:G,totalSteps:J,signal:k,isSpicenetStep:L=>T[L]?.domain==="spicenet",maxExecuteAttemptsForStep:L=>T[L]?.domain==="spicenet"?6:3,maxPolls:180,onStatusMessage:(L,O)=>{E("executing",L,{txHash:O,actionId:N,intentId:G,intentIndex:V,totalSteps:J})}});if(C?.requireDestinationReceipt&&!/^0x[0-9a-f]{64}$/i.test(U??""))throw new Error("The destination receipt is not available yet; resume this route to confirm completion");return E("success","Transaction successful!",{txHash:U,actionId:N,intentId:G,intentIndex:V,totalSteps:J}),U||N}catch(F){throw console.error("[Execution] Error:",F),E("error",F.message||"Transaction failed",{error:F.message}),F}finally{jo=!1}},[e,n,f,h]),b=u.useCallback(async(y,w,S,v)=>{if(!e)throw new g.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const k=v?.userOverride||e,{actionOutputDeposit:C,batches:E}=pa(y,v);let F=E;const B=v?.feeExecutionMode==="user-transfer"?Es(F,k):F,j=v?.signAuthorizationsForEstimate?await f(B,k):void 0;let T=v?.useCustomTransfers;C&&(F=(await To({chainBatches:y,user:k,token:C.token,grossAmount:C.amount,chainAuthorizations:j})).chainBatches,T=!0);const R=v?.feeExecutionMode==="user-transfer"?Es(F,k):F,D=Bo({user:k,chainBatches:R,tokenAddress:w,tokenTransferAmount:S,exp:Math.floor(Date.now()/1e3)+3600,signature:"0x00",chainAuthorizations:j,useCustomTransfers:T}),M=await g.relayerService.estimateActionFees(D,{signal:v?.signal});return o.current=M,M},[e,f]);return{execute:x,estimate:b,lastFeeEstimate:o.current,hasEmbeddedWallet:t&&n,intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:d,clearStatus:c}}const Ro=({color:e})=>a.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[a.jsx("circle",{cx:"7",cy:"7",r:"6.5",stroke:e,strokeWidth:"1.2"}),a.jsx("path",{d:"M7 6v4",stroke:e,strokeWidth:"1.2",strokeLinecap:"round"}),a.jsx("circle",{cx:"7",cy:"4.5",r:"0.7",fill:e})]}),fa=({content:e,label:t="More info",textColor:n="#f9fafb",backgroundColor:s="#111827",borderColor:o="rgba(255,255,255,0.08)",accentColor:r="#9ca3af",children:i})=>{const l=u.useId(),[d,c]=u.useState(!1),m=u.useRef(null),[p,f]=u.useState(!1),[h,x]=u.useState(null);u.useEffect(()=>{f(!0)},[]),u.useLayoutEffect(()=>{if(!d||!m.current)return;const y=()=>{if(!m.current)return;const w=m.current.getBoundingClientRect(),S=Math.min(220,window.innerWidth-48),v=Math.min(Math.max(w.left+w.width/2,24+S/2),window.innerWidth-24-S/2),k=w.top>84;x({top:k?w.top-10:w.bottom+10,left:v,placement:k?"top":"bottom"})};return y(),window.addEventListener("scroll",y,!0),window.addEventListener("resize",y),()=>{window.removeEventListener("scroll",y,!0),window.removeEventListener("resize",y)}},[d]);const b=d&&p&&h?qn.createPortal(a.jsxs("span",{id:l,role:"tooltip",style:{position:"fixed",left:h.left,top:h.top,transform:h.placement==="top"?"translate(-50%, -100%)":"translate(-50%, 0)",width:"220px",maxWidth:"min(220px, calc(100vw - 48px))",padding:"10px 12px",borderRadius:"10px",backgroundColor:s,color:n,border:`1px solid ${o}`,boxShadow:"0 18px 45px rgba(0,0,0,0.28)",fontSize:"11px",lineHeight:"1.45",fontWeight:500,textAlign:"left",zIndex:g.z.tooltip,pointerEvents:"none"},children:[e,a.jsx("span",{"aria-hidden":"true",style:{position:"absolute",left:"50%",width:"10px",height:"10px",transform:"translateX(-50%) rotate(45deg)",backgroundColor:s,...h.placement==="top"?{bottom:"-6px",borderRight:`1px solid ${o}`,borderBottom:`1px solid ${o}`}:{top:"-6px",borderTop:`1px solid ${o}`,borderLeft:`1px solid ${o}`}}})]}),document.body):null;return a.jsxs(a.Fragment,{children:[a.jsx("span",{ref:m,style:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),children:a.jsx("button",{type:"button","aria-label":t,"aria-describedby":d?l:void 0,onFocus:()=>c(!0),onBlur:()=>c(!1),style:{width:"18px",height:"18px",borderRadius:"999px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:`1px solid ${o}`,backgroundColor:"transparent",color:r,cursor:"help",padding:0,outline:"none",boxShadow:d?`0 0 0 2px ${r}26`:"none",transition:"border-color 120ms ease, box-shadow 120ms ease, color 120ms ease"},children:i||a.jsx(Ro,{color:r})})}),b]})};function Rs(e,t){if(e===0n)return"0";const n=10n**BigInt(t),s=e/n,o=(e%n).toString().padStart(t,"0").replace(/0+$/,"");return o?`${s.toString()}.${o}`:s.toString()}function Do(e,t,n){const s=`${Rs(e,t)} ${n}`;return e===0n?s:`-${s}`}const Xc=({fontFamily:e,textPrimary:t,textSecondary:n,cardBg:s,cardBorder:o,resolvedDark:r,darkCardBorder:i,primaryColor:l,feePreview:d,isLoading:c,errorText:m,directExecutionFeeNote:p=!1})=>{const f=r?i??o:"#e5e7eb",h=r?"#111214":"#111827",x=r?"rgba(255,255,255,0.08)":"rgba(17,24,39,0.12)",b="#f87171",y=r?"#d1d5db":"#4b5563",w=r?"#f3f4f6":t,[S,v]=u.useState(!1),k=!!m,C=k?null:d,E=C?[{label:"Total Required",help:"Total amount required to fund this action.",value:`${Rs(C.grossAmount,C.decimals)} ${C.symbol}`,tone:"default"},{label:"Spicenet Fee",help:"Fees paid to Spicenet for intent processing and execution.",value:Do(C.spicenetFee,C.decimals,C.symbol),tone:"fee"},{label:"Network Fee",help:"Network fee shown in the same token you are using for this action.",value:Do(C.gasFee,C.decimals,C.symbol),tone:"fee"},...C.bridgeFee&&C.bridgeFee>0n?[{label:"Bridge Fee",help:"Estimated cost to rebalance liquidity for this action.",value:Do(C.bridgeFee,C.decimals,C.symbol),tone:"fee"}]:[],{label:"Used in TX",help:"Resulting amount of funds used in the transaction.",value:`${Rs(C.netAmount,C.decimals)} ${C.symbol}`,tone:"default"}]:[],F=C?`${Rs(C.grossAmount,C.decimals)} ${C.symbol}`:null;return k?a.jsx("div",{style:{backgroundColor:s,border:`1px solid ${o}`,borderRadius:r?"8px":"7px",padding:"14px 16px 12px 16px",marginBottom:"16px",boxShadow:r?"inset 0 1px 0 rgba(255,255,255,0.03)":"none"},children:a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[a.jsx("span",{style:{fontSize:"17px",fontWeight:500,color:y,fontFamily:e,lineHeight:"24px"},children:"Fee"}),a.jsx("div",{style:{color:b,fontSize:"12px",lineHeight:"1.55",fontFamily:e},children:m})]})}):a.jsxs("div",{style:{backgroundColor:s,border:`1px solid ${o}`,borderRadius:r?"8px":"7px",padding:"14px 16px 12px 16px",marginBottom:"16px",boxShadow:r?"inset 0 1px 0 rgba(255,255,255,0.03)":"none"},children:[a.jsxs("button",{type:"button",onClick:()=>v(B=>!B),style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",gap:"12px",marginBottom:S?"14px":0,background:"none",border:"none",padding:0,cursor:"pointer",textAlign:"left"},children:[a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[a.jsx("span",{style:{fontSize:"17px",fontWeight:500,color:y,fontFamily:e,lineHeight:"24px"},children:"Fee"}),S&&a.jsx("span",{style:{fontSize:"12px",color:n,fontFamily:e,lineHeight:"1.45"},children:"What is funded, spent, and taken as fees"})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[F&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"2px",minWidth:0},children:[a.jsx("span",{style:{fontSize:"10px",fontWeight:700,color:n,fontFamily:e,letterSpacing:"0.08em",textTransform:"uppercase"},children:"Total required"}),a.jsx("span",{style:{fontSize:"14px",fontWeight:700,color:w,fontFamily:e,whiteSpace:"nowrap"},children:F})]}),c&&!p&&a.jsx("span",{style:{fontSize:"11px",fontWeight:600,color:l,fontFamily:e,padding:"6px 9px",borderRadius:"999px",backgroundColor:r?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.035)",border:`1px solid ${r?f:"rgba(0,0,0,0.06)"}`,whiteSpace:"nowrap"},children:"Recalculating"}),a.jsx(Bn,{color:n,direction:S?"up":"down",style:{flexShrink:0}})]})]}),a.jsx("div",{style:{overflow:"hidden",maxHeight:S?"480px":"0px",opacity:S?1:0,transition:"max-height 0.24s ease, opacity 0.18s ease"},children:p?a.jsx("p",{style:{margin:0,color:n,fontSize:"12px",lineHeight:"1.55",fontFamily:e},children:"This path executes directly from the external wallet. Network gas is paid in-wallet, so Spicenet cannot pre-estimate that gas or charge a Spicenet fee here."}):E.length>0?a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{display:"grid",gap:"10px"},children:E.map((B,j)=>a.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",alignItems:"center",gap:"12px",paddingTop:j===0?0:"10px",borderTop:j===0?"none":`1px solid ${f}`,opacity:c?.74:1,transition:"opacity 120ms ease"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0},children:[a.jsx("span",{style:{fontSize:"12px",color:n,fontFamily:e,fontWeight:500},children:B.label}),a.jsx(fa,{content:B.help,label:`${B.label} info`,textColor:"#f9fafb",backgroundColor:h,borderColor:x,accentColor:r?"#8f96a3":"#6b7280"})]}),a.jsx("span",{style:{fontSize:"12px",color:B.tone==="fee"?b:w,fontFamily:g.font.mono,textAlign:"right",fontWeight:B.label==="Used in TX"?600:500,letterSpacing:"-0.01em"},children:B.value})]},B.label))}),a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:`1px solid ${f}`,fontSize:"11px",color:n,fontFamily:e,lineHeight:"1.45"},children:C?.gasQuoteSource==="estimated"?"Gas quote uses a live estimate.":C?.gasQuoteSource==="configured_fallback"?"Gas quote uses a configured fallback.":"Gas quote is currently zero."})]}):a.jsx("div",{style:{fontSize:"12px",color:m?b:n,fontFamily:e,opacity:m?1:.8,lineHeight:"1.5"},children:m||"Waiting for fee estimate..."})})]})},No=u.memo(Xc);function Jc(e,t){switch(e){case"success":return{bg:t.successBg,border:t.successBorder,text:t.successText};case"warning":return{bg:t.warningBg,border:t.warningBorder,text:t.warningText};case"error":return{bg:t.errorBg,border:t.errorBorder,text:t.errorText};case"info":return{bg:t.infoBg,border:t.infoBorder,text:t.infoText}}}const yn=({variant:e,palette:t,children:n,icon:s,style:o,fontFamily:r,size:i="default"})=>{const l=Jc(e,t),d=i==="compact";return a.jsxs("div",{role:e==="error"?"alert":"status",style:{backgroundColor:l.bg,border:`1px solid ${l.border}`,borderRadius:d?"7px":"8px",padding:d?"8px 10px":"12px 16px",color:l.text,fontSize:d?"12px":"13px",lineHeight:d?1.4:1.5,display:"flex",alignItems:"flex-start",gap:d?"6px":"8px",fontFamily:r,...o},children:[s&&a.jsx("span",{style:{flexShrink:0,display:"flex",alignItems:"center"},children:s}),a.jsx("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:n})]})},ma=g.font.mono,bn=({label:e,value:t,palette:n,valueColor:s,labelColor:o,style:r})=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",...r},children:[a.jsx("span",{style:{fontSize:"12px",color:o??n.textSecondary,fontFamily:ma,fontWeight:500,letterSpacing:"0.03em",flexShrink:0,whiteSpace:"nowrap"},children:e}),a.jsx("span",{style:{fontSize:"13px",color:s??n.textPrimary,fontWeight:500,fontFamily:ma,minWidth:0,textAlign:"right",overflowWrap:"anywhere"},children:t})]}),Mo=({onClick:e,label:t="Add Funds",color:n,fontFamily:s,style:o})=>{const[r,i]=u.useState(!1);return a.jsxs("button",{type:"button",onClick:e,"data-spiceflow-focus":!0,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{background:"none",border:"none",cursor:"pointer",padding:0,display:"inline-flex",alignItems:"center",gap:"4px",color:n,fontSize:"12px",fontWeight:500,fontFamily:s,textDecoration:"underline",textUnderlineOffset:"2px",whiteSpace:"nowrap",opacity:r?.75:1,transition:"opacity 150ms ease",...o},children:[t,a.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[a.jsx("circle",{cx:"6",cy:"6",r:"5"}),a.jsx("path",{d:"M6 4v4M4 6h4",strokeLinecap:"round"})]})]})},$c="This deposit didn't confirm in time. It may still have gone through, so check the explorer and refresh your balance before retrying.";function _c(e){return e?.overallStatus!=="failed"?{isFailed:!1,failureMessage:null}:{isFailed:!0,failureMessage:e.steps?.find(t=>t.status==="failed"&&!!t.error)?.error||$c}}const Ds=a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#10b981"}),a.jsx("path",{d:"M6 10l3 3 5-6",stroke:"#ffffff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),ed=({isOpen:e,onClose:t,onConfirm:n,data:s,isExecuting:o=!1,error:r=null,theme:i,styles:l,intentStatus:d,postDepositStatus:c="idle",hasPostDepositInstruction:m=!1})=>{const{dark:p,dk:f,theme:h}=g.useSpiceBrand(l),[x,b]=u.useState(!1),[y,w]=u.useState(!0);u.useEffect(()=>{e||b(!1)},[e]);const S=()=>{b(!0),setTimeout(()=>{t()},300)},v=()=>{w(!y)};if(!e||!s)return null;const k=d?.overallStatus==="processing",C=d?.overallStatus==="success",E=!!d,{isFailed:F,failureMessage:B}=_c(d),j=!E&&m,T=j&&c==="executing",R=j&&c==="success",D=C&&m&&(c==="idle"||c==="executing")||T,M=C&&(!m||c==="success"||c==="error")||R||j&&c==="error",W=p?f.cardBg:"#ffffff",q=p?"0 -4px 20px rgba(0, 0, 0, 0.4)":"0 -4px 20px rgba(0, 0, 0, 0.15)",z=f.textSecondary,X=p?f.textPrimary:"#1f2937",N=p?f.textPrimary:"#1f2937",H=J=>a.jsx("div",{style:{marginBottom:i.spacing.md,padding:i.spacing.md,backgroundColor:l?.errorMessage?.backgroundColor||(i.mode==="light"?"#fef2f2":`${i.colors.error}20`),border:`1px solid ${l?.errorMessage?.borderColor||(i.mode==="light"?"#fecaca":i.colors.error)}`,borderRadius:l?.errorMessage?.borderRadius||i.borderRadius.md},children:a.jsx("p",{style:{color:l?.errorMessage?.color||i.colors.error,fontSize:l?.errorMessage?.fontSize||i.typography.fontSize.sm,margin:0,fontFamily:l?.errorMessage?.fontFamily||l?.fontFamily||i.typography.fontFamily},children:J})}),V={fontSize:i.typography.fontSize.sm,fontWeight:500,color:z,fontFamily:g.font.mono,letterSpacing:"0.5px"},G=(J,U,L=X)=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:V,children:J}),a.jsx("span",{style:{fontSize:i.typography.fontSize.sm,fontWeight:500,color:L,fontFamily:g.font.mono},children:U})]});return a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:x?"slideDown 0.3s ease-in":"slideUp 0.3s ease-out",pointerEvents:"auto"},children:[a.jsxs("div",{style:{backgroundColor:W,borderRadius:"0",width:"100%",maxWidth:"522px",margin:"0 auto",padding:"18px 24px",boxShadow:q},children:[!C&&!R&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:i.spacing.md},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer"},onClick:v,children:[a.jsx("span",{style:{fontSize:"13px",fontWeight:i.typography.fontWeight.medium,color:z,fontFamily:l?.fontFamily||i.typography.fontFamily},children:"Transaction Details"}),a.jsx(Bn,{color:z,direction:y?"up":"down"})]}),a.jsx("button",{onClick:J=>{J.stopPropagation(),t()},style:{background:"none",border:"none",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:z,transition:"color 0.2s ease"},onMouseEnter:J=>{J.currentTarget.style.color=N},onMouseLeave:J=>{J.currentTarget.style.color=z},children:a.jsx(rs,{size:16})})]}),a.jsxs("div",{style:{marginBottom:i.spacing.lg,display:"flex",flexDirection:"column",gap:i.spacing.md,overflow:"hidden",maxHeight:y?"200px":"0px",opacity:y?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease"},children:[G("NETWORK",s.network),G("DEPOSITED AMOUNT",s.amount,i.colors.success),s.creditedAmount&&G("CREDITED AMOUNT",s.creditedAmount),s.spicenetFee&&G("SPICENET FEE",s.spicenetFee),s.networkFee&&G("EST. NETWORK FEE",s.networkFee)]})]}),r&&!E&&H(r),F&&B&&H(B),a.jsx(g.Button,{onClick:M||F?S:n,variant:"outline",fullWidth:!0,disabled:o||k||D||T,styles:l,theme:h,children:o||k||T||D?"PROCESSING...":M?"CONTINUE \u2192":F?"CLOSE":"CONFIRM DEPOSIT"}),M&&a.jsx("p",{style:{marginTop:i.spacing.md,marginBottom:0,fontSize:"14px",color:z,textAlign:"center",fontFamily:l?.fontFamily||i.typography.fontFamily},children:"Your funds are now available in your Account"}),a.jsx("div",{style:{marginTop:i.spacing.md,display:"flex",justifyContent:"center",alignItems:"center"},children:a.jsx("img",{src:wo,alt:"Powered by SpiceNet",style:{height:"auto",width:"130px",opacity:1,filter:p?"brightness(0) invert(1) opacity(0.7)":"none"}})})]}),a.jsx("style",{children:`
3
3
  @keyframes slideUp {
4
4
  from {
5
5
  transform: translateY(100%);
@@ -16,7 +16,7 @@
16
16
  transform: translateY(100%);
17
17
  }
18
18
  }
19
- `})]})},td=({intentStatus:e,postDepositSuccess:t=!1,postDepositAmount:n=null,postDepositStatus:s="idle",depositActionLabel:o="Post-Deposit Instruction",sourceChainName:r="Source Chain",directDepositStatus:i="idle",directDepositTxHash:l=null,directDepositChainId:u=null,styles:c})=>{const{dark:f,dk:p}=g.useSpiceBrand(c),[m,h]=d.useState([]),x=d.useRef(null),y=f?p.cardBg:"#ffffff",b=f?p.textPrimary:"#374151",w=f?`${p.cardBorder}`:"rgba(255, 255, 255, 0.2)",C=p.textSecondary,S=f?p.successBg||"#064e3b":"#d1fae5",k=f?p.successText||"#6ee7b7":"#065f46",v=f?p.successBorder||"#065f4633":"#75FFD036",F=f?p.errorBg||"#7f1d1d":"#fecaca",T=f?p.errorText||"#fca5a5":"#991b1b",B=f?p.errorBorder||"#991b1b33":"#FCA5A536",j=e?.overallStatus==="processing",E=e?.overallStatus==="success",R=E&&s!=="idle",D=o;return d.useEffect(()=>((i==="success"&&!j&&!E||t&&!j)&&(x.current=setTimeout(()=>{h([])},6e3)),()=>{x.current&&clearTimeout(x.current)}),[i,t,j,E]),d.useEffect(()=>{const O=[];if(i==="processing"&&O.push({id:"direct-processing",type:"direct-processing",content:"PROCESSING DEPOSIT...",borderColor:w,backgroundColor:y,textColor:b,icon:a.jsx(g.Spinner,{size:20,borderWidth:3,color:C})}),i==="success"){const H=l&&u?g.getExplorerUrl(u,l):void 0;O.push({id:"direct-success",type:"direct-success",content:"DEPOSIT CONFIRMED",borderColor:v,backgroundColor:S,textColor:k,explorerUrl:H!=="#"?H:void 0,icon:Ns})}if(j&&O.push({id:"processing",type:"processing",content:"VERIFYING TRANSACTION SIGNATURE",borderColor:w,backgroundColor:y,textColor:b,icon:a.jsx(g.Spinner,{size:20,borderWidth:3,color:C})}),E&&(O.push({id:"submitted",type:"submitted",content:"SUBMITTED TRANSACTION TO BLOCKCHAIN",borderColor:v,backgroundColor:S,textColor:k,icon:Ns}),O.push({id:"deposit-success",type:"deposit-success",content:`DEPOSIT TO ${r.toUpperCase()} SUCCESSFUL`,borderColor:v,backgroundColor:S,textColor:k,icon:Ns})),R){const H=s==="success"?v:s==="error"?B:w,U=s==="success"?S:s==="error"?F:y,V=s==="success"?k:s==="error"?T:b;let Y="";s==="executing"?Y=`EXECUTING ${D.toUpperCase()}...`:s==="success"?Y=`${D.toUpperCase()} CONFIRMED`:s==="error"&&(Y=`${D.toUpperCase()} FAILED`);let N;s==="executing"?N=a.jsx(g.Spinner,{size:20,borderWidth:3,color:C}):s==="success"?N=a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#10b981"}),a.jsx("path",{d:"M6 10l3 3 5-6",stroke:"#ffffff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}):s==="error"&&(N=a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#ef4444"}),a.jsx("path",{d:"M6 6l8 8M14 6l-8 8",stroke:"#ffffff",strokeWidth:"2",strokeLinecap:"round"})]})),O.push({id:"post-deposit",type:"post-deposit",content:Y,status:s,borderColor:H,backgroundColor:U,textColor:V,icon:N})}t&&n&&O.push({id:"post-deposit-success",type:"post-deposit-success",content:`SUCCESSFULLY DEPOSITED ${n}`,borderColor:v,backgroundColor:S,textColor:k,icon:Ns}),h(H=>{const U=new Set(O.map(N=>N.id)),V=[],Y=new Set;for(const N of H)if(U.has(N.id)){const L=O.find(z=>z.id===N.id);V.push(L),Y.add(N.id)}for(const N of O)Y.has(N.id)||V.push(N);if(V.length>3){const N=[],L=[];for(const Z of V)Z.type==="processing"||Z.type==="post-deposit"&&Z.status==="executing"?N.push(Z):L.push(Z);const z=[...N],G=3-z.length;return G>0&&L.length>0&&z.push(...L.slice(-G)),z}return V})},[j,E,R,s,t,n,D,r,i,l,u,f]),m.length===0?null:a.jsxs("div",{style:{position:"absolute",top:"56px",left:"24px",right:"24px",zIndex:100,display:"flex",flexDirection:"column",gap:"8px",pointerEvents:"none"},children:[m.map(O=>a.jsx("div",{style:{borderRadius:"12px",border:`4px solid ${O.borderColor}`,background:"transparent",animation:"fadeInSlide 0.4s ease-out"},children:a.jsxs("div",{style:{backgroundColor:O.backgroundColor,borderRadius:"8px",padding:"14px 16px",display:"flex",alignItems:"center",gap:"12px"},children:[O.icon,a.jsx("span",{style:{fontSize:"13px",fontWeight:"600",color:O.textColor,letterSpacing:"0.3px",fontFamily:g.font.ui,flex:1},children:O.content}),O.explorerUrl&&a.jsx("a",{href:O.explorerUrl,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",fontWeight:"600",color:O.textColor,textDecoration:"underline",whiteSpace:"nowrap",pointerEvents:"auto",opacity:.8},children:"View tx"})]})},O.id)),a.jsx("style",{children:`
19
+ `})]})},td=({intentStatus:e,postDepositSuccess:t=!1,postDepositAmount:n=null,postDepositStatus:s="idle",depositActionLabel:o="Post-Deposit Instruction",sourceChainName:r="Source Chain",directDepositStatus:i="idle",directDepositTxHash:l=null,directDepositChainId:d=null,styles:c})=>{const{dark:m,dk:p}=g.useSpiceBrand(c),[f,h]=u.useState([]),x=u.useRef(null),b=m?p.cardBg:"#ffffff",y=m?p.textPrimary:"#374151",w=m?`${p.cardBorder}`:"rgba(255, 255, 255, 0.2)",S=p.textSecondary,v=m?p.successBg||"#064e3b":"#d1fae5",k=m?p.successText||"#6ee7b7":"#065f46",C=m?p.successBorder||"#065f4633":"#75FFD036",E=m?p.errorBg||"#7f1d1d":"#fecaca",F=m?p.errorText||"#fca5a5":"#991b1b",B=m?p.errorBorder||"#991b1b33":"#FCA5A536",j=e?.overallStatus==="processing",T=e?.overallStatus==="success",R=T&&s!=="idle",D=o;return u.useEffect(()=>((i==="success"&&!j&&!T||t&&!j)&&(x.current=setTimeout(()=>{h([])},6e3)),()=>{x.current&&clearTimeout(x.current)}),[i,t,j,T]),u.useEffect(()=>{const M=[];if(i==="processing"&&M.push({id:"direct-processing",type:"direct-processing",content:"PROCESSING DEPOSIT...",borderColor:w,backgroundColor:b,textColor:y,icon:a.jsx(g.Spinner,{size:20,borderWidth:3,color:S})}),i==="success"){const W=l&&d?g.getExplorerUrl(d,l):void 0;M.push({id:"direct-success",type:"direct-success",content:"DEPOSIT CONFIRMED",borderColor:C,backgroundColor:v,textColor:k,explorerUrl:W!=="#"?W:void 0,icon:Ds})}if(j&&M.push({id:"processing",type:"processing",content:"VERIFYING TRANSACTION SIGNATURE",borderColor:w,backgroundColor:b,textColor:y,icon:a.jsx(g.Spinner,{size:20,borderWidth:3,color:S})}),T&&(M.push({id:"submitted",type:"submitted",content:"SUBMITTED TRANSACTION TO BLOCKCHAIN",borderColor:C,backgroundColor:v,textColor:k,icon:Ds}),M.push({id:"deposit-success",type:"deposit-success",content:`DEPOSIT TO ${r.toUpperCase()} SUCCESSFUL`,borderColor:C,backgroundColor:v,textColor:k,icon:Ds})),R){const W=s==="success"?C:s==="error"?B:w,q=s==="success"?v:s==="error"?E:b,z=s==="success"?k:s==="error"?F:y;let X="";s==="executing"?X=`EXECUTING ${D.toUpperCase()}...`:s==="success"?X=`${D.toUpperCase()} CONFIRMED`:s==="error"&&(X=`${D.toUpperCase()} FAILED`);let N;s==="executing"?N=a.jsx(g.Spinner,{size:20,borderWidth:3,color:S}):s==="success"?N=a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#10b981"}),a.jsx("path",{d:"M6 10l3 3 5-6",stroke:"#ffffff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}):s==="error"&&(N=a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#ef4444"}),a.jsx("path",{d:"M6 6l8 8M14 6l-8 8",stroke:"#ffffff",strokeWidth:"2",strokeLinecap:"round"})]})),M.push({id:"post-deposit",type:"post-deposit",content:X,status:s,borderColor:W,backgroundColor:q,textColor:z,icon:N})}t&&n&&M.push({id:"post-deposit-success",type:"post-deposit-success",content:`SUCCESSFULLY DEPOSITED ${n}`,borderColor:C,backgroundColor:v,textColor:k,icon:Ds}),h(W=>{const q=new Set(M.map(N=>N.id)),z=[],X=new Set;for(const N of W)if(q.has(N.id)){const H=M.find(V=>V.id===N.id);z.push(H),X.add(N.id)}for(const N of M)X.has(N.id)||z.push(N);if(z.length>3){const N=[],H=[];for(const J of z)J.type==="processing"||J.type==="post-deposit"&&J.status==="executing"?N.push(J):H.push(J);const V=[...N],G=3-V.length;return G>0&&H.length>0&&V.push(...H.slice(-G)),V}return z})},[j,T,R,s,t,n,D,r,i,l,d,m]),f.length===0?null:a.jsxs("div",{style:{position:"absolute",top:"56px",left:"24px",right:"24px",zIndex:100,display:"flex",flexDirection:"column",gap:"8px",pointerEvents:"none"},children:[f.map(M=>a.jsx("div",{style:{borderRadius:"12px",border:`4px solid ${M.borderColor}`,background:"transparent",animation:"fadeInSlide 0.4s ease-out"},children:a.jsxs("div",{style:{backgroundColor:M.backgroundColor,borderRadius:"8px",padding:"14px 16px",display:"flex",alignItems:"center",gap:"12px"},children:[M.icon,a.jsx("span",{style:{fontSize:"13px",fontWeight:"600",color:M.textColor,letterSpacing:"0.3px",fontFamily:g.font.ui,flex:1},children:M.content}),M.explorerUrl&&a.jsx("a",{href:M.explorerUrl,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",fontWeight:"600",color:M.textColor,textDecoration:"underline",whiteSpace:"nowrap",pointerEvents:"auto",opacity:.8},children:"View tx"})]})},M.id)),a.jsx("style",{children:`
20
20
  @keyframes fadeInSlide {
21
21
  from {
22
22
  opacity: 0;
@@ -27,7 +27,7 @@
27
27
  transform: translateY(0);
28
28
  }
29
29
  }
30
- `})]})};async function nd(e,t,n){let s=null;try{const o=await e.request({method:"eth_chainId"});s=parseInt(o,16)}catch{s=null}s!==t&&(n?.(),await g.ensureWalletOnChain(e,t))}async function Os(e){let t=e.hash,n=!1;const s=await e.client.waitForTransactionReceipt({hash:t,timeout:12e4,pollingInterval:2e3,confirmations:1,onReplaced:o=>{const r=o.transaction,i=o.replacedTransaction;if(!(o.reason==="repriced"&&i?.from&&i.nonce!==void 0&&/^0x[0-9a-f]{64}$/i.test(r?.hash??"")&&r?.to?.toLowerCase()===e.call.to.toLowerCase()&&(r.input??"0x").toLowerCase()===e.call.data.toLowerCase()&&BigInt(r.value??0)===e.call.value&&r.from?.toLowerCase()===i?.from?.toLowerCase()&&r.nonce===i?.nonce)){n=!0,e.onCancelled?.();return}t=r.hash,e.onRepriced?.(t)}});if(n)throw new Error("Transaction was cancelled or replaced with a different action; retry the unfinished action");if(s.transactionHash&&s.transactionHash.toLowerCase()!==t.toLowerCase())throw new Error("Unexpected transaction receipt; recover the submitted transaction before retrying");return{receipt:s,hash:t}}function ha(e){let t=e;const n=new Set;for(;t&&typeof t=="object"&&!n.has(t);){if(n.add(t),t.code===4001)return!0;t=t.cause}return!1}async function Nn(e){const t=e.provider??await e.wallet?.getEthereumProvider();if(!t)throw new Error("External wallet provider not available");await nd(t,e.chainId,e.onSwitch);const n=g.getChainConfig(e.chainId)?.viemChain;return{extWc:I.createWalletClient({account:e.account,chain:n,transport:I.custom(t)}),viemChain:n}}async function Lo(e){let t;for(const[n,s]of e.calls.entries()){await e.observer?.onSending?.(n);let o;try{o=await e.extWc.sendTransaction({to:s.to,data:s.data,value:s.value,chain:e.viemChain})}catch(i){throw ha(i)&&e.observer?.onRejected?.(n),i}e.observer?.onSubmitted?.(n,o);const r=await Os({client:e.client,hash:o,call:s,onRepriced:i=>e.observer?.onSubmitted?.(n,i),onCancelled:()=>e.observer?.onReverted?.(n,o)});if(o=r.hash,r.receipt.status!=="success")throw e.observer?.onReverted?.(n,o),new Error(e.errorMessage);e.observer?.onConfirmed?.(n,o),t=o}return t}function ga(e,t,n,s){return n?{to:e,value:s,data:"0x"}:{to:t,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[e,s]})}}function xa(e,t){return t.isNative?e.sendTransaction({to:t.recipient,value:t.amount,chain:t.viemChain}):e.sendTransaction({to:t.tokenAddr,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[t.recipient,t.amount]}),chain:t.viemChain})}async function ya(e){const{extWc:t,sourceClient:n,recipient:s,tokenAddr:o,isNative:r,amount:i}=e;if(i<=0n)return;await e.observer?.onSending?.(0);let l;try{l=await xa(t,{recipient:s,tokenAddr:o,isNative:r,amount:i,viemChain:e.viemChain})}catch(c){throw ha(c)&&e.observer?.onRejected?.(0),c}e.observer?.onSubmitted?.(0,l);const u=await Os({client:n,hash:l,call:ga(s,o,r,i),onRepriced:c=>e.observer?.onSubmitted?.(0,c),onCancelled:()=>e.observer?.onReverted?.(0,l)});if(l=u.hash,u.receipt.status!=="success")throw e.observer?.onReverted?.(0,l),new Error("Embedded wallet funding failed");e.observer?.onConfirmed?.(0,l)}const ba="spiceflow:pendingDeposit",Ms="spiceflow:pendingDepositChanged";function wa(e,t,n){return`${ba}:${e.toLowerCase()}:${t}:${n.toLowerCase()}`}function zo(){try{const e="__spiceflow_storage_test__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch{return!1}}function sd(e){if(!zo())return;const t=wa(e.embeddedWalletAddress,e.chainId,e.tokenAddress);try{localStorage.setItem(t,JSON.stringify(e)),window.dispatchEvent(new Event(Ms))}catch(n){console.error("[pendingDeposit] Failed to save:",n)}}function od(e){if(!zo())return[];const t=`${ba}:${e.toLowerCase()}:`,n=[],s=Date.now();for(let o=0;o<localStorage.length;o++){const r=localStorage.key(o);if(!(!r||!r.startsWith(t)))try{const i=localStorage.getItem(r);if(!i)continue;const l=JSON.parse(i);if(s-l.timestamp>6048e5){localStorage.removeItem(r);continue}n.push(l)}catch{localStorage.removeItem(r)}}return n}function qo(e,t,n){if(!zo())return;const s=wa(e,t,n);localStorage.removeItem(s),window.dispatchEvent(new Event(Ms))}function rd({sourceChainId:e,selectedAsset:t,destinationChainId:n,destinationTokenAddress:s,isCrossDenomination:o,convertedUsdAmount:r}){const i=A.normalizeNativeTokenAddress(t.asset.address),l=s;let u,c;if(l&&n)if(u=g.CHAIN_CONFIGS[n]?.supportedTokens?.find(f=>g.addressesEqual(f.address,l))?.decimals??t.asset.decimals,o){if(!r)throw new Error("Destination amount is still being calculated. Please retry in a moment.");c=r}else{const f=I.parseUnits(t.amount,t.asset.decimals);c=A.convertAmountBetweenDecimals(f,t.asset.decimals,u)}return{sourceChainId:e,depositTokenAddress:i,depositAmount:t.amount,depositTokenDecimals:t.asset.decimals,destinationChainId:n,destinationTokenAddress:l,destinationAmount:c,destinationTokenDecimals:u}}async function ad(e,t){if(!e)return[];if(Array.isArray(e))return e;const n=e;return e.length>=2?n(t.depositAmount,t.depositTokenAddress):n(t)}function Ca(e,t){return!!e&&e.quotedAmount===t.amount&&e.chainId===t.chainId&&g.addressesEqual(e.token,t.token)}async function Ho(e,t){const n=await xa(e,{recipient:t.recipient,tokenAddr:t.tokenAddr,isNative:t.isNative,amount:t.amount});t.afterSend?.(n);const s=g.getClientForChain(t.chainId),o=await s.waitForTransactionReceipt({hash:n,timeout:12e4,pollingInterval:2e3,confirmations:2});if(o.status!=="success")throw new Error(t.failureMessage);return t.settle&&await s.getBlockNumber()-o.blockNumber<2n&&await cn(3e3),o.transactionHash}async function id(e){const t=e.selectedDepositAssets.filter(o=>o.asset&&o.amount&&parseFloat(o.amount)>0);if(t.length===0){console.error("[DepositModal] No valid assets for deposit"),e.setError("Please select an asset and enter an amount");return}const n=t[0];if(!e.escrowOnly&&!e.sourceAddress){e.setError("External wallet not connected. Please connect your wallet in the previous step.");return}if(!e.isNon7702){if(!e.address||!e.embeddedWalletAddress){e.setError("Couldn't find your account wallet. Try reconnecting.");return}if(!e.isReady||!e.isAuthenticated){e.setError("Sign in to continue.");return}}if(e.zeroCreditError){e.setError(e.zeroCreditError);return}if(e.depositBalanceError){e.setError(e.depositBalanceError);return}if(e.isNon7702&&e.sponsorGas&&e.nativeChainId&&n.asset.chainId!==e.nativeChainId&&e.destinationTokenAddress){e.setError("Gas sponsorship is not supported for this deposit route. Disable sponsorGas to continue.");return}e.setIsExecuting(!0),e.setError(null);let s=!1;try{const o=n.asset.chainId,r=A.getEscrowContractAddress(o),i=I.parseUnits(n.amount,n.asset.decimals),l=t.length===1&&Ca(e.effectiveDepositFee,{amount:i,token:A.normalizeNativeTokenAddress(n.asset.address),chainId:o});if(!e.isNon7702&&t.length===1&&!l)throw new Error("Fee quote is out of date. Please wait for it to refresh.");let u=e.externalWalletClient;if(!e.escrowOnly){if(!u)throw new Error("External wallet not connected");if(e.externalProvider){const c=await Nn({provider:e.externalProvider,account:e.sourceAddress,chainId:o});c.viemChain&&(u=c.extWc)}}if(e.isNon7702){if(!u)throw new Error("External wallet not connected");if(!e.sourceAddress)throw new Error("External wallet address not available");if(e.nativeChainId&&o===e.nativeChainId){const c=g.getChainConfig(o),f=t.map(m=>`${m.amount} ${m.asset.symbol}`).join(", ");e.setConfirmationData({network:c?.displayName||`Chain ${o}`,amount:f,symbol:"",chainId:o}),e.setShowConfirmation(!0);let p=null;e.setDirectDepositStatus("processing"),e.setDirectDepositChainId(o);for(const m of t){const h=I.parseUnits(m.amount,m.asset.decimals),x=A.normalizeNativeTokenAddress(m.asset.address),y=m.asset.isNative||A.isNativeToken(x),b=await Ho(u,{chainId:o,recipient:r,tokenAddr:x,isNative:y,amount:h,failureMessage:`Escrow deposit failed for ${m.asset.symbol}`});p=b,e.setDirectDepositTxHash(b)}if(t[0]?.amount){const m=t[0].amount;if(e.onDepositExecute){e.setPostDepositStatus("executing");try{await e.onDepositExecute(m),e.setPostDepositStatus("success")}catch(x){console.error("ctx.onDepositExecute failed:",x),e.setPostDepositStatus("error"),e.setPostDepositError(x?.message||"Post-deposit instruction failed")}}else e.setPostDepositStatus("success");e.setDirectDepositStatus("success"),e.setPostDepositAmount(m),e.setPostDepositSuccess(!0);const h={type:"deposit",status:"success",amount:m,asset:t[0].asset.symbol,sourceChain:c?.displayName||`Chain ${o}`,txHash:p??void 0};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:h})),e.onDepositSuccess?.(h)}e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset)}else{const c=e.destinationChainId||e.nativeChainId;if(!c)throw new Error("Destination chain ID is required for non-7702 mode. Either pass ctx.destinationChainId to <SpiceDeposit> or set ctx.nativeChainId on <SpiceFlowProvider>.");const f=g.getDelegateContractAddress(o),p=r,m=[];let h=null;for(const x of t){const y=I.parseUnits(x.amount,x.asset.decimals),b=A.normalizeNativeTokenAddress(x.asset.address),w=x.asset.isNative||A.isNativeToken(b),C=await Ho(u,{chainId:o,recipient:p,tokenAddr:b,isNative:w,amount:y,failureMessage:`Transfer failed for ${x.asset.symbol}`,afterSend:S=>{h||(h=S)},settle:!0});e.depositDataRef.current||(e.depositDataRef.current=[]),e.depositDataRef.current.push({txHash:C,sender:e.sourceAddress,tokenAddress:b,chainId:o,amount:y.toString(),user:e.spiceBalanceUser}),m.push({tokenAddress:b,tokenAmount:y.toString(),sender:e.sourceAddress,receiver:p})}if(!h)throw new Error("No transaction hash generated");if(!e.destinationTokenAddress){const x={type:"deposit",status:"success",amount:t[0]?.amount,asset:t[0]?.asset?.symbol,sourceChain:g.getChainName(o),txHash:h};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:x})),e.onDepositSuccess?.(x),e.depositDataRef.current=null,e.bridgedAmountRef.current=t[0]?.amount||null,e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset),e.setShowConfirmation(!1);return}if(e.mode==="ondemand"){const x={to:f,value:BigInt(0),data:"0x"},y=await g.getTokenDecimals(c,e.destinationTokenAddress);let b=BigInt(0);for(const j of m){const E=BigInt(j.tokenAmount),R=A.normalizeNativeTokenAddress(j.tokenAddress),D=t.find(H=>{const U=A.normalizeNativeTokenAddress(H.asset.address);return g.addressesEqual(U,R)}),O=D?D.asset.decimals:await g.getTokenDecimals(o,A.ZERO_ADDRESS);b+=A.convertAmountBetweenDecimals(E,O,y)}e.isCrossDenomination&&e.convertedUsdAmount&&(b=e.convertedUsdAmount);const w={chainId:o,tokenTransfers:m.map(j=>({from:j.sender,to:j.receiver,token:j.tokenAddress,amount:BigInt(j.tokenAmount)})),call:x},C=e.isCrossDenomination&&e.convertedUsdAmount?[{from:e.sourceAddress,to:r,token:A.normalizeNativeTokenAddress(t[0].asset.address),amount:I.parseUnits(t[0].amount,t[0].asset.decimals)}]:[],S={chainId:c,tokenTransfers:[...C,{from:"escrow",to:e.sourceAddress,token:e.destinationTokenAddress,amount:b}],call:{to:e.destinationTokenAddress,value:BigInt(0),data:"0x"}},k={mode:"non-7702:on-demand",chainBatches:[w,S]},v={user:e.sourceAddress,intents:[k]},F=await g.relayerService.createAction(v),T=F.actionId,B=F.intentIds[0];if(!h)throw new Error("No transaction hash available");e.startStatusPolling(B,g.createInitialSteps([{chainId:o,calls:[x]},{chainId:c,calls:[S.call]}],j=>g.getChainName(j))),await g.relayerService.executeStep(T,0,0,{action:"execute",hash:h}),t[0]?.amount&&(e.bridgedAmountRef.current=t[0].amount),e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset),e.setShowConfirmation(!1)}else throw new Error("Presign mode not yet fully supported for cross-chain deposits")}}else{const c=[],f=l&&e.effectiveDepositFee?I.formatUnits(e.effectiveDepositFee.net,n.asset.decimals):n?.amount;for(const k of t){const v=I.parseUnits(k.amount,k.asset.decimals),F=l&&k===n,T=F?e.effectiveDepositFee.fee:0n,B=F?e.effectiveDepositFee.net:v,j=e.escrowOnly?v:v+T,E=A.normalizeNativeTokenAddress(k.asset.address),R=k.asset.isNative||A.isNativeToken(E);e.escrowOnly||await Ho(u,{chainId:o,recipient:e.address,tokenAddr:E,isNative:R,amount:j,failureMessage:`Transfer to embedded wallet failed for ${k.asset.symbol}`,afterSend:()=>sd({chainId:o,tokenAddress:A.normalizeNativeTokenAddress(k.asset.address),tokenSymbol:k.asset.symbol,tokenDecimals:k.asset.decimals,amount:k.amount,rawAmount:v.toString(),embeddedWalletAddress:e.address,externalWalletAddress:e.sourceAddress,timestamp:Date.now(),isNative:R}),settle:!0}),c.push(R?{to:r,value:B,data:"0x"}:{to:E,value:BigInt(0),data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[r,B]})}),T>0n&&c.push(R?{to:A.SPICE_GAS_FEE_RECIPIENT,value:T,data:"0x"}:{to:E,value:BigInt(0),data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[A.SPICE_GAS_FEE_RECIPIENT,T]})})}const p=await g.getClientForChain(o).getBlockNumber(),m=c.map(k=>({...k,to:I.getAddress(k.to)})),h={chainId:o,recentBlock:p,calls:m,tokenTransfers:[]},x=rd({sourceChainId:o,selectedAsset:n&&f?{...n,amount:f}:t[0],destinationChainId:e.destinationChainId,destinationTokenAddress:e.destinationTokenAddress,isCrossDenomination:e.isCrossDenomination,convertedUsdAmount:e.convertedUsdAmount}),y=await ad(e.depositBatches,x),b=[h,...y];if(!e.address)throw new Error("Address not available");const w=[];if(e.isCrossDenomination&&e.convertedUsdAmount&&e.destinationTokenAddress){const k=e.selectedDepositAssets[0]?.asset;if(k){const v=I.parseUnits(e.selectedDepositAssets[0].amount,k.decimals);w.push({from:e.address,to:r,token:A.normalizeNativeTokenAddress(k.address),amount:v}),w.push({from:"escrow",to:e.address,token:e.destinationTokenAddress,amount:e.convertedUsdAmount})}}w.length>0&&b[1]&&(b[1].tokenTransfers=w);const C=g.createInitialSteps(b,k=>g.getChainName(k));let S=!1;if(await e.execution.execute(b,A.ZERO_ADDRESS,0n,k=>{if(k.intentId&&!S){S=!0;for(const v of t)qo(e.address,o,A.normalizeNativeTokenAddress(v.asset.address));e.startStatusPolling(k.intentId,C)}},void 0,{userOverride:e.address,useCustomTransfers:!0,skipPreSubmitFeeEstimate:!0,skipUserFundingPreflight:!0}),e.refreshAssets(),e.onDepositExecute&&t[0]?.amount)try{e.setPostDepositStatus("executing"),await e.onDepositExecute(f||t[0].amount),e.setPostDepositStatus("success"),e.setPostDepositAmount(f||t[0].amount),e.setPostDepositSuccess(!0)}catch(k){console.error("ctx.onDepositExecute failed (7702):",k),e.setPostDepositStatus("error"),e.setPostDepositError(k?.message||"Post-deposit instruction failed")}e.onDepositSelect&&e.onDepositSelect(t[0].asset)}}catch(o){s=!0,console.error("[DepositModal] executeDeposit CAUGHT ERROR:",o),console.error("[DepositModal] Error details:",{message:o?.message,code:o?.code,name:o?.name,stack:o?.stack?.slice(0,500)}),e.setError(g.sanitizeError(o,"Deposit failed")),e.clearStatus()}finally{e.setIsExecuting(!1),s&&e.setDirectDepositStatus("idle"),s||!e.getCurrentIntentStatus()&&e.getCurrentPostDepositStatus()!=="idle"||e.setShowConfirmation(!1)}}async function ld(e){const{asset:t,assetIndex:n,selectedAssetCount:s,address:o,escrowOnly:r,isNon7702:i}=e;if(n!==0||i||s>1||!o||t.balance<=0n)return null;const l=await va({address:o,depositQuote:{asset:t,amount:t.balance,token:A.normalizeNativeTokenAddress(t.address),chainId:t.chainId},escrowOnly:r}),u=r?t.balance:t.balance>l.fee?t.balance-l.fee:0n;return la(u,t.decimals)}async function va(e){const{address:t,depositQuote:n,escrowOnly:s}=e,{asset:o,amount:r,token:i,chainId:l}=n,u=A.getEscrowContractAddress(l),c=o.isNative||A.isNativeToken(i),f=r>1n?1n:0n,p=[c?{to:u,value:r,data:"0x"}:{to:i,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[u,r]})}];f>0n&&p.push(c?{to:A.SPICE_GAS_FEE_RECIPIENT,value:f,data:"0x"}:{to:i,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[A.SPICE_GAS_FEE_RECIPIENT,f]})});const m={chainId:l,tokenTransfers:[],calls:p},h=(await g.relayerService.estimateBatchGas({user:t,outputToken:i,chainBatches:[{...m,hash:A.hashChainBatches([m])[0].hash}],signal:e.signal})).gasFee,x=s&&h<r?r-h:r;return{fee:h,net:x,quotedAmount:r,token:i,chainId:l}}const cd=({selectedDepositAssets:e,depositAssets:t,secondAssetOptions:n,loadingAssets:s,allowSecondAsset:o,theme:r,styles:i,dark:l,dk:u,onSelect:c,onAmountChange:f,onAdd:p,onRemove:m,resolveMaxAmount:h,onViewAllAssets:x})=>a.jsxs(a.Fragment,{children:[e.map((y,b)=>{const w=e.length===1?"Deposit":`Asset ${b+1}`;return a.jsxs("div",{style:{marginBottom:r.spacing.md,position:"relative"},children:[a.jsx(os,{assets:b===0?t:n,selectedAsset:y||void 0,onAssetSelect:C=>c(C,b),onAmountChange:C=>f(C,b),loading:s,label:w,showBalance:!0,theme:r,styles:i,allowSecondAsset:o&&b===0,onAddAsset:p,canAddAsset:e.length===1&&!!e[0]?.asset,resolveMaxAmount:h?C=>h(C,b):void 0,onViewAllAssets:b===0?x:void 0}),b===1&&a.jsx("button",{onClick:()=>m(b),style:{position:"absolute",top:"-2px",right:"-2px",background:l?`${u.cardBg}ee`:"rgba(255, 255, 255, 0.9)",border:`1px solid ${u.cardBorder}`,borderRadius:"50%",cursor:"pointer",color:r.colors.textMuted,fontSize:"16px",padding:"2px",width:"22px",height:"22px",display:"flex",alignItems:"center",justifyContent:"center",transition:g.transition.interactive,boxShadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},onMouseEnter:C=>{C.currentTarget.style.color=l?u.errorText:"#ef4444",C.currentTarget.style.background=l?u.cardBg:"#fff",C.currentTarget.style.borderColor=l?u.errorBorder:"#fecaca"},onMouseLeave:C=>{C.currentTarget.style.color=r.colors.textMuted,C.currentTarget.style.background=l?`${u.cardBg}ee`:"rgba(255, 255, 255, 0.9)",C.currentTarget.style.borderColor=l?u.cardBorder:"#e5e7eb"},title:"Remove asset",children:"\xD7"})]},`asset-${b}`)}),e.length===0&&a.jsx("div",{style:{marginBottom:r.spacing.md},children:a.jsx(os,{assets:t,selectedAsset:void 0,onAssetSelect:y=>c(y,0),onAmountChange:y=>f(y,0),loading:s,label:"Deposit",showBalance:!0,theme:r,styles:i,allowSecondAsset:o,onAddAsset:p,canAddAsset:!1,resolveMaxAmount:h?y=>h(y,0):void 0},"initial-selector")})]}),dd=d.memo(cd);var Vo="data:image/svg+xml,%3csvg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M5 4.99995V6.99995M5 3.31245V3.31189M9.5 5C9.5 7.48528 7.48528 9.5 5 9.5C2.51472 9.5 0.5 7.48528 0.5 5C0.5 2.51472 2.51472 0.5 5 0.5C7.48528 0.5 9.5 2.51472 9.5 5Z' stroke='black' stroke-opacity='0.4' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e";const ka=d.memo(({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onDepositSelect:s,depositBatches:o,supportedChains:r,title:i,styles:l,onDepositAssetChange:u,assetInputHook:c,externalWalletAddress:f,onDepositAmountChange:p,allowSecondAsset:m=!1,destinationChainId:h,destinationTokenAddress:x,onDepositExecute:y,depositActionLabel:b,nativeChainId:w,sponsorGas:C=!1,preSelectedAsset:S,escrowOnly:k=!1,escrowTokenAddress:v,escrowAmount:F,escrowTokenDecimals:T,escrowTokenSymbol:B,onDepositSuccess:j,onDepositError:E,embeddedWalletAddress:R,onViewAllAssets:D})=>{const O=d.useContext(g.SpiceFlowProviderContext),H=O?.mode||"7702",U=O?.allowedTokens,V=!!O?.isWhitelistGateActive,Y=!k&&!!O?.isWhitelistConfigured&&O?.isUserWhitelisted!==!0,N=c?.assetAmount||"",{theme:L,dark:z,appName:G,primaryColor:Z,dk:W}=g.useSpiceBrand(l),q=g.useWallet(),{isReady:M,isAuthenticated:se}=q,{externalWallet:de}=g.useProviderWallets(),ae=O?.embeddedWalletAddress||R,ne=H!="7702",ce=ne?!!f:M&&se&&!!ae,ue=ae,$=f,ve=ue??$,{data:P}=ln.useWalletClient(),[oe,fe]=d.useState(P),_=d.useRef(null),Q=d.useRef(de);Q.current=de;const ee=de?.address;d.useEffect(()=>{const J=Q.current;if(!J||!$){_.current=null,fe(P);return}if(J.address?.toLowerCase()!==$?.toLowerCase()){_.current=null,fe(P);return}J.getEthereumProvider().then(async me=>{_.current=me;const qe=await me.request({method:"eth_chainId"}),Ee=parseInt(qe,16),gt=g.getChainConfig(Ee),Ct=await J.getWalletClient(Ee);fe(gt?I.createWalletClient({account:$,chain:gt.viemChain,transport:I.custom(me)}):Ct)}).catch(()=>{_.current=null,fe(P)})},[ee,$,P]);const he=d.useRef(null),[X,Se]=d.useState([]),{assets:Je,loading:we,error:lt,refreshAssets:Pe}=wn({address:k?ue:$||ue,supportedChains:r,fetchBalances:bn,enabled:e,refreshInterval:e?5e3:0}),We=d.useMemo(()=>{if(V)return[];const J=r.flatMap(me=>g.getAllAssetsForChain(me,Je));return U&&U.length>0?J.filter(me=>U.includes(me.symbol.toLowerCase())||me.isNative&&U.includes("native")).sort((me,qe)=>{const Ee=me.balance>BigInt(0)?1:0;return(qe.balance>BigInt(0)?1:0)-Ee}):J.filter(me=>me.balance>BigInt(0))},[r,Je,U,V]),$e=d.useMemo(()=>{if(!X[0]?.asset)return[];const J=X[0].asset.chainId;return We.filter(me=>me.chainId===J)},[We,X]),[Ae,tt]=d.useState(!1),[Ye,ct]=d.useState(null),nt=d.useRef(E);nt.current=E;const ut=d.useCallback(J=>{ct(J),typeof J=="string"&&J&&nt.current?.(J,g.getRelayerErrorDetail(J))},[]),[De,yt]=d.useState("idle"),dt=d.useCallback(J=>{typeof J=="string"&&J&&nt.current?.(J,g.getRelayerErrorDetail(J))},[]),[Be,Ge]=d.useState(!1),[Oe,ge]=d.useState(null),[ye,Ne]=d.useState("idle"),[ie,Ue]=d.useState(null),[Me,rt]=d.useState(null),[_e,Ot]=d.useState(null),[je,at]=d.useState(null),[Ze,Ce]=d.useState(null),{intentStatus:be,startStatusPolling:et,clearStatus:mt,execute:bt}=Hn(),ke=d.useCallback((J,me)=>{const qe=g.CHAIN_CONFIGS[me];return qe?qe.supportedTokens?.find(Ee=>g.addressesEqual(Ee.address,J))?.symbol??null:null},[]),pt=d.useMemo(()=>{const J=X[0]?.asset;if(!J||!x||!h)return!1;const me=ke(x,h);return lc(J.symbol)&&!!me&&cc(me)},[X,x,h,ke]);d.useEffect(()=>{X.length>0&&N!==X[0]?.amount&&Se(J=>{if(J.length===0)return J;const me=[...J];return me[0]={...me[0],amount:N||""},me})},[N]),d.useEffect(()=>{X.length!==0&&Se(J=>{let me=!1;const qe=J.map(Ee=>{if(!Ee.asset)return Ee;const gt=We.find(Ct=>Ct.chainId===Ee.asset.chainId&&g.addressesEqual(Ct.address,Ee.asset.address));return gt?gt===Ee.asset||gt.balance===Ee.asset.balance?Ee:(me=!0,{...Ee,asset:gt,amount:Ee.amount}):Ee});return me?qe:J})},[We,X.length]),d.useEffect(()=>{if(!S||X.length>0||We.length===0)return;const J=We.find(me=>me.chainId===S.chainId&&g.addressesEqual(me.address,S.address));J&&(Se([{asset:J,amount:""}]),u?.(J))},[S,We,X.length]);const it=d.useRef(null);d.useEffect(()=>{if(ne&&be?.overallStatus==="success"&&y&&De==="idle"){const J=it.current,me=he.current;J&&(async()=>{try{yt("executing"),await y(J),yt("success"),ge(J),Ge(!0);const qe=Array.isArray(me)?me[0]:void 0,Ee={type:"deposit",status:"success",amount:J,asset:qe?.tokenAddress,sourceChain:qe?String(qe.chainId):void 0,txHash:qe?.txHash};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:Ee})),j?.(Ee)}catch(qe){console.error("onDepositExecute failed:",qe),yt("error"),dt(g.sanitizeError(qe,"Post-deposit instruction failed"))}finally{it.current=null,he.current=null}})()}},[be?.overallStatus,ne,De]);const Xe=d.useCallback(()=>{ut(null)},[]);d.useEffect(()=>{e||(Ge(!1),ge(null),Ne("idle"),Ue(null),rt(null))},[e]);const He=d.useCallback((J,me)=>{Se(qe=>{const Ee=[...qe];return Ee[me]={asset:J,amount:Ee[me]?.amount||""},Ee}),me===0&&u?.(J),Xe()},[u,Xe]),ht=d.useCallback(async(J,me)=>{if(Se(qe=>{const Ee=[...qe];return Ee[me]&&(Ee[me]={...Ee[me],amount:J}),Ee}),Xe(),me===0)if(c?.setAssetAmount(J),pt&&J&&parseFloat(J)>0)try{const qe=_e??await ic();_e||Ot(qe);const Ee=X[0]?.asset;if(!Ee)return;const gt=I.parseUnits(J,Ee.decimals),Ct=x?ke(x,h):null,Dt=g.CHAIN_CONFIGS[h]?.supportedTokens?.find(sn=>g.addressesEqual(sn.address,x))?.decimals??6,mn=dc(gt,Ee.decimals,Dt,qe);at(mn);const hn=I.formatUnits(mn,Dt),Pn=qe.toLocaleString("en-US",{maximumFractionDigits:0});Ce(`${J} ${Ee.symbol} \u2248 $${parseFloat(hn).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})} ${Ct??"USD"} (rate: $${Pn}/BTC)`),p?.(hn)}catch(qe){console.error("Failed to fetch BTC/USD price:",qe),Ce(null),at(null),p?.(J)}else Ce(null),at(null),p?.(J)},[Xe,c,p,pt,_e,X,x,h,ke]),Te=d.useCallback(()=>{X.length<2&&Se(J=>[...J,{asset:null,amount:""}])},[X.length]),Ft=d.useCallback(J=>{Se(me=>me.filter((qe,Ee)=>Ee!==J)),Xe()},[Xe]),Tt=d.useRef(!1),Pt=d.useRef(!1);d.useEffect(()=>{e||(Tt.current=!1,Pt.current=!1,Qt(null),kt(null))},[e]);const[Bt,vt]=d.useState(!1),[ft,st]=d.useState(null),[Wt,Qt]=d.useState(null),[tn,kt]=d.useState(null),[Ie,jt]=d.useState(!1),[re,le]=d.useState(null),xe=d.useMemo(()=>{const J=X[0];if(X.length!==1||!J?.asset||!J.amount||parseFloat(J.amount)<=0)return null;try{return{asset:J.asset,amount:I.parseUnits(J.amount,J.asset.decimals),token:A.normalizeNativeTokenAddress(J.asset.address),chainId:J.asset.chainId}}catch{return null}},[X]),Ve=d.useMemo(()=>xe?[xe.chainId,xe.token.toLowerCase(),xe.amount.toString(),k?"escrow":"normal"].join("|"):null,[xe,k]),Le=d.useCallback(async(J,me)=>ue?va({address:ue,depositQuote:J,escrowOnly:k,signal:me}):null,[ue,k]),xt=d.useCallback(async J=>xe?Le(xe,J):null,[xe,Le]),Qe=d.useRef(xt);Qe.current=xt,as({shouldRun:e&&!ne&&!!Ve&&!Bt&&!Ae,deps:[e,ne,Ve,Bt,Ae],delayMs:500,backgroundIntervalMs:1e4,onSkip:()=>{Qt(null),le(null),jt(!1)},onCleanup:()=>jt(!1),run:async({isBackground:J,isCurrent:me,signal:qe})=>{J||(le(null),jt(!0));try{const Ee=await Qe.current(qe);me()&&Qt(Ee)}catch(Ee){if(!me())return;Qt(null),le(Ee instanceof Error?Ee.message:"Failed to estimate gas fee")}finally{me()&&jt(!1)}}}),d.useEffect(()=>{Bt||Ae||kt(null)},[Bt,Ae,Ve]);const Rt=async()=>{if(X.length===0||!X[0]?.asset)return;const J=X.filter(Ct=>Ct.asset&&Ct.amount&&parseFloat(Ct.amount)>0);if(J.length===0)return;const me=J[0],qe=g.getChainConfig(me.asset.chainId),Ee=J.map(Ct=>{const Dt=parseFloat(Ct.amount);return`${isNaN(Dt)?Ct.amount:Dt.toPrecision(6).replace(/\.?0+$/,"")} ${Ct.asset.symbol}`}).join(", "),gt={network:qe?.displayName||`Chain ${me.asset.chainId}`,amount:Ee,symbol:"",chainId:me.asset.chainId};if(!ne&&J.length===1&&Wt){kt(Wt);const Ct=J[0];gt.creditedAmount=`${I.formatUnits(Wt.net,Ct.asset.decimals)} ${Ct.asset.symbol}`,gt.networkFee=`${I.formatUnits(Wt.fee,Ct.asset.decimals)} ${Ct.asset.symbol}`}st(gt),vt(!0)},ot=d.useRef(be);ot.current=be;const Kt=d.useRef(De);Kt.current=De;const te=async()=>{await id({selectedDepositAssets:X,escrowOnly:k,sourceAddress:$,isNon7702:ne,address:ue,embeddedWalletAddress:ae,isReady:M,isAuthenticated:se,zeroCreditError:Re,depositBalanceError:Zt,externalWalletClient:oe,externalProvider:_.current,effectiveDepositFee:Ke,depositBatches:o,destinationChainId:h,destinationTokenAddress:x,isCrossDenomination:pt,convertedUsdAmount:je,mode:H,sponsorGas:C,nativeChainId:w,spiceBalanceUser:ve,depositDataRef:he,bridgedAmountRef:it,setIsExecuting:tt,setError:ut,setConfirmationData:st,setShowConfirmation:vt,setDirectDepositStatus:Ne,setDirectDepositChainId:rt,setDirectDepositTxHash:Ue,setPostDepositStatus:yt,setPostDepositError:dt,setPostDepositAmount:ge,setPostDepositSuccess:Ge,startStatusPolling:et,clearStatus:mt,refreshAssets:Pe,onDepositExecute:y,onDepositSelect:s,onDepositSuccess:j,execution:{execute:bt},getCurrentIntentStatus:()=>ot.current,getCurrentPostDepositStatus:()=>Kt.current})},Re=d.useMemo(()=>{for(const J of X)if(!(!J?.asset||!J.amount||parseFloat(J.amount)<=0))try{const me=J.asset.decimals,qe=I.parseUnits(J.amount,me);if(qe<=0n)continue;const Ee=A.getEquivalenceGroup(A.normalizeNativeTokenAddress(J.asset.address)),gt=J.asset.receiptTokenDecimals??(Ee==="ETH"||Ee==="ARB"?18:Ee==="USDC"||Ee==="SUSD"||Ee==="WBTC"||Ee==="CBTC"?6:void 0);if(gt===void 0||me<=gt||A.convertAmountBetweenDecimals(qe,me,gt)>0n)continue;return`Amount too small. Minimum deposit for this asset is ${I.formatUnits(10n**BigInt(me-gt),me)} ${J.asset.symbol}.`}catch{continue}return null},[X]),At=!ne&&!!xe,Ke=tn??Wt,St=!!xe&&Ca(Ke,xe),Zt=d.useMemo(()=>{if(!At||!xe||!St)return null;const J=k?xe.amount:xe.amount+Ke.fee;return xe.asset.balance>=J?null:`Insufficient ${xe.asset.symbol}. Need ${I.formatUnits(J,xe.asset.decimals)} ${xe.asset.symbol} including gas.`},[At,xe,St,Ke,k]),[qt,Ht]=d.useState(!1),nn=X[0]?.asset?.chainId,Ut=Je.find(J=>J.isNative&&J.chainId===nn)?.balance??0n;d.useEffect(()=>{if(!e||!nn){Ht(!1);return}let J=!1;return(async()=>{try{const me=await g.getClientForChain(nn).getGasPrice()*150000n;J||Ht(Ut<me)}catch{J||Ht(!1)}})(),()=>{J=!0}},[e,nn,Ut]);const rn=!At||St&&!Ie&&!re&&!Zt,an=d.useCallback((J,me)=>ld({asset:J,assetIndex:me,selectedAssetCount:X.length,address:ue,escrowOnly:k,isNon7702:ne}),[ne,X.length,ue,k]),Mn=d.useMemo(()=>{if(!xe||!Ke||!St)return null;const J=k?xe.amount:xe.amount+Ke.fee;return{symbol:xe.asset.symbol,decimals:xe.asset.decimals,grossAmount:J,netAmount:Ke.net,totalFee:Ke.fee,gasFee:Ke.fee,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"estimated"}},[xe,Ke,St,k]),wt=parseFloat(X[0]?.amount||"")||0,Mt=X.length>0&&X[0]?.asset&&X[0]?.amount&&wt>0&&ce&&!Ae&&!Re&&!Zt&&rn&&!Y;d.useEffect(()=>{if(!k||!v||!F||Tt.current||!ce)return;const J=r[0];if(!J)return;const me=g.getAllAssetsForChain(J,[]).find(Ee=>g.addressesEqual(Ee.address,v));let qe;if(me)qe=me;else if(T!==void 0&&B)qe={address:v,symbol:B,name:B,decimals:T,chainId:J,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,isNative:A.isNativeToken(v)};else{console.warn("[DepositModal] escrowOnly: no matching asset and missing escrowTokenDecimals/escrowTokenSymbol for",v);return}Tt.current=!0,Se([{asset:qe,amount:F}])},[k,v,F,T,B,ce,r]),d.useEffect(()=>{!k||!Mt||Pt.current||Ae||(Pt.current=!0,te())},[k,Mt,Ae]);const Fn=lt||Ye||Re||Zt,ro=()=>{if(Ae)return"Executing Deposit...";if(!ce)return"Wallet Not Connected";if(H==="7702"){if(!M)return"Loading...";if(!se)return"Authentication Required"}return X[0]?.asset?X[0]?.amount?Re?"AMOUNT TOO SMALL":Zt?"INSUFFICIENT BALANCE":At&&!rn?re?"GAS UNAVAILABLE":"ESTIMATING GAS":"DEPOSIT":"ENTER AMOUNT":"SELECT TOKEN"};return e?a.jsx(en,{isOpen:e,onClose:t,closeOnBackdropClick:n,title:i||`Deposit to your ${G} account`,subtitle:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:Vo,alt:"","aria-hidden":"true",style:{width:"13px",height:"13px",flexShrink:0,...z?{filter:"invert(0.6)"}:{}}}),a.jsx("p",{style:{fontSize:"12px",color:W.textSecondary,margin:"0",lineHeight:"1.4",fontFamily:g.font.ui},children:`Deposit collateral to your ${G} Account from any supported network.`})]}),dark:z,overlayContent:Bt||be||De!=="idle"&&y?a.jsx("div",{}):void 0,styles:l,theme:L,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px"},children:[a.jsx(dd,{selectedDepositAssets:X,depositAssets:We,secondAssetOptions:$e,loadingAssets:we,allowSecondAsset:m,theme:L,styles:l,dark:z,dk:W,onSelect:He,onAmountChange:ht,onAdd:Te,onRemove:Ft,resolveMaxAmount:an,onViewAllAssets:D}),At&&xe&&a.jsx(Wo,{fontFamily:l?.fontFamily||L.typography.fontFamily,textPrimary:W.textPrimary,textSecondary:W.textSecondary,cardBg:z?W.inputBg:"#ffffff",cardBorder:W.cardBorder,resolvedDark:z,darkCardBorder:W.cardBorder,primaryColor:Z,feePreview:Mn,isLoading:Ie||At&&!St,errorText:re}),a.jsx(td,{intentStatus:be,postDepositSuccess:Be,postDepositAmount:Oe,postDepositStatus:De,depositActionLabel:b,sourceChainName:X[0]?.asset?.chainId?g.getChainName(X[0].asset.chainId):"Destination Chain",directDepositStatus:ye,directDepositTxHash:ie,directDepositChainId:Me,styles:l}),a.jsx(ed,{isOpen:Bt||!!be||De!=="idle"&&!!y,onClose:()=>{vt(!1),be&&mt();const J=De==="success"&&!be,me=be?.overallStatus==="success"&&(y?De==="success":!0);(J||me)&&t()},onConfirm:te,data:ft,isExecuting:Ae,error:Ye,theme:L,styles:l,intentStatus:be,postDepositStatus:De,hasPostDepositInstruction:!!y}),Ze&&a.jsxs(Jr,{dk:W,dark:z,borderRadius:L.borderRadius.md,children:["\u26A1 ",Ze]}),qt&&a.jsx(Jr,{dk:W,dark:z,borderRadius:L.borderRadius.md,children:"Low native balance in the external wallet. The deposit to spicenet account might fail."}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:0,marginBottom:0,margin:0,padding:0},children:[Fn?a.jsx("div",{style:{marginBottom:"10px",fontSize:"12px",lineHeight:"1.45",color:W.errorText,fontFamily:l?.fontFamily||L.typography.fontFamily},children:Fn}):null,a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:Rt,disabled:!Mt||!ce||Ae,theme:L,dark:z,styles:l,children:ro()})]})]})}):null}),ud=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,deposits:s,onComplete:o,onCancel:r,onSkip:i,onChangeWallet:l,isProcessing:u,error:c,styles:f})=>{const{dark:p,dk:m,theme:h}=g.useSpiceBrand(f);if(!e||s.length===0)return null;const x=s[0],y=f?.fontFamily||g.font.ui,b=g.font.mono,w=g.getChainName(x.chainId),C=parseFloat(x.amount).toPrecision(6).replace(/\.?0+$/,""),S=I.formatUnits(x.verifiedBalance,x.tokenDecimals);return a.jsx(en,{isOpen:e,onClose:t,title:"Incomplete Deposit",styles:f,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"18px 24px 24px",fontFamily:y},children:[a.jsx("p",{style:{fontSize:"14px",color:m.textSecondary,lineHeight:"1.6",margin:"0 0 18px 0"},children:"Your funds reached your wallet, but the deposit didn't finish."}),a.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",gap:"14px 18px",marginBottom:"24px",padding:"16px 18px",backgroundColor:p?m.cardBg:"#f8fafc",border:`1px solid ${m.cardBorder}`,borderRadius:p?"14px":"10px",boxShadow:p?"inset 0 1px 0 rgba(255,255,255,0.03)":"0 1px 2px rgba(16,24,40,0.04)"},children:[a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:m.textSecondary,fontFamily:b,letterSpacing:"0.8px"},children:"NETWORK"}),a.jsx("span",{style:{fontSize:"18px",fontWeight:600,color:m.textPrimary,fontFamily:y,lineHeight:1.2},children:w})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px",alignItems:"flex-end",textAlign:"right"},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:m.textSecondary,fontFamily:b,letterSpacing:"0.8px"},children:"DEPOSITED AMOUNT"}),a.jsxs("span",{style:{fontSize:"24px",fontWeight:700,color:m.successText,fontFamily:b,lineHeight:1.1},children:[C," ",x.tokenSymbol]}),a.jsx("span",{style:{fontSize:"12px",color:m.textSecondary,fontWeight:500,fontFamily:y},children:"Sent to embedded wallet"})]})]}),!x.hasFullBalance&&x.verifiedBalance>0n&&a.jsxs("div",{style:{marginBottom:"16px",padding:"8px 12px",backgroundColor:m.warningBg,border:`1px solid ${p?m.warningBorder:"#fcd34d"}`,borderRadius:"8px",fontSize:"13px",color:m.warningText,lineHeight:"1.4"},children:["Partial balance \u2014 only ",parseFloat(S).toFixed(4)," ",x.tokenSymbol," available."]}),c&&a.jsx("div",{style:{marginBottom:"16px",padding:"10px 12px",backgroundColor:m.errorBg,border:`1px solid ${p?m.errorBorder:"#fca5a5"}`,borderRadius:"8px",fontSize:"13px",color:p?m.errorText:"#991b1b",lineHeight:"1.4"},children:c}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[a.jsx(g.Button,{variant:"outline",fullWidth:!0,disabled:u,onClick:()=>o(x),theme:h,dark:p,styles:f,children:"CONFIRM DEPOSIT"}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[a.jsx(g.Button,{variant:"ghost",fullWidth:!0,disabled:u,onClick:()=>r(x),theme:h,dark:p,style:{height:"48px",fontSize:"13px",letterSpacing:"0.4px",color:p?m.textPrimary:"#374151",border:`1px solid ${p?m.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:p?"rgba(255,255,255,0.02)":"#ffffff"},children:u?"RETURNING...":"RETURN FUNDS"}),a.jsxs("div",{style:{display:"grid",gridTemplateColumns:l?"1fr 1fr":"1fr",gap:"10px"},children:[a.jsx(g.Button,{variant:"ghost",fullWidth:!0,disabled:u,onClick:i,theme:h,dark:p,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:m.textSecondary,border:`1px solid ${p?m.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"START OVER"}),l&&a.jsx(g.Button,{variant:"ghost",fullWidth:!0,disabled:u,onClick:l,theme:h,dark:p,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:m.textSecondary,border:`1px solid ${p?m.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"CHANGE WALLET"})]})]})]}),s.length>1&&a.jsxs("p",{style:{fontSize:"12px",color:m.textSecondary,textAlign:"center",marginTop:"14px",marginBottom:0,lineHeight:"1.5"},children:[s.length," incomplete deposits found \u2014 resolving one at a time."]})]})})},pd=[{source:"wallet",title:"From Wallet",description:"Deposit crypto you already hold in a connected wallet"},{source:"card",title:"With Card",description:"Buy and deposit using a debit or credit card"},{source:"exchange",title:"From Exchange",description:"Transfer from Coinbase, Binance, or any exchange"}],fd=({isOpen:e,onClose:t,closeOnBackdropClick:n,onSelect:s,styles:o})=>{const{dark:r,dk:i}=g.useSpiceBrand(o),[l,u]=d.useState(null);return a.jsx(en,{isOpen:e,onClose:t,title:"Deposit",subtitle:"Choose how you want to add funds",styles:o,dark:r,closeOnBackdropClick:n,children:a.jsx("div",{style:{padding:"0 24px 25px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"20px"},children:pd.map(({source:c,title:f,description:p})=>a.jsxs("button",{onClick:()=>s(c),onMouseEnter:()=>u(c),onMouseLeave:()=>u(null),style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"4px",padding:"14px 16px",borderRadius:"8px",border:`1px solid ${r?i.cardBorder:"#e5e7eb"}`,backgroundColor:l===c?r?i.hoverBg:"#f9fafb":r?i.cardBg:"white",cursor:"pointer",textAlign:"left",transition:g.transition.color},children:[a.jsx("span",{style:{fontSize:"15px",fontWeight:600,fontFamily:g.font.ui,color:r?i.textPrimary:"#111827"},children:f}),a.jsx("span",{style:{fontSize:"13px",fontFamily:g.font.ui,color:r?i.textSecondary:"#6b7280"},children:p})]},c))})})},md=({isOpen:e,onClose:t,onBack:n,closeOnBackdropClick:s,source:o,destinationChainId:r,onShowWidget:i,onHideWidget:l,verifying:u,verifyError:c,onRetryVerify:f,funded:p,styles:m})=>{const{dark:h,dk:x,primaryColor:y,theme:b}=g.useSpiceBrand(m),w=g.getChainName(r),C=d.useRef(null),S=d.useRef(i);S.current=i;const k=d.useRef(l);k.current=l;const v=u||!!c||!!p;return d.useEffect(()=>{if(!e)return;const F=C.current;if(F){if(v){k.current();return}return S.current(F,o),()=>k.current()}},[e,o,v]),a.jsx(en,{isOpen:e,onClose:t,title:o==="card"?"Deposit with Card":"Deposit from Exchange",styles:m,dark:h,closeOnBackdropClick:s,children:a.jsxs("div",{style:{padding:"0 24px 25px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"12px"},children:[a.jsx("button",{onClick:n,disabled:u,style:{alignSelf:"flex-start",padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:g.font.ui,color:h?x.textSecondary:"#6b7280",cursor:u?"default":"pointer",opacity:u?.5:1},children:"\u2190 Back"}),a.jsxs("div",{style:{position:"relative",width:"100%"},children:[a.jsx("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center"},children:a.jsx(g.Spinner,{size:28,color:y})}),a.jsx("div",{ref:C,style:{position:"relative",width:"100%",height:"560px"}}),v&&a.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"16px",padding:"24px",borderRadius:"9px",backgroundColor:h?"rgba(0, 0, 0, 0.82)":"rgba(255, 255, 255, 0.94)"},children:u?a.jsxs(a.Fragment,{children:[a.jsx(g.Spinner,{size:28,color:y}),a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:g.font.ui,color:h?x.textPrimary:"#111827",textAlign:"center"},children:["Confirming your deposit arrived on ",w,"\u2026"]})]}):p?a.jsxs(a.Fragment,{children:[a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:g.font.ui,color:h?x.textPrimary:"#111827",textAlign:"center"},children:[p.amount," ",p.symbol," is in your wallet on"," ",w,"."]}),a.jsx(g.Button,{variant:"outline",onClick:t,theme:b,dark:h,styles:m,children:"DONE"})]}):a.jsxs(a.Fragment,{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontFamily:g.font.ui,color:h?x.textPrimary:"#111827",textAlign:"center"},children:c}),a.jsx(g.Button,{variant:"outline",onClick:f,theme:b,dark:h,styles:m,children:"RETRY"}),a.jsx("button",{onClick:t,style:{padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:g.font.ui,color:h?x.textSecondary:"#6b7280",cursor:"pointer",textDecoration:"underline"},children:"Close \u2014 we'll detect your funds later"})]})})]})]})})},hd="692fb8af264069ca12a9",Qn=42161,gd=[8453,Qn];function xd(e){const{targetKind:t,appChainId:n}=e;return t!=="external"||n===void 0||!gd.includes(n)?Qn:A.getTokenBySymbol("USDC",n)?n:Qn}function Ps(e=Qn){return A.getTokenBySymbol("USDC",e)}function yd(e){const t=e?.integratorId??hd;return{integratorId:t,enabled:e?.enabled===!0&&t!=="",embedFactory:e?.embedFactory}}const bd=e=>import("@swapper-finance/deposit-sdk").then(t=>new t.SwapperEmbed(e));function wd(e,t,n){return{themeMode:t?"dark":"light",componentStyles:{width:"100%",primaryColor:n,accentColor:n,borderRadius:"9px",...t?{backgroundColor:e.shell,surfaceColor:e.cardBg,surfaceAltColor:e.inputBg,textColor:e.textPrimary,border:`1px solid ${e.cardBorder}`}:{}}}}function Sa(e){return e==="card"?["depositWithCash"]:e==="exchange"?["transferCrypto"]:["depositWithCash","transferCrypto"]}function Cd(e){const t=e.destinationChainId??Qn,n=Ps(t);if(!n)throw new Error("USDC is not configured for the Swapper destination chain");return{iframeUrl:"https://swapper-deposit-sdk.web.app/",integratorId:e.integratorId,dstChainId:String(t),dstTokenAddr:n.address,depositWalletAddress:e.depositWalletAddress,supportedDepositOptions:Sa(e.source),styles:e.styles,actionLabel:"deposit",flexibleHeight:!0,iframeAttributes:{borderRadius:"9px"}}}async function Aa(e,t=Qn){const n=Ps(t);if(!n)throw new Error("USDC is not configured for the Swapper destination chain");return g.getClientForChain(t).readContract({address:n.address,abi:I.erc20Abi,functionName:"balanceOf",args:[e]})}async function vd(e,t,n){const s=n?.timeoutMs??12e4,o=n?.intervalMs??3e3,r=Date.now()+s;for(;Date.now()<r;){if(n?.signal?.aborted)return null;try{const i=await Aa(e,n?.chainId);if(i>t)return i}catch{}await new Promise(i=>setTimeout(i,o))}return null}const Qo=e=>{const[t,n]=d.useState(!1),s=d.useContext(g.SpiceFlowProviderContext),{dark:o,dk:r}=g.useSpiceBrand();if(d.useEffect(()=>{n(!0)},[]),!t)return a.jsx("div",{className:e.className,children:a.jsx("button",{disabled:!0,style:{padding:"12px 24px",fontSize:"16px",backgroundColor:o?r.hoverBg:"#ccc",color:o?r.textSecondary:"white",border:o?`1px solid ${r.buttonBorder}`:"none",borderRadius:"4px",cursor:"not-allowed"},children:"Loading..."})});if(!s){const i='ProviderLogin must be used within SpiceFlowProvider. Please wrap your app with <SpiceFlowProvider provider="privy">.';return a.jsx("div",{className:e.className,children:a.jsx("button",{onClick:()=>{e.onAuthError&&e.onAuthError(i)},style:{padding:"12px 24px",fontSize:"16px",backgroundColor:o?r.errorBg:"#dc2626",color:o?r.errorText:"white",border:o?`1px solid ${r.errorBorder}`:"none",borderRadius:"4px",cursor:"pointer"},children:"Provider Not Found"})})}return a.jsx(g.PrivyLogin,{...e})},kd=.01,Sd=5*60*1e3;function Ad(e){const t=Number(I.formatUnits(e.verifiedBalance,e.tokenDecimals));return Number.isFinite(t)?t:0}async function Id(e){const t=Ed(e);let n;try{n=await So(t.map(s=>s.tokenSymbol))}catch{return t}return t.filter(s=>{const o=Ad(s);if(o<=0)return!0;const r=n[s.tokenSymbol.toUpperCase()]??0;return!Number.isFinite(r)||r<=0?!0:o*r>=kd})}function Ed(e){const t=new Map;for(const n of e){const s=`${n.chainId}:${n.tokenAddress.toLowerCase()}`;t.get(s)||t.set(s,{...n,amount:n.timestamp===0?I.formatUnits(n.verifiedBalance,n.tokenDecimals):n.amount,rawAmount:n.timestamp===0?n.verifiedBalance.toString():n.rawAmount,hasFullBalance:n.timestamp===0?!0:n.hasFullBalance})}return Array.from(t.values())}function Ia(e,t){const[n,s]=d.useState([]),[o,r]=d.useState(!1),i=d.useRef(t);i.current=t;const l=d.useRef(0),u=d.useRef(0),c=d.useCallback(async({forceDiscovery:f=!1}={})=>{if(!e){s([]),r(!1);return}const p=++u.current,m=()=>p!==u.current;r(!0);try{const h=[],x=od(e);for(const C of x){if(m())return;try{const S=g.getClientForChain(C.chainId);let k;if(C.isNative||A.isNativeToken(C.tokenAddress)?k=await _t.getBalance(S,{address:e}):k=await _t.readContract(S,{address:I.getAddress(C.tokenAddress),abi:I.erc20Abi,functionName:"balanceOf",args:[e]}),m())return;k>0n?h.push({...C,verifiedBalance:k,hasFullBalance:k>=BigInt(C.rawAmount)}):Date.now()-C.timestamp>15*60*1e3&&qo(e,C.chainId,C.tokenAddress)}catch(S){console.warn(`[usePendingDeposit] Failed to verify balance for ${C.tokenSymbol} on chain ${C.chainId}:`,S),h.push({...C,verifiedBalance:0n,hasFullBalance:!1})}}if(m())return;const y=i.current,b=Date.now(),w=(y?.discoverWalletBalances??!0)&&(f||b-l.current>=Sd);if(y?.network&&w){l.current=b;const C=y.chainIds??A.getChainIdsByNetwork(y.network),S=new Set(h.map(v=>`${v.chainId}:${v.tokenAddress.toLowerCase()}`)),k=[];for(const v of C){const F=g.getChainConfig(v);if(F?.supportedTokens)for(const T of F.supportedTokens){if(A.isNativeToken(T.address))continue;const B=`${v}:${T.address.toLowerCase()}`;S.has(B)||k.push((async()=>{try{const j=g.getClientForChain(v),E=await _t.readContract(j,{address:I.getAddress(T.address),abi:I.erc20Abi,functionName:"balanceOf",args:[e]});return E>0n?{chainId:v,tokenAddress:T.address,tokenSymbol:T.symbol,tokenDecimals:T.decimals,amount:I.formatUnits(E,T.decimals),rawAmount:E.toString(),embeddedWalletAddress:e,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:E,hasFullBalance:!0}:null}catch{return null}})())}}if(k.length>0){const v=await Promise.allSettled(k);if(m())return;for(const F of v)F.status==="fulfilled"&&F.value&&h.push(F.value)}}if(!m()){const C=await Id(h);if(m())return;s(C)}}catch(h){console.error("[usePendingDeposit] Verification error:",h),m()||s([])}finally{m()||r(!1)}},[e]);return d.useEffect(()=>{if(!i.current?.enabled){u.current++,s([]),r(!1);return}c({forceDiscovery:!0});const f=i.current?.pollIntervalMs??3e4;if(f<=0||!e)return()=>{u.current++};const p=setInterval(()=>{c({forceDiscovery:!1})},f),m=()=>c({forceDiscovery:!0});return window.addEventListener(Ms,m),()=>{u.current++,window.removeEventListener(Ms,m),clearInterval(p)}},[c,e]),{pendingDeposits:n,loading:o,refresh:()=>c({forceDiscovery:!0})}}function Fd({enabled:e,integratorId:t,depositWalletAddress:n,destinationChainId:s,brand:o,embedFactory:r,onTransactionSuccess:i,onCloseRequest:l}){const u=d.useRef(null),c=d.useRef(null),f=d.useRef(i);f.current=i;const p=d.useRef(l);p.current=l;const m=d.useRef(o);m.current=o;const h=d.useRef(r);h.current=r;const x=d.useCallback((w,C,S)=>{if(!C.isConnected)return;const k=w.getIframe();k.updateConfig({supportedDepositOptions:Sa(S)}),k.sendConfig(),w.showIn(C)},[]);d.useEffect(()=>{if(!e||!n)return;let w=!1;return Promise.resolve().then(()=>{const{dk:C,dark:S,primaryColor:k}=m.current;return(h.current??bd)(Cd({integratorId:t,depositWalletAddress:n,destinationChainId:s,source:null,styles:wd(C,S,k)}))}).then(C=>{if(w){C.destroy();return}const S=C.getIframe();S.on("transaction_success",v=>f.current(v)),S.on("close_request",()=>p.current()),u.current=C;const k=c.current;k&&x(C,k.placeholder,k.source)}).catch(C=>{console.error("[useSwapperEmbed] Failed to preload Swapper widget:",C)}),()=>{w=!0,c.current=null,u.current?.destroy(),u.current=null}},[e,t,n,s,x]);const y=d.useCallback((w,C)=>{c.current={placeholder:w,source:C};const S=u.current;S&&x(S,w,C)},[x]),b=d.useCallback(()=>{c.current=null,u.current?.hide()},[]);return{showWidget:y,hideWidget:b}}function Td(e,t,n,s,o){return{address:t,symbol:n||"UNKNOWN",name:n||"Unknown Token",decimals:s||18,chainId:e,balance:0n,balanceFormatted:o?parseFloat(o):0,balanceUsd:0,isNative:A.isNativeToken(t)}}function Bd(e,t){const n=e?.data;if(!n||typeof n!="object")return null;const s=n;if(s.__spiceflowPlaygroundMock!==!0)return null;try{if(typeof s.amountReceivedRaw=="string")return BigInt(s.amountReceivedRaw);if(typeof s.amountReceived=="string"||typeof s.amountReceived=="number")return I.parseUnits(String(s.amountReceived),t)}catch{return null}return null}const jd=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,depositBatches:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:u,depositActionLabel:c,sponsorGas:f=!1,escrowRecovery:p,skipTokenSelection:m=!1,onDepositSuccess:h,onDepositError:x,skipRecovery:y=!1})=>{const b=d.useContext(g.SpiceFlowProviderContext);if(!b)return a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"});const w=(b.mode||"7702")!="7702",C=w,S=b.nativeChainId,k=b.network||"testnet",{dark:v,dk:F,primaryColor:T}=g.useSpiceBrand(s),B=!!p,j=g.useWallet(),{isReady:E,isAuthenticated:R,actions:D}=j,O=b?.embeddedWalletAddress,{address:H}=ln.useAccount(),U=b?.externalWalletAddress??H,V=!!U,Y=yd(b.swapper),N=C?{address:U,kind:"external"}:{address:O,kind:"embedded"},L=xd({targetKind:N.kind,appChainId:i||S}),z=Y.enabled&&!B&&k==="mainnet"&&!!Ps(L),G=()=>m?"deposit":"select-token",Z=()=>z?"select-source":C?V?G():"connect-wallet":"provider-login",[W,q]=d.useState(Z()),[M,se]=d.useState(null),[de,ae]=d.useState(!1),[ne,ce]=d.useState(null),[ue,$]=d.useState(!1),[ve,P]=d.useState(null),[oe,fe]=d.useState(null),[_,Q]=d.useState(null),ee=d.useRef(null),he=d.useRef(null),{pendingDeposits:X,loading:Se,refresh:Je}=Ia(O,{enabled:e,network:k,chainIds:b.supportedChainIds}),[we,lt]=d.useState(null),[Pe,We]=d.useState(!1),[$e,Ae]=d.useState(null),[tt,Ye]=d.useState(!1),[ct,nt]=d.useState("idle");d.useEffect(()=>{e&&!y&&!B&&!we&&!tt&&ct==="idle"&&R&&O&&V&&U&&!Se&&X.length>0&&W!=="recovery"&&W!=="deposit"&&W!=="swapper"&&q("recovery")},[e,y,B,R,O,V,U,Se,X,W,we,tt,ct]);const ut=d.useCallback(Ce=>{const be={address:Ce.tokenAddress,symbol:Ce.tokenSymbol,name:Ce.tokenSymbol,decimals:Ce.tokenDecimals,chainId:Ce.chainId,balance:Ce.verifiedBalance,balanceFormatted:parseFloat(Ce.amount),balanceUsd:0,isNative:Ce.isNative};se(be),lt(Ce),q("deposit")},[]),De=d.useCallback(Ce=>{if(ce(Ce),C){q(V?Ce==="wallet"?G():"swapper":"connect-wallet");return}const be=R&&!!O;q(Ce==="wallet"?be?V?G():"connect-wallet":"provider-login":be?"swapper":"provider-login")},[C,R,O,V,m]),yt=d.useCallback(()=>{he.current?.abort(),$(!1),P(null),fe(null),ce(null),ee.current=null,Q(null),q("select-source")},[]);d.useEffect(()=>{W==="swapper"&&(_||!N.address||Q({address:N.address,kind:N.kind}))},[W,_,N.address,N.kind]);const dt=_??N,Be=dt.address,Ge=dt.kind,Oe=d.useCallback(async Ce=>{if(!Be)return;he.current?.abort();const be=new AbortController;he.current=be,P(null),$(!0);const et=Ps(L);if(!et){$(!1);return}const mt=pt=>{$(!1);const it=I.formatUnits(pt,et.decimals);if(Ge==="external"){fe({amount:it,symbol:et.symbol});const Xe={type:"wallet-funding",status:"success",amount:it,asset:et.address,sourceChain:String(L)};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:Xe})),h?.(Xe);return}ut({chainId:L,tokenAddress:et.address,tokenSymbol:et.symbol,tokenDecimals:et.decimals,amount:it,rawAmount:pt.toString(),embeddedWalletAddress:Be,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:pt,hasFullBalance:!0})},bt=Bd(Ce,et.decimals);if(bt!==null){mt(bt);return}const ke=await vd(Be,ee.current??0n,{signal:be.signal,chainId:L});if(!be.signal.aborted){if(ke===null){$(!1);const pt=g.getChainConfig(L)?.viemChain?.name??`chain ${L}`;P(`We haven't seen your funds arrive on ${pt} yet \u2014 they may still be in transit.`);return}mt(ke)}},[Be,Ge,L,ut,h]);d.useEffect(()=>{if(W!=="swapper"||!Be||ee.current!==null)return;let Ce=!1;return Aa(Be,L).then(be=>{Ce||(ee.current=be)}).catch(()=>{Ce||(ee.current=0n)}),()=>{Ce=!0}},[W,Be,L]);const{showWidget:ge,hideWidget:ye}=Fd({enabled:e&&z,integratorId:Y.integratorId,depositWalletAddress:Be,destinationChainId:L,brand:{dk:F,dark:v,primaryColor:T},embedFactory:Y.embedFactory,onTransactionSuccess:Oe,onCloseRequest:()=>{ue||yt()}}),Ne=d.useCallback(()=>{Ye(!0),q(R&&O&&V&&U?m?"deposit":"select-token":R&&O?"connect-wallet":"provider-login")},[R,O,V,U,m]),ie=d.useCallback(()=>{Ae(null),nt("awaiting-disconnect"),q("connect-wallet")},[]),Ue=d.useCallback(async Ce=>{We(!0),Ae(null);try{if(!O)throw new Error("Embedded wallet not available");const be=await D.getEthereumProvider(),et=g.getChainConfig(Ce.chainId);await g.ensureWalletOnChain(be,Ce.chainId);const mt=g.getClientForChain(Ce.chainId),bt=await _t.getBalance(mt,{address:O}),ke=et?.viemChain?.name||`chain ${Ce.chainId}`;if(bt===0n)throw new Error(`Your embedded wallet has no ETH on ${ke} to pay for gas. We recommend completing the deposit instead \u2014 it doesn't require gas.`);const pt=I.createWalletClient({account:O,transport:I.custom(be),chain:et?.viemChain}),it=Ce.externalWalletAddress&&I.isAddress(Ce.externalWalletAddress)?Ce.externalWalletAddress:U;if(!it||!I.isAddress(it))throw new Error("Connect the external wallet that should receive these funds, then try again.");let Xe;Ce.isNative||A.isNativeToken(Ce.tokenAddress)?Xe=await pt.sendTransaction({to:it,value:Ce.verifiedBalance,chain:et?.viemChain}):Xe=await pt.sendTransaction({to:Ce.tokenAddress,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[it,Ce.verifiedBalance]}),chain:et?.viemChain}),await mt.waitForTransactionReceipt({hash:Xe,confirmations:1}),qo(Ce.embeddedWalletAddress,Ce.chainId,Ce.tokenAddress),Je(),X.length<=1&&q(Z())}catch(be){const et=be?.message||"Couldn't return your funds. Please try again.",mt=/insufficient funds for gas/i.test(et);Ae(mt?"Not enough ETH in your embedded wallet to cover gas fees. Complete the deposit instead \u2014 it doesn't require gas.":et)}finally{We(!1)}},[D,O,U,X,Je]);d.useEffect(()=>{e||(lt(null),Ae(null),We(!1),Ye(!1),nt("idle"),he.current?.abort(),ce(null),$(!1),P(null),fe(null),ee.current=null,Q(null))},[e]),d.useEffect(()=>{if(ct!=="idle"){if(ct==="awaiting-disconnect"){(!V||!U)&&nt("awaiting-reconnect");return}e&&!Se&&X.length>0&&R&&O&&(nt("idle"),q("recovery"))}},[ct,V,U,e,Se,X,R,O]),d.useEffect(()=>{!B||!e||(R&&O?(ae(!0),!M&&p?.chainId&&p?.tokenAddress&&se(Td(p.chainId,p.tokenAddress,p.tokenSymbol,p.tokenDecimals,p.amount)),q("deposit")):q("provider-login"))},[B,e,W,R,O]);const{assets:Me,loading:rt}=wn({address:U,supportedChains:b.supportedChainIds,fetchBalances:bn,enabled:e&&!!U,refreshInterval:e?5e3:0}),_e=d.useCallback(()=>{ae(!0),q(B?"deposit":ne==="card"||ne==="exchange"?"swapper":V?m?"deposit":"select-token":"connect-wallet")},[B,ne,V,m]),Ot=d.useCallback(async()=>{if((!V||!U)&&(await cn(500),!V||!U)){alert("Please connect your wallet first");return}q(m?"deposit":"select-token")},[V,U,m]),je=d.useCallback(Ce=>{se(Ce),q("deposit")},[]),at=d.useCallback(()=>{if(se(null),r?.(""),!U){q("connect-wallet");return}q("select-token")},[U,r]),Ze=d.useCallback(()=>{t()},[t]);if(d.useEffect(()=>{if(!e){const Ce=setTimeout(()=>{B||(q(Z()),se(null)),ae(!1)},300);return()=>clearTimeout(Ce)}},[e,B,p?.chainId]),d.useEffect(()=>{e&&W==="deposit"&&!M&&!B&&!we&&!m&&q("select-token")},[e,W,M,B,we,m]),d.useEffect(()=>{if(e&&W==="connect-wallet"&&V&&U&&ct==="idle"){if(z&&!ne){q("select-source");return}if(z&&ne&&ne!=="wallet"){q("swapper");return}q(m?"deposit":"select-token")}},[e,W,V,U,ct,m,z,ne]),d.useEffect(()=>{if(!C&&e&&W==="provider-login"&&E&&R&&O&&!de){const Ce=setTimeout(()=>{ae(!0),q(ne==="card"||ne==="exchange"?"swapper":V?m?"deposit":"select-token":"connect-wallet")},100);return()=>clearTimeout(Ce)}},[C,e,W,E,R,O,ne,V,m,de]),!e)return null;if(W==="recovery")return a.jsx(ud,{isOpen:e,onClose:Ze,closeOnBackdropClick:n,deposits:X,onComplete:ut,onCancel:Ue,onSkip:Ne,onChangeWallet:ie,isProcessing:Pe,error:$e,styles:s});if(W==="select-source")return z?a.jsx(fd,{isOpen:e,onClose:Ze,closeOnBackdropClick:n,onSelect:De,styles:s}):(q("provider-login"),null);if(W==="swapper")return ne!=="card"&&ne!=="exchange"?(q(Z()),null):Be?a.jsx(md,{isOpen:e,onClose:Ze,onBack:yt,closeOnBackdropClick:n,source:ne,destinationChainId:L,onShowWidget:ge,onHideWidget:ye,verifying:ue,verifyError:ve,onRetryVerify:Oe,funded:oe,styles:s}):a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",padding:"16px",zIndex:50},children:a.jsx("div",{style:{backgroundColor:v?F.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%",textAlign:"center",fontFamily:'"Helvetica Neue", sans-serif',fontSize:"14px",color:v?F.textPrimary:"#111827"},children:"Preparing your account..."})});if(W==="provider-login"&&!C)return a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",padding:"16px",zIndex:50},children:a.jsx("div",{style:{backgroundColor:v?F.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%"},children:a.jsx(Qo,{onAuthSuccess:_e,autoTrigger:!0})})});if(W==="connect-wallet")return a.jsx(bc,{isOpen:e,onClose:Ze,closeOnBackdropClick:n,onContinue:Ot,requiredChainId:w?S:void 0,styles:s});if(W==="select-token")return U?a.jsx(gc,{isOpen:e,onClose:Ze,closeOnBackdropClick:n,onTokenSelect:je,walletAddress:U,supportedChainIds:b.supportedChainIds,network:k,prefetchedAssets:rt?null:Me??null,styles:s,dark:v}):(q("connect-wallet"),null);if(W==="deposit"){if(!M&&!m)return null;const Ce=!!we;return a.jsx(ka,{isOpen:e,onClose:Ze,closeOnBackdropClick:n,supportedChains:M?[M.chainId]:b.supportedChainIds??[],styles:s,externalWalletAddress:U,depositBatches:Ce?void 0:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:u,depositActionLabel:c,nativeChainId:S,sponsorGas:f,preSelectedAsset:M??void 0,escrowOnly:B||Ce,escrowTokenAddress:Ce?we.tokenAddress:p?.tokenAddress,escrowAmount:Ce?we.amount:p?.amount,escrowTokenDecimals:Ce?we.tokenDecimals:p?.tokenDecimals,escrowTokenSymbol:Ce?we.tokenSymbol:p?.tokenSymbol,onDepositSuccess:h,onDepositError:x,embeddedWalletAddress:O,onViewAllAssets:m?void 0:at})}return null},Rd=e=>d.useContext(g.SpiceFlowProviderContext)?a.jsx(jd,{...e}):a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"}),Dd=({isOpen:e,onClose:t,onChainSelect:n,supportedChains:s,closeOnSelect:o=!0,styles:r})=>{const{theme:i,dark:l,primaryColor:u,dk:c}=g.useSpiceBrand(r),[f,p]=d.useState(""),[m,h]=d.useState(null),[x,y]=d.useState(null),[b,w]=d.useState(!1),[C,S]=d.useState(null),{switchChainAsync:k}=ln.useSwitchChain(),v=d.useMemo(()=>new Set(s||[]),[s]),F=d.useMemo(()=>{if(!s||s.length===0)return[];const E=[];return s.forEach((R,D)=>{if(typeof R!="number")return;const O=g.getChainConfig(R);O&&E.push({id:R.toString(),name:O.displayName,icon:Cn[R]||ns,chainId:R,verified:!0,order:D})}),E},[s]);d.useEffect(()=>{m&&!v.has(parseInt(m,10))&&h(null)},[m,v]);const T=d.useMemo(()=>F.filter(E=>E.name.toLowerCase().includes(f.toLowerCase())).sort((E,R)=>E.order-R.order),[F,f]),B=async()=>{if(!m)return;const E=parseInt(m,10);w(!0),S(null);try{await k({chainId:E}),n&&n(m),o&&t()}catch(R){console.error("Failed to switch chain:",R),S(g.sanitizeError(R,"Failed to switch chain."))}finally{w(!1)}},j=!m||b;return a.jsxs(en,{isOpen:e,onClose:t,title:"Select Chain",styles:r,theme:i,dark:l,children:[a.jsx("div",{style:{padding:"24px 20px"},children:a.jsx(ho,{value:f,onChange:p,ariaLabel:"Search chains",placeholder:"Search chain name, symbol or address",size:"md",dark:l,styles:r,endAdornment:a.jsx("div",{style:{padding:"5px 5px",borderRadius:"3px",fontSize:"13px",backgroundColor:l?c.cardBg:"#E9E9E9",color:l?c.textSecondary:"#485066",fontWeight:500,flexShrink:0},"aria-hidden":"true",children:"\u2318F"})})}),a.jsx("div",{style:{padding:"0 32px 20px",display:"flex",flexDirection:"column",gap:"12px"},children:T.map(E=>{const R=m===E.id,D=x===E.id;return a.jsxs("button",{onClick:()=>h(E.id),onMouseEnter:()=>y(E.id),onMouseLeave:()=>y(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:R?l?`${u}15`:`${u}12`:"transparent",border:R?l?`1px solid ${u}66`:`1px solid ${u}88`:D?l?`1px solid ${u}44`:`1px solid ${u}66`:"1px solid transparent",cursor:"pointer",transition:g.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"30px"},children:a.jsx("img",{src:E.icon,alt:E.name,loading:"lazy",decoding:"async",style:{width:"100%",height:"100%",borderRadius:"50%"}})}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",flex:1},children:[a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:c.textPrimary,textAlign:"left"},children:E.name}),E.verified&&a.jsx("img",{src:Gr,alt:"","aria-hidden":"true",loading:"lazy",decoding:"async",width:16,height:16,style:{width:"16px",height:"16px",filter:l?"brightness(0) invert(1)":"none"}})]})]},E.id)})}),C&&a.jsx("div",{style:{padding:"0 25px 12px"},children:a.jsx(kn,{variant:"error",size:"compact",palette:c,children:C})}),a.jsx("div",{style:{padding:"0 25px 25px"},children:a.jsxs(g.Button,{variant:"outline",onClick:B,disabled:j,fullWidth:!0,theme:i,styles:r,dark:l,children:["SELECT",a.jsx(Ul,{size:20})]})})]})},Ea=({isSuccess:e,type:t,chainName:n,explorerUrl:s,txHash:o,dark:r=!1,successBg:i="#d1fae5",successBorder:l="#6ee7b7",successText:u="#065f46",errorBg:c="#fee2e2",errorBorder:f="#fca5a5",errorText:p="#dc2626",textSecondary:m="#6b7280"})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px",borderRadius:"8px",backgroundColor:e?i:c,border:e?`1px solid ${l}`:`1px solid ${f}`},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"12px"},children:[a.jsx("div",{style:{width:"28px",height:"28px",borderRadius:"50%",backgroundColor:e?"#10b981":"#ef4444",display:"flex",alignItems:"center",justifyContent:"center"},children:e?a.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:a.jsx("path",{d:"M11.6667 3.5L5.25 9.91667L2.33333 7",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):a.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:a.jsx("path",{d:"M10.5 3.5L3.5 10.5M3.5 3.5L10.5 10.5",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),a.jsxs("div",{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontWeight:600,fontFamily:g.font.mono,letterSpacing:"0.5px",color:e?u:p},children:e?`${t.toUpperCase()} CONFIRMED`:`${t.toUpperCase()} FAILED`}),a.jsxs("p",{style:{margin:"2px 0 0 0",fontSize:"12px",color:m},children:["on ",n]})]})]}),s&&o&&a.jsxs("a",{href:`${s}/tx/${o}`,target:"_blank",rel:"noopener noreferrer",style:{display:"flex",alignItems:"center",gap:"4px",fontSize:"13px",color:m,textDecoration:"none",whiteSpace:"nowrap"},children:["View on explorer",a.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:[a.jsx("path",{d:"M9 6.5V9.5C9 9.76522 8.89464 10.0196 8.70711 10.2071C8.51957 10.3946 8.26522 10.5 8 10.5H2.5C2.23478 10.5 1.98043 10.3946 1.79289 10.2071C1.60536 10.0196 1.5 9.76522 1.5 9.5V4C1.5 3.73478 1.60536 3.48043 1.79289 3.29289C1.98043 3.10536 2.23478 3 2.5 3H5.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),a.jsx("path",{d:"M7.5 1.5H10.5V4.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),a.jsx("path",{d:"M5 7L10.5 1.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"})]})]})]}),Fa=`
30
+ `})]})};async function nd(e,t,n){let s=null;try{const o=await e.request({method:"eth_chainId"});s=parseInt(o,16)}catch{s=null}s!==t&&(n?.(),await g.ensureWalletOnChain(e,t))}async function Ns(e){let t=e.hash,n=!1;const s=await e.client.waitForTransactionReceipt({hash:t,timeout:12e4,pollingInterval:2e3,confirmations:1,onReplaced:o=>{const r=o.transaction,i=o.replacedTransaction;if(!(o.reason==="repriced"&&i?.from&&i.nonce!==void 0&&/^0x[0-9a-f]{64}$/i.test(r?.hash??"")&&r?.to?.toLowerCase()===e.call.to.toLowerCase()&&(r.input??"0x").toLowerCase()===e.call.data.toLowerCase()&&BigInt(r.value??0)===e.call.value&&r.from?.toLowerCase()===i?.from?.toLowerCase()&&r.nonce===i?.nonce)){n=!0,e.onCancelled?.();return}t=r.hash,e.onRepriced?.(t)}});if(n)throw new Error("Transaction was cancelled or replaced with a different action; retry the unfinished action");if(s.transactionHash&&s.transactionHash.toLowerCase()!==t.toLowerCase())throw new Error("Unexpected transaction receipt; recover the submitted transaction before retrying");return{receipt:s,hash:t}}function ha(e){let t=e;const n=new Set;for(;t&&typeof t=="object"&&!n.has(t);){if(n.add(t),t.code===4001)return!0;t=t.cause}return!1}async function On(e){const t=e.provider??await e.wallet?.getEthereumProvider();if(!t)throw new Error("External wallet provider not available");await nd(t,e.chainId,e.onSwitch);const n=g.getChainConfig(e.chainId)?.viemChain;return{extWc:I.createWalletClient({account:e.account,chain:n,transport:I.custom(t)}),viemChain:n}}async function Oo(e){let t;for(const[n,s]of e.calls.entries()){await e.observer?.onSending?.(n);let o;try{o=await e.extWc.sendTransaction({to:s.to,data:s.data,value:s.value,chain:e.viemChain})}catch(i){throw ha(i)&&e.observer?.onRejected?.(n),i}e.observer?.onSubmitted?.(n,o);const r=await Ns({client:e.client,hash:o,call:s,onRepriced:i=>e.observer?.onSubmitted?.(n,i),onCancelled:()=>e.observer?.onReverted?.(n,o)});if(o=r.hash,r.receipt.status!=="success")throw e.observer?.onReverted?.(n,o),new Error(e.errorMessage);e.observer?.onConfirmed?.(n,o),t=o}return t}function ga(e,t,n,s){return n?{to:e,value:s,data:"0x"}:{to:t,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[e,s]})}}function xa(e,t){return t.isNative?e.sendTransaction({to:t.recipient,value:t.amount,chain:t.viemChain}):e.sendTransaction({to:t.tokenAddr,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[t.recipient,t.amount]}),chain:t.viemChain})}async function ya(e){const{extWc:t,sourceClient:n,recipient:s,tokenAddr:o,isNative:r,amount:i}=e;if(i<=0n)return;await e.observer?.onSending?.(0);let l;try{l=await xa(t,{recipient:s,tokenAddr:o,isNative:r,amount:i,viemChain:e.viemChain})}catch(c){throw ha(c)&&e.observer?.onRejected?.(0),c}e.observer?.onSubmitted?.(0,l);const d=await Ns({client:n,hash:l,call:ga(s,o,r,i),onRepriced:c=>e.observer?.onSubmitted?.(0,c),onCancelled:()=>e.observer?.onReverted?.(0,l)});if(l=d.hash,d.receipt.status!=="success")throw e.observer?.onReverted?.(0,l),new Error("Embedded wallet funding failed");e.observer?.onConfirmed?.(0,l)}const ba="spiceflow:pendingDeposit",Ms="spiceflow:pendingDepositChanged";function wa(e,t,n){return`${ba}:${e.toLowerCase()}:${t}:${n.toLowerCase()}`}function Wo(){try{const e="__spiceflow_storage_test__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch{return!1}}function sd(e){if(!Wo())return;const t=wa(e.embeddedWalletAddress,e.chainId,e.tokenAddress);try{localStorage.setItem(t,JSON.stringify(e)),window.dispatchEvent(new Event(Ms))}catch(n){console.error("[pendingDeposit] Failed to save:",n)}}function od(e){if(!Wo())return[];const t=`${ba}:${e.toLowerCase()}:`,n=[],s=Date.now();for(let o=0;o<localStorage.length;o++){const r=localStorage.key(o);if(!(!r||!r.startsWith(t)))try{const i=localStorage.getItem(r);if(!i)continue;const l=JSON.parse(i);if(s-l.timestamp>6048e5){localStorage.removeItem(r);continue}n.push(l)}catch{localStorage.removeItem(r)}}return n}function Po(e,t,n){if(!Wo())return;const s=wa(e,t,n);localStorage.removeItem(s),window.dispatchEvent(new Event(Ms))}function rd({sourceChainId:e,selectedAsset:t,destinationChainId:n,destinationTokenAddress:s,isCrossDenomination:o,convertedUsdAmount:r}){const i=A.normalizeNativeTokenAddress(t.asset.address),l=s;let d,c;if(l&&n)if(d=g.CHAIN_CONFIGS[n]?.supportedTokens?.find(m=>g.addressesEqual(m.address,l))?.decimals??t.asset.decimals,o){if(!r)throw new Error("Destination amount is still being calculated. Please retry in a moment.");c=r}else{const m=I.parseUnits(t.amount,t.asset.decimals);c=A.convertAmountBetweenDecimals(m,t.asset.decimals,d)}return{sourceChainId:e,depositTokenAddress:i,depositAmount:t.amount,depositTokenDecimals:t.asset.decimals,destinationChainId:n,destinationTokenAddress:l,destinationAmount:c,destinationTokenDecimals:d}}async function ad(e,t){if(!e)return[];if(Array.isArray(e))return e;const n=e;return e.length>=2?n(t.depositAmount,t.depositTokenAddress):n(t)}function Ca(e,t){return!!e&&e.quotedAmount===t.amount&&e.chainId===t.chainId&&g.addressesEqual(e.token,t.token)}async function Uo(e,t){const n=await xa(e,{recipient:t.recipient,tokenAddr:t.tokenAddr,isNative:t.isNative,amount:t.amount});t.afterSend?.(n);const s=g.getClientForChain(t.chainId),o=await s.waitForTransactionReceipt({hash:n,timeout:12e4,pollingInterval:2e3,confirmations:2});if(o.status!=="success")throw new Error(t.failureMessage);return t.settle&&await s.getBlockNumber()-o.blockNumber<2n&&await hn(3e3),o.transactionHash}async function id(e){const t=e.selectedDepositAssets.filter(o=>o.asset&&o.amount&&parseFloat(o.amount)>0);if(t.length===0){console.error("[DepositModal] No valid assets for deposit"),e.setError("Please select an asset and enter an amount");return}const n=t[0];if(!e.escrowOnly&&!e.sourceAddress){e.setError("External wallet not connected. Please connect your wallet in the previous step.");return}if(!e.isNon7702){if(!e.address||!e.embeddedWalletAddress){e.setError("Couldn't find your account wallet. Try reconnecting.");return}if(!e.isReady||!e.isAuthenticated){e.setError("Sign in to continue.");return}}if(e.zeroCreditError){e.setError(e.zeroCreditError);return}if(e.depositBalanceError){e.setError(e.depositBalanceError);return}if(e.isNon7702&&e.sponsorGas&&e.nativeChainId&&n.asset.chainId!==e.nativeChainId&&e.destinationTokenAddress){e.setError("Gas sponsorship is not supported for this deposit route. Disable sponsorGas to continue.");return}e.setIsExecuting(!0),e.setError(null);let s=!1;try{const o=n.asset.chainId,r=A.getEscrowContractAddress(o),i=I.parseUnits(n.amount,n.asset.decimals),l=t.length===1&&Ca(e.effectiveDepositFee,{amount:i,token:A.normalizeNativeTokenAddress(n.asset.address),chainId:o});if(!e.isNon7702&&t.length===1&&!l)throw new Error("Fee quote is out of date. Please wait for it to refresh.");let d=e.externalWalletClient;if(!e.escrowOnly){if(!d)throw new Error("External wallet not connected");if(e.externalProvider){const c=await On({provider:e.externalProvider,account:e.sourceAddress,chainId:o});c.viemChain&&(d=c.extWc)}}if(e.isNon7702){if(!d)throw new Error("External wallet not connected");if(!e.sourceAddress)throw new Error("External wallet address not available");if(e.nativeChainId&&o===e.nativeChainId){const c=g.getChainConfig(o),m=t.map(f=>`${f.amount} ${f.asset.symbol}`).join(", ");e.setConfirmationData({network:c?.displayName||`Chain ${o}`,amount:m,symbol:"",chainId:o}),e.setShowConfirmation(!0);let p=null;e.setDirectDepositStatus("processing"),e.setDirectDepositChainId(o);for(const f of t){const h=I.parseUnits(f.amount,f.asset.decimals),x=A.normalizeNativeTokenAddress(f.asset.address),b=f.asset.isNative||A.isNativeToken(x),y=await Uo(d,{chainId:o,recipient:r,tokenAddr:x,isNative:b,amount:h,failureMessage:`Escrow deposit failed for ${f.asset.symbol}`});p=y,e.setDirectDepositTxHash(y)}if(t[0]?.amount){const f=t[0].amount;if(e.onDepositExecute){e.setPostDepositStatus("executing");try{await e.onDepositExecute(f),e.setPostDepositStatus("success")}catch(x){console.error("ctx.onDepositExecute failed:",x),e.setPostDepositStatus("error"),e.setPostDepositError(x?.message||"Post-deposit instruction failed")}}else e.setPostDepositStatus("success");e.setDirectDepositStatus("success"),e.setPostDepositAmount(f),e.setPostDepositSuccess(!0);const h={type:"deposit",status:"success",amount:f,asset:t[0].asset.symbol,sourceChain:c?.displayName||`Chain ${o}`,txHash:p??void 0};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:h})),e.onDepositSuccess?.(h)}e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset)}else{const c=e.destinationChainId||e.nativeChainId;if(!c)throw new Error("Destination chain ID is required for non-7702 mode. Either pass ctx.destinationChainId to <SpiceDeposit> or set ctx.nativeChainId on <SpiceFlowProvider>.");const m=g.getDelegateContractAddress(o),p=r,f=[];let h=null;for(const x of t){const b=I.parseUnits(x.amount,x.asset.decimals),y=A.normalizeNativeTokenAddress(x.asset.address),w=x.asset.isNative||A.isNativeToken(y),S=await Uo(d,{chainId:o,recipient:p,tokenAddr:y,isNative:w,amount:b,failureMessage:`Transfer failed for ${x.asset.symbol}`,afterSend:v=>{h||(h=v)},settle:!0});e.depositDataRef.current||(e.depositDataRef.current=[]),e.depositDataRef.current.push({txHash:S,sender:e.sourceAddress,tokenAddress:y,chainId:o,amount:b.toString(),user:e.spiceBalanceUser}),f.push({tokenAddress:y,tokenAmount:b.toString(),sender:e.sourceAddress,receiver:p})}if(!h)throw new Error("No transaction hash generated");if(!e.destinationTokenAddress){const x={type:"deposit",status:"success",amount:t[0]?.amount,asset:t[0]?.asset?.symbol,sourceChain:g.getChainName(o),txHash:h};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:x})),e.onDepositSuccess?.(x),e.depositDataRef.current=null,e.bridgedAmountRef.current=t[0]?.amount||null,e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset),e.setShowConfirmation(!1);return}if(e.mode==="ondemand"){const x={to:m,value:BigInt(0),data:"0x"},b=await g.getTokenDecimals(c,e.destinationTokenAddress);let y=BigInt(0);for(const j of f){const T=BigInt(j.tokenAmount),R=A.normalizeNativeTokenAddress(j.tokenAddress),D=t.find(W=>{const q=A.normalizeNativeTokenAddress(W.asset.address);return g.addressesEqual(q,R)}),M=D?D.asset.decimals:await g.getTokenDecimals(o,A.ZERO_ADDRESS);y+=A.convertAmountBetweenDecimals(T,M,b)}e.isCrossDenomination&&e.convertedUsdAmount&&(y=e.convertedUsdAmount);const w={chainId:o,tokenTransfers:f.map(j=>({from:j.sender,to:j.receiver,token:j.tokenAddress,amount:BigInt(j.tokenAmount)})),call:x},S=e.isCrossDenomination&&e.convertedUsdAmount?[{from:e.sourceAddress,to:r,token:A.normalizeNativeTokenAddress(t[0].asset.address),amount:I.parseUnits(t[0].amount,t[0].asset.decimals)}]:[],v={chainId:c,tokenTransfers:[...S,{from:"escrow",to:e.sourceAddress,token:e.destinationTokenAddress,amount:y}],call:{to:e.destinationTokenAddress,value:BigInt(0),data:"0x"}},k={mode:"non-7702:on-demand",chainBatches:[w,v]},C={user:e.sourceAddress,intents:[k]},E=await g.relayerService.createAction(C),F=E.actionId,B=E.intentIds[0];if(!h)throw new Error("No transaction hash available");e.startStatusPolling(B,g.createInitialSteps([{chainId:o,calls:[x]},{chainId:c,calls:[v.call]}],j=>g.getChainName(j))),await g.relayerService.executeStep(F,0,0,{action:"execute",hash:h}),t[0]?.amount&&(e.bridgedAmountRef.current=t[0].amount),e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset),e.setShowConfirmation(!1)}else throw new Error("Presign mode not yet fully supported for cross-chain deposits")}}else{const c=[],m=l&&e.effectiveDepositFee?I.formatUnits(e.effectiveDepositFee.net,n.asset.decimals):n?.amount;for(const k of t){const C=I.parseUnits(k.amount,k.asset.decimals),E=l&&k===n,F=E?e.effectiveDepositFee.fee:0n,B=E?e.effectiveDepositFee.net:C,j=e.escrowOnly?C:C+F,T=A.normalizeNativeTokenAddress(k.asset.address),R=k.asset.isNative||A.isNativeToken(T);e.escrowOnly||await Uo(d,{chainId:o,recipient:e.address,tokenAddr:T,isNative:R,amount:j,failureMessage:`Transfer to embedded wallet failed for ${k.asset.symbol}`,afterSend:()=>sd({chainId:o,tokenAddress:A.normalizeNativeTokenAddress(k.asset.address),tokenSymbol:k.asset.symbol,tokenDecimals:k.asset.decimals,amount:k.amount,rawAmount:C.toString(),embeddedWalletAddress:e.address,externalWalletAddress:e.sourceAddress,timestamp:Date.now(),isNative:R}),settle:!0}),c.push(R?{to:r,value:B,data:"0x"}:{to:T,value:BigInt(0),data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[r,B]})}),F>0n&&c.push(R?{to:A.SPICE_GAS_FEE_RECIPIENT,value:F,data:"0x"}:{to:T,value:BigInt(0),data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[A.SPICE_GAS_FEE_RECIPIENT,F]})})}const p=await g.getClientForChain(o).getBlockNumber(),f=c.map(k=>({...k,to:I.getAddress(k.to)})),h={chainId:o,recentBlock:p,calls:f,tokenTransfers:[]},x=rd({sourceChainId:o,selectedAsset:n&&m?{...n,amount:m}:t[0],destinationChainId:e.destinationChainId,destinationTokenAddress:e.destinationTokenAddress,isCrossDenomination:e.isCrossDenomination,convertedUsdAmount:e.convertedUsdAmount}),b=await ad(e.depositBatches,x),y=[h,...b];if(!e.address)throw new Error("Address not available");const w=[];if(e.isCrossDenomination&&e.convertedUsdAmount&&e.destinationTokenAddress){const k=e.selectedDepositAssets[0]?.asset;if(k){const C=I.parseUnits(e.selectedDepositAssets[0].amount,k.decimals);w.push({from:e.address,to:r,token:A.normalizeNativeTokenAddress(k.address),amount:C}),w.push({from:"escrow",to:e.address,token:e.destinationTokenAddress,amount:e.convertedUsdAmount})}}w.length>0&&y[1]&&(y[1].tokenTransfers=w);const S=g.createInitialSteps(y,k=>g.getChainName(k));let v=!1;if(await e.execution.execute(y,A.ZERO_ADDRESS,0n,k=>{if(k.intentId&&!v){v=!0;for(const C of t)Po(e.address,o,A.normalizeNativeTokenAddress(C.asset.address));e.startStatusPolling(k.intentId,S)}},void 0,{userOverride:e.address,useCustomTransfers:!0,skipPreSubmitFeeEstimate:!0,skipUserFundingPreflight:!0}),e.refreshAssets(),e.onDepositExecute&&t[0]?.amount)try{e.setPostDepositStatus("executing"),await e.onDepositExecute(m||t[0].amount),e.setPostDepositStatus("success"),e.setPostDepositAmount(m||t[0].amount),e.setPostDepositSuccess(!0)}catch(k){console.error("ctx.onDepositExecute failed (7702):",k),e.setPostDepositStatus("error"),e.setPostDepositError(k?.message||"Post-deposit instruction failed")}e.onDepositSelect&&e.onDepositSelect(t[0].asset)}}catch(o){s=!0,console.error("[DepositModal] executeDeposit CAUGHT ERROR:",o),console.error("[DepositModal] Error details:",{message:o?.message,code:o?.code,name:o?.name,stack:o?.stack?.slice(0,500)}),e.setError(g.sanitizeError(o,"Deposit failed")),e.clearStatus()}finally{e.setIsExecuting(!1),s&&e.setDirectDepositStatus("idle"),s||!e.getCurrentIntentStatus()&&e.getCurrentPostDepositStatus()!=="idle"||e.setShowConfirmation(!1)}}async function ld(e){const{asset:t,assetIndex:n,selectedAssetCount:s,address:o,escrowOnly:r,isNon7702:i}=e;if(n!==0||i||s>1||!o||t.balance<=0n)return null;const l=await va({address:o,depositQuote:{asset:t,amount:t.balance,token:A.normalizeNativeTokenAddress(t.address),chainId:t.chainId},escrowOnly:r}),d=r?t.balance:t.balance>l.fee?t.balance-l.fee:0n;return la(d,t.decimals)}async function va(e){const{address:t,depositQuote:n,escrowOnly:s}=e,{asset:o,amount:r,token:i,chainId:l}=n,d=A.getEscrowContractAddress(l),c=o.isNative||A.isNativeToken(i),m=r>1n?1n:0n,p=[c?{to:d,value:r,data:"0x"}:{to:i,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[d,r]})}];m>0n&&p.push(c?{to:A.SPICE_GAS_FEE_RECIPIENT,value:m,data:"0x"}:{to:i,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[A.SPICE_GAS_FEE_RECIPIENT,m]})});const f={chainId:l,tokenTransfers:[],calls:p},h=(await g.relayerService.estimateBatchGas({user:t,outputToken:i,chainBatches:[{...f,hash:A.hashChainBatches([f])[0].hash}],signal:e.signal})).gasFee,x=s&&h<r?r-h:r;return{fee:h,net:x,quotedAmount:r,token:i,chainId:l}}const cd=({selectedDepositAssets:e,depositAssets:t,secondAssetOptions:n,loadingAssets:s,allowSecondAsset:o,theme:r,styles:i,dark:l,dk:d,onSelect:c,onAmountChange:m,onAdd:p,onRemove:f,resolveMaxAmount:h,onViewAllAssets:x})=>a.jsxs(a.Fragment,{children:[e.map((b,y)=>{const w=e.length===1?"Deposit":`Asset ${y+1}`;return a.jsxs("div",{style:{marginBottom:r.spacing.md,position:"relative"},children:[a.jsx(os,{assets:y===0?t:n,selectedAsset:b||void 0,onAssetSelect:S=>c(S,y),onAmountChange:S=>m(S,y),loading:s,label:w,showBalance:!0,theme:r,styles:i,allowSecondAsset:o&&y===0,onAddAsset:p,canAddAsset:e.length===1&&!!e[0]?.asset,resolveMaxAmount:h?S=>h(S,y):void 0,onViewAllAssets:y===0?x:void 0}),y===1&&a.jsx("button",{onClick:()=>f(y),style:{position:"absolute",top:"-2px",right:"-2px",background:l?`${d.cardBg}ee`:"rgba(255, 255, 255, 0.9)",border:`1px solid ${d.cardBorder}`,borderRadius:"50%",cursor:"pointer",color:r.colors.textMuted,fontSize:"16px",padding:"2px",width:"22px",height:"22px",display:"flex",alignItems:"center",justifyContent:"center",transition:g.transition.interactive,boxShadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},onMouseEnter:S=>{S.currentTarget.style.color=l?d.errorText:"#ef4444",S.currentTarget.style.background=l?d.cardBg:"#fff",S.currentTarget.style.borderColor=l?d.errorBorder:"#fecaca"},onMouseLeave:S=>{S.currentTarget.style.color=r.colors.textMuted,S.currentTarget.style.background=l?`${d.cardBg}ee`:"rgba(255, 255, 255, 0.9)",S.currentTarget.style.borderColor=l?d.cardBorder:"#e5e7eb"},title:"Remove asset",children:"\xD7"})]},`asset-${y}`)}),e.length===0&&a.jsx("div",{style:{marginBottom:r.spacing.md},children:a.jsx(os,{assets:t,selectedAsset:void 0,onAssetSelect:b=>c(b,0),onAmountChange:b=>m(b,0),loading:s,label:"Deposit",showBalance:!0,theme:r,styles:i,allowSecondAsset:o,onAddAsset:p,canAddAsset:!1,resolveMaxAmount:h?b=>h(b,0):void 0},"initial-selector")})]}),dd=u.memo(cd);var Lo="data:image/svg+xml,%3csvg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M5 4.99995V6.99995M5 3.31245V3.31189M9.5 5C9.5 7.48528 7.48528 9.5 5 9.5C2.51472 9.5 0.5 7.48528 0.5 5C0.5 2.51472 2.51472 0.5 5 0.5C7.48528 0.5 9.5 2.51472 9.5 5Z' stroke='black' stroke-opacity='0.4' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e";const ka=u.memo(({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onDepositSelect:s,depositBatches:o,supportedChains:r,title:i,styles:l,onDepositAssetChange:d,assetInputHook:c,externalWalletAddress:m,onDepositAmountChange:p,allowSecondAsset:f=!1,destinationChainId:h,destinationTokenAddress:x,onDepositExecute:b,depositActionLabel:y,nativeChainId:w,sponsorGas:S=!1,preSelectedAsset:v,escrowOnly:k=!1,escrowTokenAddress:C,escrowAmount:E,escrowTokenDecimals:F,escrowTokenSymbol:B,onDepositSuccess:j,onDepositError:T,embeddedWalletAddress:R,onViewAllAssets:D})=>{const M=u.useContext(g.SpiceFlowProviderContext),W=M?.mode||"7702",q=M?.allowedTokens,z=!!M?.isWhitelistGateActive,X=!k&&!!M?.isWhitelistConfigured&&M?.isUserWhitelisted!==!0,N=c?.assetAmount||"",{theme:H,dark:V,appName:G,primaryColor:J,dk:U}=g.useSpiceBrand(l),L=g.useWallet(),{isReady:O,isAuthenticated:ee}=L,{externalWallet:ue}=g.useProviderWallets(),re=M?.embeddedWalletAddress||R,se=W!="7702",ie=se?!!m:O&&ee&&!!re,ce=re,_=m,Ce=ce??_,{data:P}=pn.useWalletClient(),[ae,he]=u.useState(P),ne=u.useRef(null),Q=u.useRef(ue);Q.current=ue;const te=ue?.address;u.useEffect(()=>{const Z=Q.current;if(!Z||!_){ne.current=null,he(P);return}if(Z.address?.toLowerCase()!==_?.toLowerCase()){ne.current=null,he(P);return}Z.getEthereumProvider().then(async le=>{ne.current=le;const Pe=await le.request({method:"eth_chainId"}),ke=parseInt(Pe,16),gt=g.getChainConfig(ke),wt=await Z.getWalletClient(ke);he(gt?I.createWalletClient({account:_,chain:gt.viemChain,transport:I.custom(le)}):wt)}).catch(()=>{ne.current=null,he(P)})},[te,_,P]);const be=u.useRef(null),[$,Se]=u.useState([]),{assets:ct,loading:xe,error:pt,refreshAssets:Me}=mn({address:k?ce:_||ce,supportedChains:r,fetchBalances:fn,enabled:e,refreshInterval:e?5e3:0}),Ue=u.useMemo(()=>{if(z)return[];const Z=r.flatMap(le=>g.getAllAssetsForChain(le,ct));return q&&q.length>0?Z.filter(le=>q.includes(le.symbol.toLowerCase())||le.isNative&&q.includes("native")).sort((le,Pe)=>{const ke=le.balance>BigInt(0)?1:0;return(Pe.balance>BigInt(0)?1:0)-ke}):Z.filter(le=>le.balance>BigInt(0))},[r,ct,q,z]),Xe=u.useMemo(()=>{if(!$[0]?.asset)return[];const Z=$[0].asset.chainId;return Ue.filter(le=>le.chainId===Z)},[Ue,$]),[Ae,nt]=u.useState(!1),[st,ft]=u.useState(null),ot=u.useRef(T);ot.current=T;const _e=u.useCallback(Z=>{ft(Z),typeof Z=="string"&&Z&&ot.current?.(Z,g.getRelayerErrorDetail(Z))},[]),[Be,Ct]=u.useState("idle"),mt=u.useCallback(Z=>{typeof Z=="string"&&Z&&ot.current?.(Z,g.getRelayerErrorDetail(Z))},[]),[Te,Ke]=u.useState(!1),[Oe,Y]=u.useState(null),[Ee,ye]=u.useState("idle"),[Re,dt]=u.useState(null),[Qe,yt]=u.useState(null),[lt,qt]=u.useState(null),[Lt,Nt]=u.useState(null),[Je,pe]=u.useState(null),{intentStatus:We,startStatusPolling:at,clearStatus:ut,execute:ve}=ds(),fe=u.useCallback((Z,le)=>{const Pe=g.CHAIN_CONFIGS[le];return Pe?Pe.supportedTokens?.find(ke=>g.addressesEqual(ke.address,Z))?.symbol??null:null},[]),He=u.useMemo(()=>{const Z=$[0]?.asset;if(!Z||!x||!h)return!1;const le=fe(x,h);return lc(Z.symbol)&&!!le&&cc(le)},[$,x,h,fe]);u.useEffect(()=>{$.length>0&&N!==$[0]?.amount&&Se(Z=>{if(Z.length===0)return Z;const le=[...Z];return le[0]={...le[0],amount:N||""},le})},[N]),u.useEffect(()=>{$.length!==0&&Se(Z=>{let le=!1;const Pe=Z.map(ke=>{if(!ke.asset)return ke;const gt=Ue.find(wt=>wt.chainId===ke.asset.chainId&&g.addressesEqual(wt.address,ke.asset.address));return gt?gt===ke.asset||gt.balance===ke.asset.balance?ke:(le=!0,{...ke,asset:gt,amount:ke.amount}):ke});return le?Pe:Z})},[Ue,$.length]),u.useEffect(()=>{if(!v||$.length>0||Ue.length===0)return;const Z=Ue.find(le=>le.chainId===v.chainId&&g.addressesEqual(le.address,v.address));Z&&(Se([{asset:Z,amount:""}]),d?.(Z))},[v,Ue,$.length]);const it=u.useRef(null);u.useEffect(()=>{if(se&&We?.overallStatus==="success"&&b&&Be==="idle"){const Z=it.current,le=be.current;Z&&(async()=>{try{Ct("executing"),await b(Z),Ct("success"),Y(Z),Ke(!0);const Pe=Array.isArray(le)?le[0]:void 0,ke={type:"deposit",status:"success",amount:Z,asset:Pe?.tokenAddress,sourceChain:Pe?String(Pe.chainId):void 0,txHash:Pe?.txHash};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:ke})),j?.(ke)}catch(Pe){console.error("onDepositExecute failed:",Pe),Ct("error"),mt(g.sanitizeError(Pe,"Post-deposit instruction failed"))}finally{it.current=null,be.current=null}})()}},[We?.overallStatus,se,Be]);const Ge=u.useCallback(()=>{_e(null)},[]);u.useEffect(()=>{e||(Ke(!1),Y(null),ye("idle"),dt(null),yt(null))},[e]);const Ie=u.useCallback((Z,le)=>{Se(Pe=>{const ke=[...Pe];return ke[le]={asset:Z,amount:ke[le]?.amount||""},ke}),le===0&&d?.(Z),Ge()},[d,Ge]),Et=u.useCallback(async(Z,le)=>{if(Se(Pe=>{const ke=[...Pe];return ke[le]&&(ke[le]={...ke[le],amount:Z}),ke}),Ge(),le===0)if(c?.setAssetAmount(Z),He&&Z&&parseFloat(Z)>0)try{const Pe=lt??await ic();lt||qt(Pe);const ke=$[0]?.asset;if(!ke)return;const gt=I.parseUnits(Z,ke.decimals),wt=x?fe(x,h):null,Tt=g.CHAIN_CONFIGS[h]?.supportedTokens?.find(At=>g.addressesEqual(At.address,x))?.decimals??6,dn=dc(gt,ke.decimals,Tt,Pe);Nt(dn);const ln=I.formatUnits(dn,Tt),un=Pe.toLocaleString("en-US",{maximumFractionDigits:0});pe(`${Z} ${ke.symbol} \u2248 $${parseFloat(ln).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})} ${wt??"USD"} (rate: $${un}/BTC)`),p?.(ln)}catch(Pe){console.error("Failed to fetch BTC/USD price:",Pe),pe(null),Nt(null),p?.(Z)}else pe(null),Nt(null),p?.(Z)},[Ge,c,p,He,lt,$,x,h,fe]),De=u.useCallback(()=>{$.length<2&&Se(Z=>[...Z,{asset:null,amount:""}])},[$.length]),bt=u.useCallback(Z=>{Se(le=>le.filter((Pe,ke)=>ke!==Z)),Ge()},[Ge]),jt=u.useRef(!1),Ht=u.useRef(!1);u.useEffect(()=>{e||(jt.current=!1,Ht.current=!1,Yt(null),Ft(null))},[e]);const[zt,Wt]=u.useState(!1),[$e,et]=u.useState(null),[Rt,Yt]=u.useState(null),[tn,Ft]=u.useState(null),[ge,qe]=u.useState(!1),[xt,Pt]=u.useState(null),Fe=u.useMemo(()=>{const Z=$[0];if($.length!==1||!Z?.asset||!Z.amount||parseFloat(Z.amount)<=0)return null;try{return{asset:Z.asset,amount:I.parseUnits(Z.amount,Z.asset.decimals),token:A.normalizeNativeTokenAddress(Z.asset.address),chainId:Z.asset.chainId}}catch{return null}},[$]),Ut=u.useMemo(()=>Fe?[Fe.chainId,Fe.token.toLowerCase(),Fe.amount.toString(),k?"escrow":"normal"].join("|"):null,[Fe,k]),Ze=u.useCallback(async(Z,le)=>ce?va({address:ce,depositQuote:Z,escrowOnly:k,signal:le}):null,[ce,k]),Xt=u.useCallback(async Z=>Fe?Ze(Fe,Z):null,[Fe,Ze]),tt=u.useRef(Xt);tt.current=Xt,as({shouldRun:e&&!se&&!!Ut&&!zt&&!Ae,deps:[e,se,Ut,zt,Ae],delayMs:500,backgroundIntervalMs:1e4,onSkip:()=>{Yt(null),Pt(null),qe(!1)},onCleanup:()=>qe(!1),run:async({isBackground:Z,isCurrent:le,signal:Pe})=>{Z||(Pt(null),qe(!0));try{const ke=await tt.current(Pe);le()&&Yt(ke)}catch(ke){if(!le())return;Yt(null),Pt(ke instanceof Error?ke.message:"Failed to estimate gas fee")}finally{le()&&qe(!1)}}}),u.useEffect(()=>{zt||Ae||Ft(null)},[zt,Ae,Ut]);const Mt=async()=>{if($.length===0||!$[0]?.asset)return;const Z=$.filter(wt=>wt.asset&&wt.amount&&parseFloat(wt.amount)>0);if(Z.length===0)return;const le=Z[0],Pe=g.getChainConfig(le.asset.chainId),ke=Z.map(wt=>{const Tt=parseFloat(wt.amount);return`${isNaN(Tt)?wt.amount:Tt.toPrecision(6).replace(/\.?0+$/,"")} ${wt.asset.symbol}`}).join(", "),gt={network:Pe?.displayName||`Chain ${le.asset.chainId}`,amount:ke,symbol:"",chainId:le.asset.chainId};if(!se&&Z.length===1&&Rt){Ft(Rt);const wt=Z[0];gt.creditedAmount=`${I.formatUnits(Rt.net,wt.asset.decimals)} ${wt.asset.symbol}`,gt.networkFee=`${I.formatUnits(Rt.fee,wt.asset.decimals)} ${wt.asset.symbol}`}et(gt),Wt(!0)},vt=u.useRef(We);vt.current=We;const Jt=u.useRef(Be);Jt.current=Be;const oe=async()=>{await id({selectedDepositAssets:$,escrowOnly:k,sourceAddress:_,isNon7702:se,address:ce,embeddedWalletAddress:re,isReady:O,isAuthenticated:ee,zeroCreditError:Le,depositBalanceError:nn,externalWalletClient:ae,externalProvider:ne.current,effectiveDepositFee:Ve,depositBatches:o,destinationChainId:h,destinationTokenAddress:x,isCrossDenomination:He,convertedUsdAmount:Lt,mode:W,sponsorGas:S,nativeChainId:w,spiceBalanceUser:Ce,depositDataRef:be,bridgedAmountRef:it,setIsExecuting:nt,setError:_e,setConfirmationData:et,setShowConfirmation:Wt,setDirectDepositStatus:ye,setDirectDepositChainId:yt,setDirectDepositTxHash:dt,setPostDepositStatus:Ct,setPostDepositError:mt,setPostDepositAmount:Y,setPostDepositSuccess:Ke,startStatusPolling:at,clearStatus:ut,refreshAssets:Me,onDepositExecute:b,onDepositSelect:s,onDepositSuccess:j,execution:{execute:ve},getCurrentIntentStatus:()=>vt.current,getCurrentPostDepositStatus:()=>Jt.current})},Le=u.useMemo(()=>{for(const Z of $)if(!(!Z?.asset||!Z.amount||parseFloat(Z.amount)<=0))try{const le=Z.asset.decimals,Pe=I.parseUnits(Z.amount,le);if(Pe<=0n)continue;const ke=A.getEquivalenceGroup(A.normalizeNativeTokenAddress(Z.asset.address)),gt=Z.asset.receiptTokenDecimals??(ke==="ETH"||ke==="ARB"?18:ke==="USDC"||ke==="SUSD"||ke==="WBTC"||ke==="CBTC"?6:void 0);if(gt===void 0||le<=gt||A.convertAmountBetweenDecimals(Pe,le,gt)>0n)continue;return`Amount too small. Minimum deposit for this asset is ${I.formatUnits(10n**BigInt(le-gt),le)} ${Z.asset.symbol}.`}catch{continue}return null},[$]),Ot=!se&&!!Fe,Ve=tn??Rt,kt=!!Fe&&Ca(Ve,Fe),nn=u.useMemo(()=>{if(!Ot||!Fe||!kt)return null;const Z=k?Fe.amount:Fe.amount+Ve.fee;return Fe.asset.balance>=Z?null:`Insufficient ${Fe.asset.symbol}. Need ${I.formatUnits(Z,Fe.asset.decimals)} ${Fe.asset.symbol} including gas.`},[Ot,Fe,kt,Ve,k]),[de,me]=u.useState(!1),ze=$[0]?.asset?.chainId,je=ct.find(Z=>Z.isNative&&Z.chainId===ze)?.balance??0n;u.useEffect(()=>{if(!e||!ze){me(!1);return}let Z=!1;return(async()=>{try{const le=await g.getClientForChain(ze).getGasPrice()*150000n;Z||me(je<le)}catch{Z||me(!1)}})(),()=>{Z=!0}},[e,ze,je]);const St=!Ot||kt&&!ge&&!xt&&!nn,Dt=u.useCallback((Z,le)=>ld({asset:Z,assetIndex:le,selectedAssetCount:$.length,address:ce,escrowOnly:k,isNon7702:se}),[se,$.length,ce,k]),Gt=u.useMemo(()=>{if(!Fe||!Ve||!kt)return null;const Z=k?Fe.amount:Fe.amount+Ve.fee;return{symbol:Fe.asset.symbol,decimals:Fe.asset.decimals,grossAmount:Z,netAmount:Ve.net,totalFee:Ve.fee,gasFee:Ve.fee,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"estimated"}},[Fe,Ve,kt,k]),rt=parseFloat($[0]?.amount||"")||0,ht=$.length>0&&$[0]?.asset&&$[0]?.amount&&rt>0&&ie&&!Ae&&!Le&&!nn&&St&&!X;u.useEffect(()=>{if(!k||!C||!E||jt.current||!ie)return;const Z=r[0];if(!Z)return;const le=g.getAllAssetsForChain(Z,[]).find(ke=>g.addressesEqual(ke.address,C));let Pe;if(le)Pe=le;else if(F!==void 0&&B)Pe={address:C,symbol:B,name:B,decimals:F,chainId:Z,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,isNative:A.isNativeToken(C)};else{console.warn("[DepositModal] escrowOnly: no matching asset and missing escrowTokenDecimals/escrowTokenSymbol for",C);return}jt.current=!0,Se([{asset:Pe,amount:E}])},[k,C,E,F,B,ie,r]),u.useEffect(()=>{!k||!ht||Ht.current||Ae||(Ht.current=!0,oe())},[k,ht,Ae]);const Vt=pt||st||Le||nn,sn=()=>{if(Ae)return"Executing Deposit...";if(!ie)return"Wallet Not Connected";if(W==="7702"){if(!O)return"Loading...";if(!ee)return"Authentication Required"}return $[0]?.asset?$[0]?.amount?Le?"AMOUNT TOO SMALL":nn?"INSUFFICIENT BALANCE":Ot&&!St?xt?"GAS UNAVAILABLE":"ESTIMATING GAS":"DEPOSIT":"ENTER AMOUNT":"SELECT TOKEN"};return e?a.jsx(rn,{isOpen:e,onClose:t,closeOnBackdropClick:n,title:i||`Deposit to your ${G} account`,subtitle:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:Lo,alt:"","aria-hidden":"true",style:{width:"13px",height:"13px",flexShrink:0,...V?{filter:"invert(0.6)"}:{}}}),a.jsx("p",{style:{fontSize:"12px",color:U.textSecondary,margin:"0",lineHeight:"1.4",fontFamily:g.font.ui},children:`Deposit collateral to your ${G} Account from any supported network.`})]}),dark:V,overlayContent:zt||We||Be!=="idle"&&b?a.jsx("div",{}):void 0,styles:l,theme:H,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px"},children:[a.jsx(dd,{selectedDepositAssets:$,depositAssets:Ue,secondAssetOptions:Xe,loadingAssets:xe,allowSecondAsset:f,theme:H,styles:l,dark:V,dk:U,onSelect:Ie,onAmountChange:Et,onAdd:De,onRemove:bt,resolveMaxAmount:Dt,onViewAllAssets:D}),Ot&&Fe&&a.jsx(No,{fontFamily:l?.fontFamily||H.typography.fontFamily,textPrimary:U.textPrimary,textSecondary:U.textSecondary,cardBg:V?U.inputBg:"#ffffff",cardBorder:U.cardBorder,resolvedDark:V,darkCardBorder:U.cardBorder,primaryColor:J,feePreview:Gt,isLoading:ge||Ot&&!kt,errorText:xt}),a.jsx(td,{intentStatus:We,postDepositSuccess:Te,postDepositAmount:Oe,postDepositStatus:Be,depositActionLabel:y,sourceChainName:$[0]?.asset?.chainId?g.getChainName($[0].asset.chainId):"Destination Chain",directDepositStatus:Ee,directDepositTxHash:Re,directDepositChainId:Qe,styles:l}),a.jsx(ed,{isOpen:zt||!!We||Be!=="idle"&&!!b,onClose:()=>{Wt(!1),We&&ut();const Z=Be==="success"&&!We,le=We?.overallStatus==="success"&&(b?Be==="success":!0);(Z||le)&&t()},onConfirm:oe,data:$e,isExecuting:Ae,error:st,theme:H,styles:l,intentStatus:We,postDepositStatus:Be,hasPostDepositInstruction:!!b}),Je&&a.jsxs(Jr,{dk:U,dark:V,borderRadius:H.borderRadius.md,children:["\u26A1 ",Je]}),de&&a.jsx(Jr,{dk:U,dark:V,borderRadius:H.borderRadius.md,children:"Low native balance in the external wallet. The deposit to spicenet account might fail."}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:0,marginBottom:0,margin:0,padding:0},children:[Vt?a.jsx("div",{style:{marginBottom:"10px",fontSize:"12px",lineHeight:"1.45",color:U.errorText,fontFamily:l?.fontFamily||H.typography.fontFamily},children:Vt}):null,a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:Mt,disabled:!ht||!ie||Ae,theme:H,dark:V,styles:l,children:sn()})]})]})}):null}),ud=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,deposits:s,onComplete:o,onCancel:r,onSkip:i,onChangeWallet:l,isProcessing:d,error:c,styles:m})=>{const{dark:p,dk:f,theme:h}=g.useSpiceBrand(m);if(!e||s.length===0)return null;const x=s[0],b=m?.fontFamily||g.font.ui,y=g.font.mono,w=g.getChainName(x.chainId),S=parseFloat(x.amount).toPrecision(6).replace(/\.?0+$/,""),v=I.formatUnits(x.verifiedBalance,x.tokenDecimals);return a.jsx(rn,{isOpen:e,onClose:t,title:"Incomplete Deposit",styles:m,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"18px 24px 24px",fontFamily:b},children:[a.jsx("p",{style:{fontSize:"14px",color:f.textSecondary,lineHeight:"1.6",margin:"0 0 18px 0"},children:"Your funds reached your wallet, but the deposit didn't finish."}),a.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",gap:"14px 18px",marginBottom:"24px",padding:"16px 18px",backgroundColor:p?f.cardBg:"#f8fafc",border:`1px solid ${f.cardBorder}`,borderRadius:p?"14px":"10px",boxShadow:p?"inset 0 1px 0 rgba(255,255,255,0.03)":"0 1px 2px rgba(16,24,40,0.04)"},children:[a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:f.textSecondary,fontFamily:y,letterSpacing:"0.8px"},children:"NETWORK"}),a.jsx("span",{style:{fontSize:"18px",fontWeight:600,color:f.textPrimary,fontFamily:b,lineHeight:1.2},children:w})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px",alignItems:"flex-end",textAlign:"right"},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:f.textSecondary,fontFamily:y,letterSpacing:"0.8px"},children:"DEPOSITED AMOUNT"}),a.jsxs("span",{style:{fontSize:"24px",fontWeight:700,color:f.successText,fontFamily:y,lineHeight:1.1},children:[S," ",x.tokenSymbol]}),a.jsx("span",{style:{fontSize:"12px",color:f.textSecondary,fontWeight:500,fontFamily:b},children:"Sent to embedded wallet"})]})]}),!x.hasFullBalance&&x.verifiedBalance>0n&&a.jsxs("div",{style:{marginBottom:"16px",padding:"8px 12px",backgroundColor:f.warningBg,border:`1px solid ${p?f.warningBorder:"#fcd34d"}`,borderRadius:"8px",fontSize:"13px",color:f.warningText,lineHeight:"1.4"},children:["Partial balance \u2014 only ",parseFloat(v).toFixed(4)," ",x.tokenSymbol," available."]}),c&&a.jsx("div",{style:{marginBottom:"16px",padding:"10px 12px",backgroundColor:f.errorBg,border:`1px solid ${p?f.errorBorder:"#fca5a5"}`,borderRadius:"8px",fontSize:"13px",color:p?f.errorText:"#991b1b",lineHeight:"1.4"},children:c}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[a.jsx(g.Button,{variant:"outline",fullWidth:!0,disabled:d,onClick:()=>o(x),theme:h,dark:p,styles:m,children:"CONFIRM DEPOSIT"}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[a.jsx(g.Button,{variant:"ghost",fullWidth:!0,disabled:d,onClick:()=>r(x),theme:h,dark:p,style:{height:"48px",fontSize:"13px",letterSpacing:"0.4px",color:p?f.textPrimary:"#374151",border:`1px solid ${p?f.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:p?"rgba(255,255,255,0.02)":"#ffffff"},children:d?"RETURNING...":"RETURN FUNDS"}),a.jsxs("div",{style:{display:"grid",gridTemplateColumns:l?"1fr 1fr":"1fr",gap:"10px"},children:[a.jsx(g.Button,{variant:"ghost",fullWidth:!0,disabled:d,onClick:i,theme:h,dark:p,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:f.textSecondary,border:`1px solid ${p?f.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"START OVER"}),l&&a.jsx(g.Button,{variant:"ghost",fullWidth:!0,disabled:d,onClick:l,theme:h,dark:p,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:f.textSecondary,border:`1px solid ${p?f.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"CHANGE WALLET"})]})]})]}),s.length>1&&a.jsxs("p",{style:{fontSize:"12px",color:f.textSecondary,textAlign:"center",marginTop:"14px",marginBottom:0,lineHeight:"1.5"},children:[s.length," incomplete deposits found \u2014 resolving one at a time."]})]})})},pd=[{source:"wallet",title:"From Wallet",description:"Deposit crypto you already hold in a connected wallet"},{source:"card",title:"With Card",description:"Buy and deposit using a debit or credit card"},{source:"exchange",title:"From Exchange",description:"Transfer from Coinbase, Binance, or any exchange"}],fd=({isOpen:e,onClose:t,closeOnBackdropClick:n,onSelect:s,styles:o})=>{const{dark:r,dk:i}=g.useSpiceBrand(o),[l,d]=u.useState(null);return a.jsx(rn,{isOpen:e,onClose:t,title:"Deposit",subtitle:"Choose how you want to add funds",styles:o,dark:r,closeOnBackdropClick:n,children:a.jsx("div",{style:{padding:"0 24px 25px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"20px"},children:pd.map(({source:c,title:m,description:p})=>a.jsxs("button",{onClick:()=>s(c),onMouseEnter:()=>d(c),onMouseLeave:()=>d(null),style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"4px",padding:"14px 16px",borderRadius:"8px",border:`1px solid ${r?i.cardBorder:"#e5e7eb"}`,backgroundColor:l===c?r?i.hoverBg:"#f9fafb":r?i.cardBg:"white",cursor:"pointer",textAlign:"left",transition:g.transition.color},children:[a.jsx("span",{style:{fontSize:"15px",fontWeight:600,fontFamily:g.font.ui,color:r?i.textPrimary:"#111827"},children:m}),a.jsx("span",{style:{fontSize:"13px",fontFamily:g.font.ui,color:r?i.textSecondary:"#6b7280"},children:p})]},c))})})},md=({isOpen:e,onClose:t,onBack:n,closeOnBackdropClick:s,source:o,destinationChainId:r,onShowWidget:i,onHideWidget:l,verifying:d,verifyError:c,onRetryVerify:m,funded:p,styles:f})=>{const{dark:h,dk:x,primaryColor:b,theme:y}=g.useSpiceBrand(f),w=g.getChainName(r),S=u.useRef(null),v=u.useRef(i);v.current=i;const k=u.useRef(l);k.current=l;const C=d||!!c||!!p;return u.useEffect(()=>{if(!e)return;const E=S.current;if(E){if(C){k.current();return}return v.current(E,o),()=>k.current()}},[e,o,C]),a.jsx(rn,{isOpen:e,onClose:t,title:o==="card"?"Deposit with Card":"Deposit from Exchange",styles:f,dark:h,closeOnBackdropClick:s,children:a.jsxs("div",{style:{padding:"0 24px 25px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"12px"},children:[a.jsx("button",{onClick:n,disabled:d,style:{alignSelf:"flex-start",padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:g.font.ui,color:h?x.textSecondary:"#6b7280",cursor:d?"default":"pointer",opacity:d?.5:1},children:"\u2190 Back"}),a.jsxs("div",{style:{position:"relative",width:"100%"},children:[a.jsx("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center"},children:a.jsx(g.Spinner,{size:28,color:b})}),a.jsx("div",{ref:S,style:{position:"relative",width:"100%",height:"560px"}}),C&&a.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"16px",padding:"24px",borderRadius:"9px",backgroundColor:h?"rgba(0, 0, 0, 0.82)":"rgba(255, 255, 255, 0.94)"},children:d?a.jsxs(a.Fragment,{children:[a.jsx(g.Spinner,{size:28,color:b}),a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:g.font.ui,color:h?x.textPrimary:"#111827",textAlign:"center"},children:["Confirming your deposit arrived on ",w,"\u2026"]})]}):p?a.jsxs(a.Fragment,{children:[a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:g.font.ui,color:h?x.textPrimary:"#111827",textAlign:"center"},children:[p.amount," ",p.symbol," is in your wallet on"," ",w,"."]}),a.jsx(g.Button,{variant:"outline",onClick:t,theme:y,dark:h,styles:f,children:"DONE"})]}):a.jsxs(a.Fragment,{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontFamily:g.font.ui,color:h?x.textPrimary:"#111827",textAlign:"center"},children:c}),a.jsx(g.Button,{variant:"outline",onClick:m,theme:y,dark:h,styles:f,children:"RETRY"}),a.jsx("button",{onClick:t,style:{padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:g.font.ui,color:h?x.textSecondary:"#6b7280",cursor:"pointer",textDecoration:"underline"},children:"Close \u2014 we'll detect your funds later"})]})})]})]})})},hd="692fb8af264069ca12a9",Vn=42161,gd=[8453,Vn];function xd(e){const{targetKind:t,appChainId:n}=e;return t!=="external"||n===void 0||!gd.includes(n)?Vn:A.getTokenBySymbol("USDC",n)?n:Vn}function Os(e=Vn){return A.getTokenBySymbol("USDC",e)}function yd(e){const t=e?.integratorId??hd;return{integratorId:t,enabled:e?.enabled===!0&&t!=="",embedFactory:e?.embedFactory}}const bd=e=>import("@swapper-finance/deposit-sdk").then(t=>new t.SwapperEmbed(e));function wd(e,t,n){return{themeMode:t?"dark":"light",componentStyles:{width:"100%",primaryColor:n,accentColor:n,borderRadius:"9px",...t?{backgroundColor:e.shell,surfaceColor:e.cardBg,surfaceAltColor:e.inputBg,textColor:e.textPrimary,border:`1px solid ${e.cardBorder}`}:{}}}}function Sa(e){return e==="card"?["depositWithCash"]:e==="exchange"?["transferCrypto"]:["depositWithCash","transferCrypto"]}function Cd(e){const t=e.destinationChainId??Vn,n=Os(t);if(!n)throw new Error("USDC is not configured for the Swapper destination chain");return{iframeUrl:"https://swapper-deposit-sdk.web.app/",integratorId:e.integratorId,dstChainId:String(t),dstTokenAddr:n.address,depositWalletAddress:e.depositWalletAddress,supportedDepositOptions:Sa(e.source),styles:e.styles,actionLabel:"deposit",flexibleHeight:!0,iframeAttributes:{borderRadius:"9px"}}}async function Aa(e,t=Vn){const n=Os(t);if(!n)throw new Error("USDC is not configured for the Swapper destination chain");return g.getClientForChain(t).readContract({address:n.address,abi:I.erc20Abi,functionName:"balanceOf",args:[e]})}async function vd(e,t,n){const s=n?.timeoutMs??12e4,o=n?.intervalMs??3e3,r=Date.now()+s;for(;Date.now()<r;){if(n?.signal?.aborted)return null;try{const i=await Aa(e,n?.chainId);if(i>t)return i}catch{}await new Promise(i=>setTimeout(i,o))}return null}const zo=e=>{const[t,n]=u.useState(!1),s=u.useContext(g.SpiceFlowProviderContext),{dark:o,dk:r}=g.useSpiceBrand();if(u.useEffect(()=>{n(!0)},[]),!t)return a.jsx("div",{className:e.className,children:a.jsx("button",{disabled:!0,style:{padding:"12px 24px",fontSize:"16px",backgroundColor:o?r.hoverBg:"#ccc",color:o?r.textSecondary:"white",border:o?`1px solid ${r.buttonBorder}`:"none",borderRadius:"4px",cursor:"not-allowed"},children:"Loading..."})});if(!s){const i='ProviderLogin must be used within SpiceFlowProvider. Please wrap your app with <SpiceFlowProvider provider="privy">.';return a.jsx("div",{className:e.className,children:a.jsx("button",{onClick:()=>{e.onAuthError&&e.onAuthError(i)},style:{padding:"12px 24px",fontSize:"16px",backgroundColor:o?r.errorBg:"#dc2626",color:o?r.errorText:"white",border:o?`1px solid ${r.errorBorder}`:"none",borderRadius:"4px",cursor:"pointer"},children:"Provider Not Found"})})}return a.jsx(g.PrivyLogin,{...e})},kd=.01,Sd=5*60*1e3;function Ad(e){const t=Number(I.formatUnits(e.verifiedBalance,e.tokenDecimals));return Number.isFinite(t)?t:0}async function Id(e){const t=Ed(e);let n;try{n=await bo(t.map(s=>s.tokenSymbol))}catch{return t}return t.filter(s=>{const o=Ad(s);if(o<=0)return!0;const r=n[s.tokenSymbol.toUpperCase()]??0;return!Number.isFinite(r)||r<=0?!0:o*r>=kd})}function Ed(e){const t=new Map;for(const n of e){const s=`${n.chainId}:${n.tokenAddress.toLowerCase()}`;t.get(s)||t.set(s,{...n,amount:n.timestamp===0?I.formatUnits(n.verifiedBalance,n.tokenDecimals):n.amount,rawAmount:n.timestamp===0?n.verifiedBalance.toString():n.rawAmount,hasFullBalance:n.timestamp===0?!0:n.hasFullBalance})}return Array.from(t.values())}function Ia(e,t){const[n,s]=u.useState([]),[o,r]=u.useState(!1),i=u.useRef(t);i.current=t;const l=u.useRef(0),d=u.useRef(0),c=u.useCallback(async({forceDiscovery:m=!1}={})=>{if(!e){s([]),r(!1);return}const p=++d.current,f=()=>p!==d.current;r(!0);try{const h=[],x=od(e);for(const S of x){if(f())return;try{const v=g.getClientForChain(S.chainId);let k;if(S.isNative||A.isNativeToken(S.tokenAddress)?k=await on.getBalance(v,{address:e}):k=await on.readContract(v,{address:I.getAddress(S.tokenAddress),abi:I.erc20Abi,functionName:"balanceOf",args:[e]}),f())return;k>0n?h.push({...S,verifiedBalance:k,hasFullBalance:k>=BigInt(S.rawAmount)}):Date.now()-S.timestamp>15*60*1e3&&Po(e,S.chainId,S.tokenAddress)}catch(v){console.warn(`[usePendingDeposit] Failed to verify balance for ${S.tokenSymbol} on chain ${S.chainId}:`,v),h.push({...S,verifiedBalance:0n,hasFullBalance:!1})}}if(f())return;const b=i.current,y=Date.now(),w=(b?.discoverWalletBalances??!0)&&(m||y-l.current>=Sd);if(b?.network&&w){l.current=y;const S=b.chainIds??A.getChainIdsByNetwork(b.network),v=new Set(h.map(C=>`${C.chainId}:${C.tokenAddress.toLowerCase()}`)),k=[];for(const C of S){const E=g.getChainConfig(C);if(E?.supportedTokens)for(const F of E.supportedTokens){if(A.isNativeToken(F.address))continue;const B=`${C}:${F.address.toLowerCase()}`;v.has(B)||k.push((async()=>{try{const j=g.getClientForChain(C),T=await on.readContract(j,{address:I.getAddress(F.address),abi:I.erc20Abi,functionName:"balanceOf",args:[e]});return T>0n?{chainId:C,tokenAddress:F.address,tokenSymbol:F.symbol,tokenDecimals:F.decimals,amount:I.formatUnits(T,F.decimals),rawAmount:T.toString(),embeddedWalletAddress:e,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:T,hasFullBalance:!0}:null}catch{return null}})())}}if(k.length>0){const C=await Promise.allSettled(k);if(f())return;for(const E of C)E.status==="fulfilled"&&E.value&&h.push(E.value)}}if(!f()){const S=await Id(h);if(f())return;s(S)}}catch(h){console.error("[usePendingDeposit] Verification error:",h),f()||s([])}finally{f()||r(!1)}},[e]);return u.useEffect(()=>{if(!i.current?.enabled){d.current++,s([]),r(!1);return}c({forceDiscovery:!0});const m=i.current?.pollIntervalMs??3e4;if(m<=0||!e)return()=>{d.current++};const p=setInterval(()=>{c({forceDiscovery:!1})},m),f=()=>c({forceDiscovery:!0});return window.addEventListener(Ms,f),()=>{d.current++,window.removeEventListener(Ms,f),clearInterval(p)}},[c,e]),{pendingDeposits:n,loading:o,refresh:()=>c({forceDiscovery:!0})}}function Fd({enabled:e,integratorId:t,depositWalletAddress:n,destinationChainId:s,brand:o,embedFactory:r,onTransactionSuccess:i,onCloseRequest:l}){const d=u.useRef(null),c=u.useRef(null),m=u.useRef(i);m.current=i;const p=u.useRef(l);p.current=l;const f=u.useRef(o);f.current=o;const h=u.useRef(r);h.current=r;const x=u.useCallback((w,S,v)=>{if(!S.isConnected)return;const k=w.getIframe();k.updateConfig({supportedDepositOptions:Sa(v)}),k.sendConfig(),w.showIn(S)},[]);u.useEffect(()=>{if(!e||!n)return;let w=!1;return Promise.resolve().then(()=>{const{dk:S,dark:v,primaryColor:k}=f.current;return(h.current??bd)(Cd({integratorId:t,depositWalletAddress:n,destinationChainId:s,source:null,styles:wd(S,v,k)}))}).then(S=>{if(w){S.destroy();return}const v=S.getIframe();v.on("transaction_success",C=>m.current(C)),v.on("close_request",()=>p.current()),d.current=S;const k=c.current;k&&x(S,k.placeholder,k.source)}).catch(S=>{console.error("[useSwapperEmbed] Failed to preload Swapper widget:",S)}),()=>{w=!0,c.current=null,d.current?.destroy(),d.current=null}},[e,t,n,s,x]);const b=u.useCallback((w,S)=>{c.current={placeholder:w,source:S};const v=d.current;v&&x(v,w,S)},[x]),y=u.useCallback(()=>{c.current=null,d.current?.hide()},[]);return{showWidget:b,hideWidget:y}}function Td(e,t,n,s,o){return{address:t,symbol:n||"UNKNOWN",name:n||"Unknown Token",decimals:s||18,chainId:e,balance:0n,balanceFormatted:o?parseFloat(o):0,balanceUsd:0,isNative:A.isNativeToken(t)}}function Bd(e,t){const n=e?.data;if(!n||typeof n!="object")return null;const s=n;if(s.__spiceflowPlaygroundMock!==!0)return null;try{if(typeof s.amountReceivedRaw=="string")return BigInt(s.amountReceivedRaw);if(typeof s.amountReceived=="string"||typeof s.amountReceived=="number")return I.parseUnits(String(s.amountReceived),t)}catch{return null}return null}const jd=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,depositBatches:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:d,depositActionLabel:c,sponsorGas:m=!1,escrowRecovery:p,skipTokenSelection:f=!1,onDepositSuccess:h,onDepositError:x,skipRecovery:b=!1})=>{const y=u.useContext(g.SpiceFlowProviderContext);if(!y)return a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"});const w=(y.mode||"7702")!="7702",S=w,v=y.nativeChainId,k=y.network||"testnet",{dark:C,dk:E,primaryColor:F}=g.useSpiceBrand(s),B=!!p,j=g.useWallet(),{isReady:T,isAuthenticated:R,actions:D}=j,M=y?.embeddedWalletAddress,{address:W}=pn.useAccount(),q=y?.externalWalletAddress??W,z=!!q,X=yd(y.swapper),N=S?{address:q,kind:"external"}:{address:M,kind:"embedded"},H=xd({targetKind:N.kind,appChainId:i||v}),V=X.enabled&&!B&&k==="mainnet"&&!!Os(H),G=()=>f?"deposit":"select-token",J=()=>V?"select-source":S?z?G():"connect-wallet":"provider-login",[U,L]=u.useState(J()),[O,ee]=u.useState(null),[ue,re]=u.useState(!1),[se,ie]=u.useState(null),[ce,_]=u.useState(!1),[Ce,P]=u.useState(null),[ae,he]=u.useState(null),[ne,Q]=u.useState(null),te=u.useRef(null),be=u.useRef(null),{pendingDeposits:$,loading:Se,refresh:ct}=Ia(M,{enabled:e,network:k,chainIds:y.supportedChainIds}),[xe,pt]=u.useState(null),[Me,Ue]=u.useState(!1),[Xe,Ae]=u.useState(null),[nt,st]=u.useState(!1),[ft,ot]=u.useState("idle");u.useEffect(()=>{e&&!b&&!B&&!xe&&!nt&&ft==="idle"&&R&&M&&z&&q&&!Se&&$.length>0&&U!=="recovery"&&U!=="deposit"&&U!=="swapper"&&L("recovery")},[e,b,B,R,M,z,q,Se,$,U,xe,nt,ft]);const _e=u.useCallback(pe=>{const We={address:pe.tokenAddress,symbol:pe.tokenSymbol,name:pe.tokenSymbol,decimals:pe.tokenDecimals,chainId:pe.chainId,balance:pe.verifiedBalance,balanceFormatted:parseFloat(pe.amount),balanceUsd:0,isNative:pe.isNative};ee(We),pt(pe),L("deposit")},[]),Be=u.useCallback(pe=>{if(ie(pe),S){L(z?pe==="wallet"?G():"swapper":"connect-wallet");return}const We=R&&!!M;L(pe==="wallet"?We?z?G():"connect-wallet":"provider-login":We?"swapper":"provider-login")},[S,R,M,z,f]),Ct=u.useCallback(()=>{be.current?.abort(),_(!1),P(null),he(null),ie(null),te.current=null,Q(null),L("select-source")},[]);u.useEffect(()=>{U==="swapper"&&(ne||!N.address||Q({address:N.address,kind:N.kind}))},[U,ne,N.address,N.kind]);const mt=ne??N,Te=mt.address,Ke=mt.kind,Oe=u.useCallback(async pe=>{if(!Te)return;be.current?.abort();const We=new AbortController;be.current=We,P(null),_(!0);const at=Os(H);if(!at){_(!1);return}const ut=He=>{_(!1);const it=I.formatUnits(He,at.decimals);if(Ke==="external"){he({amount:it,symbol:at.symbol});const Ge={type:"wallet-funding",status:"success",amount:it,asset:at.address,sourceChain:String(H)};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:Ge})),h?.(Ge);return}_e({chainId:H,tokenAddress:at.address,tokenSymbol:at.symbol,tokenDecimals:at.decimals,amount:it,rawAmount:He.toString(),embeddedWalletAddress:Te,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:He,hasFullBalance:!0})},ve=Bd(pe,at.decimals);if(ve!==null){ut(ve);return}const fe=await vd(Te,te.current??0n,{signal:We.signal,chainId:H});if(!We.signal.aborted){if(fe===null){_(!1);const He=g.getChainConfig(H)?.viemChain?.name??`chain ${H}`;P(`We haven't seen your funds arrive on ${He} yet \u2014 they may still be in transit.`);return}ut(fe)}},[Te,Ke,H,_e,h]);u.useEffect(()=>{if(U!=="swapper"||!Te||te.current!==null)return;let pe=!1;return Aa(Te,H).then(We=>{pe||(te.current=We)}).catch(()=>{pe||(te.current=0n)}),()=>{pe=!0}},[U,Te,H]);const{showWidget:Y,hideWidget:Ee}=Fd({enabled:e&&V,integratorId:X.integratorId,depositWalletAddress:Te,destinationChainId:H,brand:{dk:E,dark:C,primaryColor:F},embedFactory:X.embedFactory,onTransactionSuccess:Oe,onCloseRequest:()=>{ce||Ct()}}),ye=u.useCallback(()=>{st(!0),L(R&&M&&z&&q?f?"deposit":"select-token":R&&M?"connect-wallet":"provider-login")},[R,M,z,q,f]),Re=u.useCallback(()=>{Ae(null),ot("awaiting-disconnect"),L("connect-wallet")},[]),dt=u.useCallback(async pe=>{Ue(!0),Ae(null);try{if(!M)throw new Error("Embedded wallet not available");const We=await D.getEthereumProvider(),at=g.getChainConfig(pe.chainId);await g.ensureWalletOnChain(We,pe.chainId);const ut=g.getClientForChain(pe.chainId),ve=await on.getBalance(ut,{address:M}),fe=at?.viemChain?.name||`chain ${pe.chainId}`;if(ve===0n)throw new Error(`Your embedded wallet has no ETH on ${fe} to pay for gas. We recommend completing the deposit instead \u2014 it doesn't require gas.`);const He=I.createWalletClient({account:M,transport:I.custom(We),chain:at?.viemChain}),it=pe.externalWalletAddress&&I.isAddress(pe.externalWalletAddress)?pe.externalWalletAddress:q;if(!it||!I.isAddress(it))throw new Error("Connect the external wallet that should receive these funds, then try again.");let Ge;pe.isNative||A.isNativeToken(pe.tokenAddress)?Ge=await He.sendTransaction({to:it,value:pe.verifiedBalance,chain:at?.viemChain}):Ge=await He.sendTransaction({to:pe.tokenAddress,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[it,pe.verifiedBalance]}),chain:at?.viemChain}),await ut.waitForTransactionReceipt({hash:Ge,confirmations:1}),Po(pe.embeddedWalletAddress,pe.chainId,pe.tokenAddress),ct(),$.length<=1&&L(J())}catch(We){const at=We?.message||"Couldn't return your funds. Please try again.",ut=/insufficient funds for gas/i.test(at);Ae(ut?"Not enough ETH in your embedded wallet to cover gas fees. Complete the deposit instead \u2014 it doesn't require gas.":at)}finally{Ue(!1)}},[D,M,q,$,ct]);u.useEffect(()=>{e||(pt(null),Ae(null),Ue(!1),st(!1),ot("idle"),be.current?.abort(),ie(null),_(!1),P(null),he(null),te.current=null,Q(null))},[e]),u.useEffect(()=>{if(ft!=="idle"){if(ft==="awaiting-disconnect"){(!z||!q)&&ot("awaiting-reconnect");return}e&&!Se&&$.length>0&&R&&M&&(ot("idle"),L("recovery"))}},[ft,z,q,e,Se,$,R,M]),u.useEffect(()=>{!B||!e||(R&&M?(re(!0),!O&&p?.chainId&&p?.tokenAddress&&ee(Td(p.chainId,p.tokenAddress,p.tokenSymbol,p.tokenDecimals,p.amount)),L("deposit")):L("provider-login"))},[B,e,U,R,M]);const{assets:Qe,loading:yt}=mn({address:q,supportedChains:y.supportedChainIds,fetchBalances:fn,enabled:e&&!!q,refreshInterval:e?5e3:0}),lt=u.useCallback(()=>{re(!0),L(B?"deposit":se==="card"||se==="exchange"?"swapper":z?f?"deposit":"select-token":"connect-wallet")},[B,se,z,f]),qt=u.useCallback(async()=>{if((!z||!q)&&(await hn(500),!z||!q)){alert("Please connect your wallet first");return}L(f?"deposit":"select-token")},[z,q,f]),Lt=u.useCallback(pe=>{ee(pe),L("deposit")},[]),Nt=u.useCallback(()=>{if(ee(null),r?.(""),!q){L("connect-wallet");return}L("select-token")},[q,r]),Je=u.useCallback(()=>{t()},[t]);if(u.useEffect(()=>{if(!e){const pe=setTimeout(()=>{B||(L(J()),ee(null)),re(!1)},300);return()=>clearTimeout(pe)}},[e,B,p?.chainId]),u.useEffect(()=>{e&&U==="deposit"&&!O&&!B&&!xe&&!f&&L("select-token")},[e,U,O,B,xe,f]),u.useEffect(()=>{if(e&&U==="connect-wallet"&&z&&q&&ft==="idle"){if(V&&!se){L("select-source");return}if(V&&se&&se!=="wallet"){L("swapper");return}L(f?"deposit":"select-token")}},[e,U,z,q,ft,f,V,se]),u.useEffect(()=>{if(!S&&e&&U==="provider-login"&&T&&R&&M&&!ue){const pe=setTimeout(()=>{re(!0),L(se==="card"||se==="exchange"?"swapper":z?f?"deposit":"select-token":"connect-wallet")},100);return()=>clearTimeout(pe)}},[S,e,U,T,R,M,se,z,f,ue]),!e)return null;if(U==="recovery")return a.jsx(ud,{isOpen:e,onClose:Je,closeOnBackdropClick:n,deposits:$,onComplete:_e,onCancel:dt,onSkip:ye,onChangeWallet:Re,isProcessing:Me,error:Xe,styles:s});if(U==="select-source")return V?a.jsx(fd,{isOpen:e,onClose:Je,closeOnBackdropClick:n,onSelect:Be,styles:s}):(L("provider-login"),null);if(U==="swapper")return se!=="card"&&se!=="exchange"?(L(J()),null):Te?a.jsx(md,{isOpen:e,onClose:Je,onBack:Ct,closeOnBackdropClick:n,source:se,destinationChainId:H,onShowWidget:Y,onHideWidget:Ee,verifying:ce,verifyError:Ce,onRetryVerify:Oe,funded:ae,styles:s}):a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",padding:"16px",zIndex:50},children:a.jsx("div",{style:{backgroundColor:C?E.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%",textAlign:"center",fontFamily:'"Helvetica Neue", sans-serif',fontSize:"14px",color:C?E.textPrimary:"#111827"},children:"Preparing your account..."})});if(U==="provider-login"&&!S)return a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",padding:"16px",zIndex:50},children:a.jsx("div",{style:{backgroundColor:C?E.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%"},children:a.jsx(zo,{onAuthSuccess:lt,autoTrigger:!0})})});if(U==="connect-wallet")return a.jsx(bc,{isOpen:e,onClose:Je,closeOnBackdropClick:n,onContinue:qt,requiredChainId:w?v:void 0,styles:s});if(U==="select-token")return q?a.jsx(gc,{isOpen:e,onClose:Je,closeOnBackdropClick:n,onTokenSelect:Lt,walletAddress:q,supportedChainIds:y.supportedChainIds,network:k,prefetchedAssets:yt?null:Qe??null,styles:s,dark:C}):(L("connect-wallet"),null);if(U==="deposit"){if(!O&&!f)return null;const pe=!!xe;return a.jsx(ka,{isOpen:e,onClose:Je,closeOnBackdropClick:n,supportedChains:O?[O.chainId]:y.supportedChainIds??[],styles:s,externalWalletAddress:q,depositBatches:pe?void 0:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:d,depositActionLabel:c,nativeChainId:v,sponsorGas:m,preSelectedAsset:O??void 0,escrowOnly:B||pe,escrowTokenAddress:pe?xe.tokenAddress:p?.tokenAddress,escrowAmount:pe?xe.amount:p?.amount,escrowTokenDecimals:pe?xe.tokenDecimals:p?.tokenDecimals,escrowTokenSymbol:pe?xe.tokenSymbol:p?.tokenSymbol,onDepositSuccess:h,onDepositError:x,embeddedWalletAddress:M,onViewAllAssets:f?void 0:Nt})}return null},Rd=e=>u.useContext(g.SpiceFlowProviderContext)?a.jsx(jd,{...e}):a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"}),Dd=({isOpen:e,onClose:t,onChainSelect:n,supportedChains:s,closeOnSelect:o=!0,styles:r})=>{const{theme:i,dark:l,primaryColor:d,dk:c}=g.useSpiceBrand(r),[m,p]=u.useState(""),[f,h]=u.useState(null),[x,b]=u.useState(null),[y,w]=u.useState(!1),[S,v]=u.useState(null),{switchChainAsync:k}=pn.useSwitchChain(),C=u.useMemo(()=>new Set(s||[]),[s]),E=u.useMemo(()=>{if(!s||s.length===0)return[];const T=[];return s.forEach((R,D)=>{if(typeof R!="number")return;const M=g.getChainConfig(R);M&&T.push({id:R.toString(),name:M.displayName,icon:Sn[R]||ns,chainId:R,verified:!0,order:D})}),T},[s]);u.useEffect(()=>{f&&!C.has(parseInt(f,10))&&h(null)},[f,C]);const F=u.useMemo(()=>E.filter(T=>T.name.toLowerCase().includes(m.toLowerCase())).sort((T,R)=>T.order-R.order),[E,m]),B=async()=>{if(!f)return;const T=parseInt(f,10);w(!0),v(null);try{await k({chainId:T}),n&&n(f),o&&t()}catch(R){console.error("Failed to switch chain:",R),v(g.sanitizeError(R,"Failed to switch chain."))}finally{w(!1)}},j=!f||y;return a.jsxs(rn,{isOpen:e,onClose:t,title:"Select Chain",styles:r,theme:i,dark:l,children:[a.jsx("div",{style:{padding:"24px 20px"},children:a.jsx(uo,{value:m,onChange:p,ariaLabel:"Search chains",placeholder:"Search chain name, symbol or address",size:"md",dark:l,styles:r,endAdornment:a.jsx("div",{style:{padding:"5px 5px",borderRadius:"3px",fontSize:"13px",backgroundColor:l?c.cardBg:"#E9E9E9",color:l?c.textSecondary:"#485066",fontWeight:500,flexShrink:0},"aria-hidden":"true",children:"\u2318F"})})}),a.jsx("div",{style:{padding:"0 32px 20px",display:"flex",flexDirection:"column",gap:"12px"},children:F.map(T=>{const R=f===T.id,D=x===T.id;return a.jsxs("button",{onClick:()=>h(T.id),onMouseEnter:()=>b(T.id),onMouseLeave:()=>b(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:R?l?`${d}15`:`${d}12`:"transparent",border:R?l?`1px solid ${d}66`:`1px solid ${d}88`:D?l?`1px solid ${d}44`:`1px solid ${d}66`:"1px solid transparent",cursor:"pointer",transition:g.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"30px"},children:a.jsx("img",{src:T.icon,alt:T.name,loading:"lazy",decoding:"async",style:{width:"100%",height:"100%",borderRadius:"50%"}})}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",flex:1},children:[a.jsx("span",{style:{fontFamily:g.font.mono,fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:c.textPrimary,textAlign:"left"},children:T.name}),T.verified&&a.jsx("img",{src:Gr,alt:"","aria-hidden":"true",loading:"lazy",decoding:"async",width:16,height:16,style:{width:"16px",height:"16px",filter:l?"brightness(0) invert(1)":"none"}})]})]},T.id)})}),S&&a.jsx("div",{style:{padding:"0 25px 12px"},children:a.jsx(yn,{variant:"error",size:"compact",palette:c,children:S})}),a.jsx("div",{style:{padding:"0 25px 25px"},children:a.jsxs(g.Button,{variant:"outline",onClick:B,disabled:j,fullWidth:!0,theme:i,styles:r,dark:l,children:["SELECT",a.jsx(Ul,{size:20})]})})]})},Nd={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",84532:"0x4200000000000000000000000000000000000006"},Ea=I.parseAbi(["function deposit() payable","function withdraw(uint256 wad)"]);function Ws(e){return g.getChainConfig(e)?.wrappedNativeTokenAddress??Nd[e]}const qo=(e,t)=>({to:e,value:t,data:I.encodeFunctionData({abi:Ea,functionName:"deposit"})}),Ho=(e,t)=>({to:e,value:0n,data:I.encodeFunctionData({abi:Ea,functionName:"withdraw",args:[t]})});function Vo(e,t,n){const s=A.isNativeToken(t),o=A.isNativeToken(n);if(!s&&!o)return null;const r=Ws(e);return r?{weth:r,wrapIn:s,unwrapOut:o}:null}function Qo(e,t,n){return A.isNativeToken(e)?{to:n,value:t,data:"0x"}:{to:e,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[n,t]})}}function Fa(e,t,n,s,o,r){const i=Vo(e,t,n);if(!i||s<=0n)return null;const l=i.wrapIn&&g.addressesEqual(n,i.weth),d=i.unwrapOut&&g.addressesEqual(t,i.weth);return!l&&!d?null:[l?qo(i.weth,s):Ho(i.weth,s),...g.addressesEqual(r,o)?[]:[Qo(n,s,o)]]}function Md(e,t){return{...e,resolve:async(n,s,o)=>{const r=t??o,i=Fa(s,n.tokenIn,n.tokenOut,n.amountIn,o,r);if(i)return{venue:"native-wrap",amountOut:n.amountIn,amountOutMinimum:n.amountIn,calls:i};const l=await e.resolve(n,s,o);if(l)return l;const d=Vo(s,n.tokenIn,n.tokenOut);if(!d)return null;const c=await e.resolve({...n,tokenIn:d.wrapIn?d.weth:n.tokenIn,tokenOut:d.unwrapOut?d.weth:n.tokenOut},s,r);return c?{...c,calls:[...d.wrapIn?[qo(d.weth,n.amountIn)]:[],...c.calls,...d.unwrapOut?[Ho(d.weth,c.amountOutMinimum)]:[],...g.addressesEqual(r,o)?[]:[Qo(n.tokenOut,c.amountOutMinimum,o)]]}:null}}}function Od(e,t){return{...e,resolve:async(n,s,o)=>{const r=t??o,i=Fa(s,n.tokenIn,n.tokenOut,n.amountOut,o,r);if(i)return{venue:"native-wrap",amountIn:n.amountOut,amountInMax:n.amountOut,amountOut:n.amountOut,calls:i};const l=await e.resolve(n,s,o);if(l)return l;const d=Vo(s,n.tokenIn,n.tokenOut);if(!d)return null;const c=await e.resolve({...n,tokenIn:d.wrapIn?d.weth:n.tokenIn,tokenOut:d.unwrapOut?d.weth:n.tokenOut},s,r);return c?{...c,calls:[...d.wrapIn?[qo(d.weth,c.amountInMax)]:[],...c.calls,...d.unwrapOut?[Ho(d.weth,c.amountOut)]:[],...g.addressesEqual(r,o)?[]:[Qo(n.tokenOut,c.amountOut,o)]]}:null}}}function Wd(e){return{...e,resolve:async(t,n,s)=>{const o=await e.resolve(t,n,s),r=o?.calls[0]?.to;return!o||!r||A.isNativeToken(t.tokenIn)?o:{...o,calls:[{to:t.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[r,o.amountInMax]})},...o.calls]}}}}function Ps(e){const t=(e?.customVenues??[]).map(s=>Od(Wd(s),e?.executorAddress));async function n(s,o,r){const i=t.filter(c=>c.chainIds.includes(o));if(i.length===0)throw new g.SpiceflowError("NO_SWAP_ROUTE",`No exact-output venue supports chain ${o}`,{chainId:o,tokenIn:s.tokenIn,tokenOut:s.tokenOut});const l=(await Promise.allSettled(i.map(async c=>({venue:c,quote:await c.resolve(s,o,r)})))).filter(c=>c.status==="fulfilled").map(c=>c.value).filter(c=>c.quote!==null);if(l.length===0)throw new g.SpiceflowError("NO_SWAP_ROUTE",`All aggregators failed for ${s.tokenIn} \u2192 ${s.tokenOut} on chain ${o}`,{chainId:o,tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountOut:s.amountOut.toString()});const d=l.find(c=>c.venue.preferred);return d?d.quote:(l.sort((c,m)=>c.quote.amountIn<m.quote.amountIn?-1:c.quote.amountIn>m.quote.amountIn?1:0),l[0].quote)}return{getQuote:n,venues:t}}const Ta=[100,500,3e3,1e4],Ba=(e,t)=>e.toLowerCase()===t.toLowerCase();function Us(e,t,n,s,o){const r=[];for(const i of n)if(!(Ba(i,e)||Ba(i,t)))for(const l of s)for(const d of s)r.push(o==="in"?I.encodePacked(["address","uint24","address","uint24","address"],[e,l,i,d,t]):I.encodePacked(["address","uint24","address","uint24","address"],[t,d,i,l,e]));return r}function Pd(e){const t=e.slice(2),n=[];for(let s=0;s<t.length;){const o=n.length%2===0?40:6;n.push(t.slice(s,s+o)),s+=o}return`0x${n.reverse().join("")}`}const Ud=I.parseAbi(["function exactOutputSingle((address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 amountOut, uint256 amountInMaximum, uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountIn)","function exactOutput((bytes path, address recipient, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),Ld=I.parseAbi(["function exactOutputSingle((address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum, uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountIn)","function exactOutput((bytes path, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),zd=1800;function ja(e){const{config:t,route:n,tokenIn:s,tokenOut:o,recipient:r,amountOut:i}=e,l=e.amountInMaximum,d=e.routerHasDeadline?Ld:Ud,c=e.routerHasDeadline?{deadline:BigInt(Math.floor(Date.now()/1e3)+zd)}:{},m=n.path?I.encodeFunctionData({abi:d,functionName:"exactOutput",args:[{path:n.path,recipient:r,...c,amountOut:i,amountInMaximum:l}]}):I.encodeFunctionData({abi:d,functionName:"exactOutputSingle",args:[{tokenIn:s,tokenOut:o,fee:n.fee,recipient:r,...c,amountOut:i,amountInMaximum:l,sqrtPriceLimitX96:0n}]});return{to:t.swapRouter,value:0n,data:m}}const qd=I.parseAbi(["function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)","function quoteExactOutput(bytes path, uint256 amountOut) returns (uint256 amountIn, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)"]);async function Ls(e,t,n,s,o){const r=g.getClientForChain(e),{result:i}=await r.simulateContract({address:t.quoterV2,abi:qd,functionName:o==="in"?"quoteExactInput":"quoteExactOutput",args:[n,s]}),[l,,,d]=i;if(l<=0n)throw new Error("No liquidity along this path.");return{amount:l,gasEstimate:d}}async function Hd(e){const{tokenIn:t,tokenOut:n,amountIn:s,fee:o,chainId:r,config:i}=e;if(s<=0n)throw new Error("amountIn must be greater than 0");const l=(await g.getClientForChain(r).simulateContract({address:i.quoterV2,abi:A.uniV3QuoterV2Abi,functionName:"quoteExactInputSingle",args:[{tokenIn:t,tokenOut:n,amountIn:s,fee:o,sqrtPriceLimitX96:0n}]})).result;if(l[0]<=0n)throw new Error("No liquidity found for this pair. The pool returned 0 output.");return{amountOut:l[0],sqrtPriceX96After:l[1],gasEstimate:l[3]}}async function Ra(e){const t=e.feeTiers??Ta,n=Us(e.tokenIn,e.tokenOut,e.hubs??[],t,"in"),s=await Promise.allSettled([...t.map(async r=>({...await Hd({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await Ls(e.chainId,e.config,r,e.amountIn,"in");return{amountOut:i.amount,sqrtPriceX96After:0n,gasEstimate:i.gasEstimate,fee:0,path:r}})]);let o=null;for(const r of s)r.status==="fulfilled"&&(!o||r.value.amountOut>o.amountOut)&&(o=r.value);if(!o)throw new Error("No liquidity found for this pair on any fee tier.");return o}const Vd=[{inputs:[{components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"amount",type:"uint256"},{name:"fee",type:"uint24"},{name:"sqrtPriceLimitX96",type:"uint160"}],name:"params",type:"tuple"}],name:"quoteExactOutputSingle",outputs:[{name:"amountIn",type:"uint256"},{name:"sqrtPriceX96After",type:"uint160"},{name:"initializedTicksCrossed",type:"uint32"},{name:"gasEstimate",type:"uint256"}],stateMutability:"nonpayable",type:"function"}];async function Qd(e){const{tokenIn:t,tokenOut:n,amountOut:s,fee:o,chainId:r,config:i}=e;if(s<=0n)throw new Error("amountOut must be greater than 0");const l=(await g.getClientForChain(r).simulateContract({address:i.quoterV2,abi:Vd,functionName:"quoteExactOutputSingle",args:[{tokenIn:t,tokenOut:n,amount:s,fee:o,sqrtPriceLimitX96:0n}]})).result;if(l[0]<=0n)throw new Error("No liquidity found for this pair. The pool returned 0 input.");return{amountIn:l[0],sqrtPriceX96After:l[1],gasEstimate:l[3]}}async function Da(e){const t=e.feeTiers??Ta,n=Us(e.tokenIn,e.tokenOut,e.hubs??[],t,"out"),s=await Promise.allSettled([...t.map(async r=>({...await Qd({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await Ls(e.chainId,e.config,r,e.amountOut,"out");return{amountIn:i.amount,sqrtPriceX96After:0n,gasEstimate:i.gasEstimate,fee:0,path:r}})]);let o=null;for(const r of s)r.status==="fulfilled"&&(!o||r.value.amountIn<o.amountIn)&&(o=r.value);if(!o)throw new Error("No liquidity found for this pair on any fee tier.");return o}const Na=3,Ma=8,Kd=30,Yd=[{name:"quoteExactInput",stateMutability:"nonpayable",inputs:[{name:"path",type:"bytes"},{name:"amountInRequired",type:"uint256"}],outputs:[{name:"amountOutList",type:"uint256[]"},{name:"amountInList",type:"uint256[]"},{name:"sqrtPriceX96AfterList",type:"uint160[]"},{name:"initializedTicksCrossedList",type:"uint32[]"},{name:"gasEstimate",type:"uint256"},{name:"feeList",type:"uint16[]"}],type:"function"}],Gd=[{name:"exactInput",stateMutability:"payable",inputs:[{name:"params",type:"tuple",components:[{name:"path",type:"bytes"},{name:"recipient",type:"address"},{name:"deadline",type:"uint256"},{name:"amountIn",type:"uint256"},{name:"amountOutMinimum",type:"uint256"}]}],outputs:[{name:"amountOut",type:"uint256"}],type:"function"}];function Oa(e){const{tokens:t,deployers:n}=e;if(t.length<2||n.length!==t.length-1)throw new Error("Invalid Algebra path");const s=[];for(let o=0;o<t.length;o++)s.push(I.pad(t[o],{size:20})),o<n.length&&s.push(I.pad(n[o],{size:20}));return I.concat(s)}async function Zd(e,t){const n=t.toLowerCase(),s=`{ pools(first: 500, where: { or: [ { token0: "${n}" }, { token1: "${n}" } ] }) { deployer token0 { id } token1 { id } } }`,o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:s})});if(!o.ok)throw new Error(`Algebra subgraph returned ${o.status}`);const r=await o.json();if(r.errors||!r.data?.pools)throw new Error("Algebra subgraph query failed");const i=new Map;for(const l of r.data.pools){const d=l.token0.id.toLowerCase(),c=l.token1.id.toLowerCase(),m={token:d===n?c:d,deployer:l.deployer.toLowerCase()};i.set(`${m.token}:${m.deployer}`,m)}return Array.from(i.values())}async function Xd(e,t,n){const s=t.toLowerCase(),o=n.toLowerCase(),r=new Map,i=async c=>{const m=r.get(c);if(m)return m;if(r.size>=Kd)return[];const p=await Zd(e,c);return r.set(c,p),p},l=[],d=[{tokens:[s],deployers:[]}];for(;d.length>0&&l.length<Ma;){const c=d.shift();if(c.tokens.length-1>=Na)continue;const m=c.tokens[c.tokens.length-1];for(const p of await i(m)){if(c.tokens.includes(p.token))continue;const f={tokens:[...c.tokens,p.token],deployers:[...c.deployers,p.deployer]};if(p.token===o){if(l.push(f),l.length>=Ma)break}else c.tokens.length-1<Na-1&&d.push(f)}}return l}async function Jd(e,t,n,s){const o=g.getClientForChain(t),{result:r}=await o.simulateContract({address:e,abi:Yd,functionName:"quoteExactInput",args:[Oa(n),s]}),i=r[0],l=i[i.length-1]??0n;if(l<=0n)throw new Error("Algebra quote returned zero output");return l}async function $d(e){const{tokenIn:t,tokenOut:n,amountIn:s,chainId:o,config:r}=e,i=await Xd(r.subgraphUrl,t,n),l=await Promise.allSettled(i.map(async c=>({path:c,amountOut:await Jd(r.quoterV2,o,c,s)})));let d=null;for(const c of l)c.status==="fulfilled"&&(!d||c.value.amountOut>d.amountOut)&&(d=c.value);return d}function _d(e){return e.type==="swap"}const Qn=.02,eu=[1,8453,42161,10,137,43114,56],Wa="https://api.1inch.dev/swap/v6.0";function zs(e,t){return A.applySlippage(e,t)}function tu(e){const t=e?.baseUrl??Wa;return{name:"1inch",chainIds:e?.chainIds??eu,resolve:async(n,s,o)=>{const r=n.maxSlippage??Qn,i=r*100,l=A.isNativeToken(n.tokenIn)?A.NATIVE_TOKEN_ADDRESS:n.tokenIn,d=A.isNativeToken(n.tokenOut)?A.NATIVE_TOKEN_ADDRESS:n.tokenOut,c=A.isNativeToken(n.tokenIn);try{const m=new URL(`${t}/${s}/swap`);m.searchParams.set("src",l),m.searchParams.set("dst",d),m.searchParams.set("amount",n.amountIn.toString()),m.searchParams.set("from",o),m.searchParams.set("slippage",i.toString()),m.searchParams.set("disableEstimate","true"),m.searchParams.set("allowPartialFill","false");const p={Accept:"application/json"};e?.apiKey&&(p.Authorization=`Bearer ${e.apiKey}`);const f=await fetch(m.toString(),{headers:p});if(!f.ok)throw new g.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] API returned ${f.status} for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`,{venue:"1inch",chainId:s,tokenIn:n.tokenIn,tokenOut:n.tokenOut,amountIn:n.amountIn.toString(),cause:`HTTP ${f.status}`});const h=await f.json();if(!h.dstAmount||!h.tx)return console.warn(`[1inchVenue] No route data for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const x=BigInt(h.dstAmount);if(x<=0n)return console.warn(`[1inchVenue] Zero output for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const b=zs(x,r),y=[];return h.tx.to&&!c&&y.push({to:n.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[h.tx.to,n.amountIn]})}),y.push({to:h.tx.to,value:BigInt(h.tx.value||"0"),data:h.tx.data}),{venue:"1inch",amountOut:x,amountOutMinimum:b,calls:y}}catch(m){if(m instanceof g.SpiceflowError)throw m;const p=m instanceof Error?m.message:String(m);throw new g.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] Exception for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}: ${p}`,{venue:"1inch",chainId:s,tokenIn:n.tokenIn,tokenOut:n.tokenOut,amountIn:n.amountIn.toString(),cause:p})}}}}const Pa=[4114,5115],Ko={name:"Satsuma",swapRouter:"0x565eD3D57fe40f78A46f348C220121AE093c3cF8",quoterV2:"0x428f20dd8926Eabe19653815Ed0BE7D6c36f8425",feeTiers:[3e3]},nu={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[1],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]},Ua={name:"Uniswap v3",swapRouter:"0x2626664c2603336E57B271c5C0b26F421741e481",quoterV2:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",chainIds:[8453],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},La={name:"Uniswap v3",swapRouter:"0xcaf681a66d020601342297493863e78c959e5cb2",quoterV2:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},za={name:"SushiSwap",swapRouter:"0x1e406484F1F204b23cE84B9901C0171a738fd406",quoterV2:"0x3E290e5E01818002A0b672148BdC7514D861C7B3",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"],routerHasDeadline:!0},su=I.parseAbi(["function exactInput((bytes path, address recipient, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),ou=I.parseAbi(["function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),ru=I.parseAbi(["function exactOutput((bytes path, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),qa=1800,Ha=[1,50,100,200,2e3],Yo={name:"Aerodrome",swapRouter:"0xcbBb8035cAc7D4B3Ca7aBb74cF7BdF900215Ce0D",quoterV2:"0x3d4C22254F86f64B7eC90ab8F7aeC1FBFD271c6C",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]};function Go(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??Ha;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(A.isNativeToken(o.tokenIn)||A.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??Qn,d=[...s.map(y=>I.encodePacked(["address","uint24","address"],[o.tokenIn,y,o.tokenOut])),...Us(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"in")],c={quoterV2:e.quoterV2},m=await Promise.allSettled(d.map(async y=>({path:y,amountOut:(await Ls(r,c,y,o.amountIn,"in")).amount})));let p=null;for(const y of m)y.status==="fulfilled"&&(!p||y.value.amountOut>p.amountOut)&&(p=y.value);if(!p)return console.warn(`[AerodromeVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const f=zs(p.amountOut,l),h=BigInt(Math.floor(Date.now()/1e3)+qa),x=I.encodeFunctionData({abi:ou,functionName:"exactInput",args:[{path:p.path,recipient:i,deadline:h,amountIn:o.amountIn,amountOutMinimum:f}]}),b=[{to:o.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.swapRouter,o.amountIn]})},{to:e.swapRouter,value:0n,data:x}];return{venue:t,amountOut:p.amountOut,amountOutMinimum:f,calls:b}}}}function Va(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??Ha;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(A.isNativeToken(o.tokenIn)||A.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??Qn,d=[...s.map(b=>I.encodePacked(["address","uint24","address"],[o.tokenOut,b,o.tokenIn])),...Us(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"out")],c={quoterV2:e.quoterV2},m=await Promise.allSettled(d.map(async b=>({path:b,amountIn:(await Ls(r,c,b,o.amountOut,"out")).amount})));let p=null;for(const b of m)b.status==="fulfilled"&&(!p||b.value.amountIn<p.amountIn)&&(p=b.value);if(!p)return console.warn(`[AerodromeExactOutputVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const f=BigInt(Math.round(l*1e4)),h=p.amountIn+p.amountIn*f/10000n,x=BigInt(Math.floor(Date.now()/1e3)+qa);return{venue:t,amountIn:p.amountIn,amountInMax:h,amountOut:o.amountOut,calls:[{to:e.swapRouter,value:0n,data:I.encodeFunctionData({abi:ru,functionName:"exactOutput",args:[{path:p.path,recipient:i,deadline:x,amountOut:o.amountOut,amountInMaximum:h}]})}]}}}}function us(e){const t=e.name??"Uniswap v3",n=e.chainIds??Pa;return{name:t,chainIds:n,resolve:async(s,o,r)=>{if(A.isNativeToken(s.tokenIn)||A.isNativeToken(s.tokenOut))return null;const i=s.maxSlippage??Qn;let l;try{l=await Ra({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountIn:s.amountIn,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:e.feeTiers,hubs:e.hubCurrencies})}catch{return console.warn(`[UniV3Venue] No viable route for ${s.tokenIn} \u2192 ${s.tokenOut} on chain ${o}.`),null}const d=zs(l.amountOut,i),c=l.path?I.encodeFunctionData({abi:su,functionName:"exactInput",args:[{path:l.path,recipient:r,amountIn:s.amountIn,amountOutMinimum:d}]}):I.encodeFunctionData({abi:A.uniV3SwapRouterAbi,functionName:"exactInputSingle",args:[{tokenIn:s.tokenIn,tokenOut:s.tokenOut,fee:l.fee,recipient:r,amountIn:s.amountIn,amountOutMinimum:d,sqrtPriceLimitX96:0n}]}),m=[{to:s.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.swapRouter,s.amountIn]})},{to:e.swapRouter,value:0n,data:c}];return{venue:t,amountOut:l.amountOut,amountOutMinimum:d,calls:m}}}}function Zo(e){const t=e.name??"Uniswap v3",n=e.chainIds??Pa;return{name:t,chainIds:n,resolve:async(s,o,r)=>{if(A.isNativeToken(s.tokenIn)||A.isNativeToken(s.tokenOut))return null;const i=s.maxSlippage??Qn;let l;try{l=await Da({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountOut:s.amountOut,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:e.feeTiers,hubs:e.hubCurrencies})}catch{return null}const d=BigInt(Math.round(i*1e4)),c=l.amountIn+l.amountIn*d/10000n;return{venue:t,amountIn:l.amountIn,amountInMax:c,amountOut:s.amountOut,calls:[ja({config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},routerHasDeadline:e.routerHasDeadline,route:l,tokenIn:s.tokenIn,tokenOut:s.tokenOut,recipient:r,amountOut:s.amountOut,amountInMaximum:c})]}}}}const au=[4114],iu={swapRouter:"0x3012E9049d05B4B5369D690114D5A5861EbB85cb",quoterV2:"0xa77aD9f635a3FB3bCCC5E6d1A87cB269746Aba17",subgraphUrl:"https://api.goldsky.com/api/public/project_cmamb6kkls0v2010932jjhxj4/subgraphs/analytics-mainnet/v1.0.1/gn",maxSlippage:.005};function Qa(e){return{name:"algebra",chainIds:e.chainIds??au,resolve:async(t,n,s)=>{const o=A.isNativeToken(t.tokenIn),r=await $d({tokenIn:t.tokenIn,tokenOut:t.tokenOut,amountIn:t.amountIn,chainId:n,config:e}).catch(()=>null);if(!r)return null;const i=zs(r.amountOut,t.maxSlippage??e.maxSlippage??Qn),l=[];return o||l.push({to:t.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.swapRouter,t.amountIn]})}),l.push({to:e.swapRouter,value:o?t.amountIn:0n,data:I.encodeFunctionData({abi:Gd,functionName:"exactInput",args:[{path:Oa(r.path),recipient:s,deadline:I.maxUint256,amountIn:t.amountIn,amountOutMinimum:i}]})}),{venue:"algebra",amountOut:r.amountOut,amountOutMinimum:i,calls:l}}}}function Xo(e){const t=[];e?.customVenues&&t.push(...e.customVenues),e?.algebra&&t.push(Qa(e.algebra)),e?.satsuma&&t.push(us(e.satsuma)),e?.aerodrome!==!1&&t.push(Go(e?.aerodrome??Yo));let n=!1;if(e?.oneInch?.baseUrl)try{const l=new URL(e.oneInch.baseUrl);n=["http:","https:"].includes(l.protocol)&&l.hostname!==new URL(Wa).hostname}catch{}(e?.oneInch?.apiKey?.trim()||n)&&t.push(tu(e?.oneInch));const s=t.map(l=>Md(l,e?.executorAddress));function o(l){return s.find(d=>d.chainIds.includes(l))}async function r(l,d,c){const m=s.filter(x=>x.chainIds.includes(d));if(m.length===0)throw new g.SpiceflowError("NO_VENUE_FOR_CHAIN",`No liquidity venue configured for chain ${d}. Cannot resolve swap ${l.tokenIn} \u2192 ${l.tokenOut}.`,{chainId:d,tokenIn:l.tokenIn,tokenOut:l.tokenOut,amountIn:l.amountIn.toString()});const p=await Promise.allSettled(m.map(x=>x.resolve(l,d,c)));let f=null;for(const x of p)x.status==="fulfilled"&&x.value&&(!f||x.value.amountOut>f.amountOut)&&(f=x.value);if(f)return f;const h=p.find(x=>x.status==="rejected");if(h)throw h.reason;return null}async function i(l,d,c){const m=[],p=[];for(const f of l){if(!_d(f)){m.push(f);continue}const h=await r(f,d,c);if(!h)throw new g.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${f.tokenIn} \u2192 ${f.tokenOut} on chain ${d}.`,{chainId:d,tokenIn:f.tokenIn,tokenOut:f.tokenOut,amountIn:f.amountIn.toString()});m.push(...h.calls),p.push(h)}return{calls:m,resolvedSwaps:p}}return{resolveSwapIntents:i,resolveSwap:r,getVenueForChain:o,venues:t}}const cn="0x0000000000000000000000000000000000000000",Jo=[{fee:100,tickSpacing:1},{fee:500,tickSpacing:10},{fee:3e3,tickSpacing:60},{fee:1e4,tickSpacing:200}],Ka=cn,Ya=.02,lu=1800,Ga={name:"Uniswap v4",quoter:"0x0d5e0f971ed27fbff6c2837bf31316121532048d",universalRouter:"0x6ff5693b99212da76ad316178a184ab56d299b43",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006",cn,"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},Za={name:"Uniswap v4",quoter:"0x8dc178efb8111bb0973dd9d722ebeff267c98f94",universalRouter:"0x8876789976decbfcbbbe364623c63652db8c0904",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainIds:[4663],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73",cn,"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},Xa=I.parseAbi(["struct PoolKey { address currency0; address currency1; uint24 fee; int24 tickSpacing; address hooks; }","struct PathKey { address intermediateCurrency; uint24 fee; int24 tickSpacing; address hooks; bytes hookData; }","struct QuoteExactSingleParams { PoolKey poolKey; bool zeroForOne; uint128 exactAmount; bytes hookData; }","struct QuoteExactParams { address exactCurrency; PathKey[] path; uint128 exactAmount; }","function quoteExactInputSingle(QuoteExactSingleParams params) returns (uint256 amountOut, uint256 gasEstimate)","function quoteExactInput(QuoteExactParams params) returns (uint256 amountOut, uint256 gasEstimate)","function quoteExactOutputSingle(QuoteExactSingleParams params) returns (uint256 amountIn, uint256 gasEstimate)","function quoteExactOutput(QuoteExactParams params) returns (uint256 amountIn, uint256 gasEstimate)"]),cu=I.parseAbi(["function approve(address token, address spender, uint160 amount, uint48 expiration)"]),du=I.parseAbi(["function execute(bytes commands, bytes[] inputs, uint256 deadline) payable"]),Ja="0x10",uu="04",pu="06",fu="07",mu="08",hu="09",qs="0c",Hs="0e",gu=[{name:"currency0",type:"address"},{name:"currency1",type:"address"},{name:"fee",type:"uint24"},{name:"tickSpacing",type:"int24"},{name:"hooks",type:"address"}],xu=[{name:"intermediateCurrency",type:"address"},{name:"fee",type:"uint24"},{name:"tickSpacing",type:"int24"},{name:"hooks",type:"address"},{name:"hookData",type:"bytes"}],wn=(e,t)=>e.toLowerCase()===t.toLowerCase();function Vs(e){return A.isNativeToken(e)?cn:e}function yu(e,t){return e.toLowerCase()<t.toLowerCase()?[e,t]:[t,e]}function $a(e,t,n,s,o){const r=[],[i,l]=yu(e,t);for(const{fee:c,tickSpacing:m}of Jo)r.push({kind:"single",poolKey:{currency0:i,currency1:l,fee:c,tickSpacing:m,hooks:Ka},zeroForOne:wn(e,i)});const d=(c,m)=>!!o&&(wn(c,cn)&&wn(m,o)||wn(c,o)&&wn(m,cn));for(const c of n)if(!(wn(c,e)||wn(c,t))&&!(d(c,e)||d(c,t)))for(const m of Jo)for(const p of Jo){const f=(h,x)=>({intermediateCurrency:h,fee:x.fee,tickSpacing:x.tickSpacing,hooks:Ka,hookData:"0x"});r.push({kind:"multi",path:s==="in"?[f(c,m),f(t,p)]:[f(e,m),f(c,p)]})}return r}async function _a(e,t,n,s,o,r){const i=g.getClientForChain(e),l=(await Promise.allSettled(n.map(async d=>{const{result:c}=d.kind==="single"?await i.simulateContract({address:t.quoter,abi:Xa,functionName:r==="in"?"quoteExactInputSingle":"quoteExactOutputSingle",args:[{poolKey:d.poolKey,zeroForOne:d.zeroForOne,exactAmount:o,hookData:"0x"}]}):await i.simulateContract({address:t.quoter,abi:Xa,functionName:r==="in"?"quoteExactInput":"quoteExactOutput",args:[{exactCurrency:s,path:d.path,exactAmount:o}]}),m=c[0];if(m<=0n)throw new Error("zero quote");return{candidate:d,amount:m}}))).filter(d=>d.status==="fulfilled").map(d=>d.value);return l.length===0?null:(l.sort((d,c)=>d.amount<c.amount?-1:d.amount>c.amount?1:0),r==="in"?l[l.length-1]:l[0])}function ei(e){const{candidate:t,direction:n,currencyIn:s,currencyOut:o,recipient:r,exactAmount:i,limitAmount:l,deadline:d,sweepNativeTo:c}=e;let m,p;t.kind==="single"?(m=n==="in"?`0x${pu}${qs}${Hs}`:`0x${mu}${qs}${Hs}`,p=I.encodeAbiParameters([{type:"tuple",components:[{name:"poolKey",type:"tuple",components:gu},{name:"zeroForOne",type:"bool"},{name:n==="in"?"amountIn":"amountOut",type:"uint128"},{name:n==="in"?"amountOutMinimum":"amountInMaximum",type:"uint128"},{name:"hookData",type:"bytes"}]}],[{poolKey:t.poolKey,zeroForOne:t.zeroForOne,[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l,hookData:"0x"}])):(m=n==="in"?`0x${fu}${qs}${Hs}`:`0x${hu}${qs}${Hs}`,p=I.encodeAbiParameters([{type:"tuple",components:[{name:n==="in"?"currencyIn":"currencyOut",type:"address"},{name:"path",type:"tuple[]",components:xu},{name:n==="in"?"amountIn":"amountOut",type:"uint128"},{name:n==="in"?"amountOutMinimum":"amountInMaximum",type:"uint128"}]}],[{[n==="in"?"currencyIn":"currencyOut"]:n==="in"?s:o,path:t.path,[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l}]));const f=I.encodeAbiParameters([{type:"address"},{type:"uint256"}],[s,n==="in"?i:l]),h=I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[o,r,0n]),x=I.encodeAbiParameters([{type:"bytes"},{type:"bytes[]"}],[m,[p,f,h]]),b=c?`${Ja}${uu}`:Ja,y=c?[x,I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[cn,c,0n])]:[x];return I.encodeFunctionData({abi:du,functionName:"execute",args:[b,y,d]})}function ti(){return BigInt(Math.floor(Date.now()/1e3)+lu)}function ni(e,t,n,s){return{to:e.permit2,value:0n,data:I.encodeFunctionData({abi:cu,functionName:"approve",args:[t,e.universalRouter,n,Number(s)]})}}function si(e){const t=e.name??"Uniswap v4",n=e.v3?us({...e.v3,chainIds:e.chainIds}):null;return{name:t,chainIds:e.chainIds,resolve:async(s,o,r)=>{const i=s.maxSlippage??Ya,l=Vs(s.tokenIn),d=Vs(s.tokenOut),c=A.isNativeToken(s.tokenIn),m=e.hubCurrencies??[cn];let p=null;if(!wn(l,d)&&s.amountIn>0n){const f=await _a(o,e,$a(l,d,m,"in",Ws(o)),l,s.amountIn,"in").catch(()=>null);if(f){const h=A.applySlippage(f.amount,i),x=ti(),b=[];c||(b.push({to:s.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.permit2,s.amountIn]})}),b.push(ni(e,s.tokenIn,s.amountIn,x))),b.push({to:e.universalRouter,value:c?s.amountIn:0n,data:ei({candidate:f.candidate,direction:"in",currencyIn:l,currencyOut:d,recipient:r,exactAmount:s.amountIn,limitAmount:h,deadline:x})}),p={venue:t,amountOut:f.amount,amountOutMinimum:h,calls:b}}}return!p&&n?n.resolve(s,o,r):p}}}function oi(e){const t=e.name??"Uniswap v4";return{name:t,chainIds:e.chainIds,resolve:async(n,s,o)=>{const r=A.isNativeToken(n.tokenIn),i=Vs(n.tokenIn),l=Vs(n.tokenOut);if(wn(i,l)||n.amountOut<=0n)return null;const d=n.maxSlippage??Ya,c=e.hubCurrencies??[cn],m=await _a(s,e,$a(i,l,c,"out",Ws(s)),l,n.amountOut,"out").catch(()=>null);if(!m)return null;const p=BigInt(Math.round(d*1e4)),f=m.amount+m.amount*p/10000n,h=ti();return{venue:t,amountIn:m.amount,amountInMax:f,amountOut:n.amountOut,calls:[...r?[]:[ni(e,n.tokenIn,f,h)],{to:e.universalRouter,value:r?f:0n,data:ei({candidate:m.candidate,direction:"out",currencyIn:i,currencyOut:l,recipient:o,exactAmount:n.amountOut,limitAmount:f,deadline:h,sweepNativeTo:r?o:void 0})}]}}}}const ri=[{...nu,protocol:"uniswap-v3",chainId:1},{...Ko,protocol:"uniswap-v3",chainId:4114},{...Ko,protocol:"uniswap-v3",chainId:5115},{...Ua,protocol:"uniswap-v3",chainId:8453},{...La,protocol:"uniswap-v3",chainId:4663},{...za,protocol:"uniswap-v3",chainId:4663},{...Ga,protocol:"uniswap-v4",chainId:8453},{...Za,protocol:"uniswap-v4",chainId:4663},{...Yo,protocol:"aerodrome-slipstream",chainId:8453}];function Kn(e){const t=e?.includeDefaults===!1?e.venues??[]:[...ri,...e?.venues??[]],n=[],s=[];for(const o of t){const r=[o.chainId];switch(o.protocol){case"uniswap-v3":{const i={...o,chainIds:r};n.push(us(i)),s.push(Zo(i));break}case"uniswap-v4":{const i={...o,chainIds:r};n.push(si(i)),s.push(oi(i));break}case"aerodrome-slipstream":{const i={...o,chainIds:r};n.push(Go(i)),s.push(Va(i));break}default:{const i=o;throw new g.SpiceflowError("INVALID_PARAMS",`Unsupported liquidity venue protocol: ${i.protocol}`,{protocol:i.protocol})}}}return{input:n,output:s}}function Bt(e,t,n,s){if(t===n)return e;if(t<n)return e*10n**BigInt(n-t);const o=10n**BigInt(t-n);return s==="ceil"?(e+o-1n)/o:e/o}const bu="0xa9059cbb";function ai(e,t,n){return A.isNativeToken(e)?{to:n,value:t,data:"0x"}:{to:e,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[n,t]})}}function Qs(e,t,n){return{chainId:n,calls:[ai(e,t,A.getEscrowContractAddress(n))]}}function en(e,t){if(!e||e._source!=="wallet")return!1;const n=e._fundingWallet;return n==="external"||t&&n!=="embedded"}function ii(e,t,n){return e?.asset._source==="wallet"&&!en(e.asset,t)}function li(e){return e.isNative||A.isNativeToken(e.address)?!0:!A.getTokenByAddress(e.address,e.chainId)}function ci(e,t,n,s){const o=l=>A.isNativeToken(s)?l.data==="0x"&&l.value>0n&&[A.SPICE_GAS_FEE_RECIPIENT,A.SPICE_PLATFORM_FEE_RECIPIENT].some(d=>g.addressesEqual(l.to,d)):g.addressesEqual(l.to,s)&&l.data.startsWith(bu);if(t!=="user-transfer"||!n||e.length===0||!o(e[0]))return{feeCalls:[],remainingCalls:e};const r=e.findIndex(l=>!o(l)),i=r===-1?e.length:r;return{feeCalls:e.slice(0,i),remainingCalls:e.slice(i)}}async function Ks(e,t,n,s){if(!t)return[e];const o=await t({...n,requestTimestampMs:s});return o?[o,e]:[e]}function Ys(e){const t=(e.tokenTransfers??[]).filter(n=>n.from==="escrow").map(n=>({token:A.normalizeNativeTokenAddress(n.token),recipient:n.to,amount:BigInt(n.amount)})).filter(n=>n.amount>0n);return t.length>0?t:void 0}function Kt(e,t,n){return Bt(e,t,n,"ceil")}async function Yn(e,t,n){if(e.chainId!==t.chainId&&!Ss(e,n,t.chainId)&&!Dn(e,t.chainId).some(s=>g.addressesEqual(s,n)))throw new Error("No supported bridge route for this source asset");return g.addressesEqual(n,t.address)?t.decimals:e.chainId===t.chainId&&g.addressesEqual(n,e.address)?e.decimals:g.getTokenDecimals(t.chainId,n)}async function di(e,t){const{currentPaymentAmount:n,destinationToken:s,embeddedWalletAddress:o,providerEmbeddedAddress:r,address:i,isNon7702:l,isPayMode:d,resolvedChainId:c,buildActionCalls:m,feeExecutionMode:p,buildSpicenetBatch:f,selectedAsset:h,needsSwap:x,exactOutputSwap:b,resolvedTokenIn:y,requestTimestampMs:w}=e,S=t?.fundingTokenOverride??y,v=I.parseUnits(n,s.decimals),k=e.feeOnlyAction?0n:t?.actionAmountOverride??v,C=!!e.feeOnlyAction&&(t?.fundingAmountOverride??0n)>0n;if(C&&h?.asset._source==="wallet"&&h.asset.chainId===c&&!A.isNativeToken(h.asset.address)&&!A.getTokenByAddress(h.asset.address,c))throw new Error("Choose a registered token or native asset to fund action fees");const E=o||r||(l?void 0:i);if(!E)throw new Error("Embedded wallet address is not available. Please sign in and try again.");const F={userAddress:E,executorAddress:E,outputRecipient:!e.feeOnlyAction&&x&&b?e.swapOutputRecipient??E:void 0,chainId:c,destinationToken:s.address,grossAmount:t?.fundingAmountOverride??v,netAmount:k,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:p,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},B=await m(k,F),j={chainId:c,calls:B},T=!d&&!l?!0:h?.asset._source==="spice",R=ii(h??null,l);if(e.feeOnlyAction&&t?.fundingTokenOverride&&R&&h?.asset.chainId===c&&g.addressesEqual(t.fundingTokenOverride,h.asset.address))return[j];const D=C||T||en(h?.asset,l)&&h?.asset.chainId!==c||R&&!!h&&(h.asset.chainId!==c||!li(h.asset)),M=(X,N)=>({token:A.normalizeNativeTokenAddress(X),from:"escrow",to:E,amount:N}),W=(X,N)=>R||en(h?.asset,l)&&(h?.asset.chainId!==c||C)?[Qs(h.asset.address,t?.sourceFundingAmountOverride??Kt(X,z,h.asset.decimals),h.asset.chainId),...N]:N;if(v===0n&&!C)return[j];const q=S??(h?Qt(h.asset,c):null)??s.address,z=h?await Yn(h.asset,s,q):s.decimals;if(!e.feeOnlyAction&&x&&b){const X=S??Qt(h.asset,c)??h.asset.address,N=t?.fundingAmountOverride??b.amountInMax,H=D?[M(X,N)]:[],V={chainId:c,calls:[...b.calls,...B],tokenTransfers:[...H,...j.tokenTransfers??[]]};if(!D)return[V];const G=await Ks(V,f,{userAddress:E,destinationChainId:c,deliveryToken:X,deliveryAmount:N,deliveryRecipient:E,deliveryTransfers:Ys(V),sourceAsset:h.asset},w);return W(N,G)}if(D){const X=S??(h?Qt(h.asset,c):null)??s.address;if(!C&&R&&h?.asset.chainId===c&&X.toLowerCase()===s.address.toLowerCase())return[j];const N=t?.fundingAmountOverride??v,H={...j,tokenTransfers:[M(X,N),...j.tokenTransfers??[]]},V=await Ks(H,f,{userAddress:E,destinationChainId:c,deliveryToken:X,deliveryAmount:N,deliveryRecipient:E,deliveryTransfers:Ys(H),sourceAsset:h?.asset},w);return W(N,V)}return[j]}async function ui(e,t){const{selectedAsset:n,embeddedWalletAddress:s,externalWalletAddress:o,recipient:r,resolvedChainId:i,destinationToken:l,buildActionCalls:d,feeExecutionMode:c,buildSpicenetBatch:m,isPayMode:p,isNon7702:f,needsSwap:h,resolvedSwap:x,quoteAmountOut:b,resolvedTokenIn:y,requestTimestampMs:w}=e,S=x?.amountOutMinimum??b;if(!n?.asset||!s)return[];const v=r??(f?o:s);if(!v)return[];const k=I.parseUnits(n.amount,n.asset.decimals),C=y??Qt(n.asset,i)??l.address,E=await Yn(n.asset,l,C),F=t?.fundingAmountOverride??Bt(k,n.asset.decimals,E,"floor");if(F<=0n)throw new Error("Amount is below the destination token's precision");const B=t?.fundingAmountOverride??F,j=t?.sourceFundingAmountOverride??(t?.fundingAmountOverride===void 0?k:Kt(B,E,n.asset.decimals)),T=t?.deliveryAmountOverride??B,R=t?.withdrawalAmountOverride??T,D=t?.actionAmountOverride??F,M=t?.actionContextOverride?.feeBreakdown;if(e.isFeeInclusiveInput&&h&&e.swapInputAmount!=null&&M){const ee=Bt(k,n.asset.decimals,E,"floor");if(e.swapInputAmount+M.gasFee+M.spicenetFee+M.bridgeFee>ee)throw new Error("Swap input plus fees exceeds the entered amount. Refresh the quote before retrying.")}const W={userAddress:v,executorAddress:s,outputRecipient:h&&x?e.swapOutputRecipient??s:void 0,chainId:i,destinationToken:l.address,feeToken:c==="user-transfer"&&h&&y?y:l.address,grossAmount:B,netAmount:D,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:c,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},q=()=>d(D,W),z=n.asset._source==="wallet",X=n.asset._fundingWallet,N=z&&(X==="external"||f&&X!=="embedded");if(!p&&z&&n.asset.chainId===i&&(f||X==="external"||li(n.asset))){if(h){if(!y)throw new Error("Swap input token could not be resolved");if(!x||S===null)throw new Error("Swap quote not available yet")}if(h&&x&&S){const ee=await d(t?.actionAmountOverride??S,{...W,netAmount:t?.actionAmountOverride??S}),{feeCalls:ue,remainingCalls:re}=ci(ee,c,h,W.feeToken);return[{chainId:i,calls:[...ue,...x.calls,...re]}]}return[{chainId:i,calls:await q()}]}const H=!p&&!f?n.asset._source!=="wallet":n.asset._source==="spice",V=ii(n,f);if(!(H||N||V))return[{chainId:i,calls:await q()}];const G=V?Qs(A.normalizeNativeTokenAddress(n.asset.address),j,n.asset.chainId):N&&n.asset.chainId!==i?{chainId:n.asset.chainId,calls:[ai(A.normalizeNativeTokenAddress(n.asset.address),j,A.getEscrowContractAddress(n.asset.chainId))]}:null,J=(ee,ue)=>({token:A.normalizeNativeTokenAddress(ee),from:"escrow",to:s,amount:ue});if(h){if(!y)throw new Error("Swap input token could not be resolved");if(!x||S===null)throw new Error("Swap quote not available yet")}if(h&&x&&S&&y){const ee=await d(t?.actionAmountOverride??S,{...W,netAmount:t?.actionAmountOverride??S}),{feeCalls:ue,remainingCalls:re}=ci(ee,c,h,W.feeToken),se={chainId:i,calls:[...ue,...x.calls,...re],tokenTransfers:[J(y,T)]},ie=await Ks(se,m,{userAddress:s,destinationChainId:i,deliveryToken:y,deliveryAmount:T,withdrawalAmount:R,deliveryRecipient:s,deliveryTransfers:Ys(se),sourceAsset:n.asset},w);return G?[G,...ie]:ie}const U=y??Qt(n.asset,i)??l.address,L={chainId:i,calls:await q(),tokenTransfers:[J(U,T)]},O=await Ks(L,m,{userAddress:s,destinationChainId:i,deliveryToken:U,deliveryAmount:T,withdrawalAmount:R,deliveryRecipient:s,deliveryTransfers:Ys(L),sourceAsset:n.asset},w);return G?[G,...O]:O}async function wu(e,t,n,s,o){let r=e;for(let i=0;i<4;i++){const l=await t(r),d=await s(l,n,r,o),c=Lc(d);if(c===null||c>=e)return r;const m=r-c,p=e+m;if(p<=r)return r;r=p}return r}function pi(e,t){return e._source!=="wallet"||e.chainId!==t?!1:e.isNative||A.isNativeToken(e.address)||!A.getTokenByAddress(e.address,e.chainId)}function Cu(e,t){const n=e[0];if(e.length!==1||!n||n.chainId!==t.chainId||n.domain==="spicenet"||n.tokenTransfers?.length||n.calls.length===0)throw new Error("SpiceLock requires one lock-chain action batch. Return only lock approval and action calls, without funding transfers.");if(t.amountIn<=0n)throw new Error("Enter a positive amount to lock.");if(t.swap&&(t.swap.amountOutMinimum<=0n||t.swap.amountOutMinimum>t.swap.amountOut||t.swap.calls.length===0))throw new Error("A valid swap quote is required before locking. Please retry.");return[{...n,calls:[...t.swap?.calls??[],...n.calls],...t.escrowFunded?{tokenTransfers:[{token:A.normalizeNativeTokenAddress(t.tokenIn),from:"escrow",to:t.recipient,amount:t.amountIn}]}:{}}]}function vu(e){const t=new Map;for(const n of e){if(n.amount<=0n)continue;const s=I.getAddress(n.token),o=I.getAddress(n.to),r=`${s.toLowerCase()}:${o.toLowerCase()}`,i=t.get(r);i?i.amount+=n.amount:t.set(r,{token:s,to:o,amount:n.amount})}return[...t.values()]}function ku(e,t){return`0x${t}${e.slice(4)}`}function fi(e,t){return mi(e,t)}function mi(e,t,n){const s=Es(t,e),o=Math.floor(Date.now()/1e3)+60*10,r=A.hashChainBatches(s);return{user:e,...n?{chainAuthorizations:n}:{},intents:[{mode:"7702",signatureType:"ecdsa",signature:"0x00",nbf:0,exp:o,chainBatches:r.map((i,l)=>({hash:i.hash,chainId:i.chainId,tokenTransfers:s[l].domain==="spicenet"?[]:s[l].tokenTransfers??[],calls:i.calls}))}]}}function Gn(e,t,n,s){if(e.some(m=>m.domain==="spicenet"))return e;const o=n?.intents.flatMap(m=>m.batches),r=m=>m.from==="escrow",i=e.map(m=>{const p=o?.find(F=>F.chainId===m.chainId);if(!p)return m;const f=an(p),h=f.totalFee;if(h<=0n)return m;const x=(m.tokenTransfers??[]).filter(F=>r(F)&&I.getAddress(F.to).toLowerCase()===t.toLowerCase()),b=x.find(F=>!A.isNativeToken(I.getAddress(F.token)))??x[0];if(!b)return m;const y=I.getAddress(b.token),w=A.isNativeToken(y);let S=!1;const v=(m.tokenTransfers??[]).map(F=>S||!r(F)||I.getAddress(F.to).toLowerCase()!==t.toLowerCase()||I.getAddress(F.token).toLowerCase()!==y.toLowerCase()?F:(S=!0,{...F,amount:s?.payoutAlreadyGross?BigInt(F.amount):BigInt(F.amount)+h}));if(!S)return m;const k=(F,B)=>w?{to:F,value:B,data:"0x"}:{to:y,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[F,B]})},C=[];f.spicenetFee>0n&&C.push(k(A.SPICE_PLATFORM_FEE_RECIPIENT,f.spicenetFee));const E=f.gasFee+f.bridgeFee;return E>0n&&C.push(k(A.SPICE_GAS_FEE_RECIPIENT,E)),{...m,tokenTransfers:v,calls:[...C,...m.calls]}}),l=i.flatMap(m=>(m.tokenTransfers??[]).filter(r).map(p=>{const f=I.getAddress(p.token),h=I.getAddress(p.to),x=[{token:f,to:h,amount:BigInt(p.amount)}];return{chainId:m.chainId,transfers:vu(x)}}));if(l.length===0)return e;const d=s?.requestTimestampMs??Date.now(),c=BigInt(Math.floor(d/1e3))+3600n;return[{chainId:A.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:l.map((m,p)=>{const f=I.keccak256(I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"}],[t,m.transfers[0].token,m.transfers.reduce((x,b)=>x+b.amount,0n),BigInt(m.chainId),BigInt(d+p)])),h=ku(f,"77");return{to:"0x0000000000000000000000000000000000000000",value:0n,data:I.encodeFunctionData({abi:A.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${m.chainId}`,idempotenceKey:h,nbf:0n,exp:c,metadata:"{}",transfers:m.transfers.map(x=>({token:x.token.toLowerCase(),to:x.to,amount:x.amount}))}]})}})},...i]}function An(e,t,n,s){const o=e.filter(i=>i.domain!=="spicenet"),r=i=>(i.tokenTransfers??[]).some(l=>l.from==="escrow");return[...o.filter(i=>!r(i)),...Gn(o.filter(r),t,n,s)]}function $o(e,t,n,s,o){const r=e[e.length-1];if(!r?.calls.length||r.domain==="spicenet")throw new Error("Proceeds fees require a final destination action");const i=[{to:A.SPICE_PLATFORM_FEE_RECIPIENT,amount:o},{to:A.SPICE_GAS_FEE_RECIPIENT,amount:s}].filter(l=>l.amount>0n);return e.map(l=>l===r?{...l,calls:[...l.calls,...i.map(d=>({to:n,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[d.to,d.amount]})}))],tokenTransfers:[...l.tokenTransfers??[],...i.map(d=>({from:t,to:d.to,token:n,amount:d.amount}))]}:l)}async function hi(e,t,n,s,o){const r=A.hashChainBatches(e),i=await g.relayerService.estimateBatchGas({user:t,outputToken:n,signal:s,requireSimulation:!0,includePlatformFee:o!==void 0,chainBatches:e.map((l,d)=>({...l,hash:r[d].hash}))});if(i.gasQuoteSource!=="estimated"||!i.simulationVerified)throw new Error("Action proceeds require a successful live batch simulation; fallback gas pricing is not sufficient");if(o!==void 0&&(i.platformFee===void 0||i.platformFee>o))throw new Error("Fee conversion platform price changed; refresh before retrying");return i.gasFee}async function Su(e){if(e.proceeds.token.toLowerCase()!==e.token.toLowerCase())throw new Error("Action proceeds must use the destination fee token");const t=await e.proceeds.resolve(e.signal);if(e.signal?.aborted)throw new Error("Action proceeds quote was cancelled");if(t<0n)throw new Error("Action proceeds cannot be negative");const n=await e.baseline();if(!n?.feeEstimate)throw new Error("Action fee quote is unavailable");let s=n.preview.gasFee;const o=n.preview.spicenetFee,r=n.preview.bridgeFee??0n;for(let i=0;i<5;i++){const l=s+o+r,d=t<l?t:l,c=l-d,m=c>0n?(c*110n+99n)/100n+2n:0n,p=An(await e.buildBatches(m),e.owner),f=$o(p,e.owner,e.token,s+r,o),h=await hi(f,e.owner,e.token,e.signal);if(h===s)return{preview:{...n.preview,grossAmount:m,netAmount:0n,gasFee:s,totalFee:l,gasQuoteSource:"estimated"},feeEstimate:n.feeEstimate,grossFundingAmount:m,proceedsAvailable:t,proceedsUsed:d};s=h}throw new Error("Action proceeds fee estimate did not converge")}function gi(e,t,n){if(e._source==="wallet")return e._fundingWallet==="embedded"&&e.chainId===t&&A.getTokenByAddress(e.address,t)?e.address:null;const s=Dn(e,t);return s.find(o=>o.toLowerCase()===n.toLowerCase())??s[0]??null}class xi extends Error{constructor(t,n){super("The selected balance cannot cover the fee funding amount"),this.requiredAmount=t,this.balance=n,this.name="InsufficientFeeFundingBalanceError"}}async function Au(e){const t=e.selectedAsset?.asset,n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!t||!n||t._source!=="spice"&&!(t._source==="wallet"&&t._fundingWallet==="embedded"&&t.chainId===e.resolvedChainId))throw new Error("A local embedded or Spice balance is required for fee conversion");const s=gi(t,e.resolvedChainId,e.destinationToken.address);if(!s)throw new Error("This receipt has no registered destination withdrawal token");const o=A.getTokenByAddress(s,e.resolvedChainId);if(!o)throw new Error("Fee funding token metadata is unavailable");const r=e.destinationToken.address;if(e.actionProceeds&&e.actionProceeds.token.toLowerCase()!==r.toLowerCase())throw new Error("Action proceeds must use the destination fee token");const i=e.actionProceeds?await e.actionProceeds.resolve(e.signal):0n;if(i<0n||e.signal?.aborted)throw new Error("Action proceeds quote was cancelled or invalid");const l=Ps({executorAddress:n,customVenues:[...e.resolveExactOutputSwap?[{name:"consumer-exact-output",chainIds:[e.resolvedChainId],preferred:!0,resolve:e.resolveExactOutputSwap}]:[],...Kn(e.liquidityVenues).output]}),d=async m=>{const p=A.hashChainBatches(m),f=await g.relayerService.estimateBatchGas({user:n,outputToken:r,requireSimulation:!0,includePlatformFee:!0,signal:e.signal,chainBatches:m.map((h,x)=>({...h,hash:p[x].hash}))});if(!f.simulationVerified||f.gasQuoteSource!=="estimated"||f.platformFee===void 0||f.gasFee<=0n)throw new Error("Fee conversion requires verified gas and platform pricing");return f};let c=await d(await e.buildPayChainBatches({fundingAmountOverride:0n}));for(let m=0;m<8;m++){const p=c.gasFee+c.platformFee,f=i<p?i:p,h=p-f,x=h>0n?(h*110n+99n)/100n+2n:0n,b=x>0n?await l.getQuote({tokenIn:s,tokenOut:r,amountOut:x,maxSlippage:e.maxSlippage},e.resolvedChainId,n):null;if(e.signal?.aborted)throw new Error("Fee conversion quote was cancelled");if(b&&(b.amountOut!==x||b.amountInMax<=0n||b.amountInMax<b.amountIn||!b.calls.length))throw new Error("Invalid exact-output fee conversion quote");const y=b?.amountInMax??0n,w=Kt(y,o.decimals,t.decimals);if(w>t.balance)throw new xi(w,t.balance);let S=An(await e.buildPayChainBatches({fundingAmountOverride:y,fundingTokenOverride:s}),n);if(b){const k=S.length-1;S=S.map((C,E)=>E===k?{...C,calls:[...C.calls,...b.calls]}:C)}S=$o(S,n,r,c.gasFee,c.platformFee);const v=await d(S);if(v.gasFee<=c.gasFee&&(c.gasFee-v.gasFee)*100n<=v.gasFee*15n&&v.platformFee===c.platformFee){const k={tokenIn:s,tokenOut:r,amountInMax:y,amountOut:x,sourceAmountMax:w};return{feeEstimate:null,preview:{symbol:e.destinationToken.symbol,decimals:e.destinationToken.decimals,grossAmount:x,netAmount:0n,gasFee:c.gasFee,spicenetFee:c.platformFee,totalFee:p,gasQuoteSource:"estimated"},grossFundingAmount:y,proceedsAvailable:i,proceedsUsed:f,fundingConversion:k,fundingBatches:S}}c=v}throw new Error("Fee conversion pricing did not converge")}function Zn(e){return JSON.stringify(e,(t,n)=>typeof n=="bigint"?n.toString():n)}async function yi(e,t,n){const s=e.sourceConversion,o=e.selectedAsset?.asset,r=e.embeddedWalletAddress??e.providerEmbeddedAddress;try{if(!o||!r||o._source!=="wallet")throw new Error("Select a wallet source for source-chain conversion");if(!e.isPayMode&&!e.isFeeInclusiveInput)throw new Error("Source-chain conversion requires input-inclusive or exact-output mode");const i=s.virtualSelectedAsset,l=i.asset.chainId===e.resolvedChainId&&g.addressesEqual(i.asset.address,e.destinationToken.address);await t({...e,sourceConversion:void 0,sourceConversionRequired:!1,sourceFunding:void 0,selectedAsset:i,parsedAmount:e.isPayMode?e.parsedAmount:Number(i.amount),isInsufficientBalance:!1,isSourceDestToken:l,executionTokenDecimals:i.asset.decimals,execution:{...e.execution,execute:async(d,c,m,p,f,h)=>{let x;const b=(v,k)=>{const C=x??s.getPlan(v);if(!s.isCurrent()||!C||C.expiresAt<=Date.now())throw new Error("Source funding quote expired or changed; refresh it before retrying");const E=C.quote.plan.source;if(E.chainId!==o.chainId||E.decimals!==o.decimals||!g.addressesEqual(E.address,o.address)||!g.addressesEqual(C.quote.executorAddress,r))throw new Error("The source funding quote does not belong to this wallet and asset");if(!e.isPayMode&&C.quote.sourceAmountInMax!==I.parseUnits(e.selectedAsset.amount,o.decimals))throw new Error("The source quote exceeds the entered input-inclusive budget");if(C.quote.sourceAmountInMax>s.acceptedSourceAmountInMax)throw new Error("The source quote exceeds the displayed maximum; review the refreshed quote before retrying");if(k!==void 0&&C.quote.sourceAmountInMax>k)throw new Error("The refreshed source quote exceeds this operation's funded amount");if(!C.chainBatches.every((F,B)=>v[B]&&Zn(v[B])===Zn(F)))throw new Error("The source conversion calls changed after quoting");return C},y=b(d),w=y.quote.sourceAmountInMax,S=v=>{const k=C=>C.chainBatches.every((E,F)=>v[F]&&Zn(v[F])===Zn(E));if(!x||k(x))return v;if(!k(y))throw new Error("The source conversion calls changed after quoting");return[...x.chainBatches,...v.slice(y.chainBatches.length)]};if(en(o,e.isNon7702)){const v=BigInt(e.sourceFunding?.confirmedAmount??"0")+BigInt(e.sourceFunding?.pending?.amount??"0");if(w>o.balance+v)throw new Error("Insufficient selected-source balance for the quoted amount and fees");await n(w)}else{const v=g.getClientForChain(o.chainId);if((o.isNative||A.isNativeToken(o.address)?await v.getBalance({address:r}):await v.readContract({address:o.address,abi:I.erc20Abi,functionName:"balanceOf",args:[r]}))<w)throw new Error("Insufficient embedded source balance for this conversion")}return b(d,w),e.execution.execute(d,c,m,p,f,{...h,skipUserFundingPreflight:!0,prepareAfterAuthorization:async v=>{if(!s.isCurrent())throw new Error("Source funding wallet or destination quote changed; refresh before retrying");const k=await s.refreshPlan(y);if(k.bridgeDestinationNet<y.bridgeDestinationNet)throw new Error("Refreshed source funding cannot cover the accepted destination; review the new quote");const C=y.quote.plan,E=k.quote.plan;for(const B of["bridgeSource","bridgeDestination"])if(C[B].chainId!==E[B].chainId||C[B].decimals!==E[B].decimals||!g.addressesEqual(C[B].address,E[B].address))throw new Error("The source funding route changed; review the new quote");x=k;const F=S(v);return b(F,w),h?.prepareAfterAuthorization?h.prepareAfterAuthorization(F):F},adjustBatchesForEstimate:async v=>{const k=await h?.adjustBatchesForEstimate?.(v),C=S(k??v.chainBatches);return b(C,w),k?C:null},validateBeforeSubmit:async v=>{await h?.validateBeforeSubmit?.(v),b(v,w)}})}}})}catch(i){const l=g.sanitizeError(i,"Source funding conversion failed");e.ui.setError(l),e.ui.setStep("error"),e.isPayMode&&e.ui.setPaymentResult({status:"failed",error:l})}}function bi(e,t){let n,s;if(A.isNativeToken(t)){if(e.data!=="0x")return null;n=e.to,s=e.value}else{if(!g.addressesEqual(e.to,t))return null;try{const o=I.decodeFunctionData({abi:I.erc20Abi,data:e.data});if(o.functionName!=="transfer")return null;[n,s]=o.args}catch{return null}}return g.addressesEqual(n,A.SPICE_GAS_FEE_RECIPIENT)?{gas:s,platform:0n}:g.addressesEqual(n,A.SPICE_PLATFORM_FEE_RECIPIENT)?{gas:0n,platform:s}:null}function ps(e,t,n){return e.map(s=>s.chainId===t?{...s,calls:s.calls.filter(o=>!bi(o,n))}:s)}function wi(e,t,n){if(!e.feeOnlyAction)return{};const s=e.embeddedWalletAddress??e.providerEmbeddedAddress;if(e.actionProceeds||e.feeQuote?.fundingConversion){const l=e.feeQuote?.fundingConversion,d=e.actionProceeds??{token:t,resolve:async()=>0n},c=e.feeQuote?.preview,m=e.feeQuote?.proceedsUsed;if(!c||m===void 0||d.token.toLowerCase()!==t.toLowerCase())throw new Error("Refresh the action proceeds quote");const p=c.gasFee+(c.bridgeFee??0n),f=c.spicenetFee,h=async()=>{e.validateFeeQuote?.();const b=await d.resolve(e.signal);if(e.validateFeeQuote?.(),e.signal?.aborted||b<m||b+(l?.amountOut??n)<p+f)throw new Error("Action proceeds changed; refresh before retrying");return[{chainId:e.resolvedChainId,token:t,amount:m+(l?.amountOut??0n)}]},x=async b=>{await h();const y=await hi(b,s,t,e.signal,l?f:void 0);if(await h(),(y>c.gasFee?y-c.gasFee:c.gasFee-y)*100n>y*15n)throw new Error("Action gas quote changed; refresh before retrying")};return{resolveActionOutputCredits:h,prepareForSigning:async b=>{const y=ps(b,e.resolvedChainId,t).map(S=>({...S,tokenTransfers:S.tokenTransfers?.filter(v=>!(typeof v.from=="string"&&g.addressesEqual(v.from,s)&&(g.addressesEqual(v.to,A.SPICE_GAS_FEE_RECIPIENT)||g.addressesEqual(v.to,A.SPICE_PLATFORM_FEE_RECIPIENT))))})),w=$o(y,s,t,p,f);return await x(w),w},validateBeforeSubmit:x}}const o=A.getTokenByAddress(t,e.resolvedChainId),r={chainId:e.resolvedChainId,tokenAddress:t,symbol:o?.symbol??e.destinationToken.symbol,decimals:e.executionTokenDecimals??o?.decimals??e.destinationToken.decimals},i=async l=>{e.validateFeeQuote?.();const d=ps(l,e.resolvedChainId,t),c=await e.execution.estimate(d,t,n,{userOverride:s,useCustomTransfers:!0,feeExecutionMode:"backend-transfer"});e.validateFeeQuote?.();const m=xn(c,r);if(!m||m.chainId!==e.resolvedChainId)throw new Error("The fee service did not return the destination action's fee quote");if(m.gasFee+m.spicenetFee+(m.bridgeFee??0n)+2n>n)throw new Error("Fees exceed the displayed maximum funding; refresh the quote before retrying");return{raw:d,feeEstimate:c,fees:m}};return{prepareForSigning:async l=>{const{raw:d,feeEstimate:c}=await i(l);return An(d,s,c,{payoutAlreadyGross:!0})},validateBeforeSubmit:async l=>{const{fees:d}=await i(l);let c=0n,m=0n;for(const f of l)if(f.chainId===e.resolvedChainId)for(const h of f.calls){const x=bi(h,t);x&&(c+=x.gas,m+=x.platform)}if(c+m+2n>n)throw new Error("Signed fees exceed the displayed maximum funding");const p=d.gasFee+(d.bridgeFee??0n);if((c>p?c-p:p-c)*100n>p*15n||m!==d.spicenetFee)throw new Error("The signed gas quote changed materially; refresh before retrying")}}}const Ci=(e,t)=>(e+t-1n)/t;function Iu(e,t){const n=e.spicenetFee+(e.bridgeFee??0n);return e.grossAmount<=n?t+e.gasFee+n:Ci((t+e.gasFee)*e.grossAmount,e.grossAmount-n)+2n}function vi(e,t,n){return e.every(s=>s.domain!=="spicenet"&&!s.tokenTransfers?.length)?{...t,grossAmount:n,netAmount:n,totalFee:0n,gasFee:0n,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"static_zero"}:null}async function _o(e){const{requiredNetFunding:t}=e;if(e.feeOnlyAction){const m=e.executionOptions?.userOverride;if(!m||t!==0n)throw new Error("Fee-only estimates require a zero action amount and its embedded executor");let p=1n,f;for(let h=0;h<8;h++){const x=An(await e.buildBatches(p),m,f,{payoutAlreadyGross:!0}),b=await e.estimate(ps(x,e.tokenDescriptor.chainId,e.fundingToken),e.fundingToken,p,{...e.executionOptions,feeExecutionMode:"backend-transfer"}),y=xn(b,e.tokenDescriptor);if(!y)throw new Error("The fee service did not return a fee quote for this action");const w=y.gasFee+y.spicenetFee+(y.bridgeFee??0n);if(f&&w+2n<=p)return{preview:{...y,grossAmount:p,netAmount:0n},feeEstimate:b,grossFundingAmount:p};p=(w*110n+99n)/100n+2n,f=b}throw new Error("Fee-only funding did not converge; refresh the fee quote before retrying")}const n=t,s=await e.buildBatches(n),o=await e.estimate(s,e.fundingToken,n,e.executionOptions),r=xn(o,e.tokenDescriptor);if(!r)return{preview:vi(s,e.tokenDescriptor,t),feeEstimate:o,grossFundingAmount:t};const i=Iu(r,t),l=m=>r.grossAmount>0n?Ci(m*i,r.grossAmount):m,d=l(r.spicenetFee),c=l(r.bridgeFee??0n);return{preview:{...r,grossAmount:i,netAmount:t,spicenetFee:d,bridgeFee:c,totalFee:r.gasFee+d+c},feeEstimate:o,grossFundingAmount:i}}function Eu(e,t,n,s){if(e<=0n)return 0n;const o=e-t;if(o<=0n)return 0n;const r=s+n;return r<=0n?o:o*s/r}async function ki(e){const{asset:t,isPayMode:n,isNon7702:s,needsSwap:o,isQuoting:r,embeddedWalletAddress:i,buildSupplyChainBatches:l,estimate:d,executionTokenAddress:c,feeExecutionMode:m}=e;if(n||s||o||r||!i||t.balance<=0n)return null;const p=i,f=await l({fundingAmountOverride:t.balance,actionAmountOverride:t.balance});if(f.length===0)return null;const h=f.some(v=>v.tokenTransfers?.length),x=await d(f,c,t.balance,h?{userOverride:p,useCustomTransfers:!0,feeExecutionMode:m}:m?{userOverride:p,feeExecutionMode:m}:{userOverride:p}),b=xn(x,{chainId:t.chainId,tokenAddress:t.address,symbol:t.symbol,decimals:t.decimals}),y=b?Kt(b.gasFee,b.decimals,t.decimals):0n,w=b?Kt(b.spicenetFee,b.decimals,t.decimals):0n,S=Eu(t.balance,y,w,t.balance);return S>0n?la(S,t.decimals):null}async function er(e){const{signal:t,selectedAsset:n,isPayMode:s,isFeeInclusiveInput:o=!1,parsedAmount:r,needsSwap:i,exactOutputSwap:l,isNon7702:d,isSourceDestToken:c,currentPaymentAmount:m,destinationToken:p,feeExecutionMode:f,resolvedTokenIn:h,embeddedWalletAddress:x,providerEmbeddedAddress:b,resolvedChainId:y,isConnected:w,address:S,ready:v,authenticated:k,isDirect:C,resolvedSwap:E,isQuoting:F,executionTokenAddress:B,buildPayChainBatches:j,buildSupplyChainBatches:T,estimate:R}=e;if(e.feeOnlyAction&&n&&(n.asset._source==="spice"||n.asset._source==="wallet"&&n.asset._fundingWallet==="embedded"&&n.asset.chainId===y)&&(h?h.toLowerCase()!==p.address.toLowerCase():n.asset.receiptTokenId||n.asset.chainTokens))return Au(e);if(e.actionProceeds&&e.feeOnlyAction){const O=x||b;if(!O||!v||!k)return null;if(h&&h.toLowerCase()!==p.address.toLowerCase())throw new Error("Action proceeds require a matching fee-token source");return Su({proceeds:e.actionProceeds,owner:O,token:p.address,signal:t,buildBatches:ee=>j({fundingAmountOverride:ee}),baseline:()=>er({...e,actionProceeds:void 0,selectedAsset:n??{amount:"0",asset:{...p,name:p.symbol,balance:0n,balanceFormatted:0,balanceUsd:0,isNative:!1,_source:"spice"}}})})}if(!n?.asset)return null;if(s){if(r<=0&&!e.feeOnlyAction||i&&!l&&!e.feeOnlyAction||c&&n.asset._source==="wallet"&&!e.feeOnlyAction||d&&!x&&!b)return null;const O=I.parseUnits(m,p.decimals),ee=h||Qt(n.asset,y)||n.asset.address||p.address,ue={chainId:y,tokenAddress:ee,symbol:A.getTokenByAddress(ee,y)?.symbol??n.asset.symbol,decimals:await Yn(n.asset,p,ee)};if(en(n.asset,d)){const ce=x||b;if(!ce)return null;const _=i?l?.amountInMax??0n:O;if(_===0n&&!e.feeOnlyAction)return null;const Ce=await _o({requiredNetFunding:_,feeOnlyAction:e.feeOnlyAction,buildBatches:P=>j({fundingAmountOverride:P}),fundingToken:ee,estimate:R,executionOptions:{userOverride:ce,useCustomTransfers:!0,feeExecutionMode:f,signal:t},tokenDescriptor:ue});return Ce.preview?{...Ce,preview:Ce.preview}:null}if(!w||!S||!v||!k)return null;const re=x||b||S,se=i?l?.amountInMax??0n:O;if(se===0n&&!e.feeOnlyAction)return null;const ie=await _o({requiredNetFunding:se,feeOnlyAction:e.feeOnlyAction,buildBatches:ce=>j({fundingAmountOverride:ce}).then(_=>An(_,re)),fundingToken:ee,estimate:R,executionOptions:{userOverride:re,useCustomTransfers:!0,feeExecutionMode:f,signal:t},tokenDescriptor:ue});return ie.preview?{...ie,preview:ie.preview}:null}if(r<=0||!x)return null;const D=x||b;if(!(!s&&!d&&n.asset._source==="wallet"&&n.asset.chainId!==y)&&!C&&!E&&!F||F)return null;const M=await Yn(n.asset,p,B),W=Bt(I.parseUnits(n.amount,n.asset.decimals),n.asset.decimals,M,"floor"),q=await T();if(q.length===0)return null;const z=n.asset._source==="wallet",X=z&&(n.asset._fundingWallet==="external"||d&&n.asset._fundingWallet!=="embedded")&&z&&n.asset.chainId===y,N={chainId:y,tokenAddress:B,symbol:A.getTokenByAddress(B,y)?.symbol??p.symbol,decimals:M};if(X){const O=await g.relayerService.estimateBatchGas({user:D,outputToken:B,stepIndex:0,chainBatches:q,signal:t}),ee=o?Ts(W,O.gasFee,Mn):(()=>{const ue=Hn(W,Mn),re=ue+O.gasFee;return{netAmount:W,spicenetFee:ue,totalFee:re,grossAmount:W+re}})();return{preview:{...N,grossAmount:ee.grossAmount,netAmount:ee.netAmount,totalFee:ee.totalFee,gasFee:O.gasFee,spicenetFee:ee.spicenetFee,bridgeFee:0n,gasQuoteSource:O.gasQuoteSource},feeEstimate:null}}const H=q.some(O=>O.tokenTransfers?.length),V=await R(q,B,W,H?{userOverride:D,useCustomTransfers:!0,feeExecutionMode:f,signal:t}:f?{userOverride:D,feeExecutionMode:f,signal:t}:{userOverride:D,signal:t}),G=xn(V,N),J=G??vi(q,N,W);if(!J)return null;if(!o||!G)return{preview:J,feeEstimate:V};const U=J.gasFee+(J.bridgeFee??0n),L=Ts(W,U,Mn);return{preview:{...J,grossAmount:L.grossAmount,netAmount:L.netAmount,totalFee:L.totalFee,spicenetFee:L.spicenetFee},feeEstimate:V}}function tr(e){if(!e||typeof e!="object")return!1;const t=e;return t.version===1&&typeof t.identity=="string"&&/^[0-9]+$/.test(t.baseline)&&/^[0-9]+$/.test(t.confirmedAmount)&&(!t.pending||/^[1-9][0-9]*$/.test(t.pending.amount)&&(!t.pending.hash||/^0x[0-9a-f]{64}$/i.test(t.pending.hash)))}async function Gs(e){const t=()=>e.isNative?e.sourceClient.getBalance({address:e.recipient}):e.sourceClient.readContract({address:e.tokenAddr,abi:I.erc20Abi,functionName:"balanceOf",args:[e.recipient]});let n=e.state;if(n&&(!tr(n)||n.identity!==e.identity))throw new Error("Restore the pending funding operation's original source, wallets and amount before retrying");n||(n={version:1,identity:e.identity,baseline:(await t()).toString(),confirmedAmount:"0"});const s=()=>e.onState({...n,pending:n.pending&&{...n.pending}}),o=()=>{delete n.pending,s()},r=()=>{n.confirmedAmount=(BigInt(n.confirmedAmount)+BigInt(n.pending.amount)).toString(),delete n.pending,s()};if(n.pending){if(!n.pending.hash)throw new Error("Source funding submission is unconfirmed; recover it before retrying to avoid spending twice");const{receipt:p}=await Ns({client:e.sourceClient,hash:n.pending.hash,call:ga(e.recipient,e.tokenAddr,e.isNative,BigInt(n.pending.amount)),onRepriced:f=>{n.pending.hash=f,s()},onCancelled:o});if(p.status!=="success")throw o(),new Error("Source funding reverted; retry when ready");r()}if(e.reconcileOnly)return;const i=BigInt(n.confirmedAmount),l=async()=>{if(BigInt(n.confirmedAmount)>0n&&await t()<BigInt(n.baseline)+BigInt(n.confirmedAmount))throw new Error("Previously funded assets are no longer reserved in the embedded wallet; recover this operation before funding again")};await l();const d=e.requiredAmount>i?e.requiredAmount-i:0n;if(d===0n)return;const{extWc:c,viemChain:m}=await e.createWallet();await ya({extWc:c,sourceClient:e.sourceClient,recipient:e.recipient,tokenAddr:e.tokenAddr,isNative:e.isNative,amount:d,viemChain:m,observer:{onSending:async()=>{await e.observer?.onSending?.(0)},onSubmitted:(p,f)=>{n.pending={amount:d.toString(),hash:f},s(),e.observer?.onSubmitted?.(0,f)},onConfirmed:(p,f)=>{r(),e.observer?.onConfirmed?.(0,f)},onRejected:()=>{o(),e.observer?.onRejected?.(0)},onReverted:(p,f)=>{o(),e.observer?.onReverted?.(0,f)}}}),await l()}function Fu(e){return e.selectedAsset||!e.feeOnlyAction||!e.actionProceeds?e.selectedAsset:{amount:"0",asset:{...e.destinationToken,name:e.destinationToken.symbol,balance:0n,balanceFormatted:0,balanceUsd:0,isNative:!1,_source:"wallet",_fundingWallet:"embedded"}}}function nr(e){const t=Fu(e),n=t?.asset;return JSON.stringify([e.externalWalletAddress?.toLowerCase(),(e.embeddedWalletAddress??e.providerEmbeddedAddress)?.toLowerCase(),n?.address.toLowerCase(),n?.chainId,n?.decimals,n?._source,n?._fundingWallet,t?.amount,e.resolvedChainId,e.destinationToken.address.toLowerCase(),e.recipient?.toLowerCase(),e.isPayMode,e.currentPaymentAmount??"0",e.isFeeInclusiveInput??!1,e.sourceFundingRecoveryKey??"generic",e.destinationToken.decimals,n?n.isNative??A.isNativeToken(n.address):null,...e.feeOnlyAction?[!0]:[]])}async function Zs(e,t){const n=e.selectedAsset.asset,s=A.normalizeNativeTokenAddress(n.address);await Gs({identity:nr(e),state:e.sourceFunding,onState:o=>{e.sourceFunding=o,e.onSourceFundingChange?.(o)},createWallet:()=>On({wallet:e.externalWallet,account:e.externalWalletAddress,chainId:n.chainId,onSwitch:()=>e.ui.setStatusMsg("Switching source network...")}),sourceClient:g.getClientForChain(n.chainId),recipient:e.embeddedWalletAddress??e.providerEmbeddedAddress,tokenAddr:s,isNative:n.isNative||A.isNativeToken(s),requiredAmount:t,observer:e.fundingObserver})}function Si(e,t){const n=e.selectedAsset?.asset;if(!n||n._source!=="wallet")return;const s=Qt(n,e.resolvedChainId);if(!s||!g.addressesEqual(s,e.executionTokenAddress))return;const o=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId),r=Kt(t,e.executionTokenDecimals??o?.decimals??e.destinationToken.decimals,n.decimals),i=n.balance+BigInt(e.sourceFunding?.confirmedAmount??"0");if(r<=i)return;const l=I.formatUnits(r,n.decimals),d=I.formatUnits(i,n.decimals);throw new Error(`Insufficient ${n.symbol} for amount plus fees. Required ${l} ${n.symbol}; available ${d} ${n.symbol}.`)}function In(e){const t=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:e.executionTokenAddress,symbol:t?.symbol??e.destinationToken.symbol,decimals:e.executionTokenDecimals??t?.decimals??e.destinationToken.decimals}}function fs(e,t,n){const s=xn(e,In(t));if(!s)return;const o=s.bridgeFee??0n,r=s.gasFee+o;if(t.isFeeInclusiveInput){const c=Ts(n,r,Mn);if(!c.coversFees){const{symbol:m,decimals:p}=In(t);throw new Error(`Amount too small: fees are ${I.formatUnits(r,p)} ${m}.`)}if(t.needsSwap&&!t.exactOutputSwap&&(t.swapInputAmount??t.feeQuote?.preview?.netAmount)!=null&&c.netAmount<(t.swapInputAmount??t.feeQuote.preview.netAmount))throw new Error("Fees changed. Refresh the swap quote before retrying so the total stays within your entered amount.");return{grossAmount:c.grossAmount,netAmount:c.netAmount,combinedFeeAmount:c.totalFee,feeExecutionMode:"user-transfer",feeBreakdown:{spicenetFee:c.spicenetFee,gasFee:s.gasFee,bridgeFee:o}}}const i=n,l=Hn(n,Mn),d=l+r;return{grossAmount:i+d,netAmount:i,combinedFeeAmount:d,feeExecutionMode:"user-transfer",feeBreakdown:{spicenetFee:l,gasFee:s.gasFee,bridgeFee:o}}}function Ai(e,t,n){let s=0n,o=0n;const r=n.toLowerCase();for(const i of e)if(i.chainId===t)for(const l of i.calls??[]){if(A.isNativeToken(n)&&l.data==="0x"&&l.value>0n){g.addressesEqual(l.to,A.SPICE_PLATFORM_FEE_RECIPIENT)?s+=l.value:g.addressesEqual(l.to,A.SPICE_GAS_FEE_RECIPIENT)&&(o+=l.value);continue}if(l.to.toLowerCase()===r)try{const d=I.decodeFunctionData({abi:I.erc20Abi,data:l.data});if(d.functionName!=="transfer")continue;const c=d.args[0].toLowerCase(),m=d.args[1];c===A.SPICE_PLATFORM_FEE_RECIPIENT.toLowerCase()?s+=m:c===A.SPICE_GAS_FEE_RECIPIENT.toLowerCase()&&(o+=m)}catch{continue}}return{spicenetFee:s,gasFee:o}}function sr(e,t,n){const s=t.feeExecutionMode==="user-transfer"&&t.needsSwap&&t.resolvedTokenIn?t.resolvedTokenIn:t.executionTokenAddress,o=Ai(e,t.resolvedChainId,s);return o.spicenetFee===0n&&n.feeBreakdown.spicenetFee>0n||o.gasFee===0n&&n.feeBreakdown.gasFee>0n?!1:Nn(o.spicenetFee,n.feeBreakdown.spicenetFee,100n)&&Nn(o.gasFee,n.feeBreakdown.gasFee,100n)}function Ii(e,t){if(!e.isFeeInclusiveInput||!e.needsSwap||e.swapInputAmount==null||!e.selectedAsset)return;const n=In(e),s=Bt(I.parseUnits(e.selectedAsset.amount,e.selectedAsset.asset.decimals),e.selectedAsset.asset.decimals,n.decimals,"floor"),o=Ai(t,e.resolvedChainId,e.resolvedTokenIn??e.executionTokenAddress);if(e.swapInputAmount+o.gasFee+o.spicenetFee>s)throw new Error("Swap input plus fees exceeds the entered amount. Refresh the quote before retrying.")}function Ei(e,t){return e?Nn(e.grossAmount,t.grossAmount,100n)&&Nn(e.feeBreakdown.spicenetFee,t.feeBreakdown.spicenetFee,100n)&&Nn(e.feeBreakdown.gasFee,t.feeBreakdown.gasFee,100n)&&Nn(e.feeBreakdown.bridgeFee,t.feeBreakdown.bridgeFee,100n):!1}function Fi(e,t){const n=A.getTokenByAddress(t,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:t,symbol:n?.symbol??e.selectedAsset?.asset.symbol??"",decimals:e.executionTokenDecimals??n?.decimals??e.selectedAsset?.asset.decimals??e.destinationToken.decimals}}async function or(e,t){const n=e.feeQuote;return n?.feeEstimate&&n.grossFundingAmount!==void 0?{grossFundingAmount:n.grossFundingAmount,feeEstimate:n.feeEstimate}:_o({...t,feeOnlyAction:e.feeOnlyAction,estimate:e.execution.estimate,tokenDescriptor:Fi(e,t.fundingToken)})}function Ti(e,t){if(e.feeOnlyAction)return 0n;const n=e.selectedIsEquivalent?t:e.exactOutputSwap?e.exactOutputSwap.amountInMax:0n;if(n===0n)throw new Error("Quote not available yet");return n}function rr(e,t,n){const s=t instanceof Error?t:new Error(String(t));if(s.name==="AbortError"||n){e.ui.setStep("idle");return}const o=s.message||"Transaction failed";e.ui.setStep("error"),e.ui.setStatusMsg(o),e.ui.setError(o)}function ar(e,t){const n=g.sanitizeError(t,"Payment failed. Please try again.");e.ui.setError(n),e.ui.setPaymentResult({status:"failed",error:n})}function Tu(e){if(!e.isFeeInclusiveInput||e.feeExecutionMode==="user-transfer")return e;const t=A.normalizeNativeTokenAddress(e.executionTokenAddress);let n=!1;const s=(o,r)=>A.isNativeToken(t)?{to:o,value:r,data:"0x"}:{to:t,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[o,r]})};return{...e,feeExecutionMode:"user-transfer",execution:{...e.execution,execute:(...o)=>{if(!n)throw new Error("Inclusive supply requires a destination fee quote");return e.execution.execute(...o)},estimate:async(o,r,i,l)=>{const d=await e.execution.estimate(ps(o,e.resolvedChainId,t),r,i,{...l,feeExecutionMode:"backend-transfer"});if(!xn(d,In(e)))throw new Error("Inclusive supply requires a destination fee quote");return d},buildSupplyChainBatches:async o=>{const r=o?.actionContextOverride,i=await e.execution.buildSupplyChainBatches({...o,actionContextOverride:r?{...r,feeExecutionMode:"backend-transfer"}:void 0});if(!r?.feeBreakdown)return i;n=!0;const{spicenetFee:l,gasFee:d,bridgeFee:c}=r.feeBreakdown,m=[...l>0n?[s(A.SPICE_PLATFORM_FEE_RECIPIENT,l)]:[],...d+c>0n?[s(A.SPICE_GAS_FEE_RECIPIENT,d+c)]:[]],p=ps(i,e.resolvedChainId,t),f=p[p.length-1];if(f?.chainId!==e.resolvedChainId)throw new Error("Inclusive supply requires a final destination action batch");return p.map(h=>h===f?{...h,calls:[...m,...h.calls]}:h)}}}}async function Xs(e){if(e.feeOnlyAction){e.ui.setError("Fee-only actions require output mode and a zero action amount");return}if(e.sourceConversion)return yi(e,Xs,s=>Zs(e,s));if(e.sourceConversionRequired){e.ui.setError("Wait for the source funding quote before continuing");return}if(!e.selectedAsset?.asset||e.parsedAmount<=0){e.ui.setError("Select an asset and enter an amount");return}if(e.isInsufficientBalance&&!e.sourceFunding){e.ui.setError("Insufficient balance");return}const t=e.selectedAsset;try{e={...e,executionTokenDecimals:await Yn(t.asset,e.destinationToken,e.executionTokenAddress)}}catch(s){rr(e,s,!1);return}if(e=Tu(e),en(t.asset,e.isNon7702)){const s=e.isNon7702&&e.isSourceDestToken,o=e.externalWalletAddress;if(s?!o:!e.externalWalletAddress){e.ui.setError("Please connect your wallet to continue");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setTxHash(null);try{if(s){e.ui.setStep("executing"),e.ui.setStatusMsg("Submitting transaction...");const r=await Bi({...e,activeSignerAddress:e.externalWalletAddress,activeSignerWallet:e.externalWallet});e.ui.setTxHash(r??null)}else{e.ui.setStep("building"),e.ui.setStatusMsg("Building transaction..."),e.refs.spiceDepositSubmittedRef.current=!1;const r=new AbortController;e.refs.abortControllerRef.current=r,await Bu(e,r.signal)}e.ui.setStep("success"),e.ui.setStatusMsg(s?"Transaction confirmed":"Deposit confirmed")}catch(r){rr(e,r,!!e.refs.abortControllerRef.current?.signal.aborted)}finally{e.ui.setIsExecuting(!1)}return}if(!e.embeddedWalletAddress){e.ui.setError("Wallet not ready");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setStep("building"),e.ui.setStatusMsg("Building transaction..."),e.ui.setTxHash(null),e.refs.spiceDepositSubmittedRef.current=!1;const n=new AbortController;e.refs.abortControllerRef.current=n;try{const s=Bt(I.parseUnits(t.amount,t.asset.decimals),t.asset.decimals,In(e).decimals,"floor"),o=s;let r=await e.execution.buildSupplyChainBatches();const i=t.asset._source==="wallet",l=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(e.buildSpicenetBatch&&!e.isPayMode&&!e.isNon7702&&!i&&!r.some(b=>A.isSpicenetChainId(b.chainId)))throw new Error("Spice-funded supplies must include a Spicenet funding batch before the destination chain batch.");const d=r.some(b=>b.tokenTransfers?.length),c=d?{userOverride:l,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode}:e.feeExecutionMode?{userOverride:l,feeExecutionMode:e.feeExecutionMode}:{userOverride:l};let m=s;const p=e.feeExecutionMode==="user-transfer"&&e.needsSwap&&!e.exactOutputSwap;let f,h=e.feeExecutionMode==="user-transfer"&&!p?o:void 0;for(let b=0;b<4;b+=1){const y=b===0&&e.feeQuote?.feeEstimate||await e.execution.estimate(r,e.executionTokenAddress,d?m:0n,c),w=xn(y,In(e));f=e.feeExecutionMode==="user-transfer"&&w?fs(y,e,o):void 0,e.isFeeInclusiveInput&&f&&!p&&(h=f.netAmount);const S=f?.grossAmount??w?.grossAmount??m;if(S===m){m=S;break}m=S,r=await e.execution.buildSupplyChainBatches({fundingAmountOverride:m,actionAmountOverride:h,actionContextOverride:f})}e.feeExecutionMode==="user-transfer"&&(Si(e,m),r=await e.execution.buildSupplyChainBatches({fundingAmountOverride:m,actionAmountOverride:h,actionContextOverride:f}));let x=f;await e.execution.execute(r,e.executionTokenAddress,d?m:0n,e.execution.onProgress,n.signal,e.feeExecutionMode==="user-transfer"?{...c,skipUserFundingPreflight:!0,validateBeforeSubmit:async b=>Ii(e,b),adjustBatchesForEstimate:({feeEstimate:b,chainBatches:y})=>{const w=fs(b,e,o);if(!w)return null;const S=Ei(x,w),v=sr(y,e,w);return S||v?null:(x=w,e.isFeeInclusiveInput&&!p&&(h=w.netAmount),e.execution.buildSupplyChainBatches({fundingAmountOverride:w.grossAmount,actionAmountOverride:h,actionContextOverride:w}))}}:{...c,skipPreSubmitFeeEstimate:!0}),e.ui.setStep("success"),e.ui.setStatusMsg("Deposit confirmed")}catch(s){rr(e,s,n.signal.aborted)}finally{e.ui.setIsExecuting(!1)}}async function Bu(e,t){if(!e.selectedAsset?.asset)throw new Error("Select a payment source");if(!e.externalWalletAddress)throw new Error("Please connect your external wallet to continue");const n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!n)throw new Error("Embedded wallet not available \u2014 sign in to create one before supplying");const s=e.selectedAsset.asset,o=en(s,e.isNon7702);if(o&&!e.externalWallet)throw new Error("Please connect your external wallet to continue");const r=Bt(I.parseUnits(e.selectedAsset.amount,s.decimals),s.decimals,In(e).decimals,"floor"),i=r,l=s._source==="wallet"&&s.chainId===e.resolvedChainId;let d=await e.execution.buildSupplyChainBatches();const c={userOverride:n,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode,signAuthorizationsForEstimate:!0};let m=r;const p=e.feeExecutionMode==="user-transfer"&&e.needsSwap&&!e.exactOutputSwap;let f=e.feeExecutionMode==="user-transfer"&&!p?i:void 0,h;if(l){const v=e.feeQuote?.preview.gasFee??(await g.relayerService.estimateBatchGas({user:n,outputToken:e.executionTokenAddress,stepIndex:0,chainBatches:d})).gasFee,k=e.isFeeInclusiveInput&&e.feeExecutionMode==="user-transfer"?Ts(r,v,Mn):null;if(k&&!k.coversFees)throw new Error("Amount too small to cover supply fees");const C=k?.spicenetFee??Hn(r,10n),E=C+v;m=k?.grossAmount??r+E,k&&!p&&(f=k.netAmount),e.feeExecutionMode==="user-transfer"&&(h={grossAmount:m,netAmount:k?.netAmount??i,combinedFeeAmount:E,feeExecutionMode:e.feeExecutionMode,feeBreakdown:{spicenetFee:C,gasFee:v,bridgeFee:0n}})}else for(let v=0;v<4;v+=1){const k=await e.execution.estimate(d,e.executionTokenAddress,0n,c),C=e.feeExecutionMode==="user-transfer"?fs(k,e,i):void 0,E=xn(k,In(e)),F=C?.grossAmount??(E?E.grossAmount>r?E.grossAmount:r:m);if(h=C,e.isFeeInclusiveInput&&!p&&C&&(f=C.netAmount),F===m){m=F;break}m=F;const B=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId),j=Kt(m,e.executionTokenDecimals??B?.decimals??e.destinationToken.decimals,s.decimals);d=await e.execution.buildSupplyChainBatches({fundingAmountOverride:m,sourceFundingAmountOverride:j,withdrawalAmountOverride:m,actionAmountOverride:f,actionContextOverride:C})}const x=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId);let b=l?m:Kt(m,e.executionTokenDecimals??x?.decimals??e.destinationToken.decimals,s.decimals);Si(e,m),d=await e.execution.buildSupplyChainBatches({fundingAmountOverride:m,sourceFundingAmountOverride:b,withdrawalAmountOverride:m,actionAmountOverride:f,actionContextOverride:h});const y=async v=>{o&&await Zs(e,v)};o&&(e.ui.setStatusMsg("Funding embedded wallet..."),await y(b));let w=b;if(e.feeExecutionMode==="user-transfer")for(let v=0;v<4;v+=1){const k=await e.execution.estimate(d,e.executionTokenAddress,0n,c),C=fs(k,e,i);if(!C)break;const E=l?C.grossAmount:Kt(C.grossAmount,e.executionTokenDecimals??x?.decimals??e.destinationToken.decimals,s.decimals);if(o&&E>w&&(e.ui.setStatusMsg("Topping up embedded wallet..."),await y(E),w=E),h=C,e.isFeeInclusiveInput&&!p&&C&&(f=C.netAmount),m=C.grossAmount,b=E,d=await e.execution.buildSupplyChainBatches({fundingAmountOverride:m,sourceFundingAmountOverride:b,withdrawalAmountOverride:m,actionAmountOverride:f,actionContextOverride:C}),sr(d,e,C))break}e.ui.setStatusMsg("Preparing transaction...");let S=h;await e.execution.execute(d,e.executionTokenAddress,0n,e.execution.onProgress,t,e.feeExecutionMode==="user-transfer"?{...c,skipUserFundingPreflight:!0,validateBeforeSubmit:async v=>Ii(e,v),adjustBatchesForEstimate:({feeEstimate:v,chainBatches:k})=>{const C=fs(v,e,i);if(!C)return null;const E=Ei(S,C),F=sr(k,e,C);if(E||F)return null;if(C.grossAmount>m)throw new Error("Fee estimate increased after wallet funding. Please retry so the signed fee can match the latest relayer estimate.");S=C,e.isFeeInclusiveInput&&!p&&(f=C.netAmount);const B=l?C.grossAmount:Kt(C.grossAmount,e.executionTokenDecimals??x?.decimals??e.destinationToken.decimals,s.decimals);return e.execution.buildSupplyChainBatches({fundingAmountOverride:C.grossAmount,sourceFundingAmountOverride:B,withdrawalAmountOverride:C.grossAmount,actionAmountOverride:f,actionContextOverride:C})}}:{...c,skipPreSubmitFeeEstimate:!0})}async function Bi(e){const t=e.isPayMode&&e.parsedAmount===0;if(!e.selectedAsset?.asset&&!t)throw new Error("Select a payment source");const n=e.activeSignerWallet??e.externalWallet,s=e.activeSignerAddress??e.externalWalletAddress;if(!s||!n)throw new Error("Please connect your wallet to continue");const o=I.parseUnits(e.isPayMode?e.currentPaymentAmount:e.selectedAsset.amount,e.destinationToken.decimals),r={userAddress:s,executorAddress:s,chainId:e.resolvedChainId,destinationToken:e.destinationToken.address},i=await e.buildActionCalls(o,r);if(i.length===0)throw new Error("No action calls configured");const{extWc:l,viemChain:d}=await On({wallet:n,account:s,chainId:e.resolvedChainId}),c=g.getClientForChain(e.resolvedChainId);return Oo({extWc:l,client:c,calls:i,viemChain:d,errorMessage:"Transaction failed"})}async function ju(e){if(!e.selectedAsset?.asset)throw new Error("Select a payment source");if(!e.externalWalletAddress||!e.externalWallet)throw new Error("Please connect your external wallet to continue");const t=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!t)throw new Error("Embedded wallet not available \u2014 sign in to create one before paying");const n=e.selectedAsset.asset,s=I.parseUnits(e.currentPaymentAmount,e.destinationToken.decimals),o=Ti(e,s),r=e.resolvedTokenIn||Qt(n,e.resolvedChainId)||n.address,i=Fi(e,r).decimals,l=w=>Kt(w,i,n.decimals),d={userOverride:t,useCustomTransfers:!0,requireDestinationReceipt:e.feeOnlyAction},c=t,m=async(w,S,v)=>An(await e.execution.buildPayChainBatches({fundingAmountOverride:w}),c,S,v),{grossFundingAmount:p,feeEstimate:f}=await or(e,{requiredNetFunding:o,buildBatches:w=>m(w),fundingToken:r,executionOptions:{...d,feeExecutionMode:e.feeExecutionMode}});let h=await m(p,e.actionProceeds?void 0:f,{payoutAlreadyGross:!0});const x=wi(e,r,p);x.prepareForSigning&&(h=await x.prepareForSigning(h)),await Zs(e,l(p));const b=h.some(w=>w.tokenTransfers?.length),y={...d,...x,skipUserFundingPreflight:!e.actionProceeds,skipPreSubmitFeeEstimate:!0};return await e.execution.execute(h,r,b?p:0n,w=>{w.txHash&&(e.ui.setPaymentResult(S=>({...S??{status:"processing"},txHash:w.txHash})),e.ui.setTxHash(w.txHash))},void 0,b?y:{userOverride:t,skipUserFundingPreflight:!0,skipPreSubmitFeeEstimate:!0})}async function ir(e){if(e.feeOnlyAction&&(e.parsedAmount!==0||!e.selectedAsset&&!e.actionProceeds||e.onPayExecute||!e.feeQuote?.feeEstimate&&!e.feeQuote?.fundingConversion||e.feeQuote.grossFundingAmount===void 0||!e.actionProceeds&&e.feeQuote.grossFundingAmount===0n)){e.ui.setError("Select a fee source and wait for its fee quote before continuing");return}if(e.sourceConversion)return yi(e,ir,s=>Zs(e,s));if(e.sourceConversionRequired){e.ui.setError("Wait for the source funding quote before continuing");return}if(e.parsedAmount<0){e.ui.setError("Enter a valid payment amount");return}const t=e.parsedAmount===0;if(!e.selectedAsset?.asset&&!t){e.ui.setError("Select a payment source");return}if(e.isInsufficientBalance&&!e.sourceFunding){e.ui.setError("Insufficient balance");return}if(e.parsedAmount>0&&e.needsSwap&&!e.exactOutputSwap){e.ui.setError("Swap quote not available. Try a different asset.");return}if(e.selectedAsset)try{e={...e,executionTokenDecimals:await Yn(e.selectedAsset.asset,e.destinationToken,e.executionTokenAddress)}}catch(s){ar(e,s);return}const n=(e.feeQuote?.grossFundingAmount!==0n||!e.actionProceeds)&&en(e.selectedAsset?.asset,e.isNon7702);if(n||e.isNon7702&&t&&!e.feeOnlyAction){const s=n?e.externalWalletAddress:e.activeSignerAddress??e.externalWalletAddress;if(e.isSourceDestToken||t?!s:!e.externalWalletAddress){e.ui.setError("Please connect your wallet to continue");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setShowStatusPanel(!0),e.ui.setPaymentResult({status:"processing"});try{let o;if((e.isSourceDestToken||e.parsedAmount===0)&&!e.feeOnlyAction)o=await Bi(n?{...e,activeSignerAddress:e.externalWalletAddress,activeSignerWallet:e.externalWallet}:e);else if(e.onPayExecute&&e.selectedAsset?.asset){const r=e.selectedAsset.asset,i=I.parseUnits(e.currentPaymentAmount,e.destinationToken.decimals),l=Ti(e,i),d=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!d)throw new Error("Embedded wallet not available \u2014 sign in to create one before paying");const c=e.resolvedTokenIn||r.address,{grossFundingAmount:m}=await or(e,{requiredNetFunding:l,buildBatches:h=>e.execution.buildPayChainBatches({fundingAmountOverride:h}),fundingToken:c,executionOptions:{userOverride:d,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode}}),p=await e.execution.buildPayChainBatches({fundingAmountOverride:m}),f=await e.onPayExecute({asset:r,amount:e.currentPaymentAmount,amountWei:i,destinationToken:e.destinationToken,chainBatches:p,requiredNetFunding:l,grossFundingAmount:m,selectedIsEquivalent:e.selectedIsEquivalent,resolvedTokenIn:c,exactOutputSwapAmountInMax:e.exactOutputSwap?.amountInMax});f&&(e.ui.setTxHash(f),e.ui.setPaymentResult(h=>({...h??{status:"processing"},txHash:f}))),o=f||void 0}else o=await ju(e);e.ui.setPaymentResult(r=>({status:"success",txHash:r?.txHash||o||""}))}catch(o){ar(e,o)}finally{e.ui.setIsExecuting(!1)}return}if(e.isNon7702&&!e.embeddedWalletAddress&&!e.providerEmbeddedAddress){e.ui.setError("Embedded wallet is not ready for this payment source");return}if(!e.isConnected||!e.address){e.ui.setError("Please connect your wallet to continue");return}if(!e.ready||!e.authenticated){e.ui.setError(`Please authenticate with ${e.provider||"wallet provider"} to continue`);return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setShowStatusPanel(!0),e.ui.setPaymentResult({status:"processing"});try{const s=I.parseUnits(e.currentPaymentAmount,e.destinationToken.decimals),o={userOverride:e.embeddedWalletAddress??e.providerEmbeddedAddress??e.address,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode,requireDestinationReceipt:e.feeOnlyAction};if(t&&!e.feeOnlyAction){const b=await e.execution.buildPayChainBatches(),y=await e.execution.execute(b,e.executionTokenAddress,0n,w=>{w.txHash&&(e.ui.setPaymentResult(S=>({...S??{status:"processing"},txHash:w.txHash})),e.ui.setTxHash(w.txHash))},void 0,o);e.ui.setPaymentResult(w=>({status:"success",txHash:w?.txHash||y}));return}const r=e.selectedAsset?.asset;if(!r&&!e.actionProceeds)throw new Error("Select a payment source");const i=e.feeQuote?.fundingConversion?.tokenIn||e.resolvedTokenIn||r?.address||e.destinationToken.address,l=e.needsSwap?e.exactOutputSwap?.amountInMax??0n:s,d=e.embeddedWalletAddress||e.providerEmbeddedAddress||e.address,{grossFundingAmount:c,feeEstimate:m}=e.feeQuote?.fundingConversion?{grossFundingAmount:e.feeQuote.grossFundingAmount,feeEstimate:void 0}:await or(e,{requiredNetFunding:l,buildBatches:b=>e.execution.buildPayChainBatches({fundingAmountOverride:b}).then(y=>An(y,d)),fundingToken:i,executionOptions:o}),p=e.feeQuote?.fundingBatches??An(await e.execution.buildPayChainBatches({fundingAmountOverride:c}),d,e.actionProceeds?void 0:m,{payoutAlreadyGross:!0}),f=wi(e,e.feeQuote?.fundingConversion?.tokenOut??i,c),h=e.feeOnlyAction||p.some(b=>b.tokenTransfers?.length),x=await e.execution.execute(p,i,h?c:0n,b=>{b.txHash&&(e.ui.setPaymentResult(y=>({...y,txHash:b.txHash})),e.ui.setTxHash(b.txHash))},void 0,{...o,...f,skipPreSubmitFeeEstimate:!0});e.ui.setPaymentResult(b=>({status:"success",txHash:b?.txHash||x}))}catch(s){ar(e,s)}finally{e.ui.setIsExecuting(!1)}}const lr="spiceflow:source-funding";function ji(e){return!!e&&I.isAddress(e.address)&&Number.isSafeInteger(e.chainId)&&e.chainId>0&&Number.isInteger(e.decimals)&&e.decimals>=0&&e.decimals<=255&&typeof e.symbol=="string"}function Ru(e){const t=e?.asset;return!!e&&typeof e.amount=="string"&&/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/.test(e.amount)&&ji(t)&&typeof t.name=="string"&&typeof t.isNative=="boolean"&&typeof t.balance=="string"&&/^[0-9]+$/.test(t.balance)&&Number.isFinite(t.balanceFormatted)&&Number.isFinite(t.balanceUsd)&&[void 0,"wallet","spice"].includes(t._source)&&[void 0,"external","embedded"].includes(t._fundingWallet)&&(t.chainTokens===void 0||t.chainTokens&&typeof t.chainTokens=="object"&&!Array.isArray(t.chainTokens)&&Object.entries(t.chainTokens).every(([n,s])=>/^evm:[1-9][0-9]*:(?:0x)?[0-9a-f]{40}$/i.test(n)&&s&&(s.decimals===void 0||Number.isInteger(s.decimals)&&s.decimals>=0&&s.decimals<=255)&&(s.name===void 0||typeof s.name=="string")))}function cr(e){const t=localStorage.getItem(e);if(!t)return null;const n=JSON.parse(t),s=typeof n.identity=="string"?JSON.parse(n.identity):null,o=Array.isArray(s)&&(s.length===17||s.length===18&&s[17]===!0)&&s[17]===!0==(n.feeOnlyAction===!0)&&s[2]===n.selectedAsset?.asset.address.toLowerCase()&&s[3]===n.selectedAsset?.asset.chainId&&s[4]===n.selectedAsset?.asset.decimals&&s[5]===(n.selectedAsset?.asset._source??null)&&s[6]===(n.selectedAsset?.asset._fundingWallet??null)&&s[7]===n.selectedAsset?.amount&&s[8]===n.destinationToken?.chainId&&s[9]===n.destinationToken?.address.toLowerCase()&&s[11]===(n.amountDirection==="output")&&s[12]===n.paymentAmount&&s[13]===(n.amountDirection==="input-inclusive")&&s[14]===n.recoveryKey&&s[15]===n.destinationToken?.decimals&&s[16]===n.selectedAsset?.asset.isNative;if(n.version!==2||n.scope!==e||typeof n.identity!="string"||!tr(n.funding)||n.funding.identity!==n.identity||!o||typeof n.submitted!="boolean"||n.feeOnlyAction!==void 0&&n.feeOnlyAction!==!0||typeof n.recoveryKey!="string"||!n.recoveryKey.trim()||n.recoveryKey.length>128||!Ru(n.selectedAsset)||!ji(n.destinationToken)||typeof n.paymentAmount!="string"||!/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/.test(n.paymentAmount)||!["input","input-inclusive","output"].includes(n.amountDirection)||n.route&&(!/^[a-zA-Z0-9_-]+$/.test(n.route.actionId)||!Number.isInteger(n.route.intentIndex)||n.route.intentIndex<0||n.route.intentId!==`${n.route.actionId}/${n.route.intentIndex}`||!Array.isArray(n.route.spicenetSteps)||!n.route.spicenetSteps.length||n.route.spicenetSteps.some(r=>typeof r!="boolean")))throw new Error("Saved source funding is invalid; recover it before starting another operation");return n}function Ri(e,t,n){return!t||t.funding.pending||(t.submitted||t.route)&&!n?!1:(localStorage.setItem(`spiceflow:archivedSourceSupply:${Date.now()}:${crypto.randomUUID()}`,JSON.stringify(t)),localStorage.removeItem(e),window.dispatchEvent(new Event(lr)),!0)}async function Du(e){return!e||!navigator.locks?!1:navigator.locks.request(e,{ifAvailable:!0},async t=>{if(!t)return!1;let n=cr(e);if(!n)return!1;if(n.submitted||n.route){if(!n.submitted||!n.route||n.funding.pending)return!1;const s=await g.relayerService.checkIntentRecovery(n.route.intentId);return s==="unresolved"?!1:Ri(e,n,s)}if(n.funding.pending){if(!n.funding.pending.hash)return!1;const s=JSON.parse(n.identity)[1];if(!I.isAddress(s))throw new Error("Saved funding recipient is invalid");const o=n.selectedAsset.asset;await Gs({identity:n.identity,state:n.funding,reconcileOnly:!0,requiredAmount:0n,recipient:s,tokenAddr:o.address,isNative:o.isNative||A.isNativeToken(o.address),sourceClient:g.getClientForChain(o.chainId),createWallet:async()=>{throw new Error("Reconciliation cannot request funding")},onState:r=>{n.funding=r,localStorage.setItem(e,JSON.stringify(n))}})}return Ri(e,n)})}async function Nu(e){if(cr(e.scope)){if(await Du(e.scope),cr(e.scope))throw new Error("A previous wallet operation has an unverified outcome. Check its status before starting another transfer.");e.onRecord?.(null)}const t=()=>{if(!e.isCurrent())throw new Error("The source, amount or account changed. Review the form before retrying.")};t();const n=e.ctx;await e.run({...n,sourceFunding:void 0,onSourceFundingChange:void 0,fundingObserver:{onSending:t},execution:{...n.execution,execute:async(s,o,r,i,l,d)=>(t(),n.execution.execute(s,o,r,i,l,{...d,validateBeforeSubmit:async c=>{t(),await d?.validateBeforeSubmit?.(c),t()}}))}})}function Mu(e,t,n,s,o){if(!o.trim()||o.length>128||!I.isAddress(n)||!I.isAddress(s))throw new Error("External action recovery requires valid wallet addresses and a stable recovery key");return`spiceflow:externalSupply:${JSON.stringify([e,t,n.toLowerCase(),s.toLowerCase(),o])}`}function Js(e){const t=localStorage.getItem(e);if(!t)return null;const n=JSON.parse(t),s=o=>!o||Number.isSafeInteger(o.chainId)&&o.chainId>0&&(!o.hash||/^0x[0-9a-f]{64}$/i.test(o.hash));if(n.version!==2||n.scope!==e||!I.isAddress(n.destinationToken)||!Number.isInteger(n.destinationDecimals)||n.destinationDecimals<0||n.destinationDecimals>255||typeof n.sourceKey!="string"||typeof n.routeSubmitted!="boolean"||n.sourceFunding!==void 0&&!tr(n.sourceFunding)||!["funding","routing","action","complete"].includes(n.phase)||!Number.isInteger(n.confirmedCalls)||n.confirmedCalls<0||n.amount!==void 0&&!/^[1-9][0-9]*$/.test(n.amount)||!s(n.pendingCall)||n.calls!==void 0&&(!Array.isArray(n.calls)||n.calls.length===0||n.calls.some(o=>!I.isAddress(o.to)||!/^[0-9]+$/.test(o.value)||!/^0x(?:[0-9a-f]{2})*$/i.test(o.data)))||n.confirmedCalls>(n.calls?.length??0)||n.phase==="complete"&&(n.confirmedCalls!==n.calls?.length||n.pendingCall||n.sourceFunding?.pending)||n.pendingCall&&(n.phase!=="action"||n.confirmedCalls>=(n.calls?.length??0))||["action","complete"].includes(n.phase)&&(!n.amount||!n.calls)||n.route&&(typeof n.route.actionId!="string"||!/^[a-zA-Z0-9_-]+$/.test(n.route.actionId)||n.route.intentId!==`${n.route.actionId}/${n.route.intentIndex}`||!Number.isInteger(n.route.intentIndex)||n.route.intentIndex<0||!Array.isArray(n.route.spicenetSteps)||n.route.spicenetSteps.length===0||n.route.spicenetSteps.some(o=>typeof o!="boolean")))throw new Error("Saved external action is invalid or unsupported; recovery is required before starting another supply");return n}function dr(e){return{destinationToken:e.destinationToken,destinationDecimals:e.destinationDecimals,phase:e.phase,confirmedCalls:e.confirmedCalls,totalCalls:e.calls?.length??0,amount:e.amount,requiresRecovery:!!(e.sourceFunding?.pending&&!e.sourceFunding.pending.hash||e.pendingCall&&!e.pendingCall.hash||e.routeSubmitted&&!e.route&&e.phase==="routing")}}function Di(e,t){return!t||t.routeSubmitted||t.route||t.pendingCall||t.confirmedCalls||t.sourceFunding?.pending||!["funding","routing"].includes(t.phase)?!1:(localStorage.setItem(`spiceflow:archivedSourceSupply:${Date.now()}:${crypto.randomUUID()}`,JSON.stringify(t)),localStorage.removeItem(e),window.dispatchEvent(new Event("spiceflow:source-funding")),!0)}async function Ou(e){return navigator.locks?navigator.locks.request(e,{ifAvailable:!0},async t=>{if(!t)return!1;const n=Js(e);if(!n||n.routeSubmitted||n.route||n.pendingCall||n.confirmedCalls||!["funding","routing"].includes(n.phase))return!1;if(n.sourceFunding?.pending){if(!n.sourceFunding.pending.hash)return!1;const s=JSON.parse(n.sourceFunding.identity),o=JSON.parse(e.slice(25));if(!Array.isArray(s)||!g.addressesEqual(s[0],o[2])||!g.addressesEqual(s[1],o[3])||!I.isAddress(s[2])||!Number.isSafeInteger(s[3]))throw new Error("Saved funding identity is invalid");await Gs({identity:n.sourceFunding.identity,state:n.sourceFunding,reconcileOnly:!0,recipient:o[3],tokenAddr:s[2],isNative:s[16]===!0||A.isNativeToken(s[2]),sourceClient:g.getClientForChain(s[3]),requiredAmount:0n,createWallet:async()=>{throw new Error("Reconciliation cannot request funding")},onState:r=>{n.sourceFunding=r,localStorage.setItem(e,JSON.stringify(n))}})}return Di(e,n)}):!1}function Wu(e){const t=Js(e);if(t&&t.phase!=="complete")throw new Error("Finish the pending external action before starting another supply");localStorage.removeItem(e)}function Pu(e,t,n){const s=[],o=(r,i,l)=>{l>0n&&s.push(A.isNativeToken(r)?{to:i,value:l,data:"0x"}:{to:r,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[i,l]})})};return t.feeExecutionMode==="user-transfer"&&t.feeBreakdown&&(o(t.feeToken??t.destinationToken,A.SPICE_PLATFORM_FEE_RECIPIENT,t.feeBreakdown.spicenetFee),o(t.feeToken??t.destinationToken,A.SPICE_GAS_FEE_RECIPIENT,t.feeBreakdown.gasFee+t.feeBreakdown.bridgeFee)),o(t.destinationToken,n,e),s}const ur=e=>e.map(t=>({to:t.to.toLowerCase(),data:t.data.toLowerCase(),value:t.value.toString()})),Ni=e=>JSON.stringify([e.selectedAsset?.asset.address.toLowerCase(),e.selectedAsset?.asset.chainId,e.selectedAsset?.asset.decimals,e.selectedAsset?.asset._source,e.selectedAsset?.asset._fundingWallet,e.selectedAsset?.amount]);async function Uu(e){if(!navigator.locks)throw new Error("This browser cannot safely resume external wallet actions");await navigator.locks.request(e.scope,{ifAvailable:!0},async t=>{if(!t)throw new Error("This external action is already running in another tab");const{ctx:n,scope:s,buildActionCalls:o,onRecord:r}=e,i=()=>{if(e.isCurrent?.()===!1)throw new Error("Restore the original account before resuming this action")};i();const l=n.externalWalletAddress,d=n.embeddedWalletAddress??n.providerEmbeddedAddress,c=JSON.parse(s.slice(25));if(!s.startsWith("spiceflow:externalSupply:")||!Array.isArray(c)||c.length!==5||c[1]!==n.resolvedChainId||!g.addressesEqual(c[2],l)||!g.addressesEqual(c[3],d))throw new Error("Restore the pending action's original wallets and network before resuming");if(!l||!d||!n.externalWallet)throw new Error("Connect the external wallet and its Spicenet account");const m=Js(s);if(n.isPayMode||A.isNativeToken(n.destinationToken.address))throw new Error("External action execution currently supports exact-input supplies into ERC20 destination actions");let p=m;const f=b=>o(BigInt(b),{userAddress:l,executorAddress:l,chainId:n.resolvedChainId,destinationToken:n.destinationToken.address}),h=()=>{localStorage.setItem(s,JSON.stringify(p)),r({...p})};if(p){if(!g.addressesEqual(p.destinationToken,n.destinationToken.address)||p.destinationDecimals!==n.destinationToken.decimals)throw new Error("Restore the pending action's destination token before resuming");if(p.calls&&JSON.stringify(ur(await f(p.amount)))!==JSON.stringify(p.calls))throw new Error("The intended action changed; restore its original configuration before resuming");if(dr(p).requiresRecovery)throw new Error("A transaction submission is unconfirmed; recover it before retrying to avoid spending twice");if(p.pendingCall&&p.pendingCall.chainId!==n.resolvedChainId)throw new Error("Saved external action chain is invalid");if(p.phase==="complete"){n.ui.setTxHash(p.lastHash??null),n.ui.setStep("success");return}if(!p.routeSubmitted&&p.phase!=="action"&&p.sourceKey!==Ni(n))throw new Error("Restore the pending action's source and amount before resuming")}else{if(!n.selectedAsset||n.parsedAmount<=0)throw new Error("Select an asset and enter an amount");p={version:2,scope:s,destinationToken:n.destinationToken.address,destinationDecimals:n.destinationToken.decimals,sourceKey:Ni(n),phase:"funding",confirmedCalls:0,routeSubmitted:!1},h()}const x=async b=>{if(b<=0n)throw new Error("The route did not fund a positive action amount");const y=ur(await f(b.toString()));if(!y.length)throw new Error("No external action calls configured");p.amount=b.toString(),p.calls=y,h()};try{if(p.phase!=="action")if(p.route){n.ui.setStatusMsg("Resuming the existing funding route...");const y=p.route;await Io({...y,totalSteps:y.spicenetSteps.length,isSpicenetStep:w=>y.spicenetSteps[w],maxPolls:180}),p.phase="action",h()}else if(n.selectedAsset&&en(n.selectedAsset.asset,n.isNon7702)&&n.isSourceDestToken)await x(I.parseUnits(n.selectedAsset.amount,n.destinationToken.decimals)),p.phase="action",h();else{let y;const w={onSending:async()=>{if(i(),!(await(await n.externalWallet.getEthereumProvider()).request({method:"eth_accounts"})).some(v=>g.addressesEqual(v,l)))throw new Error("Restore the original external wallet before funding");p.phase="funding",h()}},S=async v=>{let k=0n;for(const C of v)if(C.chainId===n.resolvedChainId){for(const E of C.calls)if(g.addressesEqual(E.to,n.destinationToken.address))try{const F=I.decodeFunctionData({abi:I.erc20Abi,data:E.data});F.functionName==="transfer"&&g.addressesEqual(F.args[0],l)&&(k+=F.args[1])}catch{}}await x(k)};if(await Xs({...n,sourceFunding:p.sourceFunding,onSourceFundingChange:v=>{p.sourceFunding=v,h()},fundingObserver:w,ui:{...n.ui,setIsExecuting:()=>{},setStep:v=>{v!=="success"&&n.ui.setStep(v)},setError:v=>{typeof v=="string"&&v&&(y=v)}},execution:{...n.execution,execute:async(v,k,C,E,F,B)=>{i(),await S(v),p.phase="routing",h();const j=await n.execution.execute(v,k,C,T=>{T.step==="submitting"&&(p.routeSubmitted=!0,h()),T.actionId&&T.intentId&&T.intentIndex!==void 0&&(p.route={actionId:T.actionId,intentId:T.intentId,intentIndex:T.intentIndex,spicenetSteps:v.map(R=>R.domain==="spicenet")},h()),n.execution.onProgress({...T,step:T.step==="success"?"executing":T.step})},F,{...B,adjustBatchesForEstimate:B?.adjustBatchesForEstimate?async T=>{const R=await B.adjustBatchesForEstimate(T);return R&&await S(R),R}:void 0});return p.phase="action",h(),j}}}),y)throw new Error(y);if(dr(p).phase!=="action")throw new Error("Funding route has not completed; resume it before continuing")}const b=await f(p.amount);if(JSON.stringify(ur(b))!==JSON.stringify(p.calls))throw new Error("The intended external action changed during funding");if(p.pendingCall){const y=await Ns({client:g.getClientForChain(p.pendingCall.chainId),hash:p.pendingCall.hash,call:b[p.confirmedCalls],onRepriced:v=>{p.pendingCall.hash=v,h()},onCancelled:()=>{delete p.pendingCall,h()}}),w=y.receipt,S=y.hash;if(delete p.pendingCall,w.status==="success"&&(p.confirmedCalls++,p.lastHash=S),h(),w.status!=="success")throw new Error("External action transaction reverted; retry when ready")}if(p.confirmedCalls<b.length){const{extWc:y,viemChain:w}=await On({wallet:n.externalWallet,account:l,chainId:n.resolvedChainId}),S=p.confirmedCalls;n.ui.setStatusMsg(`Confirm the remaining ${b.length-S} action transactions in your external wallet`),await Oo({extWc:y,client:g.getClientForChain(n.resolvedChainId),calls:b.slice(S),viemChain:w,errorMessage:"External action transaction reverted",observer:{onSending:async()=>{if(i(),!(await y.getAddresses()).some(v=>g.addressesEqual(v,l)))throw new Error("Restore the original external wallet before resuming");p.pendingCall={chainId:n.resolvedChainId},h()},onSubmitted:(v,k)=>{p.pendingCall.hash=k,h()},onConfirmed:(v,k)=>{p.confirmedCalls=S+v+1,p.lastHash=k,delete p.pendingCall,h()},onRejected:()=>{delete p.pendingCall,h()},onReverted:()=>{delete p.pendingCall,h()}}})}p.phase="complete",h(),n.ui.setTxHash(p.lastHash??null),n.ui.setStep("success"),n.ui.setStatusMsg("External wallet action confirmed")}finally{e.recovery==="balance"&&Di(s,p)&&r(null)}})}function Lu(e){const t=e.chainTokens??e.chainTokenConfig;if(Array.isArray(t))return t.filter(n=>typeof n=="string");if(t&&typeof t=="object")return t}const ms=({address:e,supportedChains:t,enabled:n=!0,refetchInterval:s})=>{const o=u.useContext(g.SpiceFlowProviderContext),r=o?.apiUrl||g.RELAYER_API_URL,[i,l]=u.useState([]),[d,c]=u.useState(!1),[m,p]=u.useState(null),[f,h]=u.useState(!1),x=u.useRef(!1),b=u.useRef(!1),y=t??o?.supportedChainIds,w=y?JSON.stringify([...y].sort()):"",S=u.useCallback(async(C=!1)=>{if(!e||!n){l([]),h(!1),x.current=!1;return}if(!b.current){b.current=!0,!x.current&&!C&&c(!0),p(null);try{const E=await g.relayerFetch(`${r}/wallets/${e}/balance`,{cache:"no-store"});if(!E.ok)throw new Error(`Failed to fetch balance: ${E.status}`);const F=await E.json();if(F.balances&&Array.isArray(F.balances)){const B=F.balances.map(j=>Bc({receiptToken:typeof j.receiptToken=="string"?j.receiptToken:void 0,tokenName:String(j.tokenName??""),balanceAvailable:String(j.balanceAvailable??"0"),chainTokens:Lu(j),decimals:typeof j.decimals=="number"?j.decimals:void 0,balanceUsd:typeof j.balanceUsd=="number"||typeof j.balanceUsd=="string"?j.balanceUsd:null},y)).filter(j=>j!==null);l(B),h(B.length>0),x.current=!0}else l([]),h(!1)}catch(E){const F=E instanceof Error?E.message:"Failed to fetch balance";p(F),console.error("Error fetching Spice assets:",E),x.current||(l([]),h(!1))}finally{c(!1),b.current=!1}}},[e,n,w,r]);u.useEffect(()=>{n&&e&&(x.current=!1,S(!1))},[e,n,w]),u.useEffect(()=>{if(!n||!e||!s)return;const C=setInterval(()=>{S(!0)},s);return()=>clearInterval(C)},[e,n,s,w]);const v=u.useCallback(C=>i.filter(E=>E.chainId===C),[i]),k=u.useCallback(async()=>{await S(!0)},[S]);return{assets:i,loading:d,error:m,hasBalance:f,refetch:k,getAssetsByChain:v}};async function Mi(e,t,n){if(n)return{decimals:n.decimals,symbol:n.symbol,name:n.name,logoURI:n.logo};const[s,o,r]=await Promise.all([on.readContract(e,{address:t,abi:I.erc20Abi,functionName:"decimals"}).catch(()=>18),on.readContract(e,{address:t,abi:I.erc20Abi,functionName:"symbol"}).catch(()=>"TOKEN"),on.readContract(e,{address:t,abi:I.erc20Abi,functionName:"name"}).catch(()=>"TOKEN")]);return{decimals:Number(s),symbol:o,name:r,logoURI:void 0}}function Oi(e,t,n){const s=g.addressesEqual(e.address,t),o=e.chainId===n,r=e._source==="wallet";return r&&s&&o?0:r&&o?1:!r&&s?2:!r&&o?3:4}function Xn(e,t){return!t||t.length===0||e.isNative&&t.some(A.isNativeToken)||t.some(n=>g.addressesEqual(n,e.address))?!0:Object.keys(e.chainTokens??{}).some(n=>{const s=Rn(n);return s?t.some(o=>g.addressesEqual(o,s.address)):!1})}function zu(e,t,n){return e._source!=="wallet"?!0:e.chainId===t&&Xn(e,n)}function pr(e,t,n){let{symbol:s,name:o,logoURI:r}=t;const i=g.addressesEqual(e.address,n.address)&&e.chainId===n.chainId;i&&n.logoURI&&(r=n.logoURI),i&&!e.configToken&&s==="TOKEN"&&(s=n.symbol,o=n.symbol);const l=parseFloat((Number(t.balance)/Math.pow(10,t.decimals)).toFixed(6));return{address:e.address,name:o,symbol:s,decimals:t.decimals,balance:t.balance,balanceFormatted:l,balanceUsd:0,logoURI:r,isNative:A.isNativeToken(e.address),chainId:e.chainId}}function Wi(e){const{destinationToken:t,supportedSourceAssets:n,sourceChains:s,enabled:o,includeExternalWalletAssets:r=!1,includeCrossChainEmbeddedAssets:i=!1}=e,l=u.useContext(g.SpiceFlowProviderContext),d=(l?.mode||"7702")!=="7702",c=l?.embeddedWalletAddress,{externalAddress:m,embeddedAddress:p}=g.useProviderWallets(),f=c||p,{assets:h,refreshAssets:x,loading:b,error:y}=mn({address:m,supportedChains:s??[],fetchBalances:fn,enabled:o&&r&&!!m,refreshInterval:15e3}),{assets:w,refetch:S}=ms({address:f,supportedChains:s,enabled:o&&(!d||i)&&!!f,refetchInterval:3e4}),v=u.useMemo(()=>d&&!i?[]:w.filter(V=>Xn(V,n)),[w,n,d,i]),k=d?m:f,C=u.useMemo(()=>i?Array.from(new Set([t.chainId,...s??[]])):[t.chainId],[t.chainId,s,i]),E=o&&(!d||i)&&!!f&&!l?.isWhitelistGateActive,{assets:F,refreshAssets:B,loading:j,error:T}=mn({address:E?f:void 0,supportedChains:C,fetchBalances:fn,enabled:E,refreshInterval:3e4}),R=u.useMemo(()=>{const V=new Set,G=[],J=U=>{if(!U)return;const L=U.toLowerCase();V.has(L)||(V.add(L),G.push(I.getAddress(U)))};if(J(t.address),n)for(const U of n)J(U);return G},[d,t.address,n]),D=u.useMemo(()=>R.map(V=>V.toLowerCase()).sort().join(","),[R]),M=u.useMemo(()=>JSON.stringify([...s||[]].sort()),[s]),[W,q]=u.useState([]),z=u.useRef(0),X=u.useRef(async()=>{}),N=u.useCallback(async()=>{if(!o||!k||R.length===0){z.current++,q([]);return}const V=++z.current,G=I.getAddress(k),J=d?s&&s.length>0?s:[t.chainId]:[t.chainId],U=[];for(const ue of R){const re=ue.toLowerCase();if(re===A.ZERO_ADDRESS)continue;if(A.isNativeToken(re)){const ie=g.addressesEqual(re,t.address)&&!J.includes(t.chainId)?[t.chainId,...J]:J;for(const ce of ie){const _=g.getChainConfig(ce)?.supportedTokens?.find(Ce=>A.isNativeToken(Ce.address));_&&U.push({address:ue,chainId:ce,configToken:{decimals:_.decimals,symbol:_.symbol,name:_.name,logo:_.logo}})}continue}if(re===t.address.toLowerCase()){const ie=g.getChainConfig(t.chainId)?.supportedTokens?.find(ce=>g.addressesEqual(ce.address,re));U.push({address:ue,chainId:t.chainId,configToken:ie?{decimals:ie.decimals,symbol:ie.symbol,name:ie.name,logo:ie.logo}:void 0});continue}let se=!1;for(const ie of J){const ce=g.getChainConfig(ie)?.supportedTokens?.find(_=>g.addressesEqual(_.address,re));if(ce){U.push({address:ue,chainId:ie,configToken:{decimals:ce.decimals,symbol:ce.symbol,name:ce.name,logo:ce.logo}}),se=!0;break}}se||U.push({address:ue,chainId:t.chainId})}const L=new Map;for(const ue of U){const re=L.get(ue.chainId)||[];re.push(ue),L.set(ue.chainId,re)}const O=async(ue,re)=>{try{const se=await on.readContract(ue,{address:re.address,abi:I.erc20Abi,functionName:"balanceOf",args:[G]}),{decimals:ie,symbol:ce,name:_,logoURI:Ce}=await Mi(ue,re.address,re.configToken);return pr(re,{decimals:ie,symbol:ce,name:_,logoURI:Ce,balance:se},t)}catch{return null}},ee=await Promise.all(Array.from(L.entries()).map(async([ue,re])=>{let se;try{se=g.getClientForChain(ue)}catch{return[]}const ie=re.filter(ne=>A.isNativeToken(ne.address)),ce=re.filter(ne=>!A.isNativeToken(ne.address)),_=await Promise.all(ie.map(async ne=>{const Q=await se.getBalance({address:G}).catch(()=>0n),te=g.getChainConfig(ue)?.nativeCurrency;return pr(ne,{decimals:ne.configToken?.decimals??te?.decimals??18,symbol:ne.configToken?.symbol??te?.symbol??"ETH",name:ne.configToken?.name??te?.name??"Ether",logoURI:ne.configToken?.logo,balance:Q},t)}));if(ce.length===0)return _;const Ce=[],P=[];for(const ne of ce){const Q=Ce.length;Ce.push({address:ne.address,abi:I.erc20Abi,functionName:"balanceOf",args:[G]}),ne.configToken||Ce.push({address:ne.address,abi:I.erc20Abi,functionName:"decimals"},{address:ne.address,abi:I.erc20Abi,functionName:"symbol"},{address:ne.address,abi:I.erc20Abi,functionName:"name"}),P.push({start:Q,item:ne})}let ae=null;try{ae=await se.multicall({contracts:Ce})}catch{ae=null}if(ae){const ne=P.map(({start:Q,item:te})=>{const be=ae[Q],$=be?.status==="success"?be.result:0n;let Se,ct,xe,pt;if(te.configToken)Se=te.configToken.decimals,ct=te.configToken.symbol,xe=te.configToken.name,pt=te.configToken.logo;else{const Me=ae[Q+1],Ue=ae[Q+2],Xe=ae[Q+3];Se=Me?.status==="success"?Number(Me.result):18,ct=Ue?.status==="success"?Ue.result:"TOKEN",xe=Xe?.status==="success"?Xe.result:ct}return pr(te,{decimals:Se,symbol:ct,name:xe,logoURI:pt,balance:$},t)});return[..._,...ne]}const he=await Promise.all(ce.map(ne=>O(se,ne)));return[..._,...he.filter(ne=>ne!==null)]}));V===z.current&&q(ee.flat())},[o,d,k,D,M,t.address,t.chainId,t.symbol,t.logoURI]);u.useEffect(()=>{X.current=N},[N]),u.useEffect(()=>{if(!o){q([]);return}X.current();const V=setInterval(()=>{X.current()},15e3);return()=>clearInterval(V)},[o,d,k,D,M,t.address,t.chainId]);const H=u.useCallback(()=>{N(),B(),r&&x()},[N,r,x,B]);return{displayAssets:u.useMemo(()=>{const V=[],G=new Set,J=(L,O)=>{const ee=`${O}:${L.chainId}:${A.normalizeNativeTokenAddress(L.address).toLowerCase()}`;G.has(ee)||(G.add(ee),V.push({...L,_source:"wallet",_fundingWallet:O,displayChainName:`${g.getChainName(L.chainId)} \xB7 ${O==="external"?"Wallet":"Embedded wallet"}`}))};for(const L of W)L.balance>0n&&J(L,g.addressesEqual(k,f)?"embedded":"external");for(const L of F)L.balance>0n&&Xn(L,n)&&J(L,"embedded");if(r)for(const L of h)L.balance>0n&&Xn(L,n)&&J(L,"external");for(const L of v)V.push({...L,_source:"spice"});const U=t.address.toLowerCase();return V.sort((L,O)=>Oi(L,U,t.chainId)-Oi(O,U,t.chainId)),V},[W,k,f,F,h,v,r,d,n,t.address,t.chainId]),loading:b||j,error:y||T,filteredSpiceAssets:v,walletAssets:W,embeddedWalletAddress:f,externalAddress:m,isNon7702:d,refreshSpiceAssets:S,refreshWalletAssets:H}}function fr(e,t,n){return Xo({executorAddress:n,aerodrome:!1,oneInch:e?.includeDefaults===!1?{chainIds:[]}:void 0,customVenues:t})}const Pi=Kn(),qu=fr(void 0,Pi.input);async function Hu(e){const t=await(e.liquidityVenues||e.executorAddress?fr(e.liquidityVenues,Kn(e.liquidityVenues).input,e.executorAddress):qu).resolveSwap({type:"swap",tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountIn:e.amountIn,maxSlippage:e.maxSlippage},e.chainId,e.recipient);if(!t)throw new Error("No liquidity for this pair.");return t}function $s(e){const{direction:t,selectedAsset:n,destinationToken:s,chainId:o,recipient:r,executorAddress:i,fixedInputToken:l,paymentAmount:d,maxSlippage:c,refreshIntervalMs:m,resolveInputSwap:p,resolveExactOutputSwap:f}=e,h=u.useContext(g.SpiceFlowProviderContext)?.liquidityVenues,[x,b]=u.useState(!1),[y,w]=u.useState(null),[S,v]=u.useState(null),[k,C]=u.useState(null),[E,F]=u.useState(null),[B,j]=u.useState(null),[T,R]=u.useState(null),[D,M]=u.useState(null),[W,q]=u.useState(null),[z,X]=u.useState(null),[N,H]=u.useState(null),[V,G]=u.useState(0),[J,U]=u.useState(null),[L,O]=u.useState(null),ee=u.useRef(null),ue=u.useRef(null),re=u.useRef(0),se=u.useRef(new Map),ie=u.useCallback(()=>{re.current++,se.current.clear(),O(null),G(Ae=>Ae+1)},[]),ce=m&&m>0?m:null,_=h?JSON.stringify(h):"",Ce=u.useMemo(()=>h?Kn(h):Pi,[_]),P=u.useMemo(()=>fr(h,Ce.input,i),[Ce,i]),ae=u.useMemo(()=>Ps({executorAddress:i,customVenues:[...f?[{name:"consumer-exact-output",chainIds:[o],preferred:!0,resolve:f}]:[],...Ce.output]}),[f,o,Ce,i]);u.useEffect(()=>{se.current.clear()},[P,ae,p]);const he=u.useMemo(()=>n?.asset?l||Qt(n.asset,o):null,[n?.asset,o,l]),ne=u.useMemo(()=>n?.asset?l?[l]:Dn(n.asset,o):[],[n?.asset,o,l]),Q=u.useMemo(()=>ne.map(Ae=>Ae.toLowerCase()).join(","),[ne]),te=JSON.stringify([n?.asset.address,n?.asset.chainId,n?.asset.decimals,n?.amount,o,Q,l?.toLowerCase(),t,d]);u.useEffect(()=>{let Ae=!1;if(ue.current&&(clearTimeout(ue.current),ue.current=null),!n?.asset||ne.length<=1){X(null),H(null);return}return ue.current=setTimeout(async()=>{const nt=t==="input"?n.amount:d||"0";let st=0n;try{st=t==="input"?I.parseUnits(nt,n.asset.decimals):0n}catch{st=0n}try{const ft=await So(n.asset,o,{requiredAmount:st,requiredAmountDecimals:n.asset.decimals});Ae||(X(ft),H(te))}catch{Ae||X(null)}},400),()=>{Ae=!0,ue.current&&(clearTimeout(ue.current),ue.current=null)}},[te]);const be=u.useMemo(()=>(N===te?z:null)??he,[z,N,te,he]),$=u.useMemo(()=>!n?.asset||!be?[]:[be,...ne.filter(Ae=>Ae.toLowerCase()!==be.toLowerCase())],[n?.asset,be,ne]),Se=u.useMemo(()=>!n?.asset||!is(n.asset.address,n.asset.chainId,s.address,s.chainId)||!be?!1:g.addressesEqual(A.normalizeNativeTokenAddress(be),A.normalizeNativeTokenAddress(s.address)),[n,s.address,s.chainId,be]),ct=be?g.addressesEqual(A.normalizeNativeTokenAddress(be),A.normalizeNativeTokenAddress(s.address)):!1,xe=t==="output"&&parseFloat(d||"0")===0,pt=!!n?.asset&&!Se&&!ct&&!xe,Me=JSON.stringify([_,t,pt,n?.asset.address,n?.asset.chainId,n?.asset.decimals,t==="input"?n?.amount:d,$.map(Ae=>Ae.toLowerCase()),o,s.address.toLowerCase(),s.chainId,s.decimals,r?.toLowerCase(),i?.toLowerCase(),l?.toLowerCase(),c,ce]),Ue=u.useMemo(()=>({}),[Me,P,ae,p,V]),Xe=L?.request===Ue&&(!ce||L.expiresAt>Date.now());return u.useEffect(()=>{if(!ce||L?.request!==Ue)return;const Ae=setTimeout(ie,Math.max(0,L.expiresAt-Date.now()));return()=>clearTimeout(Ae)},[ce,L,Ue,ie]),u.useEffect(()=>{ee.current&&clearTimeout(ee.current),U(Ue),O(null),w(null);const Ae=t==="input"?n?.amount:d,nt=parseFloat(Ae||"0");if(!pt||!Number.isFinite(nt)||nt<=0||!n?.asset||!r||$.length===0){re.current++,v(null),C(null),F(null),j(null),R(null),M(null),w(null),b(!1);return}const st=n.asset.decimals;let ft;try{ft=t==="input"?I.parseUnits(n.amount,st):I.parseUnits(d||"0",s.decimals)}catch{re.current++,w("Invalid amount"),b(!1);return}const ot=++re.current,_e=()=>ot!==re.current,Be=Te=>n.asset.chainId===o&&g.addressesEqual(n.asset.address,Te)?Promise.resolve(st):g.getTokenDecimals(o,Te);b(!0);const Ct=l?0:t==="output"?150:400,mt=async(Te,Ke,Oe)=>{for(const Y of $){const Ee=`${_}:${t}:${o}:${Y.toLowerCase()}:${s.address.toLowerCase()}:${st}:${ft.toString()}:${r.toLowerCase()}:${i?.toLowerCase()??"recipient"}:${c??"default"}:${ce??"default"}`,ye=se.current.get(Ee),Re=ye&&ye.expiresAt>Date.now()?Te(ye):void 0;if(Re)return{quote:Re,tokenIn:Y,expiresAt:ye.expiresAt};const dt=await Oe(Y);if(_e())return"stale";if(!dt)continue;const Qe=Date.now()+Math.min(ce??3e4,3e4);return se.current.set(Ee,{expiresAt:Qe,direction:t,...Ke(dt)}),{quote:dt,tokenIn:Y,expiresAt:Qe}}return null};return ee.current=setTimeout(async()=>{try{if(t==="input"){let Te=!1;const Ke=await mt(Y=>Y.resolvedSwap&&Y.inputAmount!==void 0?{swap:Y.resolvedSwap,inputAmount:Y.inputAmount}:void 0,Y=>({resolvedSwap:Y.swap,inputAmount:Y.inputAmount}),async Y=>{const Ee=Bt(ft,st,await Be(Y),"floor");if(_e()||Ee<=0n)return null;Te=!0;const ye={type:"swap",tokenIn:Y,tokenOut:s.address,amountIn:Ee,maxSlippage:c};if(p){const dt=await p(ye,o,r);if(dt)return{swap:dt,inputAmount:Ee}}const Re=await P.resolveSwap(ye,o,r);return Re?{swap:Re,inputAmount:Ee}:null});if(Ke==="stale"||_e())return;if(!Ke)throw new Error(Te?"No liquidity for this pair":"Amount is below the destination token's precision");q(Ke.quote.inputAmount),M(Ke.tokenIn),O({request:Ue,key:`${Me}:${ot}`,expiresAt:Ke.expiresAt}),R(Ke.quote.swap.amountOut),F(Ke.quote.swap),j(null);const Oe=parseFloat(I.formatUnits(Ke.quote.swap.amountOut,s.decimals));v(Oe<.01?Oe.toPrecision(4):Oe.toLocaleString(void 0,{maximumFractionDigits:6})),C(null),w(null)}else{const Te=await mt(Oe=>Oe.exactOutputSwap,Oe=>({exactOutputSwap:Oe}),async Oe=>{try{return await ae.getQuote({tokenIn:Oe,tokenOut:s.address,amountOut:ft,maxSlippage:c},o,r)}catch{return null}});if(Te==="stale"||_e())return;if(!Te)throw new Error("No liquidity for this pair");const Ke=await Be(Te.tokenIn);if(_e())return;M(Te.tokenIn),O({request:Ue,key:`${Me}:${ot}`,expiresAt:Te.expiresAt}),j(Te.quote),F(null),R(null),C(I.formatUnits(Te.quote.amountIn,Ke)),v(null),w(null)}}catch(Te){if(_e())return;const Ke=Te instanceof Error?Te.message:"Failed to get quote";w(Ke),v(null),C(null),F(null),j(null),R(null),M(null)}finally{_e()||b(!1)}},Ct),()=>{re.current++,ee.current&&clearTimeout(ee.current)}},[Ue]),{inputAmount:Xe&&t==="input"?W:null,quoteKey:Xe?L.key:null,quoteExpiresAt:Xe?L.expiresAt:null,refreshQuote:ie,isQuoting:J===Ue?x:pt,quoteError:J===Ue?y:null,estimatedOutput:Xe?S:null,estimatedInput:Xe?k:null,resolvedSwap:Xe?E:null,exactOutputSwap:Xe?B:null,quoteAmountOut:Xe?T:null,resolvedTokenIn:pt&&Xe?D??be:be,isDirect:ct,needsSwap:pt,selectedIsEquivalent:Se}}function Ui(e){const t=new Set(A.getEquivalentAddresses(e).map(n=>n.toLowerCase()));return t.add(e.toLowerCase()),t}const Vu=["USDC","USDT","WETH","WBTC"];function Li(e,t){const n=g.getChainConfig(t);if(!n)return;if(n.nativeCurrency.symbol.toUpperCase()===e.toUpperCase())return{address:A.ZERO_ADDRESS,symbol:n.nativeCurrency.symbol,decimals:n.nativeCurrency.decimals,chainId:t};const s=n.supportedTokens?.find(o=>o.symbol.toUpperCase()===e.toUpperCase());if(s)return{address:s.address.toLowerCase(),symbol:s.symbol,decimals:s.decimals,chainId:t}}function Cn(e,t,n){const s=g.getChainConfig(t);if(!s)return;if(n!==void 0){if(A.isNativeToken(e)&&!A.getTokenByAddress(e,n))return;const i=ea(e,n,t);return i?{address:i.address.toLowerCase(),symbol:i.symbol,decimals:i.decimals,chainId:t}:void 0}if(A.isNativeToken(e))return;const o=Ui(e),r=s.supportedTokens?.find(i=>o.has(i.address.toLowerCase()));if(r)return{address:r.address.toLowerCase(),symbol:r.symbol,decimals:r.decimals,chainId:t}}function zi(e){const{sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,intermediaryCandidates:r=Vu}=e;if(As(t,n))return{strategy:"direct",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} fronted directly`};if(s===o&&(A.isNativeToken(t.address)||!A.getTokenByAddress(t.address,s)))return{strategy:"direct-swap",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${n.symbol} on chain ${s}, no escrow`};if(Cn(t.address,o,s))return{strategy:"direct",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} fronted on destination, swapped to ${n.symbol}`};if(Cn(n.address,s,o))return{strategy:"source-swap",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${n.symbol} on source chain, then fronted`};for(const i of r){const l=Li(i,s);if(!l||As(t,l)||As(n,l))continue;const d=Li(i,o);if(d&&As(l,d))return{strategy:"intermediary",sourceAsset:t,outputAsset:n,intermediaryAsset:d,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${i} on source, fronted, then ${i} \u2192 ${n.symbol} on destination`}}throw new g.SpiceflowError("ROUTE_STRATEGY_ERROR",`No viable cross-chain route found from ${t.symbol} (chain ${s}) to ${n.symbol} (chain ${o}). No intermediary asset is available on both chains.`,{sourceAsset:t.symbol,outputAsset:n.symbol,sourceChainId:s,destinationChainId:o,candidatesChecked:r})}async function Qu(e){const{route:t,sourceAmount:n,userAddress:s,registry:o,actionCalls:r,slippage:i}=e;async function l(d,c,m,p){const f=await o.resolveSwap({type:"swap",tokenIn:c,tokenOut:m,amountIn:p,maxSlippage:i},d,s);if(!f)throw new g.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${c} \u2192 ${m} on chain ${d}. No liquidity available for this pair.`,{chainId:d,tokenIn:c,tokenOut:m,amountIn:p.toString()});return f}switch(t.strategy){case"direct-swap":{const d=await l(t.destinationChainId,t.sourceAsset.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...d.calls,...r]}],solverFrontToken:t.outputAsset,solverFrontAmount:0n,resolvedSwaps:{sourceSwap:d}}}case"direct":{const d=Cn(t.sourceAsset.address,t.destinationChainId,t.sourceChainId)||t.sourceAsset;if(Ui(d.address).has(t.outputAsset.address.toLowerCase()))return{chainBatches:[{chainId:t.destinationChainId,calls:r}],solverFrontToken:d,solverFrontAmount:n,resolvedSwaps:{}};const c=await l(t.destinationChainId,d.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...c.calls,...r]}],solverFrontToken:d,solverFrontAmount:n,resolvedSwaps:{destinationSwap:c}}}case"source-swap":{const d=Cn(t.outputAsset.address,t.sourceChainId,t.destinationChainId);if(!d)throw new g.SpiceflowError("ROUTE_TOKEN_NOT_FOUND",`Output asset ${t.outputAsset.symbol} (${t.outputAsset.address}) not found on source chain ${t.sourceChainId}`,{token:t.outputAsset.symbol,address:t.outputAsset.address,chainId:t.sourceChainId,side:"source"});const c=Cn(t.outputAsset.address,t.destinationChainId,t.destinationChainId);if(!c)throw new g.SpiceflowError("ROUTE_TOKEN_NOT_FOUND",`Output asset ${t.outputAsset.symbol} (${t.outputAsset.address}) not found on destination chain ${t.destinationChainId}`,{token:t.outputAsset.symbol,address:t.outputAsset.address,chainId:t.destinationChainId,side:"destination"});const m=await l(t.sourceChainId,t.sourceAsset.address,d.address,n);return{chainBatches:[{chainId:t.sourceChainId,calls:m.calls},{chainId:t.destinationChainId,calls:r}],solverFrontToken:c,solverFrontAmount:m.amountOutMinimum,resolvedSwaps:{sourceSwap:m}}}case"intermediary":{if(!t.intermediaryAsset)throw new g.SpiceflowError("ROUTE_STRATEGY_ERROR","Intermediary strategy requires an intermediary asset but none was provided in the route plan.",{strategy:t.strategy});const d=Cn(t.intermediaryAsset.address,t.sourceChainId,t.destinationChainId);if(!d)throw new g.SpiceflowError("ROUTE_TOKEN_NOT_FOUND",`Intermediary ${t.intermediaryAsset.symbol} (${t.intermediaryAsset.address}) not found on source chain ${t.sourceChainId}`,{token:t.intermediaryAsset.symbol,address:t.intermediaryAsset.address,chainId:t.sourceChainId,side:"source"});const c=await l(t.sourceChainId,t.sourceAsset.address,d.address,n),m=await l(t.destinationChainId,t.intermediaryAsset.address,t.outputAsset.address,c.amountOutMinimum);return{chainBatches:[{chainId:t.sourceChainId,calls:c.calls},{chainId:t.destinationChainId,calls:[...m.calls,...r]}],solverFrontToken:t.intermediaryAsset,solverFrontAmount:c.amountOutMinimum,resolvedSwaps:{sourceSwap:c,destinationSwap:m}}}default:throw new g.SpiceflowError("ROUTE_STRATEGY_ERROR",`Unknown route strategy: ${t.strategy}`,{strategy:t.strategy})}}function Ku(e,t){const n=zi({sourceAsset:e,outputAsset:t,sourceChainId:e.chainId,destinationChainId:t.chainId});if(n.strategy==="direct"||n.strategy==="direct-swap")return null;let s=n.strategy==="source-swap"?t:n.intermediaryAsset;if(!s)throw new Error("No bridge token exists for this route");if(A.isNativeToken(s.address)){const r=Ws(s.chainId),i=r&&A.getTokenByAddress(r,s.chainId);if(!i)throw new Error("No registered wrapped bridge token exists for native output");s={address:i.address,symbol:i.symbol,decimals:i.decimals,chainId:s.chainId}}const o=Cn(s.address,e.chainId,t.chainId);if(!o)throw new Error("No source-chain equivalent exists for the bridge token");return{source:e,bridgeSource:o,bridgeDestination:s}}function qi(e,t){if(e.sourceAmountIn<=0n||e.sourceAmountInMax<e.sourceAmountIn||e.bridgeSourceMinimum<=0n||e.bridgeDestinationMinimum<=0n||e.sourceCalls.length===0)throw new Error("Invalid source funding quote");return{...e,quoteKey:JSON.stringify(e,(n,s)=>typeof s=="bigint"?s.toString():s),expiresAt:t+3e4}}async function Yu(e){if(e.sourceAmountIn<=0n)throw new Error("Enter a positive source amount");const{plan:t}=e,n=await e.registry.resolveSwap({type:"swap",tokenIn:t.source.address,tokenOut:t.bridgeSource.address,amountIn:e.sourceAmountIn,maxSlippage:e.maxSlippage},t.source.chainId,e.executorAddress);if(!n||n.amountOutMinimum>n.amountOut)throw new Error("No valid source-chain swap quote");return qi({plan:t,executorAddress:e.executorAddress,direction:"input",sourceAmountIn:e.sourceAmountIn,sourceAmountInMax:e.sourceAmountIn,bridgeSourceMinimum:n.amountOutMinimum,bridgeDestinationMinimum:Bt(n.amountOutMinimum,t.bridgeSource.decimals,t.bridgeDestination.decimals,"floor"),sourceCalls:n.calls},e.nowMs??Date.now())}async function Gu(e){if(e.bridgeDestinationAmount<=0n)throw new Error("Enter a positive bridge amount");const{plan:t}=e,n=e.nowMs??Date.now(),s=Bt(e.bridgeDestinationAmount,t.bridgeDestination.decimals,t.bridgeSource.decimals,"ceil"),o=await e.registry.getQuote({tokenIn:t.source.address,tokenOut:t.bridgeSource.address,amountOut:s,maxSlippage:e.maxSlippage},t.source.chainId,e.executorAddress);if(o.amountOut!==s)throw new Error("Source quote does not match the required bridge output");return qi({plan:t,executorAddress:e.executorAddress,direction:"output",sourceAmountIn:o.amountIn,sourceAmountInMax:o.amountInMax,bridgeSourceMinimum:s,bridgeDestinationMinimum:Bt(s,t.bridgeSource.decimals,t.bridgeDestination.decimals,"floor"),sourceCalls:o.calls},n)}async function Hi(e,t){const n=()=>{if(e.expiresAt<=(t?.nowMs??Date.now()))throw new Error("Source funding quote expired; request a fresh quote")};n();const s=e.plan.bridgeSource;if(A.isNativeToken(s.address))throw new Error("Source conversion requires a wrapped ERC20 bridge token");const o=await To({chainBatches:[{chainId:s.chainId,calls:e.sourceCalls}],user:e.executorAddress,token:s.address,grossAmount:e.bridgeSourceMinimum,chainAuthorizations:t?.chainAuthorizations});n();const r=Bt(o.netEscrowAmount,s.decimals,e.plan.bridgeDestination.decimals,"floor");if(r<=0n)throw new Error("Source output after fees is below the destination token's precision");return{quote:e,chainBatches:o.chainBatches,sourceGasFee:o.gasFee,sourceSpicenetFee:o.spicenetFee,bridgeSourceNet:o.netEscrowAmount,bridgeDestinationNet:r,outputCredit:o.outputCredit,quoteKey:`${e.quoteKey}:${o.gasFee}:${o.spicenetFee}:${o.netEscrowAmount}`,expiresAt:e.expiresAt}}async function Zu(e){let t=e.bridgeDestinationAmount;for(let n=0;n<5;n++){const s=await Gu({...e,bridgeDestinationAmount:t});let o;try{o=await Hi(s,{nowMs:e.nowMs,chainAuthorizations:e.chainAuthorizations})}catch(r){if(!(r instanceof g.SpiceflowError)||r.code!=="INVALID_PARAMS"||r.message!=="Borrow amount is too small after gas and Spicenet fees.")throw r;const{grossAmount:i,gasFee:l,spicenetFee:d}=r.context;if(![i,l,d].every(h=>typeof h=="string"&&/^(0|[1-9][0-9]*)$/.test(h)))throw r;const c=BigInt(i),m=BigInt(l)+BigInt(d);if(c!==s.bridgeSourceMinimum||m<c)throw r;const p=Bt(e.bridgeDestinationAmount,e.plan.bridgeDestination.decimals,e.plan.bridgeSource.decimals,"ceil"),f=Bt(p+m,e.plan.bridgeSource.decimals,e.plan.bridgeDestination.decimals,"ceil");if(f<=t)throw r;t=f;continue}if(o.bridgeDestinationNet>=e.bridgeDestinationAmount)return o;t+=e.bridgeDestinationAmount-o.bridgeDestinationNet}throw new Error("Source funding fees did not converge; request a fresh quote")}function Xu(e){const t=u.useContext(g.SpiceFlowProviderContext),n=e.selectedAsset?.asset,s=!!n&&n._source==="wallet"&&n.chainId!==e.destinationToken.chainId&&!Qt(n,e.destinationToken.chainId),o=u.useMemo(()=>{if(!s||!n)return{plan:null,error:null};try{if(e.direction==="input")throw new Error("Source-chain conversion requires input-inclusive or exact-output mode");const w=v=>({name:v.symbol,equivalenceGroup:"",logo:"",swapContracts:[],network:"mainnet",...A.getTokenByAddress(v.address,v.chainId),...v}),S=Ku(w(n),w(e.destinationToken));if(!S)throw new Error("No source-chain conversion route is available");return{plan:S,error:null}}catch(w){return{plan:null,error:w instanceof Error?w.message:"Source route unavailable"}}},[s,n?.address,n?.chainId,n?.decimals,e.destinationToken,e.direction]),r=u.useMemo(()=>{const w=Kn(t?.liquidityVenues);return{input:Xo({executorAddress:e.executorAddress,aerodrome:!1,oneInch:t?.liquidityVenues?.includeDefaults===!1?{chainIds:[]}:void 0,customVenues:w.input}),output:Ps({executorAddress:e.executorAddress,customVenues:w.output})}},[t?.liquidityVenues,e.executorAddress]),i=JSON.stringify([t?.network,t?.liquidityVenues,s,n?.address,n?.chainId,n?.decimals,n?._source,n?._fundingWallet,e.direction==="output"?"output":e.selectedAsset?.amount,e.destinationToken.address,e.destinationToken.chainId,e.destinationToken.decimals,e.executorAddress,e.direction,e.maxSlippage]),l=u.useRef({key:i,plans:new Map,pending:new Map,latestOutput:void 0});l.current.key!==i&&(l.current={key:i,plans:new Map,pending:new Map,latestOutput:void 0});const d=l.current,[c,m]=u.useState(0),[p,f]=u.useState(null),h=u.useCallback(async(w,S=!1)=>{if(!e.enabled||!o.plan||!e.executorAddress)throw new Error("Source funding route is not ready");const v=e.direction==="output"?String(w??0n):"input";e.direction==="output"&&w&&w>0n&&(d.latestOutput=w);const k=d.plans.get(v);if(!S&&k&&k.expiresAt>Date.now()){if(w&&k.bridgeDestinationNet<w)throw new Error("The source budget cannot cover destination funding; refresh the quote");return k}const C=d.pending.get(v);if(C)return C;const E=(async()=>{try{const F=e.direction==="output"?await Zu({plan:o.plan,executorAddress:e.executorAddress,bridgeDestinationAmount:w??0n,registry:r.output,maxSlippage:e.maxSlippage}):await Hi(await Yu({plan:o.plan,executorAddress:e.executorAddress,sourceAmountIn:I.parseUnits(e.selectedAsset.amount,n.decimals),registry:r.input,maxSlippage:e.maxSlippage}));if(l.current!==d)throw new Error("Source quote changed before funding completed");return d.plans.set(v,F),f(null),m(B=>B+1),F}catch(F){throw l.current===d&&f({key:i,message:F instanceof Error?F.message:"Unable to quote source funding"}),F}finally{d.pending.delete(v)}})();return d.pending.set(v,E),E},[e.enabled,o.plan,e.executorAddress,e.direction,e.selectedAsset?.amount,e.maxSlippage,r,d]);u.useEffect(()=>{if(!s||!e.enabled||!o.plan)return;const w=()=>{const v=e.direction==="output"?e.outputAmount??d.latestOutput:void 0;if(e.direction==="output"&&v===void 0)return;const k=e.direction==="output"?String(v):"input",C=d.plans.get(k);h(v,!!C&&C.expiresAt-Date.now()<=(e.direction==="input-inclusive"?2e4:1e4)).catch(()=>{})};w();const S=setInterval(w,5e3);return()=>clearInterval(S)},[s,e.enabled,e.direction,e.outputAmount,o.plan,h]),u.useEffect(()=>{if(!e.enabled)return;const w=e.direction==="output"?String(e.outputAmount??d.latestOutput??0n):"input",S=d.plans.get(w)?.expiresAt;if(!S||S<=Date.now())return;const v=setTimeout(()=>m(k=>k+1),S-Date.now());return()=>clearTimeout(v)},[e.enabled,e.direction,e.outputAmount,d,c]);const x=w=>{const S=d.plans.get(e.direction==="output"?String(w??0n):"input");return S&&S.expiresAt>Date.now()?S:null},b=d.plans.get("input")??null,y=u.useMemo(()=>{if(!o.plan||e.direction!=="output"&&!b)return null;const w=o.plan.bridgeDestination;return{amount:b?I.formatUnits(b.bridgeDestinationNet,w.decimals):"1",asset:{address:w.address,chainId:w.chainId,decimals:w.decimals,symbol:w.symbol,name:w.symbol,isNative:A.isNativeToken(w.address),_source:"spice",balance:b?.bridgeDestinationNet??0n,balanceFormatted:0,balanceUsd:0}}},[o.plan,e.direction,b?.quoteKey]);return{required:s,plan:o.plan,key:i,virtualSelectedAsset:y,prepare:h,getPrepared:x,error:o.error??(p?.key===i?p.message:null),isCurrent:()=>l.current===d}}function mr(e){const{enabled:t,actionExecution:n,destinationToken:s,selectedAsset:o,paymentAmount:r="0",amountDirection:i="input",sourceChains:l,supportedSourceAssets:d,includeExternalWalletAssets:c=!1,includeCrossChainEmbeddedAssets:m=!1,sourceFundingRecoveryKey:p="generic",sourceFundingRecovery:f="resume",feeOnlyAction:h=!1,actionProceeds:x,buildActionCalls:b,feeExecutionMode:y=e.feeOnlyAction?"backend-transfer":"user-transfer",buildSpicenetBatch:w,onPayExecute:S,recipient:v,maxSlippage:k,resolveInputSwap:C,resolveExactOutputSwap:E,prependSourceEscrow:F=!1,isZeroAmountPay:B=!1,onSuccess:j,onError:T}=e,R=i==="output",D=x&&(!h||A.isNativeToken(s.address))?"Action proceeds require a fee-only ERC20 action":h&&(!R||Number(r)!==0||n||S||F)?"Fee-only actions require zero-output mode and SDK-managed embedded execution":null,M=u.useRef(D);M.current=D;const W=i==="input-inclusive",q=R?"output":"input",z=s.chainId,X=u.useRef(t);X.current=t;const N=u.useContext(g.SpiceFlowProviderContext),H=(N?.mode||"7702")!=="7702",V=!!N?.isWhitelistGateActive,G=!!N?.isWhitelistConfigured&&N?.isUserWhitelisted!==!0,{address:J,isConnected:U,isReady:L,isAuthenticated:O,provider:ee}=g.useWallet(),{execute:ue,estimate:re}=ds(),{externalWallet:se,embeddedAddress:ie,activeWallet:ce,activeAddress:_}=g.useProviderWallets(),Ce=N?.externalWalletAddress,P=N?.embeddedWalletAddress||ie,ae=u.useRef({resolve:x?.resolve,token:x?.token,owner:P,buildActionCalls:b,resolver:E,revision:0});(ae.current.owner!==P||ae.current.resolve!==x?.resolve||ae.current.token!==x?.token||ae.current.buildActionCalls!==b||ae.current.resolver!==E)&&(ae.current={resolve:x?.resolve,token:x?.token,owner:P,buildActionCalls:b,resolver:E,revision:ae.current.revision+1});const he=ae.current.revision,ne=JSON.stringify([he,s.address,s.chainId,s.decimals,r,i,v,h,y,o?.asset.decimals,o?.asset.address,o?.asset.chainId,o?.asset.receiptTokenId,o?.asset._source,o?.asset._fundingWallet,o?.asset.chainTokens,k,N?.liquidityVenues]),Q=u.useRef(ne);Q.current=ne;const te=u.useMemo(()=>l??N?.supportedChainIds??[],[l,N?.supportedChainIds]),be=u.useMemo(()=>{if(V)return[];if(d)return d;const K=N?.allowedTokens;if(!K||K.length===0)return;const we=new Set(K.map(It=>It.toLowerCase())),Ye=[],Ne=new Set;for(const It of te){const _t=g.getChainConfig(It);for(const Tn of _t?.supportedTokens??[]){if(!we.has(Tn.symbol.toLowerCase()))continue;const Nr=Tn.address.toLowerCase();Ne.has(Nr)||(Ne.add(Nr),Ye.push(Tn.address))}}return Ye},[d,N?.allowedTokens,te,V]),$=Wi({destinationToken:s,supportedSourceAssets:be,sourceChains:te,includeExternalWalletAssets:c,includeCrossChainEmbeddedAssets:m,enabled:t&&(H?!!Ce:!!P)}),{displayAssets:Se,filteredSpiceAssets:ct,embeddedWalletAddress:xe}=$,pt=u.useMemo(()=>V||R||H?Se:Se.filter(K=>c&&K._fundingWallet==="external"||m&&K._fundingWallet==="embedded"&&Xn(K,be)||zu(K,z,be)),[Se,V,R,H,c,m,z,be]),[Me,Ue]=u.useState(!1),[Xe,Ae]=u.useState(null),[nt,st]=u.useState("idle"),[ft,ot]=u.useState(""),[_e,Be]=u.useState(null),[Ct,mt]=u.useState(!1),[Te,Ke]=u.useState(null),[Oe,Y]=u.useState(null),Ee=Oe,[ye,Re]=u.useState(!1),[dt,Qe]=u.useState(!1),[yt,lt]=u.useState(null),[qt,Lt]=u.useState(null),Nt=u.useRef(T);Nt.current=T;const Je=u.useCallback(K=>{Ae(K),typeof K=="string"&&K&&Nt.current?.(new Error(K),g.getRelayerErrorDetail(K))},[]),pe=u.useRef(o);pe.current=o;const We=u.useRef(!1),at=u.useRef(null),ut=u.useRef(null),ve=u.useRef(null),fe=u.useRef(null),He=u.useRef(null),it=u.useRef(null),Ge=u.useRef(null),[,Ie]=u.useState(0),Et=u.useMemo(()=>{if(!n)return{scope:null,error:null};if(R||F||A.isNativeToken(s.address))return{scope:null,error:"External action execution requires an ERC20 input supply with SDK-managed funding"};const K=xe??ie;if(!Ce||!K)return{scope:null,error:null};try{return{scope:Mu(N?.network??"testnet",z,Ce,K,n.recoveryKey),error:null}}catch(we){return{scope:null,error:g.sanitizeError(we,"External action recovery is unavailable")}}},[n?.recoveryKey,!!n,R,F,s.address,xe,ie,Ce,N?.network,z]),De=Et.scope,[bt,jt]=u.useState({scope:null,record:null,error:null});u.useEffect(()=>{const K=()=>{try{jt({scope:De,record:De?Js(De):null,error:null})}catch(Ne){jt({scope:De,record:null,error:g.sanitizeError(Ne,"Saved action needs recovery")})}},we=()=>{K(),f==="balance"&&De&&Ou(De).then(Ne=>{Ne&&(K(),$.refreshWalletAssets(),$.refreshSpiceAssets())}).catch(Ne=>console.warn("[useSpiceSupply] external funding reconciliation pending",Ne))};we(),st("idle"),ot(""),Be(null),Ae(null),window.addEventListener("storage",we),window.addEventListener(lr,we);const Ye=f==="balance"?setInterval(we,15e3):void 0;return()=>{clearInterval(Ye),window.removeEventListener("storage",we),window.removeEventListener(lr,we)}},[De,f]);const Ht=bt.scope===De,zt=Ht?bt.record:null,Wt=zt?dr(zt):null,$e=Et.error??(Ht?bt.error:null),et=u.useRef({actionExecution:n,scope:De,error:$e,buildActionCalls:b});et.current={actionExecution:n,scope:De,error:$e,buildActionCalls:b};const Rt=u.useCallback((K,we)=>{if(!n)return b(K,we);if(!Ce)throw new Error("Connect the external wallet before supplying");return Pu(K,we,Ce)},[!!n,b,Ce]),Yt=u.useCallback(()=>{fe.current=null,Je(null),lt(null),Qe(!1)},[Je]),tn=o?`${o.asset.address}:${o.asset.chainId}:${o.asset._source}:${o.asset._fundingWallet}:${o.amount}`:"";u.useEffect(()=>{Yt()},[tn,r,Yt]);const Ft=(n?void 0:v)??xe??ie??J,ge=Xu({enabled:t&&!Me,selectedAsset:o,destinationToken:s,executorAddress:xe??ie,direction:i,outputAmount:R?Oe?.grossAmount:void 0,maxSlippage:k}),qe=u.useMemo(()=>({}),[ne,tn,ge.key,Ft,C,E,w,_,Ce]),xt=u.useRef(qe);xt.current=qe;const Pt=ge.getPrepared(R?Oe?.grossAmount:void 0),Fe=u.useRef(null),Ut=W&&ge.required;(!Ut||Fe.current?.scope!==qe)&&(Fe.current=null),Ut&&(!Fe.current||Fe.current.plan.expiresAt<=Date.now()||it.current?.sourcePlan===Fe.current.plan)&&(Fe.current=Pt&&ge.virtualSelectedAsset?{scope:qe,plan:Pt,selection:ge.virtualSelectedAsset}:null);const Ze=Ut?Fe.current?.plan??null:Pt,Xt=Ut&&Ze&&Ze.expiresAt>Date.now()?null:ge.error,tt=Ut?Fe.current?.selection??null:ge.required?ge.virtualSelectedAsset:o,Mt=u.useRef(new Map),vt=$s({direction:q,selectedAsset:h?null:tt,destinationToken:s,chainId:z,recipient:Ft,executorAddress:xe??ie,fixedInputToken:ge.plan?.bridgeDestination.address,paymentAmount:r,maxSlippage:k,resolveInputSwap:C,resolveExactOutputSwap:E}),Jt=u.useMemo(()=>{if(W&&ge.required&&tt&&(!Oe||Oe.grossAmount!==Bt(I.parseUnits(tt.amount,tt.asset.decimals),tt.asset.decimals,Oe.decimals,"floor")))return null;if(!W||!tt||!Oe)return tt;if(Oe.netAmount<=0n)return null;const K=Bt(Oe.netAmount,Oe.decimals,tt.asset.decimals,"floor");return{...tt,amount:I.formatUnits(K,tt.asset.decimals)}},[W,ge.required,tt,Oe]),oe=$s({direction:q,selectedAsset:h?null:Jt,destinationToken:s,chainId:z,recipient:Ft,executorAddress:xe??ie,fixedInputToken:ge.plan?.bridgeDestination.address,paymentAmount:r,maxSlippage:k,resolveInputSwap:C,resolveExactOutputSwap:E}),Le=W?oe:vt,Ot=ge.plan?.bridgeDestination.address??(tt?tt.asset._source==="spice"?gi(tt.asset,z,s.address):Qt(tt.asset,z):null),Ve=h?{...Le,needsSwap:!1,isDirect:!0,selectedIsEquivalent:!0,isQuoting:!1,resolvedTokenIn:Ot,exactOutputSwap:null,resolvedSwap:null}:Le,{isQuoting:kt,resolvedSwap:nn,exactOutputSwap:de,resolvedTokenIn:me,isDirect:ze,needsSwap:je,selectedIsEquivalent:St}=Ve,Dt=kt||W&&vt.isQuoting||ge.required&&!tt;u.useEffect(()=>{ge.required&&R&&Oe?.grossAmount&&t&&!Me&&ge.prepare(Oe.grossAmount).catch(()=>{})},[ge.key,ge.prepare,R,Oe?.grossAmount,t,Me]);const Gt=ge.required?Ze?.quote.sourceAmountInMax??null:o&&Oe?Kt(Oe.grossAmount,Oe.decimals,o.asset.decimals):null,rt=W?vt:Ve,ht=R?parseFloat(r||"0"):parseFloat(o?.amount||"")||0,Vt=o?.asset?._source==="wallet",sn=!!o?.asset&&Vt&&o.asset.chainId!==z,Z=u.useMemo(()=>o?.asset?ct.find(K=>g.addressesEqual(K.address,o.asset.address))?.balanceFormatted??0:0,[o,ct]),le=Vt?o?.asset.balanceFormatted??0:Z,Pe=u.useMemo(()=>{if(!o?.asset)return!1;if(ge.required)return Gt!==null&&Gt>o.asset.balance;if(R)return Ee?Kt(Ee.grossAmount,Ee.decimals,o.asset.decimals)>o.asset.balance:St||ze?ht>o.asset.balanceFormatted:de?parseFloat(I.formatUnits(de.amountInMax,o.asset.decimals))>o.asset.balanceFormatted:!1;if(Ee){const K=Kt(Ee.grossAmount,Ee.decimals,o.asset.decimals);return Vt?K>o.asset.balance:parseFloat(I.formatUnits(K,o.asset.decimals))>le}return ht>le},[o,ge.required,Gt,R,Ee,St,ht,de,le,Vt,ze]),ke=W&&!!Ee&&Ee.netAmount===0n,gt=u.useMemo(()=>o?.asset?g.addressesEqual(o.asset.address,s.address)&&o.asset.chainId===s.chainId:!1,[o,s.address,s.chainId]),wt=!h&&gt&&o?.asset._source==="wallet"&&en(o.asset,H)&&(R||H||!!n),Tt=wt&&ht>0&&!!o?.asset,dn=G&&!wt,ln=u.useMemo(()=>ge.plan?ge.plan.bridgeDestination.address:o?.asset?je&&me?me:o.asset.chainId===z?o.asset.address:me??Qt(o.asset,z)??s.address:s.address,[o,ge.plan,s.address,je,z,me]),un=u.useCallback((K,we)=>({currentPaymentAmount:r,destinationToken:s,embeddedWalletAddress:xe,providerEmbeddedAddress:ie,externalWalletAddress:Ce,address:J,recipient:v,swapOutputRecipient:Ft,isNon7702:H,isPayMode:R,isFeeInclusiveInput:W,swapInputAmount:we.inputAmount,feeOnlyAction:h,resolvedChainId:z,buildActionCalls:Rt,feeExecutionMode:y,buildSpicenetBatch:w,selectedAsset:K&&F?{...K,asset:{...K.asset,_source:"spice",_fundingWallet:void 0}}:K,needsSwap:we.needsSwap,resolvedSwap:we.resolvedSwap,exactOutputSwap:we.exactOutputSwap,quoteAmountOut:we.quoteAmountOut,resolvedTokenIn:we.resolvedTokenIn}),[r,s,xe,ie,Ce,J,v,Ft,H,R,W,h,z,Rt,y,w,F]),At=u.useMemo(()=>un(tt,Ve),[un,tt,Ve.needsSwap,Ve.resolvedSwap,Ve.exactOutputSwap,Ve.quoteAmountOut,Ve.resolvedTokenIn,Ve.inputAmount]),Pn=u.useMemo(()=>W?un(tt,vt):At,[W,At,un,tt,vt.needsSwap,vt.resolvedSwap,vt.exactOutputSwap,vt.quoteAmountOut,vt.resolvedTokenIn,vt.inputAmount]),xs=u.useCallback(async(K,we)=>{if(!ge.required||!K.length)return K;const Ye=W&&Ze?Ze:await ge.prepare(we);if(!ge.isCurrent())throw new Error("Source funding quote expired or changed; refresh before retrying");if(Ye.bridgeDestinationNet<we)throw new Error("Source funding no longer covers the quoted destination amount");for(const[Ne,It]of Mt.current)It.expiresAt<=Date.now()&&Mt.current.delete(Ne);return Mt.current.set(Zn(Ye.chainBatches[0]),Ye),[...Ye.chainBatches,...K]},[ge.required,ge.prepare,W,Ze]),so=u.useCallback(async K=>{const we=await di({...At,requestTimestampMs:ut.current??Date.now()},K),Ye=K?.fundingAmountOverride??At.exactOutputSwap?.amountInMax??I.parseUnits(r||"0",s.decimals);return xs(we,Ye)},[At,xs,r,s.decimals]),ys=u.useCallback(async(K,we)=>{const Ye={...K,requestTimestampMs:ut.current??Date.now()},Ne=await ui(Ye,we);if(ge.required){const Tn=we?.fundingAmountOverride??I.parseUnits(K.selectedAsset?.amount||"0",K.selectedAsset?.asset.decimals??18);return xs(Ne,Tn)}if(!F||!o||Ne.length===0)return Ne;const It=R?Ye.currentPaymentAmount:o.amount;let _t=we?.fundingAmountOverride;if(_t===void 0)try{_t=I.parseUnits(It||"0",o.asset.decimals)}catch{return Ne}return _t<=0n?Ne:[Qs(o.asset.address,_t,o.asset.chainId),...Ne]},[F,o,R,ge.required,xs]),oo=u.useCallback(K=>ys(At,K),[ys,At]),Ar=u.useCallback(K=>ys(Pn,K),[ys,Pn]),Ir=u.useCallback(K=>er({signal:K,liquidityVenues:N?.liquidityVenues,maxSlippage:k,resolveExactOutputSwap:E,selectedAsset:Pn.selectedAsset,isPayMode:R,isFeeInclusiveInput:W,feeOnlyAction:h,actionProceeds:x,parsedAmount:ht,needsSwap:rt.needsSwap,exactOutputSwap:rt.exactOutputSwap,isNon7702:H,isSourceDestToken:gt,currentPaymentAmount:r,destinationToken:s,feeExecutionMode:y,resolvedTokenIn:rt.resolvedTokenIn,embeddedWalletAddress:xe,providerEmbeddedAddress:ie,resolvedChainId:z,isConnected:U,address:J,ready:L,authenticated:O,isDirect:rt.isDirect,resolvedSwap:rt.resolvedSwap,isQuoting:rt.isQuoting,executionTokenAddress:ln,buildPayChainBatches:so,buildSupplyChainBatches:Ar,estimate:re}),[Pn,N?.liquidityVenues,k,E,R,W,h,x,ht,rt,H,gt,r,s,y,xe,ie,so,re,z,U,J,L,O,Ar,ln]);u.useEffect(()=>{ve.current=Ir},[Ir]);const Er=u.useMemo(()=>{if(!Tt)return null;let K;try{K=I.parseUnits(r||"0",s.decimals)}catch{return null}return{symbol:s.symbol,decimals:s.decimals,grossAmount:K,netAmount:K,totalFee:0n,gasFee:0n,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"static_zero"}},[Tt,r,s.symbol,s.decimals]),vn=(!!o?.asset||!!x)&&(ht>0||h),$t=u.useMemo(()=>!t||Me||nt!=="idle"&&nt!=="error"||!vn||Tt||!o?.asset&&!x?null:[R?"pay":"supply",i,h?"fee-only":"supply",o?.asset.address.toLowerCase()??"proceeds",o?.asset.chainId,o?.asset._source,o?.asset.receiptTokenId,o?.asset.decimals,o?.asset._fundingWallet,o?.amount,h?he:"",h?o?.asset.balance.toString():"",h?JSON.stringify(o?.asset.chainTokens??{}):"",h?JSON.stringify(N?.liquidityVenues??{}):"",h?k:"",ge.key,tt?.amount??"",r,s.address.toLowerCase(),s.chainId,s.decimals,z,rt.resolvedTokenIn?.toLowerCase()??"",rt.needsSwap?"swap":"direct",rt.isDirect?"direct-token":"routed-token",H?"non7702":"7702",gt?"source-dest":"cross-chain",rt.isQuoting?"quoting":"quoted",rt.exactOutputSwap?.amountIn?.toString()??"",rt.exactOutputSwap?.amountInMax?.toString()??"",rt.exactOutputSwap?.venue??"",rt.resolvedSwap?.amountOut?.toString()??"",rt.quoteAmountOut?.toString()??"",xe??"",ie??"",J??"",Ft??""].join("|"),[t,Me,nt,vn,x,he,N?.liquidityVenues,k,Tt,o,o?.asset.balance,ge.key,tt?.amount,R,i,h,r,s,z,rt,H,gt,xe,ie,J,Ft]),Un=!!$t&&fe.current?.key===$t,bs=qt?.key===$t?qt:null,gl=bs?bs.requiredAmount:h&&!Un?null:fe.current?.quote.fundingConversion?.sourceAmountMax??Gt,ws=!!bs||(!h||Un)&&(fe.current?.quote.fundingConversion&&o?fe.current.quote.fundingConversion.sourceAmountMax>o.asset.balance:Pe);as({shouldRun:t&&!Me&&(nt==="idle"||nt==="error")&&vn&&!Tt&&!rt.isQuoting&&!!$t,deps:[t,Me,nt,vn,Tt,Er,rt.isQuoting,$t],onSkip:()=>{if(Lt(null),!t){fe.current=null,Re(!1),Qe(!1),lt(null),Y(null);return}if(Me||nt!=="idle"&&nt!=="error"){Re(!1);return}if(!vn){fe.current=null,Y(null),Re(!1),Qe(!1),lt(null);return}if(Tt){Y(Er),Re(!1),Qe(!0),lt(null);return}rt.isQuoting&&(Re(!1),Qe(!1))},onCleanup:()=>{Re(!1),Lt(null)},delayMs:500,backgroundIntervalMs:W&&ge.required?void 0:5e3,run:async({isBackground:K,isCurrent:we,signal:Ye})=>{const Ne=$t;Lt(null),K||(lt(null),Re(!0));try{const It=await ve.current?.(Ye);if(!we())return;It&&Ne?(fe.current={key:Ne,quote:It},Y(It.preview),Qe(!0)):(fe.current=null,Y(null),Qe(!1)),lt(null)}catch(It){if(!we())return;if(It instanceof xi&&Ne){fe.current=null,Y(null),Qe(!1),Lt({key:Ne,requiredAmount:It.requiredAmount}),lt(null);return}if(K&&fe.current?.key===Ne){console.warn("[useSpiceSupply] fee refresh failed:",It),Qe(!1),lt("Fees could not be refreshed. Waiting for a new estimate.");return}const _t=g.sanitizeError(It,"Unable to calculate fees for this action.");fe.current=null,Y(null),Qe(!1),lt(_t)}finally{we()&&Re(!1)}}});const xl=u.useCallback(K=>{st({building:"building","signing-delegation":"signing-delegation","signing-intent":"signing-intent",submitting:"submitting",executing:"executing",success:"success",error:"error"}[K.step]||"executing"),ot(K.message),K.txHash&&Be(K.txHash)},[]);u.useEffect(()=>{t||(Je(null),Ue(!1),st("idle"),ot(""),Be(null),mt(!1),Ke(null),Y(null),Re(!1),Qe(!1),lt(null),We.current=!1,at.current&&(at.current.abort(),at.current=null))},[t,Je]),u.useEffect(()=>()=>{at.current?.abort(),ae.current.revision++},[]),u.useEffect(()=>{if(!R||Te?.status!=="success"||We.current||!J)return;We.current=!0;const K=pe.current;!K?.asset||K.asset._source==="wallet"||$.refreshSpiceAssets()},[R,Te?.status,J,$]),He.current={selectedAsset:ge.required?o:At.selectedAsset,sourceConversionRequired:ge.required,sourceConversion:ge.required&&tt?{virtualSelectedAsset:tt,acceptedSourceAmountInMax:Ze?.quote.sourceAmountInMax??0n,getPlan:K=>K[0]?Mt.current.get(Zn(K[0])):void 0,refreshPlan:K=>ge.prepare(K.bridgeDestinationNet,!0),isCurrent:ge.isCurrent}:void 0,parsedAmount:ht,currentPaymentAmount:r,isInsufficientBalance:ws,isPayMode:R,isFeeInclusiveInput:W,feeOnlyAction:h,validateFeeQuote:()=>{if(!X.current||Q.current!==ne)throw new Error("The fee action or route changed; refresh before retrying")},actionProceeds:x?{token:x.token,resolve:async K=>{if(!X.current||ae.current.revision!==he)throw new Error("Action proceeds quote is stale");const we=await x.resolve(K);if(!X.current||ae.current.revision!==he)throw new Error("Action proceeds quote is stale");return we}}:void 0,isNon7702:H,isSourceDestToken:gt,needsSwap:je,swapInputAmount:Ve.inputAmount,exactOutputSwap:de,selectedIsEquivalent:St,resolvedTokenIn:me,embeddedWalletAddress:xe,providerEmbeddedAddress:ie,externalWallet:se,externalWalletAddress:Ce,activeSignerWallet:ce,activeSignerAddress:_,address:J,isConnected:U,ready:L,authenticated:O,provider:ee,resolvedChainId:z,executionTokenAddress:ln,destinationToken:s,sourceFundingRecoveryKey:p,recipient:v,buildActionCalls:Rt,feeExecutionMode:y,buildSpicenetBatch:w,onPayExecute:S,onSuccess:j,feeQuote:$t&&fe.current?.key===$t?fe.current.quote:null,execution:{estimate:re,execute:ue,buildPayChainBatches:so,buildSupplyChainBatches:oo,onProgress:xl},ui:{setError:Je,setStep:st,setStatusMsg:ot,setTxHash:Be,setIsExecuting:Ue,setShowStatusPanel:mt,setPaymentResult:Ke},refs:{spiceDepositSubmittedRef:We,abortControllerRef:at}};const Ln=u.useRef(!1),Jn=u.useRef({scope:"",identity:""});Jn.current={scope:xe??ie?`spiceflow:sourceSupply:${JSON.stringify([N?.network??"testnet",z,(Ce??xe??ie).toLowerCase(),(xe??ie).toLowerCase()])}`:"",identity:nr(He.current)};const zn=u.useCallback(async K=>{if(Ln.current)return;Ln.current=!0;const we=He.current,Ye=Jn.current;try{if(M.current)throw new Error(M.current);if(Ge.current?.(),!Ye.scope)return await K(we);await Nu({scope:Ye.scope,ctx:we,run:K,isCurrent:()=>X.current&&Jn.current.scope===Ye.scope&&Jn.current.identity===Ye.identity})}catch(Ne){if(Jn.current.scope===Ye.scope){const It=g.sanitizeError(Ne,"Supply funding failed");Je(It),st("error"),we.isPayMode&&Ke({status:"failed",error:It})}}finally{Ln.current=!1,$.refreshWalletAssets(),$.refreshSpiceAssets()}},[Je]),ro=u.useCallback(async()=>{if(!X.current||Ln.current)return;ut.current=Date.now();const K=et.current;if(!K.actionExecution)return zn(Xs);Ln.current=!0,Ue(!0),Je(null),st("executing");try{if(K.error)throw new Error(K.error);if(!K.scope)throw new Error("Connect the external wallet and its Spicenet account");const we=()=>X.current&&et.current.scope===K.scope,Ye=He.current;await Uu({scope:K.scope,recovery:f,ctx:{...Ye,execution:{...Ye.execution,onProgress:Ne=>{we()&&Ye.execution.onProgress(Ne)}},ui:{setError:Ne=>{we()&&Ye.ui.setError(Ne)},setStep:Ne=>{we()&&Ye.ui.setStep(Ne)},setStatusMsg:Ne=>{we()&&Ye.ui.setStatusMsg(Ne)},setTxHash:Ne=>{we()&&Ye.ui.setTxHash(Ne)},setIsExecuting:Ne=>{we()&&Ye.ui.setIsExecuting(Ne)},setShowStatusPanel:Ne=>{we()&&Ye.ui.setShowStatusPanel(Ne)},setPaymentResult:Ne=>{we()&&Ye.ui.setPaymentResult(Ne)}}},buildActionCalls:K.buildActionCalls,isCurrent:we,onRecord:Ne=>{we()&&jt({scope:K.scope,record:Ne,error:null})}})}catch(we){et.current.scope===K.scope&&(Je(g.sanitizeError(we,"External wallet action failed")),st("error"))}finally{Ln.current=!1,Ue(!1)}},[Je,zn,f]),yl=u.useCallback(()=>X.current?(ut.current=Date.now(),et.current.actionExecution?(Je("External action execution currently supports exact-input supplies"),Promise.resolve()):zn(ir)):Promise.resolve(),[zn]),bl=u.useCallback(async K=>{if(!X.current)throw new Error("Supply is disabled");if(et.current.actionExecution)throw new Error("submitSupply manages external action funding");const we=pe.current?.asset;if(!we)throw new Error("No source asset selected");if(!xe)throw new Error("Your Spicenet account is not ready yet");const Ye=A.normalizeNativeTokenAddress(we.address),Ne=we.isNative||A.isNativeToken(Ye),It=g.getClientForChain(we.chainId);await zn(async _t=>{await Gs({identity:nr(_t),state:_t.sourceFunding,onState:Tn=>_t.onSourceFundingChange?.(Tn),sourceClient:It,recipient:xe,tokenAddr:Ye,isNative:Ne,requiredAmount:K,createWallet:()=>On({wallet:se,account:Ce,chainId:we.chainId,onSwitch:()=>ot("Switching source network...")})})})},[xe,Ce,se,zn]),wl=u.useCallback(K=>W?Promise.resolve(en(K,H)&&(K.isNative||A.isNativeToken(K.address))?null:I.formatUnits(K.balance,K.decimals)):ki({asset:K,isPayMode:R,isNon7702:H,needsSwap:je,isQuoting:Dt,embeddedWalletAddress:xe,buildSupplyChainBatches:oo,estimate:re,executionTokenAddress:ln,feeExecutionMode:y}),[W,R,H,je,Dt,xe,oo,re,ln,y]),Cl=u.useCallback(()=>{const K=et.current.scope;K&&(Wu(K),jt({scope:K,record:null,error:null})),st("idle"),Be(null),Ke(null),mt(!1),$.refreshSpiceAssets()},[$]),vl=u.useCallback(()=>{mt(!1),Ke(null)},[]),kl=u.useCallback(()=>{X.current&&(st("idle"),Je(null),setTimeout(()=>{X.current&&(ut.current=Date.now(),ro())},50))},[Je,ro]),Sl=u.useCallback(()=>{mt(!1),Ke(null),We.current=!1,$.refreshSpiceAssets(),$.refreshWalletAssets()},[$]),Fr=!!$t&&fe.current?.key===$t,Tr=!!x&&Fr&&Ee?.grossAmount===0n&&dt,Br=(!vn||Tt||Un)&&(!(x||h)||Fr)&&t&&(!h||R&&ht===0&&(!!o||Tr)&&!n&&!S&&!F)&&(!ge.required||!!Ze&&!Xt)&&(R?(B||!!o?.asset||Tr)&&ht>=0&&!ws&&!Me&&(B&&!h||Tt||dt)&&!yt&&(B||!je||!!de)&&!dn:!!o?.asset&&ht>0&&!ws&&!Me&&(wt||dt)&&!yt&&!ke&&(sn||ze||!!nn&&!Dt)&&!dn),jr=n?t&&!!De&&Ht&&!$e&&!Me&&!dn&&(Wt?Wt.phase!=="complete"&&!Wt.requiresRecovery:Br):Br,kn={assets:{...$,selectable:pt},quote:{...Ve,isQuoting:Dt||ge.required&&!Ze&&!Xt,quoteError:Xt??Ve.quoteError,hasSourceConversion:ge.required,executionInput:ge.plan?{address:ge.plan.bridgeDestination.address,chainId:z,decimals:ge.plan.bridgeDestination.decimals,amount:Ee?.netAmount??0n}:null},fees:{preview:Ee,fundingConversion:Un?fe.current?.quote.fundingConversion:void 0,proceedsUsed:fe.current?.key===$t?fe.current?.quote.proceedsUsed:void 0,fundingShortfall:(x||fe.current?.quote.fundingConversion)&&fe.current?.key===$t?fe.current?.quote.fundingConversion?.amountOut??fe.current?.quote.grossFundingAmount:void 0,source:Ze?{address:Ze.quote.plan.bridgeSource.address,chainId:Ze.quote.plan.bridgeSource.chainId,symbol:Ze.quote.plan.bridgeSource.symbol,decimals:Ze.quote.plan.bridgeSource.decimals,gasFee:Ze.sourceGasFee,spicenetFee:Ze.sourceSpicenetFee}:null,isLoading:ye||t&&!Me&&(nt==="idle"||nt==="error")&&vn&&!Tt&&!rt.isQuoting&&!Un&&!bs&&!yt,ready:dt&&(!vn||Tt||Un),error:yt},amount:{parsed:ht,isInsufficientBalance:ws,sourceBalance:le,feesExceedAmount:ke,sourceRequiredAmount:gl},status:{step:nt,statusMsg:ft,txHash:_e,isExecuting:Me,error:D??$e??Xe,showStatusPanel:Ct,paymentResult:Te,externalAction:Wt,sourceFunding:null},flags:{directExecutionFeeNote:Tt},canExecute:jr,submitSupply:ro,submitPay:yl,fundEmbeddedSource:bl,retrySupply:kl,dismissPaymentStatus:vl,resolveMaxAmount:wl,resetAfterSuccess:Cl,resetPaymentState:Sl},$n=W&&(ge.required||je)&&!h&&!n,_n=o&&$.displayAssets.find(K=>K.chainId===o.asset.chainId&&g.addressesEqual(A.normalizeNativeTokenAddress(K.address),A.normalizeNativeTokenAddress(o.asset.address))&&K._source===o.asset._source&&K._fundingWallet===o.asset._fundingWallet),ao=(()=>{try{return o?I.parseUnits(o.amount||"0",o.asset.decimals):null}catch{return null}})(),Rr=$n&&t&&!Me&&(nt==="idle"||nt==="error")&&U&&L&&O&&!dn&&!!_n&&ao!==null&&ao>0n&&ao<=_n.balance;(!Rr||it.current?.scope!==qe)&&(it.current=null);const Dr=Math.min((ge.required?Ze?.expiresAt:1/0)??0,je?Ve.quoteExpiresAt??0:1/0);if(Rr&&jr&&!kn.quote.isQuoting&&!kn.fees.isLoading&&(!je||Ve.resolvedSwap&&Ve.inputAmount!=null)&&Dr>Date.now()){const K=He.current;it.current={scope:qe,expiresAt:Dr,context:K,sourcePlan:Ze,quote:kn.quote,fees:kn.fees,amount:kn.amount}}const Zt=it.current;u.useEffect(()=>{const K=Fe.current;Ut&&Pt&&K&&K.plan===Zt?.sourcePlan&&K.plan!==Pt&&Ie(we=>we+1)},[Ut,Pt,Zt?.sourcePlan]);const io=!!Zt&&Zt.scope===qe&&Zt.expiresAt>Date.now();if(Ge.current=$n?()=>{if(!X.current||!io||xt.current!==Zt.scope||Zt.expiresAt<=Date.now())throw new Error("Swap quote expired or changed; wait for a complete quote before retrying")}:null,io){const K=Ge.current,we=Zt.context;He.current={...we,selectedAsset:o&&_n?{...o,asset:_n}:o,validateFeeQuote:()=>{K(),we.validateFeeQuote?.()},sourceConversion:we.sourceConversion?{...we.sourceConversion,isCurrent:()=>X.current&&xt.current===Zt.scope&&(!we.needsSwap||(Zt.quote.quoteExpiresAt??0)>Date.now())&&we.sourceConversion.isCurrent()}:void 0}}const lo=Math.min(...[Zt?.expiresAt,Ze?.expiresAt].filter(K=>K!==void 0&&K>Date.now()));u.useEffect(()=>{if(!Number.isFinite(lo))return;const K=setTimeout(()=>Ie(we=>we+1),lo-Date.now());return()=>clearTimeout(K)},[lo]);const Cs=Math.min(vt.quoteExpiresAt??1/0,Ve.quoteExpiresAt??1/0);return u.useEffect(()=>{if(!$n||!t||Me||!Number.isFinite(Cs)||ge.required&&!Ze||Ze&&Ze.expiresAt<Cs)return;const K=setTimeout(()=>{vt.refreshQuote(),oe.refreshQuote()},Math.max(0,Cs-Date.now()-1e4));return()=>clearTimeout(K)},[$n,t,Me,ge.required,Ze?.expiresAt,Cs,vt.refreshQuote,oe.refreshQuote]),$n?io?{...kn,quote:Zt.quote,fees:Zt.fees,amount:{...Zt.amount,sourceBalance:_n?.balanceFormatted??le,isInsufficientBalance:!1},canExecute:!0}:{...kn,canExecute:!1}:kn}function Ju(e){return!!e.embeddedAddress&&!!e.externalAddress}function $u(e,t,n){const s=n.filter(o=>o.amount>0n);return{chainId:e,domain:"evm",tokenTransfers:[],calls:A.isNativeToken(t)?s.map(o=>({to:o.recipient,value:o.amount,data:"0x"})):s.map(o=>({to:t,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[o.recipient,o.amount]})}))}}new Set([A.SPICE_GAS_FEE_RECIPIENT,A.SPICE_PLATFORM_FEE_RECIPIENT].map(e=>e.toLowerCase()));function _u(e){return`0x77${e.slice(4)}`}function Vi({userAddress:e,destinationChainId:t,deliveryToken:n,deliveryAmount:s,withdrawalAmount:o,deliveryRecipient:r,deliveryTransfers:i,requestTimestampMs:l}){const d=i?.length?i:[{token:n,recipient:r,amount:o??s}],c=d.reduce((h,x)=>h+x.amount,0n);if(c<=0n)return null;const m=l??Date.now(),p=BigInt(Math.floor(m/1e3)),f=_u(I.keccak256(I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"}],[e??r,n,r,c,BigInt(t),BigInt(m)])));return{chainId:A.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:[{to:A.ZERO_ADDRESS,value:0n,data:I.encodeFunctionData({abi:A.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${t}`,idempotenceKey:f,nbf:0n,exp:p+3600n,metadata:"{}",transfers:d.map(h=>({token:I.getAddress(h.token).toLowerCase(),to:I.getAddress(h.recipient).toLowerCase(),amount:h.amount}))}]})}]}}const hs=e=>`${e._source}:${e.chainId}:${e.receiptTokenId??e.address.toLowerCase()}`;function ep(e){const{asset:t,amount:n,recipient:s,owner:o,onSuccess:r}=e,i=t?.chainId??e.sourceChains?.[0]??0,l=u.useMemo(()=>A.getTokensForChain(i).find(y=>y.equivalenceGroup==="USDC"),[i]),[d,c]=u.useState(null),m=u.useCallback((y,w)=>{if(!t||n<=0n||n>t.balance||!s||!o||g.addressesEqual(o,s))throw new Error("Enter a valid withdrawal amount and recipient.");if(w.chainId!==t.chainId||!g.addressesEqual(w.executorAddress??w.userAddress,o))throw new Error("The withdrawal wallet or network changed. Review the withdrawal again.");return $u(t.chainId,t.address,[{recipient:s,amount:n}]).calls},[t?.address,t?.chainId,t?.balance,n,s,o]),p=u.useMemo(()=>d?{asset:d,amount:"0"}:null,[d]),f=mr({enabled:e.enabled&&!!l&&!!t&&n>0n&&!!s&&!!o&&!g.addressesEqual(o,s),feeOnlyAction:!0,isZeroAmountPay:!0,amountDirection:"output",paymentAmount:"0",destinationToken:{address:l?.address??A.ZERO_ADDRESS,symbol:l?.symbol??"USDC",decimals:l?.decimals??6,chainId:i},recipient:o,selectedAsset:p,sourceChains:e.sourceChains,includeCrossChainEmbeddedAssets:!0,includeExternalWalletAssets:!1,feeExecutionMode:"backend-transfer",buildActionCalls:m,buildSpicenetBatch:Vi,onError:(y,w)=>e.onError?.(y.message,w),onSuccess:()=>{t&&(window.dispatchEvent(new CustomEvent("withdraw-completed")),r?.({token:t.symbol,amount:I.formatUnits(n,t.decimals),chainId:i}))}}),h=`${e.enabled}:${t?.chainId}:${t?.address}:${n}:${s}`,x=u.useRef(h);u.useEffect(()=>{x.current===h||f.status.isExecuting||(x.current=h,(f.status.step==="success"||f.status.paymentResult?.status==="success")&&f.resetAfterSuccess())},[h,f.status.isExecuting,f.status.step,f.status.paymentResult?.status,f.resetAfterSuccess]);const b=u.useMemo(()=>l?f.assets.displayAssets.flatMap(y=>{if(y._fundingWallet==="external"||y.isNative)return[];if(!(y._source==="spice"?Dn(y,i).some(v=>g.addressesEqual(v,l.address)):y._fundingWallet==="embedded"&&A.getTokensForChain(y.chainId).some(v=>v.equivalenceGroup==="USDC"&&g.addressesEqual(v.address,y.address))))return[];const w=t&&y._source==="wallet"&&y.chainId===t.chainId&&g.addressesEqual(y.address,t.address)?n:0n,S=y.balance-w;return S>0n?[{...y,balance:S,balanceFormatted:Number(I.formatUnits(S,y.decimals))}]:[]}).sort((y,w)=>{const S=v=>v._source==="wallet"&&v.chainId===i?0:v._source==="spice"?1:2;return S(y)-S(w)||w.balanceFormatted-y.balanceFormatted}):[],[f.assets.displayAssets,l,i,t?.address,t?.chainId,n]);return u.useEffect(()=>{if(!e.enabled||f.status.isExecuting)return;const y=(d&&b.find(w=>hs(w)===hs(d)))??b[0]??null;(!d||!y||hs(d)!==hs(y)||d.balance!==y.balance)&&c(y)},[e.enabled,f.status.isExecuting,b,d]),{supply:f,candidates:b,source:d,setSource:c,feeToken:l,sourceKey:hs}}const Qi=({isSuccess:e,type:t,chainName:n,explorerUrl:s,txHash:o,dark:r=!1,successBg:i="#d1fae5",successBorder:l="#6ee7b7",successText:d="#065f46",errorBg:c="#fee2e2",errorBorder:m="#fca5a5",errorText:p="#dc2626",textSecondary:f="#6b7280"})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px",borderRadius:"8px",backgroundColor:e?i:c,border:e?`1px solid ${l}`:`1px solid ${m}`},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"12px"},children:[a.jsx("div",{style:{width:"28px",height:"28px",borderRadius:"50%",backgroundColor:e?"#10b981":"#ef4444",display:"flex",alignItems:"center",justifyContent:"center"},children:e?a.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:a.jsx("path",{d:"M11.6667 3.5L5.25 9.91667L2.33333 7",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):a.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:a.jsx("path",{d:"M10.5 3.5L3.5 10.5M3.5 3.5L10.5 10.5",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),a.jsxs("div",{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontWeight:600,fontFamily:g.font.mono,letterSpacing:"0.5px",color:e?d:p},children:e?`${t.toUpperCase()} CONFIRMED`:`${t.toUpperCase()} FAILED`}),a.jsxs("p",{style:{margin:"2px 0 0 0",fontSize:"12px",color:f},children:["on ",n]})]})]}),s&&o&&a.jsxs("a",{href:`${s}/tx/${o}`,target:"_blank",rel:"noopener noreferrer",style:{display:"flex",alignItems:"center",gap:"4px",fontSize:"13px",color:f,textDecoration:"none",whiteSpace:"nowrap"},children:["View on explorer",a.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:[a.jsx("path",{d:"M9 6.5V9.5C9 9.76522 8.89464 10.0196 8.70711 10.2071C8.51957 10.3946 8.26522 10.5 8 10.5H2.5C2.23478 10.5 1.98043 10.3946 1.79289 10.2071C1.60536 10.0196 1.5 9.76522 1.5 9.5V4C1.5 3.73478 1.60536 3.48043 1.79289 3.29289C1.98043 3.10536 2.23478 3 2.5 3H5.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),a.jsx("path",{d:"M7.5 1.5H10.5V4.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),a.jsx("path",{d:"M5 7L10.5 1.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"})]})]})]}),Ki=`
31
31
  @keyframes slideUp {
32
32
  from { transform: translateY(100%); }
33
33
  to { transform: translateY(0); }
@@ -40,31 +40,31 @@
40
40
  from { opacity: 0; transform: translateY(4px); }
41
41
  to { opacity: 1; transform: translateY(0); }
42
42
  }
43
- `,Ta=({title:e,showChevron:t,expanded:n,onToggleDetails:s,showClose:o,onClose:r,fontFamily:i,labelColor:l,textPrimary:u,closeHoverBg:c,closePressedBg:f})=>{const[p,m]=d.useState(!1),[h,x]=d.useState(!1);return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"16px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:s?"pointer":"default"},onClick:s,children:[a.jsxs("span",{style:{fontSize:"13px",fontWeight:500,color:l,fontFamily:i},children:[e," "]}),t&&a.jsx(Bn,{color:l,direction:n?"up":"down"})]}),o&&a.jsx("button",{onClick:r,onMouseEnter:()=>m(!0),onMouseLeave:()=>{m(!1),x(!1)},onMouseDown:()=>x(!0),onMouseUp:()=>x(!1),style:{background:h?f:p?c:"none",border:"none",borderRadius:"4px",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:p||h?u:l,transform:h?"scale(0.9)":p?"scale(1.1)":"scale(1)",transition:g.transition.interactive},children:a.jsx(rs,{size:16})})]})},Ba=({chainName:e,bg:t,border:n,textPrimary:s,labelColor:o,primaryColor:r})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"20px 16px",borderRadius:"8px",backgroundColor:t,border:`1px solid ${n}`,gap:"12px"},children:[a.jsx(g.Spinner,{size:24,borderWidth:3,color:r}),a.jsxs("div",{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontWeight:600,fontFamily:g.font.mono,letterSpacing:"0.5px",color:s},children:"PROCESSING TRANSACTION"}),a.jsxs("p",{style:{margin:"2px 0 0 0",fontSize:"12px",color:o},children:["on ",e]})]})]}),ja=({bg:e,border:t,left:n,right:s})=>a.jsxs("div",{style:{padding:"10px 12px",borderRadius:"6px",backgroundColor:e,border:`1px solid ${t}`,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[n,s]}),Ko=({isOpen:e,onClose:t,onComplete:n,closeOnComplete:s=!1,type:o,results:r,chainId:i,chainName:l,explorerUrl:u,theme:c,styles:f,dark:p,intentStatus:m,onRetry:h,onNewTx:x,onRetryTx:y,asOverlay:b=!0,isProcessing:w=!1,showStepBreakdown:C=!0})=>{const{theme:S,primaryColor:k,dark:v,dk:F}=g.useSpiceBrand(f,p),T=c||S,[B,j]=d.useState(!1),E=l??(i?g.getChainName(i):"Network"),R=u??(i&&g.getExplorerUrl(i,"").replace(/\/tx\/.*$/,"")||void 0),D=v?F.cardBg:"#ffffff",O=v?"0 4px 20px rgba(0, 0, 0, 0.4)":"0 4px 20px rgba(0, 0, 0, 0.1)",H=v?"0 -4px 8px -2px rgba(0, 0, 0, 0.4)":"0 -4px 8px -2px rgba(0, 0, 0, 0.15)",U=F.textSecondary,V=v?F.textPrimary:"#374151",Y=v?F.inputBg:"#f9fafb",N=v?F.inputBorder:"#e5e7eb",L=v?F.inputBg:"#f3f4f6",z=v?F.inputBorder:"#e5e7eb",[G,Z]=d.useState(!0),W=v?F.inputBg:"#f9fafb",q=v?F.hoverBg:"#f3f4f6",M=v?{successBg:F.successBg,successBorder:F.successBorder,successText:F.successText,errorBg:F.errorBg,errorBorder:F.errorBorder,errorText:F.errorText}:{},se=m?.steps.find($=>$.status==="failed")?.error;d.useEffect(()=>{!e&&!m&&j(!1)},[e,m]);const de=()=>{j(!0),setTimeout(()=>{window.dispatchEvent(new CustomEvent("tx-complete",{detail:{type:o,results:r}})),window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:{type:o,status:"success",results:r}})),n?.(),s&&t()},300)},ae=()=>{Z(!G)};if(m){const{steps:$,overallStatus:ve}=m,P=ve==="processing",oe=ve==="success",fe=ve==="failed",_=$.filter(X=>X.transactionHash)[0],Q=$.length>1?$.map(X=>X.chainName).filter(Boolean).join(" and "):E!=="Network"?E:$[0]?.chainName||E,ee=R||(_?g.getExplorerUrl(_.chainId,_.transactionHash||"").replace(/\/tx\/.*$/,""):void 0),he=a.jsxs(a.Fragment,{children:[a.jsx(Ta,{title:P?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:C,expanded:G,onToggleDetails:ae,showClose:!P,onClose:t,fontFamily:f?.fontFamily||T.typography.fontFamily,labelColor:U,textPrimary:V,closeHoverBg:W,closePressedBg:q}),a.jsx("div",{style:{marginBottom:"16px"},children:P?a.jsx(Ba,{chainName:Q,bg:L,border:z,textPrimary:V,labelColor:U,primaryColor:k}):a.jsx(Ea,{isSuccess:oe,type:o,chainName:Q,explorerUrl:ee,txHash:_?.transactionHash,dark:v,...M,textSecondary:U})}),C&&a.jsx("div",{style:{overflow:"hidden",maxHeight:G?"300px":"0px",opacity:G?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:G?"16px":"0"},children:a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:$.map((X,Se)=>{const Je=X.transactionHash?g.getExplorerUrl(X.chainId,X.transactionHash):null;return a.jsx(ja,{bg:Y,border:N,left:a.jsx("span",{style:{fontSize:"13px",color:V},children:X.chainName?`On ${X.chainName}`:X.description||`Step ${Se+1}`}),right:a.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:X.status==="success"?"#10b981":X.status==="failed"?"#ef4444":U,fontWeight:500},children:[Je&&a.jsx("a",{href:Je,target:"_blank",rel:"noopener noreferrer",style:{color:v?F.infoText:"#2563eb",textDecoration:"none"},onClick:we=>we.stopPropagation(),children:"View"}),X.status==="success"?"\u2713":X.status==="failed"?"\u2717":"\u25CB"]})},Se)})})}),!P&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[fe&&h&&a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:h,theme:T,styles:f,dark:v,children:"TRY AGAIN"}),x&&a.jsxs(g.Button,{variant:"outline",fullWidth:!0,onClick:x,theme:T,styles:f,dark:v,children:["NEW ",o.toUpperCase()," \u2192"]})]})]});return b?a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:B?"slideDown 0.3s ease-in forwards":"slideUp 0.3s ease-out forwards",pointerEvents:"auto"},children:[a.jsx("div",{style:{backgroundColor:D,borderRadius:"12px 12px 0 0",width:"100%",padding:"18px 24px 24px",boxShadow:H},children:he}),a.jsx("style",{children:Fa})]}):a.jsx("div",{style:{backgroundColor:D,borderRadius:"12px",padding:"24px",width:"100%",boxShadow:O},children:he})}if(!e&&!w||!w&&(!r||r.length===0))return null;const ne=r?r.every($=>$.success):!1,ce=r?.[0],ue=[...r??[]].reverse().find($=>$.txHash)?.txHash||ce?.txHash;return a.jsxs("div",{style:{position:b?"absolute":"relative",bottom:b?0:void 0,left:b?0:void 0,right:b?0:void 0,zIndex:b?10:void 0,animation:b?B?"slideDown 0.3s ease-in forwards":"slideUp 0.3s ease-out forwards":void 0,pointerEvents:"auto",width:"100%"},children:[a.jsx("div",{style:{backgroundColor:D,borderRadius:b?"12px 12px 0 0":"12px",width:"100%",padding:"18px 0 24px",boxShadow:b?H:O},children:a.jsxs("div",{style:{width:"100%",boxSizing:"border-box",padding:"0 24px"},children:[a.jsx(Ta,{title:w?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:!w&&C,expanded:G,onToggleDetails:w?void 0:ae,showClose:!w,onClose:t,fontFamily:f?.fontFamily||T.typography.fontFamily,labelColor:U,textPrimary:V,closeHoverBg:W,closePressedBg:q}),a.jsx("div",{style:{marginBottom:"16px",animation:"statusFadeIn 220ms cubic-bezier(0.22, 1, 0.36, 1) both"},children:w?a.jsx(Ba,{chainName:E,bg:L,border:z,textPrimary:V,labelColor:U,primaryColor:k}):a.jsx(Ea,{isSuccess:ne,type:o,chainName:E,explorerUrl:R,txHash:ue,dark:v,...M,textSecondary:U})},w?"processing":ne?"success":"error"),!w&&C&&r&&r.length>1&&a.jsx("div",{style:{overflow:"hidden",maxHeight:G?"200px":"0px",opacity:G?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:G?"16px":"0"},children:a.jsx("div",{style:{maxHeight:"180px",overflowY:"auto",display:"flex",flexDirection:"column",gap:"8px"},children:r.map(($,ve)=>a.jsx(ja,{bg:Y,border:N,left:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{fontWeight:600,fontSize:"13px",color:F.textPrimary,fontFamily:g.font.mono},children:$.asset.symbol}),$.amount&&a.jsx("span",{style:{fontSize:"12px",color:U},children:$.amount})]}),right:a.jsx("span",{style:{fontSize:"12px",color:$.success?"#10b981":"#ef4444",fontWeight:500},children:$.success?"\u2713":"\u2717"})},ve))})}),!w&&!ne&&r&&a.jsx("div",{style:{padding:"12px",backgroundColor:F.errorBg,border:`1px solid ${F.errorBorder}`,borderRadius:"8px",marginBottom:"16px"},children:a.jsx("p",{style:{fontSize:"13px",color:F.errorText,margin:0,lineHeight:1.5},children:se||r.find($=>!$.success)?.error||`${o.charAt(0).toUpperCase()+o.slice(1)} failed. Please try again.`})}),!w&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[!ne&&y&&a.jsxs(g.Button,{variant:"outline",fullWidth:!0,onClick:y,theme:T,styles:f,dark:v,children:["TRY AGAIN ",o.toUpperCase()]}),ne&&a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:de,theme:T,styles:f,dark:v,children:"DONE"})]})]})}),a.jsx("style",{children:Fa})]})};function Nd(e){const t=e.chainTokens??e.chainTokenConfig;if(Array.isArray(t))return t.filter(n=>typeof n=="string");if(t&&typeof t=="object")return t}const ds=({address:e,supportedChains:t,enabled:n=!0,refetchInterval:s})=>{const o=d.useContext(g.SpiceFlowProviderContext),r=o?.apiUrl||g.RELAYER_API_URL,[i,l]=d.useState([]),[u,c]=d.useState(!1),[f,p]=d.useState(null),[m,h]=d.useState(!1),x=d.useRef(!1),y=d.useRef(!1),b=t??o?.supportedChainIds,w=b?JSON.stringify([...b].sort()):"",C=d.useCallback(async(v=!1)=>{if(!e||!n){l([]),h(!1),x.current=!1;return}if(!y.current){y.current=!0,!x.current&&!v&&c(!0),p(null);try{const F=await g.relayerFetch(`${r}/wallets/${e}/balance`,{cache:"no-store"});if(!F.ok)throw new Error(`Failed to fetch balance: ${F.status}`);const T=await F.json();if(T.balances&&Array.isArray(T.balances)){const B=T.balances.map(j=>Bc({receiptToken:typeof j.receiptToken=="string"?j.receiptToken:void 0,tokenName:String(j.tokenName??""),balanceAvailable:String(j.balanceAvailable??"0"),chainTokens:Nd(j),decimals:typeof j.decimals=="number"?j.decimals:void 0,balanceUsd:typeof j.balanceUsd=="number"||typeof j.balanceUsd=="string"?j.balanceUsd:null},b)).filter(j=>j!==null);l(B),h(B.length>0),x.current=!0}else l([]),h(!1)}catch(F){const T=F instanceof Error?F.message:"Failed to fetch balance";p(T),console.error("Error fetching Spice assets:",F),x.current||(l([]),h(!1))}finally{c(!1),y.current=!1}}},[e,n,w,r]);d.useEffect(()=>{n&&e&&(x.current=!1,C(!1))},[e,n,w]),d.useEffect(()=>{if(!n||!e||!s)return;const v=setInterval(()=>{C(!0)},s);return()=>clearInterval(v)},[e,n,s,w]);const S=d.useCallback(v=>i.filter(F=>F.chainId===v),[i]),k=d.useCallback(async()=>{await C(!0)},[C]);return{assets:i,loading:u,error:f,hasBalance:m,refetch:k,getAssetsByChain:S}};function Et(e,t,n,s){if(t===n)return e;if(t<n)return e*10n**BigInt(n-t);const o=10n**BigInt(t-n);return s==="ceil"?(e+o-1n)/o:e/o}const Od={usdc:1,"usdc.e":1,usdt:1,dai:1,ctusd:1,wbtc:1e5,wcbtc:1e5,cbtc:1e5};function Yo(e,t){return I.formatUnits(e,t).replace(/(\.\d*?[1-9])0+$|\.0+$/,"$1")}function Ra(e,t,n){return Et(e,t,n,"floor")}function Da(e,t){const n=t?Od[t.trim().toLowerCase()]??0:0,s=e*n;return s<=0?"$0":s>=1?`$${s.toFixed(3).replace(/0+$/,"").replace(/\.$/,"")}`:`$${s.toFixed(4).replace(/0+$/,"").replace(/\.$/,"")}`}function Md(e,t){return t?JSON.stringify({tokenAddress:t.toLowerCase(),batches:e.map(n=>({chainId:n.chainId,calls:n.calls.map(s=>({to:s.to.toLowerCase(),value:s.value.toString(),data:s.data})),tokenTransfers:(n.tokenTransfers??[]).map(s=>({from:s.from,to:s.to.toLowerCase(),token:s.token.toLowerCase(),amount:s.amount.toString()}))}))}):null}function Pd(e){const t=e.find(n=>A.isSpicenetChainId(n.chainId))?.calls?.[0]?.data;if(!t)return null;try{const n=I.decodeFunctionData({abi:A.spicenetAbi,data:t});return n.functionName!=="createWithdrawalRequest"?null:n.args[0].transfers.map(s=>({token:s.token,recipient:s.to,amount:s.amount}))}catch{return null}}function Wd(e,t){return!e||e.length!==t.length?!1:e.every((n,s)=>{const o=t[s];return n.token.toLowerCase()!==o.token.toLowerCase()||n.recipient.toLowerCase()!==o.recipient.toLowerCase()?!1:n.recipient.toLowerCase()===A.SPICE_GAS_FEE_RECIPIENT.toLowerCase()?vn(n.amount,o.amount,100n):n.amount===o.amount})}function Ud(e,t){const n=e.intents.flatMap(r=>r.batches).filter(r=>{const i=Yt(r);return BigInt(r.quotedAmount)>0n||BigInt(r.totalDebit)>0n||i.totalFee>0n}),s=n.filter(r=>r.chainId===t),o=s.length>0?s:n;return o.length===1?o[0]:null}function Ld(e){const t=new Map;for(const n of e){if(n.amount<=0n)continue;const s=n.token.toLowerCase(),o=n.recipient.toLowerCase(),r=`${s}:${o}`,i=t.get(r);i?i.amount+=n.amount:t.set(r,{...n})}return[...t.values()]}function Na(e,t){if(!e.token||!e.recipient||e.chainId===null)return null;const n=Ud(t,e.chainId);if(!n)return null;const{gasFee:s,bridgeFee:o,spicenetFee:r}=Yt(n),i=s+o,l=[{token:e.token.address,recipient:e.recipient,amount:e.receiveAmountRaw}];return i>0n&&l.push({token:e.token.address,recipient:A.SPICE_GAS_FEE_RECIPIENT,amount:i}),r>0n&&l.push({token:e.token.address,recipient:A.SPICE_PLATFORM_FEE_RECIPIENT,amount:r}),Ld(l)}function zd(e,t,n){const s=Na(e,t);return!s||Wd(Pd(n),s)?null:e.buildWithdrawBatches(s)}async function Oa(e){if(!(!e.batches.length||!e.walletAddress||!e.recipient)){e.ui.setIsExecuting(!0),e.ui.setExecutionError(null),e.ui.setExecutionProgress(null),e.executionContextRef.current=null,e.ui.setLockedGasFee(e.gasFee);try{let t=e.batches;if(e.isNon7702&&e.onWithdrawExecute)await e.onWithdrawExecute(e.amount);else{if(!e.isNon7702&&!t.some(o=>A.isSpicenetChainId(o.chainId)))throw new Error("Spice withdrawals must include a Spicenet funding batch before the destination chain batch.");const n=e.token?.address||"",s={useCustomTransfers:!0};if(e.buildSpicenetBatch){const o=e.feeEstimate??await e.execution.estimate(t,n,0n,s),r=Na(e,o);r&&(t=e.buildWithdrawBatches(r));const i=o.intents[0]?.batches.find(l=>l.chainId===e.chainId)??o.intents[0]?.batches[0]??null;i&&e.ui.setLockedGasFee(Yt(i).totalFee)}else{const o=(e.feeEstimate??await e.execution.estimate(t,n,0n,s)).intents[0]?.batches[0]??null;o&&e.ui.setLockedGasFee(Yt(o).totalFee)}await e.execution.execute(t,n,0n,o=>{o.actionId&&o.intentId&&typeof o.intentIndex=="number"&&typeof o.totalSteps=="number"&&(e.executionContextRef.current={actionId:o.actionId,intentId:o.intentId,intentIndex:o.intentIndex,totalSteps:o.totalSteps}),e.ui.setExecutionProgress(o)},void 0,e.buildSpicenetBatch?{...s,adjustBatchesForEstimate:({feeEstimate:o,chainBatches:r})=>zd(e,o,r)}:{...s,skipPreSubmitFeeEstimate:!0})}Ma(e)}catch(t){const n=t instanceof Error?t.message:"Withdraw failed";e.ui.setExecutionError(n)}finally{e.ui.setIsExecuting(!1)}}}function Ma(e){window.dispatchEvent(new CustomEvent("withdraw-completed")),e.onWithdrawSuccess?.({token:e.token?.symbol||"",amount:e.amount,chainId:e.chainId})}async function qd(e){const t=e.executionContextRef.current;if(!t){e.ui.setExecutionProgress(null),await Oa(e);return}e.ui.setIsExecuting(!0),e.ui.setExecutionError(null),e.ui.setExecutionProgress({step:"executing",message:"Resuming existing action...",actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps});try{let n=t.totalSteps;for(let s=0;s<t.totalSteps;s++)if((await g.relayerService.checkStepStatus(t.intentId,s)).data.status!=="success"){n=s;break}if(n>=t.totalSteps)e.ui.setExecutionProgress(s=>({...s||{step:"success",message:"Transaction successful!",actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps},step:"success",message:"Transaction successful!"}));else for(let s=n;s<t.totalSteps;s++){const o=await sa({actionId:t.actionId,intentIndex:t.intentIndex,intentId:t.intentId,stepIndex:s,chainId:e.chainId??void 0,onStatusMessage:(r,i)=>{e.isMountedRef.current&&e.ui.setExecutionProgress({step:"executing",message:r,txHash:i,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}});if(!e.isMountedRef.current)return;e.ui.setExecutionProgress({step:s===t.totalSteps-1?"success":"executing",message:s===t.totalSteps-1?"Transaction successful!":"Executing remaining steps...",txHash:o,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}Ma(e)}catch(n){const s=n instanceof Error?n.message:"Withdraw failed";e.ui.setExecutionError(s)}finally{e.ui.setIsExecuting(!1)}}async function Hd(e){const t=await e.estimate(e.batches,e.tokenAddress,0n,{useCustomTransfers:!0,signal:e.signal}),n=t.intents.flatMap(o=>o.batches).filter(o=>Yt(o).totalFee>0n),s=n.filter(o=>o.chainId===e.chainId)[0]??n[0]??t.intents[0]?.batches[0];if(!s)throw new Error("No gas fee estimate was returned for this withdraw.");return{gasFee:Yt(s).totalFee,feeEstimate:t}}const Pa=g.font.mono,Wa=g.font.ui,Vd=({show:e,position:t,popoverRef:n,spiceAssets:s,dark:o,dk:r})=>{if(!e||!t)return null;const i=o?r.textSecondary:"#71757A",l=o?r.textPrimary:"#0E0D0B",u=s||[];return a.jsxs("div",{ref:n,"data-balance-popover":!0,style:{position:"fixed",top:`${t.top}px`,left:`${t.left}px`,width:"220px",background:o?r.cardBg:"#FFFFFF",border:`1px solid ${o?r.cardBorder:"#D6D6D6"}`,borderRadius:"10px",boxShadow:o?"0 12px 32px rgba(0,0,0,0.32)":"0 12px 28px rgba(15, 23, 42, 0.14)",padding:"10px",zIndex:40},children:[a.jsx("div",{style:{fontFamily:Pa,fontSize:"11px",letterSpacing:"0.05em",color:i,marginBottom:"8px"},children:"ALL BALANCES"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:u.length>0?u.map(c=>{const f=c.displaySymbol||c.receiptTokenName||c.symbol;return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",padding:"6px 0"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0},children:[c.logoURI?a.jsx("img",{src:c.logoURI,alt:f,style:{width:"18px",height:"18px",borderRadius:"50%",flexShrink:0}}):a.jsx("div",{style:{width:"18px",height:"18px",borderRadius:"50%",border:`1px solid ${o?r.cardBorder:"#C8C8C8"}`,flexShrink:0}}),a.jsx("span",{style:{fontFamily:Wa,fontSize:"13px",color:l,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:f})]}),a.jsx("span",{style:{fontFamily:Pa,fontSize:"12px",color:l,flexShrink:0},children:g.formatBalance(c.balanceFormatted)})]},c.receiptTokenId||c.address)}):a.jsx("span",{style:{fontFamily:Wa,fontSize:"13px",color:i},children:"No balances"})})]})},Qd=g.font.ui,Sn=g.font.mono,Kd=({show:e,onToggle:t,showCustomAddress:n,setShowCustomAddress:s,customRecipient:o,setCustomRecipient:r,externalAddress:i,recipientAddress:l,destChainName:u,destChainLogo:c,compatibleDestinationChains:f,txDetailsChainSwitchRef:p,onOpenNetworkPopover:m,sourceChainLabel:h,sourceDetailsLogo:x,sourceTokenLabel:y,amount:b,totalSourceDebitDisplay:w,receiveAmountDisplay:C,destTokenSymbol:S,shouldQuoteWithdrawGas:k,estimatingFee:v,feeError:F,displayedGasFee:T,selectedDestToken:B,theme:j,styles:E,dark:R,dk:D})=>{const O=R?D.textSecondary:"#71757A",H=R?D.textPrimary:"#0E0D0B",U=f.length>1,V=n&&o?I.isAddress(o)?g.truncateAddress(o):o:l?g.truncateAddress(l):"\u2014";return a.jsxs(a.Fragment,{children:[a.jsxs("div",{onClick:t,style:{display:"flex",alignItems:"center",gap:"6px",marginBottom:e?"10px":"0",cursor:"pointer",userSelect:"none"},children:[a.jsx("span",{style:{fontSize:"13px",color:O,fontFamily:Qd,fontWeight:600},children:"Transaction Details"}),a.jsx(Wl,{size:12,color:O,style:{transform:e?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}})]}),e&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"7px"},children:[a.jsxs("div",{children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontSize:"12px",color:O,fontFamily:Sn,fontWeight:500,letterSpacing:"0.03em"},children:"TO"}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{fontSize:"13px",color:H,fontFamily:Sn,fontWeight:500},children:V}),a.jsx("button",{onClick:()=>{s(Y=>!Y),!n&&i&&r(i)},style:{background:"none",border:"none",cursor:"pointer",padding:"0",fontSize:"9.5px",fontFamily:Sn,color:O,textDecoration:"underline",fontWeight:600},children:n?"Reset":"Switch"})]})]}),n&&a.jsxs("div",{style:{marginTop:"6px"},children:[a.jsx("div",{style:{marginBottom:"6px",padding:"7px 9px",borderRadius:"6px",border:"1px solid rgba(239, 68, 68, 0.55)",backgroundColor:"rgba(239, 68, 68, 0.12)",color:"#ef4444",fontSize:"10px",lineHeight:1.35,fontFamily:Sn,fontWeight:700,letterSpacing:0,textTransform:"uppercase"},children:"CAUTION: ENTERING AN INCORRECT ADDRESS WILL RESULT IN LOSS OF FUNDS"}),a.jsx("input",{type:"text",autoComplete:"off",spellCheck:!1,"aria-label":"Recipient address","aria-invalid":o&&!I.isAddress(o)?!0:void 0,"data-spiceflow-focus":!0,value:o,onChange:Y=>r(Y.target.value),placeholder:"0x...",style:{width:"100%",padding:"8px 10px",borderRadius:"6px",border:`1px solid ${o&&!I.isAddress(o)?R?D.errorBorder:"#fca5a5":R?D.inputBorder:"#d1d5db"}`,backgroundColor:R?D.inputBg:"#f9fafb",color:R?D.inputText:"#111827",fontSize:"12px",fontFamily:Sn,outline:"none",boxSizing:"border-box"}}),o&&!I.isAddress(o)&&a.jsx("span",{style:{fontSize:"11px",color:D.errorText,marginTop:"3px",display:"block"},children:"Invalid address"})]})]}),a.jsx(Vn,{palette:D,labelColor:O,valueColor:H,label:"RECEIVING CHAIN",value:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"7px"},children:[c&&a.jsx("img",{src:c,alt:u,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",color:H,fontWeight:500,fontFamily:Sn,textTransform:"uppercase"},children:u}),a.jsx("button",{ref:p,onClick:Y=>{Y.stopPropagation(),m(p.current)},style:{background:"none",border:"none",cursor:U?"pointer":"not-allowed",padding:"0",fontSize:"9.5px",fontFamily:Sn,color:O,textDecoration:"underline",fontWeight:600,opacity:U?1:.45},children:"Switch"})]})}),a.jsx(Vn,{palette:D,labelColor:O,valueColor:H,label:"REQUESTED WITHDRAWAL",value:a.jsxs(Go,{logo:x||null,alt:h,primaryText:H,children:[b||"0"," ",y]})}),k&&a.jsx(Vn,{palette:D,labelColor:O,valueColor:H,label:"TOTAL SOURCE DEBIT",value:a.jsxs(Go,{logo:x||null,alt:h,primaryText:H,children:[w," ",y]})}),a.jsx(Vn,{palette:D,labelColor:O,valueColor:H,label:"YOU RECEIVE",value:a.jsxs(Go,{logo:c,alt:u,primaryText:H,gap:"4px",children:[C," ",S]})}),k&&a.jsxs(a.Fragment,{children:[a.jsx(Vn,{palette:D,labelColor:O,label:"EST. NETWORK FEE",valueColor:F?"#f87171":H,value:v?"Estimating...":F?"Unavailable":T!==null&&B?`${Yo(T,B.decimals)} ${B.symbol}`:"Estimating..."}),F&&a.jsx(kn,{variant:"error",size:"compact",palette:D,fontFamily:E?.fontFamily||j.typography.fontFamily,children:F})]})]})]})},Yd=d.memo(Kd),Go=({logo:e,alt:t,primaryText:n,gap:s="6px",children:o})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:s},children:[e&&a.jsx("img",{src:e,alt:t,style:{width:"13px",height:"13px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",color:n,fontWeight:500,fontFamily:Sn},children:o})]}),Gd=({dark:e,dk:t})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:Vo,alt:"","aria-hidden":"true",style:{width:"13px",height:"13px",flexShrink:0,...e?{filter:"invert(0.6)"}:{}}}),a.jsx("p",{style:{fontSize:"13px",color:e?t.textSecondary:"#979AA0",margin:"0",lineHeight:"1.4",fontFamily:g.font.ui},children:"Withdraw collateral from your account to 10+ EVM blockchains."})]}),Ua=g.font.ui,Zd=({label:e,spiceAssetsLoading:t,totalSelectedBalance:n,onOpenBalancePopover:s,dark:o,dk:r})=>{const i=o?r.textSecondary:"#7D7C7B",l=o?r.textSecondary:"#71757A";return a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:Ua,fontSize:"17px",fontWeight:500,color:i,lineHeight:"24px"},children:e}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontFamily:Ua,fontSize:"13px",fontWeight:500,color:l,lineHeight:"16px"},children:["Balance:"," ",t?"...":g.formatBalance(n),a.jsx("button",{type:"button","data-balance-trigger":!0,onClick:u=>{u.stopPropagation(),s(u.currentTarget)},style:{width:"15px",height:"15px",borderRadius:"999px",border:"1px solid #EA4B4B",color:"#EA4B4B",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:"9px",fontWeight:500,lineHeight:1,boxSizing:"border-box",background:"transparent",padding:0,cursor:"pointer"},children:a.jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"1.5px"},children:[0,1,2].map(u=>a.jsx("span",{style:{width:"1.75px",height:"1.75px",borderRadius:"999px",backgroundColor:"#EA4B4B",display:"block"}},u))})})]})]})},La=({isOpen:e,position:t,title:n,items:s,selectedId:o,onSelect:r,portalAttribute:i})=>{const{dark:l,dk:u,primaryColor:c}=g.useSpiceBrand(),[f,p]=d.useState(null),[m,h]=d.useState(!1);return d.useEffect(()=>{if(!e){h(!1);return}const x=requestAnimationFrame(()=>{requestAnimationFrame(()=>h(!0))});return()=>cancelAnimationFrame(x)},[e]),!e||!t||s.length===0?null:es.createPortal(a.jsxs("div",{[`data-${i}-popover`]:"true",style:{position:"fixed",top:`${t.top}px`,left:`${t.left}px`,opacity:m?1:0,transform:m?"scale(1) translateY(0)":"scale(0.96) translateY(-6px)",transition:`opacity 200ms ${g.easing.out}, transform 200ms ${g.easing.out}`,backgroundColor:l?u.shell:"#ffffff",borderRadius:"10px",padding:"10px 12px",boxShadow:l?"0 16px 48px rgba(0,0,0,0.45)":"0 12px 32px rgba(0,0,0,0.12)",border:`1px solid ${u.cardBorder}`,minWidth:"220px",zIndex:g.z.dropdown,fontFamily:g.font.mono},children:[a.jsx("div",{style:{marginBottom:"6px"},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:l?u.textPrimary:"#0e0d0b",textTransform:"uppercase",letterSpacing:"1px"},children:n})}),a.jsx("div",{style:{borderBottom:`1px solid ${u.cardBorder}`,marginBottom:"6px"}}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:s.map(x=>{const y=o===x.id,b=f===x.id;return a.jsxs("button",{onClick:w=>{w.stopPropagation(),r(x.id)},onMouseEnter:()=>p(x.id),onMouseLeave:()=>p(null),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 4px",borderRadius:"8px",border:"none",cursor:"pointer",backgroundColor:y?l?u.hoverBg:"#f3f4f6":b?l?u.cardBg:"#f9fafb":"transparent",transition:"background-color 0.15s",width:"100%",fontFamily:g.font.mono},children:[x.icon&&a.jsx("img",{src:x.icon,alt:x.label,style:{width:"22px",height:"22px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:y?700:500,textTransform:"uppercase",color:l?u.textPrimary:"#0e0d0b",letterSpacing:"0.5px",flex:1,textAlign:"left"},children:x.label}),x.detail&&a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:u.textSecondary},children:x.detail}),y&&a.jsx(Pr,{color:c,style:{flexShrink:0}})]},x.id)})})]}),document.body)},us=g.font.ui,Xd=170,Jd=({header:e,amount:t,setAmount:n,isInsufficient:s,sourceAmountDecimals:o,selectedSourceAsset:r,resolvedSelectedSourceAsset:i,spiceAssets:l,setSelectedSourceAsset:u,sourceUsdEstimate:c,sourceTokenLabel:f,sourceChainLabel:p,totalSelectedBalance:m,showSourceTokenPopover:h,setShowSourceTokenPopover:x,tokenPopoverPos:y,setTokenPopoverPos:b,tokenTriggerRef:w,primaryColor:C,dark:S,dk:k})=>{const v=S?k.cardBg:"#E9E9E9",F=S?k.cardBorder:"#C6C6C6",T=S?k.textSecondary:"#71757A",B=S?k.textPrimary:"#0E0D0B",j=S?k.cardBorder:"#C5C5C4",E=S?"rgba(255,255,255,0.08)":"#D4D3D3",R=f.length>8?"14px":f.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:v,border:`1px solid ${F}`,borderRadius:"7px",padding:"14px 16px 12px 16px",minHeight:"138px",display:"flex",flexDirection:"column",gap:"6px",position:"relative"},children:[e,a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",flex:1},children:[a.jsxs("div",{style:{flex:1,minWidth:0,alignSelf:"flex-start",paddingTop:"4px"},children:[a.jsx(jn,{element:"input",ariaLabel:"Withdraw amount",ariaInvalid:s,dataSpiceflowFocus:!0,value:t,onChange:D=>{const O=D.target.value;if(O===""){n("");return}/^\d*\.?\d*$/.test(O)&&n(g.parseNumericInput(O.startsWith(".")?`0${O}`:O,o??r?.decimals))},placeholder:"0.0",fontFamily:us,color:s?"#ef4444":t?B:"#A8A8A7",lineHeight:"0.95",maxFontSize:54,minFontSize:32,style:{width:"100%"}}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:T,fontFamily:us,marginTop:"10px"},children:c})]}),a.jsx("div",{style:{width:`${Xd}px`,flexShrink:0},children:a.jsxs("div",{style:{backgroundColor:"transparent",border:`1px solid ${j}`,borderRadius:"8px",overflow:"hidden",width:"100%",display:"flex",flexDirection:"column",boxSizing:"border-box"},children:[a.jsxs("div",{ref:w,onClick:D=>{if(D.stopPropagation(),!h&&w.current){const O=w.current.getBoundingClientRect(),H=220,U=16;b({top:O.bottom+8,left:Math.min(Math.max(U,O.right-H),window.innerWidth-H-U)})}x(O=>!O)},style:{display:"flex",alignItems:"center",gap:"6px",padding:"9px 10px 8px 10px",cursor:"pointer"},children:[a.jsx("img",{src:bo,alt:f,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:R,fontWeight:500,color:B,lineHeight:"1.3",fontFamily:us,flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",letterSpacing:0},children:f}),a.jsx(Bn,{size:15,color:B,strokeWidth:2.25})]}),a.jsx(La,{isOpen:h,position:y,title:"SELECT TOKEN",portalAttribute:"token",items:(l||[]).map(D=>({id:D.receiptTokenId||D.address,label:D.displaySymbol||D.receiptTokenName||D.symbol,icon:bo,detail:g.formatBalance(D.balanceFormatted)})),selectedId:i?.receiptTokenId||i?.address||null,onSelect:D=>{const O=(l||[]).find(H=>(H.receiptTokenId||H.address)===D);O&&(u(O),n("")),x(!1)}}),a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 10px",backgroundColor:E,borderTop:`1px solid ${j}`},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:400,color:B,fontFamily:us,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:p})})]})})]}),a.jsxs("div",{style:{minHeight:"18px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[s?a.jsx("span",{style:{fontSize:"12px",color:k.errorText,fontFamily:us,fontWeight:500},children:"Insufficient Balance"}):a.jsx("span",{}),a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0px",minHeight:"32px",marginRight:"-9px"},children:[0,25,50,75,100].map((D,O)=>{const H=O===4,U=parseFloat(t)||0,V=m>0&&Math.abs(U/m*100-D)<1;return a.jsx("button",{type:"button","aria-label":`Set amount to ${D}%`,"aria-pressed":V,onClick:()=>{const Y=m*D/100,N=r?.decimals??6,L=Math.floor(Y*10**N)/10**N;n(D===0?"":L>0?g.formatDecimalInput(L,N):"")},title:`${D}%`,disabled:m===0,"data-spiceflow-focus":!0,style:{width:"32px",height:"32px",padding:"9px",border:"none",backgroundColor:"transparent",cursor:m===0?"not-allowed":"pointer",opacity:V?1:.5,transition:"opacity 0.15s ease",display:"flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},children:a.jsx(yo,{pct:D,isMax:H,primaryColor:C,dark:S,fillColor:S?k.textSecondary:"#3C3E42"})},D)})})]})]})},Ws=g.font.ui,$d=g.font.mono,_d=170,eu=({header:e,amount:t,receiveAmountDisplay:n,receiveUsdEstimate:s,selectedDestToken:o,destTokenSymbol:r,destChainName:i,destChainLogo:l,compatibleDestinationChains:u,networkSwitchRef:c,onOpenNetworkPopover:f,showNetworkPopover:p,setShowNetworkPopover:m,networkPopoverPos:h,selectedChainId:x,setSelectedChainId:y,dark:b,dk:w})=>{const C=b?w.cardBg:"#E9E9E9",S=b?w.cardBorder:"#C6C6C6",k=b?w.textSecondary:"#71757A",v=b?w.textPrimary:"#0E0D0B",F=b?w.cardBorder:"#C5C5C4",T=b?"rgba(255,255,255,0.08)":"#D4D3D3",B=r.length>8?"14px":r.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:C,border:`1px solid ${S}`,borderRadius:"7px",padding:"14px 16px 12px 16px",minHeight:"138px",display:"flex",flexDirection:"column",gap:"6px"},children:[e,a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",flex:1},children:[a.jsxs("div",{style:{flex:1,minWidth:0,alignSelf:"flex-start",paddingTop:"4px"},children:[a.jsx(jn,{element:"div",value:n,title:n,fontFamily:Ws,color:t?v:"#A8A8A7",lineHeight:"0.95",maxFontSize:54,minFontSize:32,overflow:"wrap"}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:k,fontFamily:Ws,marginTop:"10px"},children:s})]}),a.jsxs("div",{style:{width:`${_d}px`,flexShrink:0,display:"flex",flexDirection:"column",alignItems:"stretch",gap:"8px"},children:[a.jsxs("div",{style:{backgroundColor:"transparent",border:`1px solid ${F}`,borderRadius:"8px",overflow:"hidden",width:"100%",display:"flex",flexDirection:"column",boxSizing:"border-box"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",padding:"9px 10px 8px 10px"},children:[a.jsx("img",{src:o?.logoURI||Jl,alt:r,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:B,fontWeight:500,color:v,lineHeight:"1.3",fontFamily:Ws,flex:1,minWidth:0,letterSpacing:0},children:r})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 10px",backgroundColor:T,borderTop:`1px solid ${F}`},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[l&&a.jsx("img",{src:l,alt:i,style:{width:"13px",height:"13px",borderRadius:"50%",flexShrink:0}}),a.jsx("span",{style:{fontSize:"11px",fontWeight:400,color:v,fontFamily:Ws,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:i})]}),a.jsx("button",{ref:c,onClick:j=>{j.stopPropagation(),f(c.current)},style:{background:"none",border:"none",cursor:u.length>1?"pointer":"not-allowed",padding:"0 0 0 8px",fontSize:"9.5px",fontFamily:$d,color:k,textDecoration:"underline",fontWeight:600,opacity:u.length>1?1:.45},children:"Switch"}),a.jsx(La,{isOpen:p,position:h,title:"SELECT NETWORK",portalAttribute:"network",items:u.map(j=>{const E=g.getChainConfig(j);return{id:String(j),label:E?.displayName||String(j),icon:Cn[j]||ns}}),selectedId:x!==null?String(x):null,onSelect:j=>{y(Number(j)),m(!1)}})]})]}),a.jsx("div",{style:{minHeight:"14px"}})]})]})]})};function za(e){const t=new Set(A.getEquivalentAddresses(e).map(n=>n.toLowerCase()));return t.add(e.toLowerCase()),t}const tu=["USDC","USDT","WETH","WBTC"];function qa(e,t){const n=g.getChainConfig(t);if(!n)return;if(n.nativeCurrency.symbol.toUpperCase()===e.toUpperCase())return{address:A.ZERO_ADDRESS,symbol:n.nativeCurrency.symbol,decimals:n.nativeCurrency.decimals,chainId:t};const s=n.supportedTokens?.find(o=>o.symbol.toUpperCase()===e.toUpperCase());if(s)return{address:s.address.toLowerCase(),symbol:s.symbol,decimals:s.decimals,chainId:t}}function pn(e,t,n){const s=g.getChainConfig(t);if(!s)return;if(n!==void 0){if(A.isNativeToken(e)&&!A.getTokenByAddress(e,n))return;const i=ea(e,n,t);return i?{address:i.address.toLowerCase(),symbol:i.symbol,decimals:i.decimals,chainId:t}:void 0}if(A.isNativeToken(e))return;const o=za(e),r=s.supportedTokens?.find(i=>o.has(i.address.toLowerCase()));if(r)return{address:r.address.toLowerCase(),symbol:r.symbol,decimals:r.decimals,chainId:t}}function Ha(e){const{sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,intermediaryCandidates:r=tu}=e;if(As(t,n))return{strategy:"direct",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} fronted directly`};if(s===o&&(A.isNativeToken(t.address)||!A.getTokenByAddress(t.address,s)))return{strategy:"direct-swap",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${n.symbol} on chain ${s}, no escrow`};if(pn(t.address,o,s))return{strategy:"direct",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} fronted on destination, swapped to ${n.symbol}`};if(pn(n.address,s,o))return{strategy:"source-swap",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${n.symbol} on source chain, then fronted`};for(const i of r){const l=qa(i,s);if(!l||As(t,l)||As(n,l))continue;const u=qa(i,o);if(u&&As(l,u))return{strategy:"intermediary",sourceAsset:t,outputAsset:n,intermediaryAsset:u,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${i} on source, fronted, then ${i} \u2192 ${n.symbol} on destination`}}throw new g.SpiceflowError("ROUTE_STRATEGY_ERROR",`No viable cross-chain route found from ${t.symbol} (chain ${s}) to ${n.symbol} (chain ${o}). No intermediary asset is available on both chains.`,{sourceAsset:t.symbol,outputAsset:n.symbol,sourceChainId:s,destinationChainId:o,candidatesChecked:r})}async function nu(e){const{route:t,sourceAmount:n,userAddress:s,registry:o,actionCalls:r,slippage:i}=e;async function l(u,c,f,p){const m=await o.resolveSwap({type:"swap",tokenIn:c,tokenOut:f,amountIn:p,maxSlippage:i},u,s);if(!m)throw new g.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${c} \u2192 ${f} on chain ${u}. No liquidity available for this pair.`,{chainId:u,tokenIn:c,tokenOut:f,amountIn:p.toString()});return m}switch(t.strategy){case"direct-swap":{const u=await l(t.destinationChainId,t.sourceAsset.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...u.calls,...r]}],solverFrontToken:t.outputAsset,solverFrontAmount:0n,resolvedSwaps:{sourceSwap:u}}}case"direct":{const u=pn(t.sourceAsset.address,t.destinationChainId,t.sourceChainId)||t.sourceAsset;if(za(u.address).has(t.outputAsset.address.toLowerCase()))return{chainBatches:[{chainId:t.destinationChainId,calls:r}],solverFrontToken:u,solverFrontAmount:n,resolvedSwaps:{}};const c=await l(t.destinationChainId,u.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...c.calls,...r]}],solverFrontToken:u,solverFrontAmount:n,resolvedSwaps:{destinationSwap:c}}}case"source-swap":{const u=pn(t.outputAsset.address,t.sourceChainId,t.destinationChainId);if(!u)throw new g.SpiceflowError("ROUTE_TOKEN_NOT_FOUND",`Output asset ${t.outputAsset.symbol} (${t.outputAsset.address}) not found on source chain ${t.sourceChainId}`,{token:t.outputAsset.symbol,address:t.outputAsset.address,chainId:t.sourceChainId,side:"source"});const c=pn(t.outputAsset.address,t.destinationChainId,t.destinationChainId);if(!c)throw new g.SpiceflowError("ROUTE_TOKEN_NOT_FOUND",`Output asset ${t.outputAsset.symbol} (${t.outputAsset.address}) not found on destination chain ${t.destinationChainId}`,{token:t.outputAsset.symbol,address:t.outputAsset.address,chainId:t.destinationChainId,side:"destination"});const f=await l(t.sourceChainId,t.sourceAsset.address,u.address,n);return{chainBatches:[{chainId:t.sourceChainId,calls:f.calls},{chainId:t.destinationChainId,calls:r}],solverFrontToken:c,solverFrontAmount:f.amountOutMinimum,resolvedSwaps:{sourceSwap:f}}}case"intermediary":{if(!t.intermediaryAsset)throw new g.SpiceflowError("ROUTE_STRATEGY_ERROR","Intermediary strategy requires an intermediary asset but none was provided in the route plan.",{strategy:t.strategy});const u=pn(t.intermediaryAsset.address,t.sourceChainId,t.destinationChainId);if(!u)throw new g.SpiceflowError("ROUTE_TOKEN_NOT_FOUND",`Intermediary ${t.intermediaryAsset.symbol} (${t.intermediaryAsset.address}) not found on source chain ${t.sourceChainId}`,{token:t.intermediaryAsset.symbol,address:t.intermediaryAsset.address,chainId:t.sourceChainId,side:"source"});const c=await l(t.sourceChainId,t.sourceAsset.address,u.address,n),f=await l(t.destinationChainId,t.intermediaryAsset.address,t.outputAsset.address,c.amountOutMinimum);return{chainBatches:[{chainId:t.sourceChainId,calls:c.calls},{chainId:t.destinationChainId,calls:[...f.calls,...r]}],solverFrontToken:t.intermediaryAsset,solverFrontAmount:c.amountOutMinimum,resolvedSwaps:{sourceSwap:c,destinationSwap:f}}}default:throw new g.SpiceflowError("ROUTE_STRATEGY_ERROR",`Unknown route strategy: ${t.strategy}`,{strategy:t.strategy})}}function su(e,t,n){if(!e||!t)return null;const s=zn(e,t),o=Object.entries(e.chainTokens??{}).flatMap(([p,m])=>{const h=Rn(p);return h?.chainId===t?[{parsed:h,detail:m}]:[]}),r=p=>n.find(m=>g.addressesEqual(m.address,p))??null,i=p=>{const m=o.find(({parsed:y})=>g.addressesEqual(y.address,p));if(!m)return null;const h=g.getChainConfig(t);if(A.isNativeToken(p))return h?{address:A.ZERO_ADDRESS,symbol:h.nativeCurrency.symbol,name:h.nativeCurrency.name,decimals:h.nativeCurrency.decimals,logoURI:e.logoURI}:null;const x=h?.supportedTokens?.find(y=>g.addressesEqual(y.address,p));return!x||!Ss(e,p,t)?null:{address:m.parsed.address,symbol:x.symbol,name:x.name||m.detail?.name||e.displayName||e.name||e.symbol,decimals:x.decimals,logoURI:x.logo||e.logoURI}},l=o.map(({parsed:p})=>p.address).filter(A.isNativeToken);for(const p of[...s,...l]){if(A.isNativeToken(p)){const x=i(p);if(x)return x}const m=r(p);if(m)return m;const h=i(p);if(h)return h}if(e.chainTokens||e.receiptTokenId)return null;const u=Lt(e,t);if(u){const p=r(u);if(p)return p}const c=pn(e.address,t,e.chainId);return c?r(c.address)||(n.length>0?null:{address:c.address,symbol:c.symbol||e.symbol,name:e.displayName||e.name||e.symbol,decimals:c.decimals??e.decimals,logoURI:e.logoURI}):null}const ou=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,onWithdrawExecute:o,onWithdrawSuccess:r,onWithdrawError:i,availableTokens:l,buildSpicenetBatch:u})=>{const c=d.useContext(g.SpiceFlowProviderContext);if(!c)return a.jsx("div",{children:"Error: SpiceWithdraw must be used within SpiceFlowProvider"});const f=c.mode||"7702",p=f==="presign"||f==="ondemand",m=c.supportedChainIds,h=c.allowedTokens,x=c.isWhitelistGateActive,{theme:y,dark:b,dk:w}=g.useSpiceBrand(s),C=c.network,S=()=>p?"select":"provider-login",[k,v]=d.useState(S()),[F,T]=d.useState(!1),[B,j]=d.useState(null),[E,R]=d.useState(null),[D,O]=d.useState(""),[H,U]=d.useState(!1),[V,Y]=d.useState(!1),[N,L]=d.useState(!1),[z,G]=d.useState(!1),[Z,W]=d.useState(""),[q,M]=d.useState(!0),se=d.useRef(null),de=d.useRef(null),ae=d.useRef(null),ne=d.useRef(null),[ce,ue]=d.useState(null),[$,ve]=d.useState(null),[P,oe]=d.useState(null),fe=g.useWallet(),{isReady:_,isAuthenticated:Q,address:ee}=fe,he=c?.embeddedWalletAddress,{address:X,chainId:Se}=ln.useAccount(),[Je,we]=d.useState(!1),[lt,Pe]=d.useState(null),We=d.useRef(i);We.current=i;const $e=d.useCallback(re=>{Pe(re),typeof re=="string"&&re&&We.current?.(re,g.getRelayerErrorDetail(re))},[]),[Ae,tt]=d.useState(null),Ye=d.useRef(null),ct=d.useRef(!0),nt=d.useRef(null);d.useEffect(()=>(ct.current=!0,()=>{ct.current=!1}),[]);const{execute:ut,estimate:De}=Hn(),[yt,dt]=d.useState(null),[Be,Ge]=d.useState(null),[Oe,ge]=d.useState(!1),[ye,Ne]=d.useState(null),{assets:ie,loading:Ue}=ds({address:he,enabled:e&&!!he,refetchInterval:3e4}),Me=d.useMemo(()=>{if(x)return[];if(!h||h.length===0)return ie;const re=new Set(h.map(le=>le.toLowerCase()));return(ie||[]).filter(le=>[le.symbol,le.displaySymbol,le.receiptTokenName].some(xe=>typeof xe=="string"&&re.has(xe.toLowerCase())))},[ie,h,x]),rt=d.useMemo(()=>[...new Set([...m??[],...Object.keys(l??{}).map(Number),...(Me||[]).map(re=>re.chainId),...(Me||[]).flatMap(re=>Object.keys(re.chainTokens??{}).map(le=>{const[,xe]=le.split(":"),Ve=Number(xe);return Number.isFinite(Ve)?Ve:null}).filter(le=>le!==null))])].filter(re=>g.getChainConfig(re)?.network===C),[m,l,Me,C]),_e=d.useMemo(()=>{if(l)return l;const re={};for(const le of Me||[]){const xe=Object.entries(le.chainTokens??{});if(xe.length>0){for(const[Ve,Le]of xe){const[xt,Qe,Rt]=Ve.split(":");if(xt!=="evm"||!Qe||!Rt)continue;const ot=Number(Qe);if(!Number.isFinite(ot))continue;const Kt=Rt.startsWith("0x")?Rt.toLowerCase():`0x${Rt.toLowerCase()}`,te=g.getChainConfig(ot)?.supportedTokens?.find(Re=>g.addressesEqual(Re.address,Kt));te&&Ss(le,Kt,ot)&&(re[ot]||(re[ot]=[]),re[ot].find(Re=>g.addressesEqual(Re.address,Kt))||re[ot].push({address:Kt,symbol:te?.symbol||Le?.name||le.symbol,name:te?.name||Le?.name||le.displayName||le.name||le.symbol,decimals:te?.decimals??Le?.decimals??le.decimals,logoURI:te?.logo||le.logoURI}))}continue}re[le.chainId]||(re[le.chainId]=[]),re[le.chainId].find(Ve=>g.addressesEqual(Ve.address,le.address))||re[le.chainId].push({address:le.address,symbol:le.symbol,name:le.displayName||le.name||le.symbol,decimals:le.decimals,logoURI:le.logoURI})}return re},[l,Me]),Ot=d.useCallback((re,le)=>su(re,le,le?_e[le]??[]:[]),[_e]),je=d.useMemo(()=>{if(!B)return null;const re=B.receiptTokenId||`${B.chainId}:${B.address.toLowerCase()}`;return Me.find(le=>(le.receiptTokenId||`${le.chainId}:${le.address.toLowerCase()}`)===re)||B},[B,Me]),at=d.useMemo(()=>{if(!je)return[];const re=Object.keys(je.chainTokens??{}).map(le=>Rn(le)?.chainId??null).filter(le=>le!==null);return Array.from(new Set([...re,je.chainId,...rt].filter(Number.isFinite))).filter(le=>le!==1&&g.getChainConfig(le)?.network===C&&Ot(je,le)!==null)},[je,rt,Ot,C]),Ze=d.useMemo(()=>{if(!je||typeof window>"u")return null;const re=`spiceflow:withdraw-chain:${je.receiptTokenId||je.address.toLowerCase()}`,le=window.localStorage.getItem(re),xe=le?Number(le):null;return xe!==null&&Number.isFinite(xe)&&at.includes(xe)?xe:null},[je,at]),Ce=d.useMemo(()=>je?Ze!==null?Ze:Se&&at.includes(Se)?Se:je.chainId&&at.includes(je.chainId)?je.chainId:at[0]??null:rt[0]??null,[je,Ze,Se,at,rt]),be=d.useMemo(()=>Ot(je,E),[Ot,je,E]);d.useEffect(()=>{!Me?.length||je||j(Me[0])},[Me,je]),d.useEffect(()=>{je&&(E===null||!at.includes(E))&&R(Ce)},[je,E,Ce,at]),d.useEffect(()=>{if(!H&&!V&&!N)return;const re=le=>{const xe=le.target;H&&!se.current?.contains(xe)&&!de.current?.contains(xe)&&!xe?.closest?.("[data-network-popover]")&&U(!1),V&&!ae.current?.contains(xe)&&!xe?.closest?.("[data-token-popover]")&&Y(!1),N&&!ne.current?.contains(xe)&&!xe?.closest?.("[data-balance-trigger]")&&L(!1)};return document.addEventListener("mousedown",re),()=>document.removeEventListener("mousedown",re)},[H,V,N]);const et=d.useCallback(re=>{if(!re||at.length<=1)return;const le=re.getBoundingClientRect(),xe=220,Ve=16;ue({top:le.bottom+8,left:Math.min(Math.max(Ve,le.right-xe),window.innerWidth-xe-Ve)}),U(Le=>!Le)},[at.length]),mt=d.useCallback(()=>M(re=>!re),[]);d.useEffect(()=>{if(!je||E===null||typeof window>"u")return;const re=`spiceflow:withdraw-chain:${je.receiptTokenId||je.address.toLowerCase()}`;window.localStorage.setItem(re,String(E))},[je,E]);const bt=z&&Z&&I.isAddress(Z)?Z:X||he,ke=je?.balanceFormatted??0,pt=d.useCallback(re=>{if(!re)return;const le=re.getBoundingClientRect();oe({top:le.bottom+8,left:le.right-220}),L(!0)},[]),it=je?.displaySymbol||je?.receiptTokenName||je?.symbol||"spiceUSDC",Xe=je?.displayChainName||"Spicenet",He=je?.receiptTokenDecimals??je?.decimals,ht=d.useMemo(()=>{if(!be||!He)return 0n;try{return I.parseUnits(D||"0",He)}catch{return 0n}},[D,be,He]),Te=d.useMemo(()=>!be||!He?0n:Ra(ht,He,be.decimals),[be,He,ht]),Ft=d.useMemo(()=>{const re=Be??yt;return!re||re<=0n||!be||!He?0n:Ra(re,be.decimals,He)},[Be,yt,be,He]),Tt=d.useMemo(()=>ht+Ft,[ht,Ft]),Pt=Be??yt,Bt=d.useCallback(re=>{if(!E||!be)return[];if(ht===0n||Te===0n||!bt)return[];const le=Array.isArray(re)?re.filter(xt=>xt.amount>0n):[{token:be.address,recipient:bt,amount:re??Te}],xe=le.reduce((xt,Qe)=>xt+Qe.amount,0n);if(xe<=0n)return[];const Ve={chainId:E,calls:[],tokenTransfers:le.map(xt=>({from:"escrow",to:xt.recipient,token:xt.token,amount:xt.amount}))};if(!u)return[Ve];const Le=u({destinationChainId:E,deliveryToken:be.address,deliveryAmount:xe,deliveryRecipient:bt,deliveryTransfers:le,requestTimestampMs:nt.current??Date.now()});return Le?[Le,Ve]:[Ve]},[E,be,ht,Te,bt,u]),vt=d.useMemo(()=>Bt(),[Bt]),ft=d.useMemo(()=>Md(vt,be?.address),[vt,be?.address]),st=d.useRef(null),Wt=e&&!p&&!Je&&!!be&&!!E&&ht!==0n;as({shouldRun:Wt&&vt.length>0&&!!ft,deps:[Wt,vt.length>0,ft],delayMs:500,onSkip:()=>{st.current=null,dt(null),Ne(null),ge(Wt&&vt.length===0)},onCleanup:()=>ge(!1),run:async({isCurrent:re,signal:le})=>{const xe=ft;ge(!0),Ne(null);try{const Ve=await Hd({batches:vt,tokenAddress:be.address,chainId:E,estimate:De,signal:le});if(!re())return;st.current={key:xe,quote:Ve},dt(Ve.gasFee)}catch(Ve){if(!re())return;st.current=null,dt(null),Ne(Ve instanceof Error?Ve.message:"Failed to estimate gas fee")}finally{re()&&ge(!1)}}}),d.useEffect(()=>{Je||Ge(null)},[Je,D,E,be?.address]);const Qt=d.useCallback(()=>{T(!0),v("select")},[]),tn=d.useCallback(()=>{t()},[t]),kt=d.useRef(null);kt.current={batches:vt,walletAddress:ee,recipient:bt,token:be,chainId:E,amount:D,receiveAmountRaw:Te,gasFee:yt,feeEstimate:ft&&st.current?.key===ft?st.current.quote.feeEstimate:null,isNon7702:p,buildWithdrawBatches:Bt,execution:{estimate:De,execute:ut},ui:{setIsExecuting:we,setExecutionError:$e,setExecutionProgress:tt,setLockedGasFee:Ge},executionContextRef:Ye,isMountedRef:ct,onWithdrawExecute:o,onWithdrawSuccess:r,buildSpicenetBatch:u};const Ie=d.useCallback(()=>(nt.current=Date.now(),Oa(kt.current)),[]),jt=d.useCallback(()=>(nt.current=Date.now(),qd(kt.current)),[]);if(d.useEffect(()=>{if(!e){const re=setTimeout(()=>{v(S()),T(!1),j(null),R(null),O(""),U(!1),Y(!1),G(!1),W(""),we(!1),$e(null),tt(null),Ye.current=null},300);return()=>clearTimeout(re)}},[e,p]),d.useEffect(()=>{if(!p&&e&&k==="provider-login"&&_&&Q&&he&&!F){const re=setTimeout(()=>{T(!0),v("select")},100);return()=>clearTimeout(re)}},[p,e,k,_,Q,he,F]),!e)return null;if(k==="provider-login"&&!p)return a.jsx(Qo,{onAuthSuccess:Qt,autoTrigger:!0});if(k==="select"){const re=parseFloat(D)||0,le=He?Yo(Tt,He):D||"0",xe=parseFloat(le)||0,Ve=xe>0&&xe>ke,Le=(E?g.getChainConfig(E):null)?.displayName||"Network",xt=E?Cn[E]||ns:null,Qe=be?.symbol||"\u2014",Rt=it,ot=be?Yo(Te,be.decimals):"0",Kt=Da(re,be?.symbol||je?.symbol),te=Da(parseFloat(ot)||0,be?.symbol||je?.symbol),Re=!z||!Z||I.isAddress(Z),At=!p&&re>0&&be!==null,Ke=!At||yt!==null&&!Oe&&!ye,St=re>0&&!Ve&&B!==null&&E!==null&&be!==null&&bt&&Re&&Ke&&Te>0n,Zt=!St,qt=B===null?"NO BALANCE":re===0?"ENTER AMOUNT":Ve?"INSUFFICIENT BALANCE":At&&!Ke?ye?"GAS UNAVAILABLE":"ESTIMATING GAS":At&&Te===0n?"AMOUNT TOO SMALL":"WITHDRAW",Ht=!!Ae&&(Ae.step==="success"||Ae.step==="error"),nn=s?.primaryColor||y.colors.primary,Ut=402,rn=an=>a.jsx(Zd,{label:an,spiceAssetsLoading:Ue,totalSelectedBalance:ke,onOpenBalancePopover:pt,dark:b,dk:w});return a.jsx(en,{isOpen:!0,onClose:tn,title:"Withdraw",subtitle:a.jsx(Gd,{dark:b,dk:w}),styles:s,theme:y,dark:b,maxWidth:"486px",footerLinkText:"Spicenet accounts \u2192",overlayDimmed:!1,closeOnBackdropClick:n,overlayContent:Ht?a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",flexDirection:"column",justifyContent:"flex-end",pointerEvents:"none",zIndex:20},children:a.jsx("div",{style:{pointerEvents:"auto"},children:a.jsx(Ko,{type:"withdraw",isOpen:!0,isProcessing:Je,onRetryTx:()=>{jt()},onNewTx:()=>{tt(null),O(""),$e(null),Ye.current=null},onClose:()=>{tt(null),$e(null),we(!1),Ye.current=null},onComplete:()=>{tt(null),$e(null),we(!1),Ye.current=null},results:[{asset:{symbol:be?.symbol||"Token",address:be?.address||""},txHash:Ae?.txHash||"",success:Ae?.step==="success",error:Ae?.error,amount:D}],chainId:E??void 0,theme:y})})}):null,children:a.jsxs("div",{style:{width:`${Ut}px`,margin:"0 auto",padding:"0 0 4px 0",position:"relative"},children:[a.jsx(Vd,{show:N,position:P,popoverRef:ne,spiceAssets:Me,dark:b,dk:w}),a.jsxs("div",{style:{marginTop:"16px",marginBottom:"16px",display:"flex",flexDirection:"column",gap:"16px"},children:[a.jsx(Jd,{header:rn("Source"),amount:D,setAmount:O,isInsufficient:Ve,sourceAmountDecimals:He,selectedSourceAsset:B,resolvedSelectedSourceAsset:je,spiceAssets:Me,setSelectedSourceAsset:j,sourceUsdEstimate:Kt,sourceTokenLabel:Rt,sourceChainLabel:Xe,totalSelectedBalance:ke,showSourceTokenPopover:V,setShowSourceTokenPopover:Y,tokenPopoverPos:$,setTokenPopoverPos:ve,tokenTriggerRef:ae,primaryColor:nn,dark:b,dk:w}),a.jsx(eu,{header:rn("Destination"),amount:D,receiveAmountDisplay:ot,receiveUsdEstimate:te,selectedDestToken:be,destTokenSymbol:Qe,destChainName:Le,destChainLogo:xt,compatibleDestinationChains:at,networkSwitchRef:se,onOpenNetworkPopover:et,showNetworkPopover:H,setShowNetworkPopover:U,networkPopoverPos:ce,selectedChainId:E,setSelectedChainId:R,dark:b,dk:w})]}),a.jsxs("div",{style:{marginBottom:y.spacing.sm},children:[a.jsx(Yd,{show:q,onToggle:mt,showCustomAddress:z,setShowCustomAddress:G,customRecipient:Z,setCustomRecipient:W,externalAddress:X,recipientAddress:bt,destChainName:Le,destChainLogo:xt,compatibleDestinationChains:at,txDetailsChainSwitchRef:de,onOpenNetworkPopover:et,sourceChainLabel:Xe,sourceDetailsLogo:bo,sourceTokenLabel:Rt,amount:D,totalSourceDebitDisplay:le,receiveAmountDisplay:ot,destTokenSymbol:Qe,shouldQuoteWithdrawGas:At,estimatingFee:Oe,feeError:ye,displayedGasFee:Pt,selectedDestToken:be,theme:y,styles:s,dark:b,dk:w}),je&&!Ue&&at.length===0&&a.jsx(kn,{variant:"warning",size:"compact",palette:w,children:"No withdrawal networks are available for this asset."}),lt&&a.jsx(kn,{variant:"error",size:"compact",palette:w,fontFamily:s?.fontFamily||y.typography.fontFamily,style:{marginBottom:"12px"},children:lt}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:()=>{St&&Ie()},disabled:Zt||Je,theme:y,dark:b,styles:s,style:{marginTop:"8px"},children:Je?"EXECUTING...":qt})]})]})})}return null},ru=ou;async function Va(e,t,n){if(n)return{decimals:n.decimals,symbol:n.symbol,name:n.name,logoURI:n.logo};const[s,o,r]=await Promise.all([_t.readContract(e,{address:t,abi:I.erc20Abi,functionName:"decimals"}).catch(()=>18),_t.readContract(e,{address:t,abi:I.erc20Abi,functionName:"symbol"}).catch(()=>"TOKEN"),_t.readContract(e,{address:t,abi:I.erc20Abi,functionName:"name"}).catch(()=>"TOKEN")]);return{decimals:Number(s),symbol:o,name:r,logoURI:void 0}}function au(e){const{isOpen:t,includeWalletAssets:n,isWhitelistGateActive:s,isSemi7702:o,destinationTokenAddress:r,sourceAssets:i,sourceChains:l,walletAddressForAssets:u,lockChainId:c,lockTokenSymbol:f,lockTokenLogoURI:p}=e,m=d.useMemo(()=>{if(!n)return[];if(s)return r?[I.getAddress(r)]:[];const B=new Set,j=[],E=R=>{if(!R)return;const D=R.toLowerCase();B.has(D)||(B.add(D),j.push(I.getAddress(R)))};r&&E(r);for(const R of i)E(R);return j},[n,o,r,i,s]),h=d.useMemo(()=>m.map(B=>B.toLowerCase()).sort().join(","),[m]),x=d.useMemo(()=>JSON.stringify([...l||[]].sort()),[l]),[y,b]=d.useState([]),w=d.useRef(0),C=d.useRef(async()=>{}),S=d.useCallback(async()=>{if(!n||!u||m.length===0){w.current++,b([]);return}const B=++w.current,j=I.getAddress(u),E=o?l&&l.length>0?l:[c]:[c],R=m.map(N=>{const L=N.toLowerCase();if(r&&g.addressesEqual(N,r)){const z=g.getChainConfig(c)?.supportedTokens?.find(G=>g.addressesEqual(G.address,L));return{address:N,chainId:c,configToken:z?{decimals:z.decimals,symbol:z.symbol,name:z.name,logo:z.logo}:void 0}}for(const z of E){const G=g.getChainConfig(z)?.supportedTokens?.find(Z=>g.addressesEqual(Z.address,L));if(G)return{address:N,chainId:z,configToken:{decimals:G.decimals,symbol:G.symbol,name:G.name,logo:G.logo}}}return{address:N,chainId:c}}),D=new Map;for(const N of R){const L=D.get(N.chainId)||[];L.push(N),D.set(N.chainId,L)}const O=(N,L)=>{let{symbol:z,name:G,logoURI:Z}=L;const W=!!r&&g.addressesEqual(N.address,r)&&N.chainId===c;return W&&p&&(Z=p),W&&f&&!N.configToken&&(z==="TOKEN"&&(z=f),G==="TOKEN"&&(G=f)),{symbol:z,name:G,logoURI:Z}},H=(N,L,z,G)=>{const Z=O(N,G),W=parseFloat((Number(L)/Math.pow(10,z)).toFixed(6));return{address:N.address,name:Z.name,symbol:Z.symbol,decimals:z,balance:L,balanceFormatted:W,balanceUsd:0,logoURI:Z.logoURI,isNative:!1,chainId:N.chainId}},U=async(N,L)=>{try{const z=await _t.readContract(N,{address:L.address,abi:I.erc20Abi,functionName:"balanceOf",args:[j]}),G=await Va(N,L.address,L.configToken);return H(L,z,G.decimals,G)}catch{return null}},V=await Promise.all(Array.from(D.entries()).map(async([N,L])=>{let z;try{z=g.getClientForChain(N)}catch{return[]}const G=[],Z=[];for(const q of L){const M=G.length;G.push({address:q.address,abi:I.erc20Abi,functionName:"balanceOf",args:[j]}),q.configToken||G.push({address:q.address,abi:I.erc20Abi,functionName:"decimals",args:[]},{address:q.address,abi:I.erc20Abi,functionName:"symbol",args:[]},{address:q.address,abi:I.erc20Abi,functionName:"name",args:[]}),Z.push({start:M,item:q})}let W=null;try{W=await z.multicall({contracts:G})}catch{W=null}return W?Z.map(({start:q,item:M})=>{const se=W[q],de=se?.status==="success"?se.result:0n;let ae,ne,ce,ue;if(M.configToken)ae=M.configToken.decimals,ne=M.configToken.symbol,ce=M.configToken.name,ue=M.configToken.logo;else{const $=W[q+1],ve=W[q+2],P=W[q+3];ae=$?.status==="success"?Number($.result):18,ne=ve?.status==="success"?ve.result:"TOKEN",ce=P?.status==="success"?P.result:ne}return H(M,de,ae,{symbol:ne,name:ce,logoURI:ue})}):(await Promise.all(L.map(q=>U(z,q)))).filter(q=>q!==null)}));if(B!==w.current)return;const Y=V.flat();b(Y)},[n,o,u,h,x,c,r,p,f]);d.useEffect(()=>{C.current=S},[S]),d.useEffect(()=>{if(!t||!n){b([]);return}C.current();const B=setInterval(()=>{C.current()},15e3);return()=>clearInterval(B)},[n,t,u,h,x,c,r]);const k=d.useCallback(()=>{S()},[S]),v=t&&n&&!o&&!s&&!!u,F=d.useMemo(()=>[c],[c]),{assets:T}=wn({address:v?u:void 0,supportedChains:F,fetchBalances:bn,enabled:v,refreshInterval:3e4});return{walletAssets:d.useMemo(()=>{const B=R=>`${R.chainId}:${A.normalizeNativeTokenAddress(R.address).toLowerCase()}`,j=new Set(y.map(B)),E=[...y];for(const R of T){const D=B(R);R.balance<=0n||j.has(D)||(j.add(D),E.push(R))}return E},[y,T]),refreshWalletAssets:k}}const iu={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",84532:"0x4200000000000000000000000000000000000006"},Qa=I.parseAbi(["function deposit() payable","function withdraw(uint256 wad)"]);function Us(e){return g.getChainConfig(e)?.wrappedNativeTokenAddress??iu[e]}const Zo=(e,t)=>({to:e,value:t,data:I.encodeFunctionData({abi:Qa,functionName:"deposit"})}),Xo=(e,t)=>({to:e,value:0n,data:I.encodeFunctionData({abi:Qa,functionName:"withdraw",args:[t]})});function Jo(e,t,n){const s=A.isNativeToken(t),o=A.isNativeToken(n);if(!s&&!o)return null;const r=Us(e);return r?{weth:r,wrapIn:s,unwrapOut:o}:null}function $o(e,t,n){return A.isNativeToken(e)?{to:n,value:t,data:"0x"}:{to:e,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[n,t]})}}function Ka(e,t,n,s,o,r){const i=Jo(e,t,n);if(!i||s<=0n)return null;const l=i.wrapIn&&g.addressesEqual(n,i.weth),u=i.unwrapOut&&g.addressesEqual(t,i.weth);return!l&&!u?null:[l?Zo(i.weth,s):Xo(i.weth,s),...g.addressesEqual(r,o)?[]:[$o(n,s,o)]]}function lu(e,t){return{...e,resolve:async(n,s,o)=>{const r=t??o,i=Ka(s,n.tokenIn,n.tokenOut,n.amountIn,o,r);if(i)return{venue:"native-wrap",amountOut:n.amountIn,amountOutMinimum:n.amountIn,calls:i};const l=await e.resolve(n,s,o);if(l)return l;const u=Jo(s,n.tokenIn,n.tokenOut);if(!u)return null;const c=await e.resolve({...n,tokenIn:u.wrapIn?u.weth:n.tokenIn,tokenOut:u.unwrapOut?u.weth:n.tokenOut},s,r);return c?{...c,calls:[...u.wrapIn?[Zo(u.weth,n.amountIn)]:[],...c.calls,...u.unwrapOut?[Xo(u.weth,c.amountOutMinimum)]:[],...g.addressesEqual(r,o)?[]:[$o(n.tokenOut,c.amountOutMinimum,o)]]}:null}}}function cu(e,t){return{...e,resolve:async(n,s,o)=>{const r=t??o,i=Ka(s,n.tokenIn,n.tokenOut,n.amountOut,o,r);if(i)return{venue:"native-wrap",amountIn:n.amountOut,amountInMax:n.amountOut,amountOut:n.amountOut,calls:i};const l=await e.resolve(n,s,o);if(l)return l;const u=Jo(s,n.tokenIn,n.tokenOut);if(!u)return null;const c=await e.resolve({...n,tokenIn:u.wrapIn?u.weth:n.tokenIn,tokenOut:u.unwrapOut?u.weth:n.tokenOut},s,r);return c?{...c,calls:[...u.wrapIn?[Zo(u.weth,c.amountInMax)]:[],...c.calls,...u.unwrapOut?[Xo(u.weth,c.amountOut)]:[],...g.addressesEqual(r,o)?[]:[$o(n.tokenOut,c.amountOut,o)]]}:null}}}const Ya=[100,500,3e3,1e4],Ga=(e,t)=>e.toLowerCase()===t.toLowerCase();function Ls(e,t,n,s,o){const r=[];for(const i of n)if(!(Ga(i,e)||Ga(i,t)))for(const l of s)for(const u of s)r.push(o==="in"?I.encodePacked(["address","uint24","address","uint24","address"],[e,l,i,u,t]):I.encodePacked(["address","uint24","address","uint24","address"],[t,u,i,l,e]));return r}function du(e){const t=e.slice(2),n=[];for(let s=0;s<t.length;){const o=n.length%2===0?40:6;n.push(t.slice(s,s+o)),s+=o}return`0x${n.reverse().join("")}`}const uu=I.parseAbi(["function exactOutputSingle((address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 amountOut, uint256 amountInMaximum, uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountIn)","function exactOutput((bytes path, address recipient, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),pu=I.parseAbi(["function exactOutputSingle((address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum, uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountIn)","function exactOutput((bytes path, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),fu=1800;function Za(e){const{config:t,route:n,tokenIn:s,tokenOut:o,recipient:r,amountOut:i}=e,l=e.amountInMaximum,u=e.routerHasDeadline?pu:uu,c=e.routerHasDeadline?{deadline:BigInt(Math.floor(Date.now()/1e3)+fu)}:{},f=n.path?I.encodeFunctionData({abi:u,functionName:"exactOutput",args:[{path:n.path,recipient:r,...c,amountOut:i,amountInMaximum:l}]}):I.encodeFunctionData({abi:u,functionName:"exactOutputSingle",args:[{tokenIn:s,tokenOut:o,fee:n.fee,recipient:r,...c,amountOut:i,amountInMaximum:l,sqrtPriceLimitX96:0n}]});return{to:t.swapRouter,value:0n,data:f}}const mu=I.parseAbi(["function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)","function quoteExactOutput(bytes path, uint256 amountOut) returns (uint256 amountIn, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)"]);async function zs(e,t,n,s,o){const r=g.getClientForChain(e),{result:i}=await r.simulateContract({address:t.quoterV2,abi:mu,functionName:o==="in"?"quoteExactInput":"quoteExactOutput",args:[n,s]}),[l,,,u]=i;if(l<=0n)throw new Error("No liquidity along this path.");return{amount:l,gasEstimate:u}}async function hu(e){const{tokenIn:t,tokenOut:n,amountIn:s,fee:o,chainId:r,config:i}=e;if(s<=0n)throw new Error("amountIn must be greater than 0");const l=(await g.getClientForChain(r).simulateContract({address:i.quoterV2,abi:A.uniV3QuoterV2Abi,functionName:"quoteExactInputSingle",args:[{tokenIn:t,tokenOut:n,amountIn:s,fee:o,sqrtPriceLimitX96:0n}]})).result;if(l[0]<=0n)throw new Error("No liquidity found for this pair. The pool returned 0 output.");return{amountOut:l[0],sqrtPriceX96After:l[1],gasEstimate:l[3]}}async function Xa(e){const t=e.feeTiers??Ya,n=Ls(e.tokenIn,e.tokenOut,e.hubs??[],t,"in"),s=await Promise.allSettled([...t.map(async r=>({...await hu({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await zs(e.chainId,e.config,r,e.amountIn,"in");return{amountOut:i.amount,sqrtPriceX96After:0n,gasEstimate:i.gasEstimate,fee:0,path:r}})]);let o=null;for(const r of s)r.status==="fulfilled"&&(!o||r.value.amountOut>o.amountOut)&&(o=r.value);if(!o)throw new Error("No liquidity found for this pair on any fee tier.");return o}const gu=[{inputs:[{components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"amount",type:"uint256"},{name:"fee",type:"uint24"},{name:"sqrtPriceLimitX96",type:"uint160"}],name:"params",type:"tuple"}],name:"quoteExactOutputSingle",outputs:[{name:"amountIn",type:"uint256"},{name:"sqrtPriceX96After",type:"uint160"},{name:"initializedTicksCrossed",type:"uint32"},{name:"gasEstimate",type:"uint256"}],stateMutability:"nonpayable",type:"function"}];async function xu(e){const{tokenIn:t,tokenOut:n,amountOut:s,fee:o,chainId:r,config:i}=e;if(s<=0n)throw new Error("amountOut must be greater than 0");const l=(await g.getClientForChain(r).simulateContract({address:i.quoterV2,abi:gu,functionName:"quoteExactOutputSingle",args:[{tokenIn:t,tokenOut:n,amount:s,fee:o,sqrtPriceLimitX96:0n}]})).result;if(l[0]<=0n)throw new Error("No liquidity found for this pair. The pool returned 0 input.");return{amountIn:l[0],sqrtPriceX96After:l[1],gasEstimate:l[3]}}async function Ja(e){const t=e.feeTiers??Ya,n=Ls(e.tokenIn,e.tokenOut,e.hubs??[],t,"out"),s=await Promise.allSettled([...t.map(async r=>({...await xu({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await zs(e.chainId,e.config,r,e.amountOut,"out");return{amountIn:i.amount,sqrtPriceX96After:0n,gasEstimate:i.gasEstimate,fee:0,path:r}})]);let o=null;for(const r of s)r.status==="fulfilled"&&(!o||r.value.amountIn<o.amountIn)&&(o=r.value);if(!o)throw new Error("No liquidity found for this pair on any fee tier.");return o}const $a=3,_a=8,yu=30,bu=[{name:"quoteExactInput",stateMutability:"nonpayable",inputs:[{name:"path",type:"bytes"},{name:"amountInRequired",type:"uint256"}],outputs:[{name:"amountOutList",type:"uint256[]"},{name:"amountInList",type:"uint256[]"},{name:"sqrtPriceX96AfterList",type:"uint160[]"},{name:"initializedTicksCrossedList",type:"uint32[]"},{name:"gasEstimate",type:"uint256"},{name:"feeList",type:"uint16[]"}],type:"function"}],wu=[{name:"exactInput",stateMutability:"payable",inputs:[{name:"params",type:"tuple",components:[{name:"path",type:"bytes"},{name:"recipient",type:"address"},{name:"deadline",type:"uint256"},{name:"amountIn",type:"uint256"},{name:"amountOutMinimum",type:"uint256"}]}],outputs:[{name:"amountOut",type:"uint256"}],type:"function"}];function ei(e){const{tokens:t,deployers:n}=e;if(t.length<2||n.length!==t.length-1)throw new Error("Invalid Algebra path");const s=[];for(let o=0;o<t.length;o++)s.push(I.pad(t[o],{size:20})),o<n.length&&s.push(I.pad(n[o],{size:20}));return I.concat(s)}async function Cu(e,t){const n=t.toLowerCase(),s=`{ pools(first: 500, where: { or: [ { token0: "${n}" }, { token1: "${n}" } ] }) { deployer token0 { id } token1 { id } } }`,o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:s})});if(!o.ok)throw new Error(`Algebra subgraph returned ${o.status}`);const r=await o.json();if(r.errors||!r.data?.pools)throw new Error("Algebra subgraph query failed");const i=new Map;for(const l of r.data.pools){const u=l.token0.id.toLowerCase(),c=l.token1.id.toLowerCase(),f={token:u===n?c:u,deployer:l.deployer.toLowerCase()};i.set(`${f.token}:${f.deployer}`,f)}return Array.from(i.values())}async function vu(e,t,n){const s=t.toLowerCase(),o=n.toLowerCase(),r=new Map,i=async c=>{const f=r.get(c);if(f)return f;if(r.size>=yu)return[];const p=await Cu(e,c);return r.set(c,p),p},l=[],u=[{tokens:[s],deployers:[]}];for(;u.length>0&&l.length<_a;){const c=u.shift();if(c.tokens.length-1>=$a)continue;const f=c.tokens[c.tokens.length-1];for(const p of await i(f)){if(c.tokens.includes(p.token))continue;const m={tokens:[...c.tokens,p.token],deployers:[...c.deployers,p.deployer]};if(p.token===o){if(l.push(m),l.length>=_a)break}else c.tokens.length-1<$a-1&&u.push(m)}}return l}async function ku(e,t,n,s){const o=g.getClientForChain(t),{result:r}=await o.simulateContract({address:e,abi:bu,functionName:"quoteExactInput",args:[ei(n),s]}),i=r[0],l=i[i.length-1]??0n;if(l<=0n)throw new Error("Algebra quote returned zero output");return l}async function Su(e){const{tokenIn:t,tokenOut:n,amountIn:s,chainId:o,config:r}=e,i=await vu(r.subgraphUrl,t,n),l=await Promise.allSettled(i.map(async c=>({path:c,amountOut:await ku(r.quoterV2,o,c,s)})));let u=null;for(const c of l)c.status==="fulfilled"&&(!u||c.value.amountOut>u.amountOut)&&(u=c.value);return u}function Au(e){return e.type==="swap"}const Kn=.02,Iu=[1,8453,42161,10,137,43114,56],ti="https://api.1inch.dev/swap/v6.0";function qs(e,t){return A.applySlippage(e,t)}function Eu(e){const t=e?.baseUrl??ti;return{name:"1inch",chainIds:e?.chainIds??Iu,resolve:async(n,s,o)=>{const r=n.maxSlippage??Kn,i=r*100,l=A.isNativeToken(n.tokenIn)?A.NATIVE_TOKEN_ADDRESS:n.tokenIn,u=A.isNativeToken(n.tokenOut)?A.NATIVE_TOKEN_ADDRESS:n.tokenOut,c=A.isNativeToken(n.tokenIn);try{const f=new URL(`${t}/${s}/swap`);f.searchParams.set("src",l),f.searchParams.set("dst",u),f.searchParams.set("amount",n.amountIn.toString()),f.searchParams.set("from",o),f.searchParams.set("slippage",i.toString()),f.searchParams.set("disableEstimate","true"),f.searchParams.set("allowPartialFill","false");const p={Accept:"application/json"};e?.apiKey&&(p.Authorization=`Bearer ${e.apiKey}`);const m=await fetch(f.toString(),{headers:p});if(!m.ok)throw new g.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] API returned ${m.status} for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`,{venue:"1inch",chainId:s,tokenIn:n.tokenIn,tokenOut:n.tokenOut,amountIn:n.amountIn.toString(),cause:`HTTP ${m.status}`});const h=await m.json();if(!h.dstAmount||!h.tx)return console.warn(`[1inchVenue] No route data for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const x=BigInt(h.dstAmount);if(x<=0n)return console.warn(`[1inchVenue] Zero output for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const y=qs(x,r),b=[];return h.tx.to&&!c&&b.push({to:n.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[h.tx.to,n.amountIn]})}),b.push({to:h.tx.to,value:BigInt(h.tx.value||"0"),data:h.tx.data}),{venue:"1inch",amountOut:x,amountOutMinimum:y,calls:b}}catch(f){if(f instanceof g.SpiceflowError)throw f;const p=f instanceof Error?f.message:String(f);throw new g.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] Exception for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}: ${p}`,{venue:"1inch",chainId:s,tokenIn:n.tokenIn,tokenOut:n.tokenOut,amountIn:n.amountIn.toString(),cause:p})}}}}const ni=[4114,5115],_o={name:"Satsuma",swapRouter:"0x565eD3D57fe40f78A46f348C220121AE093c3cF8",quoterV2:"0x428f20dd8926Eabe19653815Ed0BE7D6c36f8425",feeTiers:[3e3]},Fu={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[1],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]},si={name:"Uniswap v3",swapRouter:"0x2626664c2603336E57B271c5C0b26F421741e481",quoterV2:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",chainIds:[8453],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},oi={name:"Uniswap v3",swapRouter:"0xcaf681a66d020601342297493863e78c959e5cb2",quoterV2:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},ri={name:"SushiSwap",swapRouter:"0x1e406484F1F204b23cE84B9901C0171a738fd406",quoterV2:"0x3E290e5E01818002A0b672148BdC7514D861C7B3",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"],routerHasDeadline:!0},Tu=I.parseAbi(["function exactInput((bytes path, address recipient, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),Bu=I.parseAbi(["function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),ju=I.parseAbi(["function exactOutput((bytes path, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),ai=1800,ii=[1,50,100,200,2e3],er={name:"Aerodrome",swapRouter:"0xcbBb8035cAc7D4B3Ca7aBb74cF7BdF900215Ce0D",quoterV2:"0x3d4C22254F86f64B7eC90ab8F7aeC1FBFD271c6C",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]};function tr(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??ii;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(A.isNativeToken(o.tokenIn)||A.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??Kn,u=[...s.map(b=>I.encodePacked(["address","uint24","address"],[o.tokenIn,b,o.tokenOut])),...Ls(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"in")],c={quoterV2:e.quoterV2},f=await Promise.allSettled(u.map(async b=>({path:b,amountOut:(await zs(r,c,b,o.amountIn,"in")).amount})));let p=null;for(const b of f)b.status==="fulfilled"&&(!p||b.value.amountOut>p.amountOut)&&(p=b.value);if(!p)return console.warn(`[AerodromeVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const m=qs(p.amountOut,l),h=BigInt(Math.floor(Date.now()/1e3)+ai),x=I.encodeFunctionData({abi:Bu,functionName:"exactInput",args:[{path:p.path,recipient:i,deadline:h,amountIn:o.amountIn,amountOutMinimum:m}]}),y=[{to:o.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.swapRouter,o.amountIn]})},{to:e.swapRouter,value:0n,data:x}];return{venue:t,amountOut:p.amountOut,amountOutMinimum:m,calls:y}}}}function li(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??ii;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(A.isNativeToken(o.tokenIn)||A.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??Kn,u=[...s.map(y=>I.encodePacked(["address","uint24","address"],[o.tokenOut,y,o.tokenIn])),...Ls(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"out")],c={quoterV2:e.quoterV2},f=await Promise.allSettled(u.map(async y=>({path:y,amountIn:(await zs(r,c,y,o.amountOut,"out")).amount})));let p=null;for(const y of f)y.status==="fulfilled"&&(!p||y.value.amountIn<p.amountIn)&&(p=y.value);if(!p)return console.warn(`[AerodromeExactOutputVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const m=BigInt(Math.round(l*1e4)),h=p.amountIn+p.amountIn*m/10000n,x=BigInt(Math.floor(Date.now()/1e3)+ai);return{venue:t,amountIn:p.amountIn,amountInMax:h,amountOut:o.amountOut,calls:[{to:e.swapRouter,value:0n,data:I.encodeFunctionData({abi:ju,functionName:"exactOutput",args:[{path:p.path,recipient:i,deadline:x,amountOut:o.amountOut,amountInMaximum:h}]})}]}}}}function ps(e){const t=e.name??"Uniswap v3",n=e.chainIds??ni;return{name:t,chainIds:n,resolve:async(s,o,r)=>{if(A.isNativeToken(s.tokenIn)||A.isNativeToken(s.tokenOut))return null;const i=s.maxSlippage??Kn;let l;try{l=await Xa({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountIn:s.amountIn,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:e.feeTiers,hubs:e.hubCurrencies})}catch{return console.warn(`[UniV3Venue] No viable route for ${s.tokenIn} \u2192 ${s.tokenOut} on chain ${o}.`),null}const u=qs(l.amountOut,i),c=l.path?I.encodeFunctionData({abi:Tu,functionName:"exactInput",args:[{path:l.path,recipient:r,amountIn:s.amountIn,amountOutMinimum:u}]}):I.encodeFunctionData({abi:A.uniV3SwapRouterAbi,functionName:"exactInputSingle",args:[{tokenIn:s.tokenIn,tokenOut:s.tokenOut,fee:l.fee,recipient:r,amountIn:s.amountIn,amountOutMinimum:u,sqrtPriceLimitX96:0n}]}),f=[{to:s.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.swapRouter,s.amountIn]})},{to:e.swapRouter,value:0n,data:c}];return{venue:t,amountOut:l.amountOut,amountOutMinimum:u,calls:f}}}}function nr(e){const t=e.name??"Uniswap v3",n=e.chainIds??ni;return{name:t,chainIds:n,resolve:async(s,o,r)=>{if(A.isNativeToken(s.tokenIn)||A.isNativeToken(s.tokenOut))return null;const i=s.maxSlippage??Kn;let l;try{l=await Ja({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountOut:s.amountOut,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:e.feeTiers,hubs:e.hubCurrencies})}catch{return null}const u=BigInt(Math.round(i*1e4)),c=l.amountIn+l.amountIn*u/10000n;return{venue:t,amountIn:l.amountIn,amountInMax:c,amountOut:s.amountOut,calls:[Za({config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},routerHasDeadline:e.routerHasDeadline,route:l,tokenIn:s.tokenIn,tokenOut:s.tokenOut,recipient:r,amountOut:s.amountOut,amountInMaximum:c})]}}}}const Ru=[4114],Du={swapRouter:"0x3012E9049d05B4B5369D690114D5A5861EbB85cb",quoterV2:"0xa77aD9f635a3FB3bCCC5E6d1A87cB269746Aba17",subgraphUrl:"https://api.goldsky.com/api/public/project_cmamb6kkls0v2010932jjhxj4/subgraphs/analytics-mainnet/v1.0.1/gn",maxSlippage:.005};function ci(e){return{name:"algebra",chainIds:e.chainIds??Ru,resolve:async(t,n,s)=>{const o=A.isNativeToken(t.tokenIn),r=await Su({tokenIn:t.tokenIn,tokenOut:t.tokenOut,amountIn:t.amountIn,chainId:n,config:e}).catch(()=>null);if(!r)return null;const i=qs(r.amountOut,t.maxSlippage??e.maxSlippage??Kn),l=[];return o||l.push({to:t.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.swapRouter,t.amountIn]})}),l.push({to:e.swapRouter,value:o?t.amountIn:0n,data:I.encodeFunctionData({abi:wu,functionName:"exactInput",args:[{path:ei(r.path),recipient:s,deadline:I.maxUint256,amountIn:t.amountIn,amountOutMinimum:i}]})}),{venue:"algebra",amountOut:r.amountOut,amountOutMinimum:i,calls:l}}}}function sr(e){const t=[];e?.customVenues&&t.push(...e.customVenues),e?.algebra&&t.push(ci(e.algebra)),e?.satsuma&&t.push(ps(e.satsuma)),e?.aerodrome!==!1&&t.push(tr(e?.aerodrome??er));let n=!1;if(e?.oneInch?.baseUrl)try{const l=new URL(e.oneInch.baseUrl);n=["http:","https:"].includes(l.protocol)&&l.hostname!==new URL(ti).hostname}catch{}(e?.oneInch?.apiKey?.trim()||n)&&t.push(Eu(e?.oneInch));const s=t.map(l=>lu(l,e?.executorAddress));function o(l){return s.find(u=>u.chainIds.includes(l))}async function r(l,u,c){const f=s.filter(x=>x.chainIds.includes(u));if(f.length===0)throw new g.SpiceflowError("NO_VENUE_FOR_CHAIN",`No liquidity venue configured for chain ${u}. Cannot resolve swap ${l.tokenIn} \u2192 ${l.tokenOut}.`,{chainId:u,tokenIn:l.tokenIn,tokenOut:l.tokenOut,amountIn:l.amountIn.toString()});const p=await Promise.allSettled(f.map(x=>x.resolve(l,u,c)));let m=null;for(const x of p)x.status==="fulfilled"&&x.value&&(!m||x.value.amountOut>m.amountOut)&&(m=x.value);if(m)return m;const h=p.find(x=>x.status==="rejected");if(h)throw h.reason;return null}async function i(l,u,c){const f=[],p=[];for(const m of l){if(!Au(m)){f.push(m);continue}const h=await r(m,u,c);if(!h)throw new g.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${m.tokenIn} \u2192 ${m.tokenOut} on chain ${u}.`,{chainId:u,tokenIn:m.tokenIn,tokenOut:m.tokenOut,amountIn:m.amountIn.toString()});f.push(...h.calls),p.push(h)}return{calls:f,resolvedSwaps:p}}return{resolveSwapIntents:i,resolveSwap:r,getVenueForChain:o,venues:t}}const on="0x0000000000000000000000000000000000000000",or=[{fee:100,tickSpacing:1},{fee:500,tickSpacing:10},{fee:3e3,tickSpacing:60},{fee:1e4,tickSpacing:200}],di=on,ui=.02,Nu=1800,pi={name:"Uniswap v4",quoter:"0x0d5e0f971ed27fbff6c2837bf31316121532048d",universalRouter:"0x6ff5693b99212da76ad316178a184ab56d299b43",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006",on,"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},fi={name:"Uniswap v4",quoter:"0x8dc178efb8111bb0973dd9d722ebeff267c98f94",universalRouter:"0x8876789976decbfcbbbe364623c63652db8c0904",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainIds:[4663],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73",on,"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},mi=I.parseAbi(["struct PoolKey { address currency0; address currency1; uint24 fee; int24 tickSpacing; address hooks; }","struct PathKey { address intermediateCurrency; uint24 fee; int24 tickSpacing; address hooks; bytes hookData; }","struct QuoteExactSingleParams { PoolKey poolKey; bool zeroForOne; uint128 exactAmount; bytes hookData; }","struct QuoteExactParams { address exactCurrency; PathKey[] path; uint128 exactAmount; }","function quoteExactInputSingle(QuoteExactSingleParams params) returns (uint256 amountOut, uint256 gasEstimate)","function quoteExactInput(QuoteExactParams params) returns (uint256 amountOut, uint256 gasEstimate)","function quoteExactOutputSingle(QuoteExactSingleParams params) returns (uint256 amountIn, uint256 gasEstimate)","function quoteExactOutput(QuoteExactParams params) returns (uint256 amountIn, uint256 gasEstimate)"]),Ou=I.parseAbi(["function approve(address token, address spender, uint160 amount, uint48 expiration)"]),Mu=I.parseAbi(["function execute(bytes commands, bytes[] inputs, uint256 deadline) payable"]),hi="0x10",Pu="04",Wu="06",Uu="07",Lu="08",zu="09",Hs="0c",Vs="0e",qu=[{name:"currency0",type:"address"},{name:"currency1",type:"address"},{name:"fee",type:"uint24"},{name:"tickSpacing",type:"int24"},{name:"hooks",type:"address"}],Hu=[{name:"intermediateCurrency",type:"address"},{name:"fee",type:"uint24"},{name:"tickSpacing",type:"int24"},{name:"hooks",type:"address"},{name:"hookData",type:"bytes"}],fn=(e,t)=>e.toLowerCase()===t.toLowerCase();function Qs(e){return A.isNativeToken(e)?on:e}function Vu(e,t){return e.toLowerCase()<t.toLowerCase()?[e,t]:[t,e]}function gi(e,t,n,s,o){const r=[],[i,l]=Vu(e,t);for(const{fee:c,tickSpacing:f}of or)r.push({kind:"single",poolKey:{currency0:i,currency1:l,fee:c,tickSpacing:f,hooks:di},zeroForOne:fn(e,i)});const u=(c,f)=>!!o&&(fn(c,on)&&fn(f,o)||fn(c,o)&&fn(f,on));for(const c of n)if(!(fn(c,e)||fn(c,t))&&!(u(c,e)||u(c,t)))for(const f of or)for(const p of or){const m=(h,x)=>({intermediateCurrency:h,fee:x.fee,tickSpacing:x.tickSpacing,hooks:di,hookData:"0x"});r.push({kind:"multi",path:s==="in"?[m(c,f),m(t,p)]:[m(e,f),m(c,p)]})}return r}async function xi(e,t,n,s,o,r){const i=g.getClientForChain(e),l=(await Promise.allSettled(n.map(async u=>{const{result:c}=u.kind==="single"?await i.simulateContract({address:t.quoter,abi:mi,functionName:r==="in"?"quoteExactInputSingle":"quoteExactOutputSingle",args:[{poolKey:u.poolKey,zeroForOne:u.zeroForOne,exactAmount:o,hookData:"0x"}]}):await i.simulateContract({address:t.quoter,abi:mi,functionName:r==="in"?"quoteExactInput":"quoteExactOutput",args:[{exactCurrency:s,path:u.path,exactAmount:o}]}),f=c[0];if(f<=0n)throw new Error("zero quote");return{candidate:u,amount:f}}))).filter(u=>u.status==="fulfilled").map(u=>u.value);return l.length===0?null:(l.sort((u,c)=>u.amount<c.amount?-1:u.amount>c.amount?1:0),r==="in"?l[l.length-1]:l[0])}function yi(e){const{candidate:t,direction:n,currencyIn:s,currencyOut:o,recipient:r,exactAmount:i,limitAmount:l,deadline:u,sweepNativeTo:c}=e;let f,p;t.kind==="single"?(f=n==="in"?`0x${Wu}${Hs}${Vs}`:`0x${Lu}${Hs}${Vs}`,p=I.encodeAbiParameters([{type:"tuple",components:[{name:"poolKey",type:"tuple",components:qu},{name:"zeroForOne",type:"bool"},{name:n==="in"?"amountIn":"amountOut",type:"uint128"},{name:n==="in"?"amountOutMinimum":"amountInMaximum",type:"uint128"},{name:"hookData",type:"bytes"}]}],[{poolKey:t.poolKey,zeroForOne:t.zeroForOne,[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l,hookData:"0x"}])):(f=n==="in"?`0x${Uu}${Hs}${Vs}`:`0x${zu}${Hs}${Vs}`,p=I.encodeAbiParameters([{type:"tuple",components:[{name:n==="in"?"currencyIn":"currencyOut",type:"address"},{name:"path",type:"tuple[]",components:Hu},{name:n==="in"?"amountIn":"amountOut",type:"uint128"},{name:n==="in"?"amountOutMinimum":"amountInMaximum",type:"uint128"}]}],[{[n==="in"?"currencyIn":"currencyOut"]:n==="in"?s:o,path:t.path,[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l}]));const m=I.encodeAbiParameters([{type:"address"},{type:"uint256"}],[s,n==="in"?i:l]),h=I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[o,r,0n]),x=I.encodeAbiParameters([{type:"bytes"},{type:"bytes[]"}],[f,[p,m,h]]),y=c?`${hi}${Pu}`:hi,b=c?[x,I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[on,c,0n])]:[x];return I.encodeFunctionData({abi:Mu,functionName:"execute",args:[y,b,u]})}function bi(){return BigInt(Math.floor(Date.now()/1e3)+Nu)}function wi(e,t,n,s){return{to:e.permit2,value:0n,data:I.encodeFunctionData({abi:Ou,functionName:"approve",args:[t,e.universalRouter,n,Number(s)]})}}function Ci(e){const t=e.name??"Uniswap v4",n=e.v3?ps({...e.v3,chainIds:e.chainIds}):null;return{name:t,chainIds:e.chainIds,resolve:async(s,o,r)=>{const i=s.maxSlippage??ui,l=Qs(s.tokenIn),u=Qs(s.tokenOut),c=A.isNativeToken(s.tokenIn),f=e.hubCurrencies??[on];let p=null;if(!fn(l,u)&&s.amountIn>0n){const m=await xi(o,e,gi(l,u,f,"in",Us(o)),l,s.amountIn,"in").catch(()=>null);if(m){const h=A.applySlippage(m.amount,i),x=bi(),y=[];c||(y.push({to:s.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[e.permit2,s.amountIn]})}),y.push(wi(e,s.tokenIn,s.amountIn,x))),y.push({to:e.universalRouter,value:c?s.amountIn:0n,data:yi({candidate:m.candidate,direction:"in",currencyIn:l,currencyOut:u,recipient:r,exactAmount:s.amountIn,limitAmount:h,deadline:x})}),p={venue:t,amountOut:m.amount,amountOutMinimum:h,calls:y}}}return!p&&n?n.resolve(s,o,r):p}}}function vi(e){const t=e.name??"Uniswap v4";return{name:t,chainIds:e.chainIds,resolve:async(n,s,o)=>{const r=A.isNativeToken(n.tokenIn),i=Qs(n.tokenIn),l=Qs(n.tokenOut);if(fn(i,l)||n.amountOut<=0n)return null;const u=n.maxSlippage??ui,c=e.hubCurrencies??[on],f=await xi(s,e,gi(i,l,c,"out",Us(s)),l,n.amountOut,"out").catch(()=>null);if(!f)return null;const p=BigInt(Math.round(u*1e4)),m=f.amount+f.amount*p/10000n,h=bi();return{venue:t,amountIn:f.amount,amountInMax:m,amountOut:n.amountOut,calls:[...r?[]:[wi(e,n.tokenIn,m,h)],{to:e.universalRouter,value:r?m:0n,data:yi({candidate:f.candidate,direction:"out",currencyIn:i,currencyOut:l,recipient:o,exactAmount:n.amountOut,limitAmount:m,deadline:h,sweepNativeTo:r?o:void 0})}]}}}}const ki=[{...Fu,protocol:"uniswap-v3",chainId:1},{..._o,protocol:"uniswap-v3",chainId:4114},{..._o,protocol:"uniswap-v3",chainId:5115},{...si,protocol:"uniswap-v3",chainId:8453},{...oi,protocol:"uniswap-v3",chainId:4663},{...ri,protocol:"uniswap-v3",chainId:4663},{...pi,protocol:"uniswap-v4",chainId:8453},{...fi,protocol:"uniswap-v4",chainId:4663},{...er,protocol:"aerodrome-slipstream",chainId:8453}];function Yn(e){const t=e?.includeDefaults===!1?e.venues??[]:[...ki,...e?.venues??[]],n=[],s=[];for(const o of t){const r=[o.chainId];switch(o.protocol){case"uniswap-v3":{const i={...o,chainIds:r};n.push(ps(i)),s.push(nr(i));break}case"uniswap-v4":{const i={...o,chainIds:r};n.push(Ci(i)),s.push(vi(i));break}case"aerodrome-slipstream":{const i={...o,chainIds:r};n.push(tr(i)),s.push(li(i));break}default:{const i=o;throw new g.SpiceflowError("INVALID_PARAMS",`Unsupported liquidity venue protocol: ${i.protocol}`,{protocol:i.protocol})}}}return{input:n,output:s}}function Qu(e){return{...e,resolve:async(t,n,s)=>{const o=await e.resolve(t,n,s),r=o?.calls[0]?.to;return!o||!r||A.isNativeToken(t.tokenIn)?o:{...o,calls:[{to:t.tokenIn,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"approve",args:[r,o.amountInMax]})},...o.calls]}}}}function Ks(e){const t=(e?.customVenues??[]).map(s=>cu(Qu(s),e?.executorAddress));async function n(s,o,r){const i=t.filter(c=>c.chainIds.includes(o));if(i.length===0)throw new g.SpiceflowError("NO_SWAP_ROUTE",`No exact-output venue supports chain ${o}`,{chainId:o,tokenIn:s.tokenIn,tokenOut:s.tokenOut});const l=(await Promise.allSettled(i.map(async c=>({venue:c,quote:await c.resolve(s,o,r)})))).filter(c=>c.status==="fulfilled").map(c=>c.value).filter(c=>c.quote!==null);if(l.length===0)throw new g.SpiceflowError("NO_SWAP_ROUTE",`All aggregators failed for ${s.tokenIn} \u2192 ${s.tokenOut} on chain ${o}`,{chainId:o,tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountOut:s.amountOut.toString()});const u=l.find(c=>c.venue.preferred);return u?u.quote:(l.sort((c,f)=>c.quote.amountIn<f.quote.amountIn?-1:c.quote.amountIn>f.quote.amountIn?1:0),l[0].quote)}return{getQuote:n,venues:t}}function rr(e,t,n){return sr({executorAddress:n,aerodrome:!1,oneInch:e?.includeDefaults===!1?{chainIds:[]}:void 0,customVenues:t})}const Si=Yn(),Ku=rr(void 0,Si.input);async function Yu(e){const t=await(e.liquidityVenues||e.executorAddress?rr(e.liquidityVenues,Yn(e.liquidityVenues).input,e.executorAddress):Ku).resolveSwap({type:"swap",tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountIn:e.amountIn,maxSlippage:e.maxSlippage},e.chainId,e.recipient);if(!t)throw new Error("No liquidity for this pair.");return t}function Ys(e){const{direction:t,selectedAsset:n,destinationToken:s,chainId:o,recipient:r,executorAddress:i,fixedInputToken:l,paymentAmount:u,maxSlippage:c,refreshIntervalMs:f,resolveInputSwap:p,resolveExactOutputSwap:m}=e,h=d.useContext(g.SpiceFlowProviderContext)?.liquidityVenues,[x,y]=d.useState(!1),[b,w]=d.useState(null),[C,S]=d.useState(null),[k,v]=d.useState(null),[F,T]=d.useState(null),[B,j]=d.useState(null),[E,R]=d.useState(null),[D,O]=d.useState(null),[H,U]=d.useState(null),[V,Y]=d.useState(null),[N,L]=d.useState(null),[z,G]=d.useState(0),[Z,W]=d.useState(null),[q,M]=d.useState(null),se=d.useRef(null),de=d.useRef(null),ae=d.useRef(0),ne=d.useRef(new Map),ce=d.useCallback(()=>{ae.current++,ne.current.clear(),M(null),G(Ae=>Ae+1)},[]),ue=f&&f>0?f:null,$=h?JSON.stringify(h):"",ve=d.useMemo(()=>h?Yn(h):Si,[$]),P=d.useMemo(()=>rr(h,ve.input,i),[ve,i]),oe=d.useMemo(()=>Ks({executorAddress:i,customVenues:[...m?[{name:"consumer-exact-output",chainIds:[o],preferred:!0,resolve:m}]:[],...ve.output]}),[m,o,ve,i]);d.useEffect(()=>{ne.current.clear()},[P,oe,p]);const fe=d.useMemo(()=>n?.asset?l||Lt(n.asset,o):null,[n?.asset,o,l]),_=d.useMemo(()=>n?.asset?l?[l]:zn(n.asset,o):[],[n?.asset,o,l]),Q=d.useMemo(()=>_.map(Ae=>Ae.toLowerCase()).join(","),[_]),ee=JSON.stringify([n?.asset.address,n?.asset.chainId,n?.asset.decimals,n?.amount,o,Q,l?.toLowerCase(),t,u]);d.useEffect(()=>{let Ae=!1;if(de.current&&(clearTimeout(de.current),de.current=null),!n?.asset||_.length<=1){Y(null),L(null);return}return de.current=setTimeout(async()=>{const tt=t==="input"?n.amount:u||"0";let Ye=0n;try{Ye=t==="input"?I.parseUnits(tt,n.asset.decimals):0n}catch{Ye=0n}try{const ct=await To(n.asset,o,{requiredAmount:Ye,requiredAmountDecimals:n.asset.decimals});Ae||(Y(ct),L(ee))}catch{Ae||Y(null)}},400),()=>{Ae=!0,de.current&&(clearTimeout(de.current),de.current=null)}},[ee]);const he=d.useMemo(()=>(N===ee?V:null)??fe,[V,N,ee,fe]),X=d.useMemo(()=>!n?.asset||!he?[]:[he,..._.filter(Ae=>Ae.toLowerCase()!==he.toLowerCase())],[n?.asset,he,_]),Se=d.useMemo(()=>!n?.asset||!is(n.asset.address,n.asset.chainId,s.address,s.chainId)||!he?!1:g.addressesEqual(A.normalizeNativeTokenAddress(he),A.normalizeNativeTokenAddress(s.address)),[n,s.address,s.chainId,he]),Je=he?g.addressesEqual(A.normalizeNativeTokenAddress(he),A.normalizeNativeTokenAddress(s.address)):!1,we=t==="output"&&parseFloat(u||"0")===0,lt=!!n?.asset&&!Se&&!Je&&!we,Pe=JSON.stringify([$,t,lt,n?.asset.address,n?.asset.chainId,n?.asset.decimals,t==="input"?n?.amount:u,X.map(Ae=>Ae.toLowerCase()),o,s.address.toLowerCase(),s.chainId,s.decimals,r?.toLowerCase(),i?.toLowerCase(),l?.toLowerCase(),c,ue]),We=d.useMemo(()=>({}),[Pe,P,oe,p,z]),$e=q?.request===We&&(!ue||q.expiresAt>Date.now());return d.useEffect(()=>{if(!ue||q?.request!==We)return;const Ae=setTimeout(ce,Math.max(0,q.expiresAt-Date.now()));return()=>clearTimeout(Ae)},[ue,q,We,ce]),d.useEffect(()=>{se.current&&clearTimeout(se.current),W(We),M(null),w(null);const Ae=t==="input"?n?.amount:u,tt=parseFloat(Ae||"0");if(!lt||!Number.isFinite(tt)||tt<=0||!n?.asset||!r||X.length===0){ae.current++,S(null),v(null),T(null),j(null),R(null),O(null),w(null),y(!1);return}const Ye=n.asset.decimals;let ct;try{ct=t==="input"?I.parseUnits(n.amount,Ye):I.parseUnits(u||"0",s.decimals)}catch{ae.current++,w("Invalid amount"),y(!1);return}const nt=++ae.current,ut=()=>nt!==ae.current,De=Be=>n.asset.chainId===o&&g.addressesEqual(n.asset.address,Be)?Promise.resolve(Ye):g.getTokenDecimals(o,Be);y(!0);const yt=l?0:t==="output"?150:400,dt=async(Be,Ge,Oe)=>{for(const ge of X){const ye=`${$}:${t}:${o}:${ge.toLowerCase()}:${s.address.toLowerCase()}:${Ye}:${ct.toString()}:${r.toLowerCase()}:${i?.toLowerCase()??"recipient"}:${c??"default"}:${ue??"default"}`,Ne=ne.current.get(ye),ie=Ne&&Ne.expiresAt>Date.now()?Be(Ne):void 0;if(ie)return{quote:ie,tokenIn:ge,expiresAt:Ne.expiresAt};const Ue=await Oe(ge);if(ut())return"stale";if(!Ue)continue;const Me=Date.now()+Math.min(ue??3e4,3e4);return ne.current.set(ye,{expiresAt:Me,direction:t,...Ge(Ue)}),{quote:Ue,tokenIn:ge,expiresAt:Me}}return null};return se.current=setTimeout(async()=>{try{if(t==="input"){let Be=!1;const Ge=await dt(ge=>ge.resolvedSwap&&ge.inputAmount!==void 0?{swap:ge.resolvedSwap,inputAmount:ge.inputAmount}:void 0,ge=>({resolvedSwap:ge.swap,inputAmount:ge.inputAmount}),async ge=>{const ye=Et(ct,Ye,await De(ge),"floor");if(ut()||ye<=0n)return null;Be=!0;const Ne={type:"swap",tokenIn:ge,tokenOut:s.address,amountIn:ye,maxSlippage:c};if(p){const Ue=await p(Ne,o,r);if(Ue)return{swap:Ue,inputAmount:ye}}const ie=await P.resolveSwap(Ne,o,r);return ie?{swap:ie,inputAmount:ye}:null});if(Ge==="stale"||ut())return;if(!Ge)throw new Error(Be?"No liquidity for this pair":"Amount is below the destination token's precision");U(Ge.quote.inputAmount),O(Ge.tokenIn),M({request:We,key:`${Pe}:${nt}`,expiresAt:Ge.expiresAt}),R(Ge.quote.swap.amountOut),T(Ge.quote.swap),j(null);const Oe=parseFloat(I.formatUnits(Ge.quote.swap.amountOut,s.decimals));S(Oe<.01?Oe.toPrecision(4):Oe.toLocaleString(void 0,{maximumFractionDigits:6})),v(null),w(null)}else{const Be=await dt(Oe=>Oe.exactOutputSwap,Oe=>({exactOutputSwap:Oe}),async Oe=>{try{return await oe.getQuote({tokenIn:Oe,tokenOut:s.address,amountOut:ct,maxSlippage:c},o,r)}catch{return null}});if(Be==="stale"||ut())return;if(!Be)throw new Error("No liquidity for this pair");const Ge=await De(Be.tokenIn);if(ut())return;O(Be.tokenIn),M({request:We,key:`${Pe}:${nt}`,expiresAt:Be.expiresAt}),j(Be.quote),T(null),R(null),v(I.formatUnits(Be.quote.amountIn,Ge)),S(null),w(null)}}catch(Be){if(ut())return;const Ge=Be instanceof Error?Be.message:"Failed to get quote";w(Ge),S(null),v(null),T(null),j(null),R(null),O(null)}finally{ut()||y(!1)}},yt),()=>{ae.current++,se.current&&clearTimeout(se.current)}},[We]),{inputAmount:$e&&t==="input"?H:null,quoteKey:$e?q.key:null,quoteExpiresAt:$e?q.expiresAt:null,refreshQuote:ce,isQuoting:Z===We?x:lt,quoteError:Z===We?b:null,estimatedOutput:$e?C:null,estimatedInput:$e?k:null,resolvedSwap:$e?F:null,exactOutputSwap:$e?B:null,quoteAmountOut:$e?E:null,resolvedTokenIn:lt&&$e?D??he:he,isDirect:Je,needsSwap:lt,selectedIsEquivalent:Se}}function Gu(e){const t=d.useContext(g.SpiceFlowProviderContext)?.rpcOverrides?.[e.lockChainId],n=e.selectedAsset?.asset,s=n?._source,[o,r]=d.useState(0),i=e.enabled&&n&&e.destinationTokenAddress?JSON.stringify([n.address.toLowerCase(),n.chainId,n.decimals,n.symbol,n.name,n.receiptTokenName,n.displaySymbol,n.displayName,n.isUniversal,s,n.chainTokens,e.lockChainId,e.destinationTokenAddress.toLowerCase(),o]):null,[l,u]=d.useState(null),[c,f]=d.useState(null);d.useEffect(()=>{if(!i||!n||!e.destinationTokenAddress||!t?.trim())return;const k=e.destinationTokenAddress;let v=!1;return f(null),(async()=>{try{if(await Promise.resolve(),v)return;if(s==="wallet"&&n.chainId!==e.lockChainId)throw new Error("Select a wallet asset on the lock chain.");const F=s==="wallet"?n.address:await To(n,e.lockChainId);if(v)return;if(!F)throw new Error(`This asset cannot be delivered on ${g.getChainName(e.lockChainId)}.`);const T=A.normalizeNativeTokenAddress(F),[B,j]=await Promise.all([g.getTokenDecimals(e.lockChainId,T),g.getTokenDecimals(e.lockChainId,k)]);v||u(E=>({key:i,rpcUrl:t,inputToken:T,inputDecimals:B,outputDecimals:j,generation:(E?.generation??0)+1}))}catch(F){v||f({key:i,message:F instanceof Error?F.message:"Unable to read lock token metadata. Please retry."})}})(),()=>{v=!0}},[i,t]);const p=l?.key===i&&l.rpcUrl===t?l:null,m=d.useMemo(()=>{if(!p||!n||!e.selectedAsset?.amount)return null;try{if((e.selectedAsset.amount.split(".")[1]?.replace(/0+$/,"")??"").length>n.decimals)return{error:`Use at most ${n.decimals} decimal places for this lock source.`};const k=I.parseUnits(e.selectedAsset.amount,n.decimals);if(k<=0n)return null;const v=Et(k,n.decimals,p.inputDecimals,"floor");if(Et(v,p.inputDecimals,n.decimals,"floor")!==k)return{error:`Use at most ${p.inputDecimals} decimal places for this lock source.`};const F={address:p.inputToken,decimals:p.inputDecimals,chainId:e.lockChainId,symbol:n.symbol,name:n.name,isNative:A.isNativeToken(p.inputToken),balance:0n,balanceFormatted:0,balanceUsd:0};return{amount:v,selected:{asset:F,amount:I.formatUnits(v,p.inputDecimals)}}}catch{return{error:"Enter a valid amount."}}},[p,n,e.selectedAsset?.amount,e.lockChainId]),h=d.useMemo(()=>p&&e.destinationTokenAddress?{address:e.destinationTokenAddress,chainId:e.lockChainId,decimals:p.outputDecimals,symbol:e.lockTokenSymbol,name:e.lockTokenSymbol,logoURI:e.lockTokenLogoURI,isNative:A.isNativeToken(e.destinationTokenAddress),balance:0n,balanceFormatted:0,balanceUsd:0}:null,[p,e.destinationTokenAddress,e.lockChainId,e.lockTokenSymbol,e.lockTokenLogoURI]),x=Ys({direction:"input",selectedAsset:e.enabled?m?.selected??null:null,destinationToken:h?{...h,address:A.normalizeNativeTokenAddress(h.address)}:{address:A.ZERO_ADDRESS,decimals:0,symbol:e.lockTokenSymbol,chainId:e.lockChainId},chainId:e.lockChainId,recipient:e.recipient,maxSlippage:.01,refreshIntervalMs:3e4}),y=d.useCallback(()=>{x.refreshQuote(),r(k=>k+1)},[x.refreshQuote]),b=!!p&&!!h&&!g.addressesEqual(p.inputToken,A.normalizeNativeTokenAddress(h.address)),w=b?x.resolvedSwap?.amountOutMinimum:m?.amount,C=e.enabled&&p&&m?.selected&&h&&e.recipient&&w!==void 0&&w>0n&&(!b||x.quoteKey)?{input:m.selected.asset,amountIn:m.amount,output:h,minimum:w,swap:b?x.resolvedSwap:null,key:`${i}:${p.generation}:${e.selectedAsset?.amount}:${e.recipient.toLowerCase()}:${b?x.quoteKey:"direct"}`,expiresAt:b?x.quoteExpiresAt:null}:null,S=e.enabled?t?.trim()?c?.key===i?c.message:m?.error??x.quoteError??(w!==void 0&&w<=0n?"The swap output is too small to lock. Increase the amount.":null):`Configure SpiceFlowProvider rpcOverrides[${e.lockChainId}] for ${g.getChainName(e.lockChainId)} before locking.`:null;return{conversion:C,error:S,retryQuote:y,isQuoting:e.enabled&&!!n&&!!e.recipient&&Number(e.selectedAsset?.amount)>0&&!C&&!S}}const Zu=({options:e,selectedIndex:t,onSelect:n,primaryColor:s,dark:o=!1,textPrimary:r="#111827",textSecondary:i="#6b7280",trackColor:l})=>{const u=e.length-1,c=l||(o?"#3a3a3a":"#d1d5db"),f=o?"4px":"50%",p=o?"none":"2px solid white",m=o?"none":`0 0 0 1px ${s}`;return a.jsxs("div",{style:{width:"100%",userSelect:"none"},children:[a.jsxs("div",{style:{position:"relative",paddingBottom:"4px"},children:[a.jsx("div",{style:{position:"absolute",top:"50%",left:0,right:0,height:"4px",background:c,borderRadius:"2px",transform:"translateY(-50%)",pointerEvents:"none"}}),a.jsx("div",{style:{position:"absolute",top:"50%",left:0,width:`${t/u*100}%`,height:"4px",background:s,borderRadius:"2px",transform:"translateY(-50%)",pointerEvents:"none",transition:"width 0.15s ease"}}),a.jsx("input",{type:"range","aria-label":"Lock duration","aria-valuetext":e[t]?.label,"data-spiceflow-focus":!0,min:0,max:u,step:1,value:t,onChange:h=>n(Number(h.target.value)),style:{WebkitAppearance:"none",appearance:"none",width:"100%",height:"20px",background:"transparent",cursor:"pointer",outline:"none",border:"none",position:"relative",zIndex:1,margin:0,padding:0}})]}),a.jsx("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"6px"},children:e.map((h,x)=>a.jsxs("div",{onClick:()=>n(x),style:{display:"flex",flexDirection:"column",alignItems:x===0?"flex-start":x===u?"flex-end":"center",cursor:"pointer",flex:1},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:x===t?700:400,color:x===t?r:i,whiteSpace:"nowrap",transition:"color 0.15s, font-weight 0.15s"},children:h.label}),h.highlight&&a.jsx("span",{style:{fontSize:"10px",color:i,whiteSpace:"nowrap"},children:"(most common)"})]},x))}),a.jsx("style",{children:`
43
+ `,Yi=({title:e,showChevron:t,expanded:n,onToggleDetails:s,showClose:o,onClose:r,fontFamily:i,labelColor:l,textPrimary:d,closeHoverBg:c,closePressedBg:m})=>{const[p,f]=u.useState(!1),[h,x]=u.useState(!1);return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"16px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:s?"pointer":"default"},onClick:s,children:[a.jsxs("span",{style:{fontSize:"13px",fontWeight:500,color:l,fontFamily:i},children:[e," "]}),t&&a.jsx(Bn,{color:l,direction:n?"up":"down"})]}),o&&a.jsx("button",{onClick:r,onMouseEnter:()=>f(!0),onMouseLeave:()=>{f(!1),x(!1)},onMouseDown:()=>x(!0),onMouseUp:()=>x(!1),style:{background:h?m:p?c:"none",border:"none",borderRadius:"4px",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:p||h?d:l,transform:h?"scale(0.9)":p?"scale(1.1)":"scale(1)",transition:g.transition.interactive},children:a.jsx(rs,{size:16})})]})},Gi=({chainName:e,bg:t,border:n,textPrimary:s,labelColor:o,primaryColor:r})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"20px 16px",borderRadius:"8px",backgroundColor:t,border:`1px solid ${n}`,gap:"12px"},children:[a.jsx(g.Spinner,{size:24,borderWidth:3,color:r}),a.jsxs("div",{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontWeight:600,fontFamily:g.font.mono,letterSpacing:"0.5px",color:s},children:"PROCESSING TRANSACTION"}),a.jsxs("p",{style:{margin:"2px 0 0 0",fontSize:"12px",color:o},children:["on ",e]})]})]}),Zi=({bg:e,border:t,left:n,right:s})=>a.jsxs("div",{style:{padding:"10px 12px",borderRadius:"6px",backgroundColor:e,border:`1px solid ${t}`,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[n,s]}),hr=({isOpen:e,onClose:t,onComplete:n,closeOnComplete:s=!1,type:o,results:r,chainId:i,chainName:l,explorerUrl:d,theme:c,styles:m,dark:p,intentStatus:f,onRetry:h,onNewTx:x,onRetryTx:b,asOverlay:y=!0,isProcessing:w=!1,showStepBreakdown:S=!0})=>{const{theme:v,primaryColor:k,dark:C,dk:E}=g.useSpiceBrand(m,p),F=c||v,[B,j]=u.useState(!1),T=l??(i?g.getChainName(i):"Network"),R=d??(i&&g.getExplorerUrl(i,"").replace(/\/tx\/.*$/,"")||void 0),D=C?E.cardBg:"#ffffff",M=C?"0 4px 20px rgba(0, 0, 0, 0.4)":"0 4px 20px rgba(0, 0, 0, 0.1)",W=C?"0 -4px 8px -2px rgba(0, 0, 0, 0.4)":"0 -4px 8px -2px rgba(0, 0, 0, 0.15)",q=E.textSecondary,z=C?E.textPrimary:"#374151",X=C?E.inputBg:"#f9fafb",N=C?E.inputBorder:"#e5e7eb",H=C?E.inputBg:"#f3f4f6",V=C?E.inputBorder:"#e5e7eb",[G,J]=u.useState(!0),U=C?E.inputBg:"#f9fafb",L=C?E.hoverBg:"#f3f4f6",O=C?{successBg:E.successBg,successBorder:E.successBorder,successText:E.successText,errorBg:E.errorBg,errorBorder:E.errorBorder,errorText:E.errorText}:{},ee=f?.steps.find(_=>_.status==="failed")?.error;u.useEffect(()=>{!e&&!f&&j(!1)},[e,f]);const ue=()=>{j(!0),setTimeout(()=>{window.dispatchEvent(new CustomEvent("tx-complete",{detail:{type:o,results:r}})),window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:{type:o,status:"success",results:r}})),n?.(),s&&t()},300)},re=()=>{J(!G)};if(f){const{steps:_,overallStatus:Ce}=f,P=Ce==="processing",ae=Ce==="success",he=Ce==="failed",ne=_.filter($=>$.transactionHash)[0],Q=_.length>1?_.map($=>$.chainName).filter(Boolean).join(" and "):T!=="Network"?T:_[0]?.chainName||T,te=R||(ne?g.getExplorerUrl(ne.chainId,ne.transactionHash||"").replace(/\/tx\/.*$/,""):void 0),be=a.jsxs(a.Fragment,{children:[a.jsx(Yi,{title:P?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:S,expanded:G,onToggleDetails:re,showClose:!P,onClose:t,fontFamily:m?.fontFamily||F.typography.fontFamily,labelColor:q,textPrimary:z,closeHoverBg:U,closePressedBg:L}),a.jsx("div",{style:{marginBottom:"16px"},children:P?a.jsx(Gi,{chainName:Q,bg:H,border:V,textPrimary:z,labelColor:q,primaryColor:k}):a.jsx(Qi,{isSuccess:ae,type:o,chainName:Q,explorerUrl:te,txHash:ne?.transactionHash,dark:C,...O,textSecondary:q})}),S&&a.jsx("div",{style:{overflow:"hidden",maxHeight:G?"300px":"0px",opacity:G?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:G?"16px":"0"},children:a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:_.map(($,Se)=>{const ct=$.transactionHash?g.getExplorerUrl($.chainId,$.transactionHash):null;return a.jsx(Zi,{bg:X,border:N,left:a.jsx("span",{style:{fontSize:"13px",color:z},children:$.chainName?`On ${$.chainName}`:$.description||`Step ${Se+1}`}),right:a.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:$.status==="success"?"#10b981":$.status==="failed"?"#ef4444":q,fontWeight:500},children:[ct&&a.jsx("a",{href:ct,target:"_blank",rel:"noopener noreferrer",style:{color:C?E.infoText:"#2563eb",textDecoration:"none"},onClick:xe=>xe.stopPropagation(),children:"View"}),$.status==="success"?"\u2713":$.status==="failed"?"\u2717":"\u25CB"]})},Se)})})}),!P&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[he&&h&&a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:h,theme:F,styles:m,dark:C,children:"TRY AGAIN"}),x&&a.jsxs(g.Button,{variant:"outline",fullWidth:!0,onClick:x,theme:F,styles:m,dark:C,children:["NEW ",o.toUpperCase()," \u2192"]})]})]});return y?a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:B?"slideDown 0.3s ease-in forwards":"slideUp 0.3s ease-out forwards",pointerEvents:"auto"},children:[a.jsx("div",{style:{backgroundColor:D,borderRadius:"12px 12px 0 0",width:"100%",padding:"18px 24px 24px",boxShadow:W},children:be}),a.jsx("style",{children:Ki})]}):a.jsx("div",{style:{backgroundColor:D,borderRadius:"12px",padding:"24px",width:"100%",boxShadow:M},children:be})}if(!e&&!w||!w&&(!r||r.length===0))return null;const se=r?r.every(_=>_.success):!1,ie=r?.[0],ce=[...r??[]].reverse().find(_=>_.txHash)?.txHash||ie?.txHash;return a.jsxs("div",{style:{position:y?"absolute":"relative",bottom:y?0:void 0,left:y?0:void 0,right:y?0:void 0,zIndex:y?10:void 0,animation:y?B?"slideDown 0.3s ease-in forwards":"slideUp 0.3s ease-out forwards":void 0,pointerEvents:"auto",width:"100%"},children:[a.jsx("div",{style:{backgroundColor:D,borderRadius:y?"12px 12px 0 0":"12px",width:"100%",padding:"18px 0 24px",boxShadow:y?W:M},children:a.jsxs("div",{style:{width:"100%",boxSizing:"border-box",padding:"0 24px"},children:[a.jsx(Yi,{title:w?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:!w&&S,expanded:G,onToggleDetails:w?void 0:re,showClose:!w,onClose:t,fontFamily:m?.fontFamily||F.typography.fontFamily,labelColor:q,textPrimary:z,closeHoverBg:U,closePressedBg:L}),a.jsx("div",{style:{marginBottom:"16px",animation:"statusFadeIn 220ms cubic-bezier(0.22, 1, 0.36, 1) both"},children:w?a.jsx(Gi,{chainName:T,bg:H,border:V,textPrimary:z,labelColor:q,primaryColor:k}):a.jsx(Qi,{isSuccess:se,type:o,chainName:T,explorerUrl:R,txHash:ce,dark:C,...O,textSecondary:q})},w?"processing":se?"success":"error"),!w&&S&&r&&r.length>1&&a.jsx("div",{style:{overflow:"hidden",maxHeight:G?"200px":"0px",opacity:G?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:G?"16px":"0"},children:a.jsx("div",{style:{maxHeight:"180px",overflowY:"auto",display:"flex",flexDirection:"column",gap:"8px"},children:r.map((_,Ce)=>a.jsx(Zi,{bg:X,border:N,left:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{fontWeight:600,fontSize:"13px",color:E.textPrimary,fontFamily:g.font.mono},children:_.asset.symbol}),_.amount&&a.jsx("span",{style:{fontSize:"12px",color:q},children:_.amount})]}),right:a.jsx("span",{style:{fontSize:"12px",color:_.success?"#10b981":"#ef4444",fontWeight:500},children:_.success?"\u2713":"\u2717"})},Ce))})}),!w&&!se&&r&&a.jsx("div",{style:{padding:"12px",backgroundColor:E.errorBg,border:`1px solid ${E.errorBorder}`,borderRadius:"8px",marginBottom:"16px"},children:a.jsx("p",{style:{fontSize:"13px",color:E.errorText,margin:0,lineHeight:1.5},children:ee||r.find(_=>!_.success)?.error||`${o.charAt(0).toUpperCase()+o.slice(1)} failed. Please try again.`})}),!w&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[!se&&b&&a.jsxs(g.Button,{variant:"outline",fullWidth:!0,onClick:b,theme:F,styles:m,dark:C,children:["TRY AGAIN ",o.toUpperCase()]}),se&&a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:ue,theme:F,styles:m,dark:C,children:"DONE"})]})]})}),a.jsx("style",{children:Ki})]})};function _s(e){if(/user rejected|user denied|user cancelled|transaction was rejected/i.test(e))return"Transaction cancelled. You can try again.";if(/wallet timeout|wallet request timed out/i.test(e))return"The wallet request timed out. Try again when your wallet is ready.";if(/over rate limit|rate limit exceeded|HTTP request failed/i.test(e))return"The network is temporarily unavailable. Wait for a fresh fee estimate, then retry.";const t=e.split(/\n\s*\n|\n(?:URL|Request body|Raw Call Arguments|Contract Call|Estimate Gas Arguments|Details|Version):/,1)[0].trim();return/unknown RPC error|0x[0-9a-f]{40,}|https?:\/\//i.test(t)?"The withdrawal could not complete. Check your wallet and try again.":t}const tp={usdc:1,"usdc.e":1,usdt:1,dai:1,ctusd:1,wbtc:1e5,wcbtc:1e5,cbtc:1e5};function gr(e,t){return I.formatUnits(e,t).replace(/(\.\d*?[1-9])0+$|\.0+$/,"$1")}function Xi(e,t,n){return Bt(e,t,n,"floor")}function Ji(e,t){const n=t?tp[t.trim().toLowerCase()]??0:0,s=e*n;return s<=0?"$0":s>=1?`$${s.toFixed(3).replace(/0+$/,"").replace(/\.$/,"")}`:`$${s.toFixed(4).replace(/0+$/,"").replace(/\.$/,"")}`}function np(e,t){return t?JSON.stringify({tokenAddress:t.toLowerCase(),batches:e.map(n=>({chainId:n.chainId,calls:n.calls.map(s=>({to:s.to.toLowerCase(),value:s.value.toString(),data:s.data})),tokenTransfers:(n.tokenTransfers??[]).map(s=>({from:s.from,to:s.to.toLowerCase(),token:s.token.toLowerCase(),amount:s.amount.toString()}))}))}):null}function sp(e){const t=e.find(n=>A.isSpicenetChainId(n.chainId))?.calls?.[0]?.data;if(!t)return null;try{const n=I.decodeFunctionData({abi:A.spicenetAbi,data:t});return n.functionName!=="createWithdrawalRequest"?null:n.args[0].transfers.map(s=>({token:s.token,recipient:s.to,amount:s.amount}))}catch{return null}}function op(e,t){return!e||e.length!==t.length?!1:e.every((n,s)=>{const o=t[s];return n.token.toLowerCase()!==o.token.toLowerCase()||n.recipient.toLowerCase()!==o.recipient.toLowerCase()?!1:n.recipient.toLowerCase()===A.SPICE_GAS_FEE_RECIPIENT.toLowerCase()?Nn(n.amount,o.amount,100n):n.amount===o.amount})}function rp(e,t){const n=e.intents.flatMap(r=>r.batches).filter(r=>{const i=an(r);return BigInt(r.quotedAmount)>0n||BigInt(r.totalDebit)>0n||i.totalFee>0n}),s=n.filter(r=>r.chainId===t),o=s.length>0?s:n;return o.length===1?o[0]:null}function ap(e){const t=new Map;for(const n of e){if(n.amount<=0n)continue;const s=n.token.toLowerCase(),o=n.recipient.toLowerCase(),r=`${s}:${o}`,i=t.get(r);i?i.amount+=n.amount:t.set(r,{...n})}return[...t.values()]}function $i(e,t){if(!e.token||!e.recipient||e.chainId===null)return null;const n=rp(t,e.chainId);if(!n)return null;const{gasFee:s,bridgeFee:o,spicenetFee:r}=an(n),i=s+o,l=[{token:e.token.address,recipient:e.recipient,amount:e.receiveAmountRaw}];return i>0n&&l.push({token:e.token.address,recipient:A.SPICE_GAS_FEE_RECIPIENT,amount:i}),r>0n&&l.push({token:e.token.address,recipient:A.SPICE_PLATFORM_FEE_RECIPIENT,amount:r}),ap(l)}function ip(e,t,n){const s=$i(e,t);return!s||op(sp(n),s)?null:e.buildWithdrawBatches(s)}async function _i(e){if(!(!e.batches.length||!e.walletAddress||!e.recipient)){e.ui.setIsExecuting(!0),e.ui.setExecutionError(null),e.ui.setExecutionProgress(null),e.executionContextRef.current=null,e.ui.setLockedGasFee(e.gasFee);try{let t=e.batches;if(e.isNon7702&&e.onWithdrawExecute)await e.onWithdrawExecute(e.amount);else{if(!e.isNon7702&&!t.some(o=>A.isSpicenetChainId(o.chainId)))throw new Error("Spice withdrawals must include a Spicenet funding batch before the destination chain batch.");const n=e.token?.address||"",s={useCustomTransfers:!0};if(e.buildSpicenetBatch){const o=e.feeEstimate??await e.execution.estimate(t,n,0n,s),r=$i(e,o);r&&(t=e.buildWithdrawBatches(r));const i=o.intents[0]?.batches.find(l=>l.chainId===e.chainId)??o.intents[0]?.batches[0]??null;i&&e.ui.setLockedGasFee(an(i).totalFee)}else{const o=(e.feeEstimate??await e.execution.estimate(t,n,0n,s)).intents[0]?.batches[0]??null;o&&e.ui.setLockedGasFee(an(o).totalFee)}await e.execution.execute(t,n,0n,o=>{o.actionId&&o.intentId&&typeof o.intentIndex=="number"&&typeof o.totalSteps=="number"&&(e.executionContextRef.current={actionId:o.actionId,intentId:o.intentId,intentIndex:o.intentIndex,totalSteps:o.totalSteps}),e.ui.setExecutionProgress(o)},void 0,e.buildSpicenetBatch?{...s,adjustBatchesForEstimate:({feeEstimate:o,chainBatches:r})=>ip(e,o,r)}:{...s,skipPreSubmitFeeEstimate:!0})}el(e)}catch(t){const n=t instanceof Error?t.message:"Withdraw failed";e.ui.setExecutionError(n)}finally{e.ui.setIsExecuting(!1)}}}function el(e){window.dispatchEvent(new CustomEvent("withdraw-completed")),e.onWithdrawSuccess?.({token:e.token?.symbol||"",amount:e.amount,chainId:e.chainId})}async function lp(e){const t=e.executionContextRef.current;if(!t){e.ui.setExecutionProgress(null),await _i(e);return}e.ui.setIsExecuting(!0),e.ui.setExecutionError(null),e.ui.setExecutionProgress({step:"executing",message:"Resuming existing action...",actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps});try{let n=t.totalSteps;for(let s=0;s<t.totalSteps;s++)if((await g.relayerService.checkStepStatus(t.intentId,s)).data.status!=="success"){n=s;break}if(n>=t.totalSteps)e.ui.setExecutionProgress(s=>({...s||{step:"success",message:"Transaction successful!",actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps},step:"success",message:"Transaction successful!"}));else for(let s=n;s<t.totalSteps;s++){const o=await sa({actionId:t.actionId,intentIndex:t.intentIndex,intentId:t.intentId,stepIndex:s,chainId:e.chainId??void 0,onStatusMessage:(r,i)=>{e.isMountedRef.current&&e.ui.setExecutionProgress({step:"executing",message:r,txHash:i,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}});if(!e.isMountedRef.current)return;e.ui.setExecutionProgress({step:s===t.totalSteps-1?"success":"executing",message:s===t.totalSteps-1?"Transaction successful!":"Executing remaining steps...",txHash:o,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}el(e)}catch(n){const s=n instanceof Error?n.message:"Withdraw failed";e.ui.setExecutionError(s)}finally{e.ui.setIsExecuting(!1)}}async function cp(e){const t=await e.estimate(e.batches,e.tokenAddress,0n,{useCustomTransfers:!0,signal:e.signal}),n=t.intents.flatMap(o=>o.batches).filter(o=>an(o).totalFee>0n),s=n.filter(o=>o.chainId===e.chainId)[0]??n[0]??t.intents[0]?.batches[0];if(!s)throw new Error("No gas fee estimate was returned for this withdraw.");return{gasFee:an(s).totalFee,feeEstimate:t}}const tl=g.font.mono,nl=g.font.ui,dp=({show:e,position:t,popoverRef:n,spiceAssets:s,dark:o,dk:r})=>{if(!e||!t)return null;const i=o?r.textSecondary:"#71757A",l=o?r.textPrimary:"#0E0D0B",d=s||[];return a.jsxs("div",{ref:n,"data-balance-popover":!0,style:{position:"fixed",top:`${t.top}px`,left:`${t.left}px`,width:"220px",background:o?r.cardBg:"#FFFFFF",border:`1px solid ${o?r.cardBorder:"#D6D6D6"}`,borderRadius:"10px",boxShadow:o?"0 12px 32px rgba(0,0,0,0.32)":"0 12px 28px rgba(15, 23, 42, 0.14)",padding:"10px",zIndex:40},children:[a.jsx("div",{style:{fontFamily:tl,fontSize:"11px",letterSpacing:"0.05em",color:i,marginBottom:"8px"},children:"ALL BALANCES"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:d.length>0?d.map(c=>{const m=c.displaySymbol||c.receiptTokenName||c.symbol;return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",padding:"6px 0"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0},children:[c.logoURI?a.jsx("img",{src:c.logoURI,alt:m,style:{width:"18px",height:"18px",borderRadius:"50%",flexShrink:0}}):a.jsx("div",{style:{width:"18px",height:"18px",borderRadius:"50%",border:`1px solid ${o?r.cardBorder:"#C8C8C8"}`,flexShrink:0}}),a.jsx("span",{style:{fontFamily:nl,fontSize:"13px",color:l,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:m})]}),a.jsx("span",{style:{fontFamily:tl,fontSize:"12px",color:l,flexShrink:0},children:g.formatBalance(c.balanceFormatted)})]},c.receiptTokenId||`${c._source}:${c.chainId}:${c.address}`)}):a.jsx("span",{style:{fontFamily:nl,fontSize:"13px",color:i},children:"No balances"})})]})},up=g.font.ui,En=g.font.mono,pp=({show:e,onToggle:t,showCustomAddress:n,setShowCustomAddress:s,customRecipient:o,setCustomRecipient:r,externalAddress:i,recipientAddress:l,destChainName:d,destChainLogo:c,compatibleDestinationChains:m,txDetailsChainSwitchRef:p,onOpenNetworkPopover:f,sourceChainLabel:h,sourceDetailsLogo:x,sourceTokenLabel:b,amount:y,totalSourceDebitDisplay:w,receiveAmountDisplay:S,destTokenSymbol:v,shouldQuoteWithdrawGas:k,estimatingFee:C,feeError:E,displayedGasFee:F,selectedDestToken:B,theme:j,styles:T,dark:R,dk:D})=>{const M=R?D.textSecondary:"#71757A",W=R?D.textPrimary:"#0E0D0B",q=m.length>1,z=n&&o?I.isAddress(o)?g.truncateAddress(o):o:l?g.truncateAddress(l):"\u2014";return a.jsxs(a.Fragment,{children:[a.jsxs("div",{onClick:t,style:{display:"flex",alignItems:"center",gap:"6px",marginBottom:e?"10px":"0",cursor:"pointer",userSelect:"none"},children:[a.jsx("span",{style:{fontSize:"13px",color:M,fontFamily:up,fontWeight:600},children:"Transaction Details"}),a.jsx(Pl,{size:12,color:M,style:{transform:e?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}})]}),e&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"7px"},children:[a.jsxs("div",{children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontSize:"12px",color:M,fontFamily:En,fontWeight:500,letterSpacing:"0.03em"},children:"TO"}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{fontSize:"13px",color:W,fontFamily:En,fontWeight:500},children:z}),a.jsx("button",{onClick:()=>{s(X=>!X),!n&&i&&r(i)},style:{background:"none",border:"none",cursor:"pointer",padding:"0",fontSize:"9.5px",fontFamily:En,color:M,textDecoration:"underline",fontWeight:600},children:n?"Reset":"Switch"})]})]}),n&&a.jsxs("div",{style:{marginTop:"6px"},children:[a.jsx("div",{style:{marginBottom:"6px",padding:"7px 9px",borderRadius:"6px",border:"1px solid rgba(239, 68, 68, 0.55)",backgroundColor:"rgba(239, 68, 68, 0.12)",color:"#ef4444",fontSize:"10px",lineHeight:1.35,fontFamily:En,fontWeight:700,letterSpacing:0,textTransform:"uppercase"},children:"CAUTION: ENTERING AN INCORRECT ADDRESS WILL RESULT IN LOSS OF FUNDS"}),a.jsx("input",{type:"text",autoComplete:"off",spellCheck:!1,"aria-label":"Recipient address","aria-invalid":o&&!I.isAddress(o)?!0:void 0,"data-spiceflow-focus":!0,value:o,onChange:X=>r(X.target.value),placeholder:"0x...",style:{width:"100%",padding:"8px 10px",borderRadius:"6px",border:`1px solid ${o&&!I.isAddress(o)?R?D.errorBorder:"#fca5a5":R?D.inputBorder:"#d1d5db"}`,backgroundColor:R?D.inputBg:"#f9fafb",color:R?D.inputText:"#111827",fontSize:"12px",fontFamily:En,outline:"none",boxSizing:"border-box"}}),o&&!I.isAddress(o)&&a.jsx("span",{style:{fontSize:"11px",color:D.errorText,marginTop:"3px",display:"block"},children:"Invalid address"})]})]}),a.jsx(bn,{palette:D,labelColor:M,valueColor:W,label:"RECEIVING CHAIN",value:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"7px"},children:[c&&a.jsx("img",{src:c,alt:d,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",color:W,fontWeight:500,fontFamily:En,textTransform:"uppercase"},children:d}),a.jsx("button",{ref:p,onClick:X=>{X.stopPropagation(),f(p.current)},style:{background:"none",border:"none",cursor:q?"pointer":"not-allowed",padding:"0",fontSize:"9.5px",fontFamily:En,color:M,textDecoration:"underline",fontWeight:600,opacity:q?1:.45},children:"Switch"})]})}),a.jsx(bn,{palette:D,labelColor:M,valueColor:W,label:"REQUESTED WITHDRAWAL",value:a.jsxs(xr,{logo:x||null,alt:h,primaryText:W,children:[y||"0"," ",b]})}),k&&a.jsx(bn,{palette:D,labelColor:M,valueColor:W,label:"TOTAL SOURCE DEBIT",value:a.jsxs(xr,{logo:x||null,alt:h,primaryText:W,children:[w," ",b]})}),a.jsx(bn,{palette:D,labelColor:M,valueColor:W,label:"YOU RECEIVE",value:a.jsxs(xr,{logo:c,alt:d,primaryText:W,gap:"4px",children:[S," ",v]})}),k&&a.jsxs(a.Fragment,{children:[a.jsx(bn,{palette:D,labelColor:M,label:"EST. NETWORK FEE",valueColor:E?"#f87171":W,value:C?"Estimating...":E?"Unavailable":F!==null&&B?`${gr(F,B.decimals)} ${B.symbol}`:"Estimating..."}),E&&a.jsx(yn,{variant:"error",size:"compact",palette:D,fontFamily:T?.fontFamily||j.typography.fontFamily,children:E})]})]})]})},fp=u.memo(pp),xr=({logo:e,alt:t,primaryText:n,gap:s="6px",children:o})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:s},children:[e&&a.jsx("img",{src:e,alt:t,style:{width:"13px",height:"13px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",color:n,fontWeight:500,fontFamily:En},children:o})]}),mp=({dark:e,dk:t})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:Lo,alt:"","aria-hidden":"true",style:{width:"13px",height:"13px",flexShrink:0,...e?{filter:"invert(0.6)"}:{}}}),a.jsx("p",{style:{fontSize:"13px",color:e?t.textSecondary:"#979AA0",margin:"0",lineHeight:"1.4",fontFamily:g.font.ui},children:"Withdraw collateral from your account to 10+ EVM blockchains."})]}),sl=g.font.ui,hp=({label:e,spiceAssetsLoading:t,totalSelectedBalance:n,onOpenBalancePopover:s,dark:o,dk:r})=>{const i=o?r.textSecondary:"#7D7C7B",l=o?r.textSecondary:"#71757A";return a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:sl,fontSize:"17px",fontWeight:500,color:i,lineHeight:"24px"},children:e}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontFamily:sl,fontSize:"13px",fontWeight:500,color:l,lineHeight:"16px"},children:["Balance:"," ",t?"...":g.formatBalance(n),a.jsx("button",{type:"button","data-balance-trigger":!0,onClick:d=>{d.stopPropagation(),s(d.currentTarget)},style:{width:"15px",height:"15px",borderRadius:"999px",border:"1px solid #EA4B4B",color:"#EA4B4B",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:"9px",fontWeight:500,lineHeight:1,boxSizing:"border-box",background:"transparent",padding:0,cursor:"pointer"},children:a.jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"1.5px"},children:[0,1,2].map(d=>a.jsx("span",{style:{width:"1.75px",height:"1.75px",borderRadius:"999px",backgroundColor:"#EA4B4B",display:"block"}},d))})})]})]})},ol=({isOpen:e,position:t,title:n,items:s,selectedId:o,onSelect:r,portalAttribute:i})=>{const{dark:l,dk:d,primaryColor:c}=g.useSpiceBrand(),[m,p]=u.useState(null),[f,h]=u.useState(!1);return u.useEffect(()=>{if(!e){h(!1);return}const x=requestAnimationFrame(()=>{requestAnimationFrame(()=>h(!0))});return()=>cancelAnimationFrame(x)},[e]),!e||!t||s.length===0?null:qn.createPortal(a.jsxs("div",{[`data-${i}-popover`]:"true",style:{position:"fixed",top:`${t.top}px`,left:`${t.left}px`,opacity:f?1:0,transform:f?"scale(1) translateY(0)":"scale(0.96) translateY(-6px)",transition:`opacity 200ms ${g.easing.out}, transform 200ms ${g.easing.out}`,backgroundColor:l?d.shell:"#ffffff",borderRadius:"10px",padding:"10px 12px",boxShadow:l?"0 16px 48px rgba(0,0,0,0.45)":"0 12px 32px rgba(0,0,0,0.12)",border:`1px solid ${d.cardBorder}`,minWidth:"220px",zIndex:g.z.dropdown,fontFamily:g.font.mono},children:[a.jsx("div",{style:{marginBottom:"6px"},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:l?d.textPrimary:"#0e0d0b",textTransform:"uppercase",letterSpacing:"1px"},children:n})}),a.jsx("div",{style:{borderBottom:`1px solid ${d.cardBorder}`,marginBottom:"6px"}}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:s.map(x=>{const b=o===x.id,y=m===x.id;return a.jsxs("button",{onClick:w=>{w.stopPropagation(),r(x.id)},onMouseEnter:()=>p(x.id),onMouseLeave:()=>p(null),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 4px",borderRadius:"8px",border:"none",cursor:"pointer",backgroundColor:b?l?d.hoverBg:"#f3f4f6":y?l?d.cardBg:"#f9fafb":"transparent",transition:"background-color 0.15s",width:"100%",fontFamily:g.font.mono},children:[x.icon&&a.jsx("img",{src:x.icon,alt:x.label,style:{width:"22px",height:"22px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:b?700:500,textTransform:"uppercase",color:l?d.textPrimary:"#0e0d0b",letterSpacing:"0.5px",flex:1,textAlign:"left"},children:x.label}),x.detail&&a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:d.textSecondary},children:x.detail}),b&&a.jsx(Wr,{color:c,style:{flexShrink:0}})]},x.id)})})]}),document.body)},gs=g.font.ui,gp=170,yr=e=>e.receiptTokenId||`${e._source}:${e.chainId}:${e.address}`,xp=({header:e,amount:t,setAmount:n,isInsufficient:s,sourceAmountDecimals:o,selectedSourceAsset:r,resolvedSelectedSourceAsset:i,spiceAssets:l,setSelectedSourceAsset:d,sourceUsdEstimate:c,sourceTokenLabel:m,sourceChainLabel:p,totalSelectedBalance:f,showSourceTokenPopover:h,setShowSourceTokenPopover:x,tokenPopoverPos:b,setTokenPopoverPos:y,tokenTriggerRef:w,primaryColor:S,dark:v,dk:k})=>{const C=v?k.cardBg:"#E9E9E9",E=v?k.cardBorder:"#C6C6C6",F=v?k.textSecondary:"#71757A",B=v?k.textPrimary:"#0E0D0B",j=v?k.cardBorder:"#C5C5C4",T=v?"rgba(255,255,255,0.08)":"#D4D3D3",R=m.length>8?"14px":m.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:C,border:`1px solid ${E}`,borderRadius:"7px",padding:"14px 16px 12px 16px",minHeight:"138px",display:"flex",flexDirection:"column",gap:"6px",position:"relative"},children:[e,a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",flex:1},children:[a.jsxs("div",{style:{flex:1,minWidth:0,alignSelf:"flex-start",paddingTop:"4px"},children:[a.jsx(jn,{element:"input",ariaLabel:"Withdraw amount",ariaInvalid:s,dataSpiceflowFocus:!0,value:t,onChange:D=>{const M=D.target.value;if(M===""){n("");return}/^\d*\.?\d*$/.test(M)&&n(g.parseNumericInput(M.startsWith(".")?`0${M}`:M,o??r?.decimals))},placeholder:"0.0",fontFamily:gs,color:s?"#ef4444":t?B:"#A8A8A7",lineHeight:"0.95",maxFontSize:54,minFontSize:32,style:{width:"100%"}}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:F,fontFamily:gs,marginTop:"10px"},children:c})]}),a.jsx("div",{style:{width:`${gp}px`,flexShrink:0},children:a.jsxs("div",{style:{backgroundColor:"transparent",border:`1px solid ${j}`,borderRadius:"8px",overflow:"hidden",width:"100%",display:"flex",flexDirection:"column",boxSizing:"border-box"},children:[a.jsxs("div",{ref:w,onClick:D=>{if(D.stopPropagation(),!h&&w.current){const M=w.current.getBoundingClientRect(),W=220,q=16;y({top:M.bottom+8,left:Math.min(Math.max(q,M.right-W),window.innerWidth-W-q)})}x(M=>!M)},style:{display:"flex",alignItems:"center",gap:"6px",padding:"9px 10px 8px 10px",cursor:"pointer"},children:[a.jsx("img",{src:i?._source==="wallet"&&i.logoURI||ts,alt:m,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:R,fontWeight:500,color:B,lineHeight:"1.3",fontFamily:gs,flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",letterSpacing:0},children:m}),a.jsx(Bn,{size:15,color:B,strokeWidth:2.25})]}),a.jsx(ol,{isOpen:h,position:b,title:"SELECT TOKEN",portalAttribute:"token",items:(l||[]).map(D=>({id:yr(D),label:D.displaySymbol||D.receiptTokenName||D.symbol,icon:D._source==="wallet"&&D.logoURI||ts,detail:`${D._source==="wallet"?D.displayChainName||String(D.chainId):"Spicenet"} \xB7 ${g.formatBalance(D.balanceFormatted)}`})),selectedId:i?yr(i):null,onSelect:D=>{const M=(l||[]).find(W=>yr(W)===D);M&&(d(M),n("")),x(!1)}}),a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 10px",backgroundColor:T,borderTop:`1px solid ${j}`},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:400,color:B,fontFamily:gs,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:p})})]})})]}),a.jsxs("div",{style:{minHeight:"18px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[s?a.jsx("span",{style:{fontSize:"12px",color:k.errorText,fontFamily:gs,fontWeight:500},children:"Insufficient Balance"}):a.jsx("span",{}),a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0px",minHeight:"32px",marginRight:"-9px"},children:[0,25,50,75,100].map((D,M)=>{const W=M===4,q=parseFloat(t)||0,z=f>0&&Math.abs(q/f*100-D)<1;return a.jsx("button",{type:"button","aria-label":`Set amount to ${D}%`,"aria-pressed":z,onClick:()=>{const X=i?.balance??0n;n(D===0?"":I.formatUnits(X*BigInt(D)/100n,o??6))},title:`${D}%`,disabled:f===0,"data-spiceflow-focus":!0,style:{width:"32px",height:"32px",padding:"9px",border:"none",backgroundColor:"transparent",cursor:f===0?"not-allowed":"pointer",opacity:z?1:.5,transition:"opacity 0.15s ease",display:"flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},children:a.jsx(mo,{pct:D,isMax:W,primaryColor:S,dark:v,fillColor:v?k.textSecondary:"#3C3E42"})},D)})})]})]})},eo=g.font.ui,yp=g.font.mono,bp=170,wp=({header:e,amount:t,receiveAmountDisplay:n,receiveUsdEstimate:s,selectedDestToken:o,destTokenSymbol:r,destChainName:i,destChainLogo:l,compatibleDestinationChains:d,networkSwitchRef:c,onOpenNetworkPopover:m,showNetworkPopover:p,setShowNetworkPopover:f,networkPopoverPos:h,selectedChainId:x,setSelectedChainId:b,dark:y,dk:w})=>{const S=y?w.cardBg:"#E9E9E9",v=y?w.cardBorder:"#C6C6C6",k=y?w.textSecondary:"#71757A",C=y?w.textPrimary:"#0E0D0B",E=y?w.cardBorder:"#C5C5C4",F=y?"rgba(255,255,255,0.08)":"#D4D3D3",B=r.length>8?"14px":r.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:S,border:`1px solid ${v}`,borderRadius:"7px",padding:"14px 16px 12px 16px",minHeight:"138px",display:"flex",flexDirection:"column",gap:"6px"},children:[e,a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",flex:1},children:[a.jsxs("div",{style:{flex:1,minWidth:0,alignSelf:"flex-start",paddingTop:"4px"},children:[a.jsx(jn,{element:"div",value:n,title:n,fontFamily:eo,color:t?C:"#A8A8A7",lineHeight:"0.95",maxFontSize:54,minFontSize:32,overflow:"wrap"}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:k,fontFamily:eo,marginTop:"10px"},children:s})]}),a.jsxs("div",{style:{width:`${bp}px`,flexShrink:0,display:"flex",flexDirection:"column",alignItems:"stretch",gap:"8px"},children:[a.jsxs("div",{style:{backgroundColor:"transparent",border:`1px solid ${E}`,borderRadius:"8px",overflow:"hidden",width:"100%",display:"flex",flexDirection:"column",boxSizing:"border-box"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",padding:"9px 10px 8px 10px"},children:[a.jsx("img",{src:o?.logoURI||Jl,alt:r,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:B,fontWeight:500,color:C,lineHeight:"1.3",fontFamily:eo,flex:1,minWidth:0,letterSpacing:0},children:r})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 10px",backgroundColor:F,borderTop:`1px solid ${E}`},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[l&&a.jsx("img",{src:l,alt:i,style:{width:"13px",height:"13px",borderRadius:"50%",flexShrink:0}}),a.jsx("span",{style:{fontSize:"11px",fontWeight:400,color:C,fontFamily:eo,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:i})]}),a.jsx("button",{ref:c,onClick:j=>{j.stopPropagation(),m(c.current)},style:{background:"none",border:"none",cursor:d.length>1?"pointer":"not-allowed",padding:"0 0 0 8px",fontSize:"9.5px",fontFamily:yp,color:k,textDecoration:"underline",fontWeight:600,opacity:d.length>1?1:.45},children:"Switch"}),a.jsx(ol,{isOpen:p,position:h,title:"SELECT NETWORK",portalAttribute:"network",items:d.map(j=>{const T=g.getChainConfig(j);return{id:String(j),label:T?.displayName||String(j),icon:Sn[j]||ns}}),selectedId:x!==null?String(x):null,onSelect:j=>{b(Number(j)),f(!1)}})]})]}),a.jsx("div",{style:{minHeight:"14px"}})]})]})]})};function Cp(e,t,n){if(!e||!t)return null;if(e._source==="wallet")return e._fundingWallet!=="embedded"||t!==e.chainId?null:{address:e.address,symbol:e.symbol,name:e.name,decimals:e.decimals,logoURI:e.logoURI};const s=Dn(e,t),o=Object.entries(e.chainTokens??{}).flatMap(([p,f])=>{const h=Rn(p);return h?.chainId===t?[{parsed:h,detail:f}]:[]}),r=p=>n.find(f=>g.addressesEqual(f.address,p))??null,i=p=>{const f=o.find(({parsed:b})=>g.addressesEqual(b.address,p));if(!f)return null;const h=g.getChainConfig(t);if(A.isNativeToken(p))return h?{address:A.ZERO_ADDRESS,symbol:h.nativeCurrency.symbol,name:h.nativeCurrency.name,decimals:h.nativeCurrency.decimals,logoURI:e.logoURI}:null;const x=h?.supportedTokens?.find(b=>g.addressesEqual(b.address,p));return!x||!Ss(e,p,t)?null:{address:f.parsed.address,symbol:x.symbol,name:x.name||f.detail?.name||e.displayName||e.name||e.symbol,decimals:x.decimals,logoURI:x.logo||e.logoURI}},l=o.map(({parsed:p})=>p.address).filter(A.isNativeToken);for(const p of[...s,...l]){if(A.isNativeToken(p)){const x=i(p);if(x)return x}const f=r(p);if(f)return f;const h=i(p);if(h)return h}if(e.chainTokens||e.receiptTokenId)return null;const d=Qt(e,t);if(d){const p=r(d);if(p)return p}const c=Cn(e.address,t,e.chainId);return c?r(c.address)||(n.length>0?null:{address:c.address,symbol:c.symbol||e.symbol,name:e.displayName||e.name||e.symbol,decimals:c.decimals??e.decimals,logoURI:e.logoURI}):null}const vp=[],kp=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,onWithdrawExecute:o,onWithdrawSuccess:r,onWithdrawError:i,availableTokens:l,buildSpicenetBatch:d,walletAssets:c})=>{const m=u.useContext(g.SpiceFlowProviderContext);if(!m)return a.jsx("div",{children:"Error: SpiceWithdraw must be used within SpiceFlowProvider"});const p=m.mode||"7702",f=p==="presign"||p==="ondemand",h=m.supportedChainIds,x=m.allowedTokens,b=m.isWhitelistGateActive,y=c?.extraAssets??vp,w=c?.initialAsset,S=!!c,{theme:v,dark:k,dk:C}=g.useSpiceBrand(s),E=m.network,F=()=>f?"select":"provider-login",[B,j]=u.useState(F()),[T,R]=u.useState(!1),[D,M]=u.useState(w??null),[W,q]=u.useState(null),[z,X]=u.useState(""),[N,H]=u.useState(!1),[V,G]=u.useState(!1),[J,U]=u.useState(!1),[L,O]=u.useState(!1),[ee,ue]=u.useState(""),[re,se]=u.useState(!0),ie=u.useRef(null),ce=u.useRef(null),_=u.useRef(null),Ce=u.useRef(null),[P,ae]=u.useState(null),[he,ne]=u.useState(null),[Q,te]=u.useState(null),be=g.useWallet(),{isReady:$,isAuthenticated:Se,address:ct}=be,xe=m?.embeddedWalletAddress,{address:pt,chainId:Me}=pn.useAccount(),Ue=m.externalWalletAddress||pt,[Xe,Ae]=u.useState(!1),[nt,st]=u.useState(null),ft=u.useRef(i);ft.current=i;const ot=u.useCallback(de=>{st(de),typeof de=="string"&&de&&ft.current?.(de,g.getRelayerErrorDetail(de))},[]),[_e,Be]=u.useState(null),Ct=u.useRef(null),mt=u.useRef(!0),Te=u.useRef(null);u.useEffect(()=>(mt.current=!0,()=>{mt.current=!1}),[]);const{execute:Ke,estimate:Oe}=ds(),[Y,Ee]=u.useState(null),[ye,Re]=u.useState(null),[dt,Qe]=u.useState(!1),[yt,lt]=u.useState(null),{assets:qt,loading:Lt}=ms({address:xe,enabled:e&&!!xe,refetchInterval:3e4}),{assets:Nt,loading:Je}=mn({address:xe,supportedChains:h,fetchBalances:fn,enabled:e&&S&&!f&&!!xe&&!b,refreshInterval:3e4}),pe=u.useMemo(()=>{if(b)return[];const de=f||!S?[]:[...new Map([...w?[w]:[],...Nt,...y].filter(je=>je.balance>0n&&(!h?.length||h.includes(je.chainId))).map(je=>[`${je.chainId}:${je.address.toLowerCase()}`,{...je,receiptTokenId:void 0,receiptTokenName:void 0,chainTokens:void 0,_source:"wallet",_fundingWallet:"embedded"}])).values()],me=[...qt,...de];if(!x||x.length===0)return me;const ze=new Set(x.map(je=>je.toLowerCase()));return me.filter(je=>[je.symbol,je.displaySymbol,je.receiptTokenName].some(St=>typeof St=="string"&&ze.has(St.toLowerCase())))},[qt,Nt,y,w,h,f,S,x,b]),We=u.useMemo(()=>[...new Set([...h??[],...Object.keys(l??{}).map(Number),...(pe||[]).map(de=>de.chainId),...(pe||[]).flatMap(de=>Object.keys(de.chainTokens??{}).map(me=>{const[,ze]=me.split(":"),je=Number(ze);return Number.isFinite(je)?je:null}).filter(me=>me!==null))])].filter(de=>g.getChainConfig(de)?.network===E),[h,l,pe,E]),at=u.useMemo(()=>{if(l)return l;const de={};for(const me of pe||[]){const ze=Object.entries(me.chainTokens??{});if(ze.length>0){for(const[je,St]of ze){const[Dt,Gt,rt]=je.split(":");if(Dt!=="evm"||!Gt||!rt)continue;const ht=Number(Gt);if(!Number.isFinite(ht))continue;const Vt=rt.startsWith("0x")?rt.toLowerCase():`0x${rt.toLowerCase()}`,sn=g.getChainConfig(ht)?.supportedTokens?.find(Z=>g.addressesEqual(Z.address,Vt));sn&&Ss(me,Vt,ht)&&(de[ht]||(de[ht]=[]),de[ht].find(Z=>g.addressesEqual(Z.address,Vt))||de[ht].push({address:Vt,symbol:sn?.symbol||St?.name||me.symbol,name:sn?.name||St?.name||me.displayName||me.name||me.symbol,decimals:sn?.decimals??St?.decimals??me.decimals,logoURI:sn?.logo||me.logoURI}))}continue}de[me.chainId]||(de[me.chainId]=[]),de[me.chainId].find(je=>g.addressesEqual(je.address,me.address))||de[me.chainId].push({address:me.address,symbol:me.symbol,name:me.displayName||me.name||me.symbol,decimals:me.decimals,logoURI:me.logoURI})}return de},[l,pe]),ut=u.useCallback((de,me)=>Cp(de,me,me?at[me]??[]:[]),[at]),ve=u.useMemo(()=>{if(!D)return null;const de=D.receiptTokenId||`${D.chainId}:${D.address.toLowerCase()}`;return pe.find(me=>(me.receiptTokenId||`${me.chainId}:${me.address.toLowerCase()}`)===de&&me._source===D._source)||null},[D,pe]),fe=ve?._source==="wallet",He=u.useMemo(()=>{if(!ve)return[];const de=Object.keys(ve.chainTokens??{}).map(me=>Rn(me)?.chainId??null).filter(me=>me!==null);return Array.from(new Set([...de,ve.chainId,...We].filter(Number.isFinite))).filter(me=>(ve._source==="wallet"||me!==1)&&g.getChainConfig(me)?.network===E&&ut(ve,me)!==null)},[ve,We,ut,E]),it=u.useMemo(()=>{if(!ve||typeof window>"u")return null;const de=`spiceflow:withdraw-chain:${ve.receiptTokenId||ve.address.toLowerCase()}`,me=window.localStorage.getItem(de),ze=me?Number(me):null;return ze!==null&&Number.isFinite(ze)&&He.includes(ze)?ze:null},[ve,He]),Ge=u.useMemo(()=>ve?it!==null?it:Me&&He.includes(Me)?Me:ve.chainId&&He.includes(ve.chainId)?ve.chainId:He[0]??null:We[0]??null,[ve,it,Me,He,We]),Ie=u.useMemo(()=>ut(ve,W),[ut,ve,W]);u.useEffect(()=>{!pe?.length||ve||M(pe[0])},[pe,ve]),u.useEffect(()=>{ve&&(W===null||!He.includes(W))&&q(Ge)},[ve,W,Ge,He]),u.useEffect(()=>{if(!N&&!V&&!J)return;const de=me=>{const ze=me.target;N&&!ie.current?.contains(ze)&&!ce.current?.contains(ze)&&!ze?.closest?.("[data-network-popover]")&&H(!1),V&&!_.current?.contains(ze)&&!ze?.closest?.("[data-token-popover]")&&G(!1),J&&!Ce.current?.contains(ze)&&!ze?.closest?.("[data-balance-trigger]")&&U(!1)};return document.addEventListener("mousedown",de),()=>document.removeEventListener("mousedown",de)},[N,V,J]);const Et=u.useCallback(de=>{if(!de||He.length<=1)return;const me=de.getBoundingClientRect(),ze=220,je=16;ae({top:me.bottom+8,left:Math.min(Math.max(je,me.right-ze),window.innerWidth-ze-je)}),H(St=>!St)},[He.length]),De=u.useCallback(()=>se(de=>!de),[]);u.useEffect(()=>{if(!ve||W===null||typeof window>"u")return;const de=`spiceflow:withdraw-chain:${ve.receiptTokenId||ve.address.toLowerCase()}`;window.localStorage.setItem(de,String(W))},[ve,W]);const bt=L&&ee&&I.isAddress(ee)?ee:Ue||(fe?void 0:xe),jt=ve?.balanceFormatted??0,Ht=u.useCallback(de=>{if(!de)return;const me=de.getBoundingClientRect();te({top:me.bottom+8,left:me.right-220}),U(!0)},[]),zt=ve?.displaySymbol||ve?.receiptTokenName||ve?.symbol||"spiceUSDC",Wt=ve?.displayChainName||(fe?g.getChainConfig(ve.chainId)?.displayName:"Spicenet")||"Network",$e=ve?.receiptTokenDecimals??ve?.decimals,et=u.useMemo(()=>{if(!Ie||$e===void 0)return 0n;try{return I.parseUnits(z||"0",$e)}catch{return 0n}},[z,Ie,$e]),Rt=u.useMemo(()=>!Ie||$e===void 0?0n:Xi(et,$e,Ie.decimals),[Ie,$e,et]),Yt=u.useMemo(()=>{if(fe)return 0n;const de=ye??Y;return!de||de<=0n||!Ie||$e===void 0?0n:Xi(de,Ie.decimals,$e)},[fe,ye,Y,Ie,$e]),tn=u.useMemo(()=>et+Yt,[et,Yt]),Ft=ye??Y,ge=ep({enabled:e&&!f&&fe,asset:fe?ve:null,amount:et,recipient:bt,owner:xe,sourceChains:h,onSuccess:r,onError:i}),qe=ge.supply,xt=Xe||fe&&qe.status.isExecuting,Pt=qe.status.step==="success"||qe.status.paymentResult?.status==="success",Fe=qe.fees.preview,Ut=Fe?Fe.totalFee??Fe.gasFee+Fe.spicenetFee+(Fe.bridgeFee??0n):null,Ze=qe.fees.source,Xt=Ze?Ze.gasFee+Ze.spicenetFee:0n,tt=u.useCallback(de=>{if(fe)return[];if(!W||!Ie)return[];if(et===0n||Rt===0n||!bt)return[];const me=Array.isArray(de)?de.filter(Dt=>Dt.amount>0n):[{token:Ie.address,recipient:bt,amount:de??Rt}],ze=me.reduce((Dt,Gt)=>Dt+Gt.amount,0n);if(ze<=0n)return[];const je={chainId:W,calls:[],tokenTransfers:me.map(Dt=>({from:"escrow",to:Dt.recipient,token:Dt.token,amount:Dt.amount}))};if(!d)return[je];const St=d({destinationChainId:W,deliveryToken:Ie.address,deliveryAmount:ze,deliveryRecipient:bt,deliveryTransfers:me,requestTimestampMs:Te.current??Date.now()});return St?[St,je]:[je]},[fe,W,Ie,et,Rt,bt,d]),Mt=u.useMemo(()=>tt(),[tt]),vt=u.useMemo(()=>np(Mt,Ie?.address),[Mt,Ie?.address]),Jt=u.useRef(null),oe=e&&!f&&!fe&&!Xe&&!!Ie&&!!W&&et!==0n;as({shouldRun:oe&&Mt.length>0&&!!vt,deps:[oe,Mt.length>0,vt],delayMs:500,onSkip:()=>{Jt.current=null,Ee(null),lt(null),Qe(oe&&Mt.length===0)},onCleanup:()=>Qe(!1),run:async({isCurrent:de,signal:me})=>{const ze=vt;Qe(!0),lt(null);try{const je=await cp({batches:Mt,tokenAddress:Ie.address,chainId:W,estimate:Oe,signal:me});if(!de())return;Jt.current={key:ze,quote:je},Ee(je.gasFee)}catch(je){if(!de())return;Jt.current=null,Ee(null),lt(je instanceof Error?je.message:"Failed to estimate gas fee")}finally{de()&&Qe(!1)}}}),u.useEffect(()=>{Xe||Re(null)},[Xe,z,W,Ie?.address]);const Le=u.useCallback(()=>{R(!0),j("select")},[]),Ot=u.useCallback(()=>{xt||t()},[t,xt]),Ve=u.useRef(null);Ve.current={batches:Mt,walletAddress:ct,recipient:bt,token:Ie,chainId:W,amount:z,receiveAmountRaw:Rt,gasFee:Y,feeEstimate:vt&&Jt.current?.key===vt?Jt.current.quote.feeEstimate:null,isNon7702:f,buildWithdrawBatches:tt,execution:{estimate:Oe,execute:Ke},ui:{setIsExecuting:Ae,setExecutionError:ot,setExecutionProgress:Be,setLockedGasFee:Re},executionContextRef:Ct,isMountedRef:mt,onWithdrawExecute:o,onWithdrawSuccess:r,buildSpicenetBatch:d};const kt=u.useCallback(()=>(Te.current=Date.now(),_i(Ve.current)),[]),nn=u.useCallback(()=>(Te.current=Date.now(),lp(Ve.current)),[]);if(u.useEffect(()=>{if(!e){const de=setTimeout(()=>{j(F()),R(!1),M(w??null),q(null),X(""),H(!1),G(!1),O(!1),ue(""),Ae(!1),ot(null),Be(null),Ct.current=null},300);return()=>clearTimeout(de)}},[e,f]),u.useEffect(()=>{if(!f&&e&&B==="provider-login"&&$&&Se&&xe&&!T){const de=setTimeout(()=>{R(!0),j("select")},100);return()=>clearTimeout(de)}},[f,e,B,$,Se,xe,T]),!e)return null;if(B==="provider-login"&&!f)return a.jsx(zo,{onAuthSuccess:Le,autoTrigger:!0});if(B==="select"){const de=parseFloat(z)||0,me=$e?gr(tn,$e):z||"0",ze=!!ve&&tn>ve.balance,je=(W?g.getChainConfig(W):null)?.displayName||"Network",St=W?Sn[W]||ns:null,Dt=Ie?.symbol||"\u2014",Gt=zt,rt=Ie?gr(Rt,Ie.decimals):"0",ht=ve&&ve.balanceFormatted>0&&ve.balanceUsd>0?ve.balanceUsd/ve.balanceFormatted:void 0,Vt=fe?ht===void 0?"Value unavailable":`$${(de*ht).toFixed(2)}`:Ji(de,Ie?.symbol||ve?.symbol),sn=fe?Vt:Ji(parseFloat(rt)||0,Ie?.symbol||ve?.symbol),Z=(!L||I.isAddress(ee))&&(!fe||!g.addressesEqual(bt,xe)),le=!f&&!fe&&de>0&&Ie!==null,Pe=!le||Y!==null&&!dt&&!yt,ke=de>0&&!ze&&D!==null&&W!==null&&Ie!==null&&bt&&Z&&Pe&&Rt>0n&&(!fe||qe.canExecute&&!Pt),gt=!ke,wt=D===null?"NO BALANCE":de===0?"ENTER AMOUNT":ze?"INSUFFICIENT BALANCE":le&&!Pe?yt?"GAS UNAVAILABLE":"ESTIMATING GAS":le&&Rt===0n?"AMOUNT TOO SMALL":fe&&!qe.canExecute?qe.fees.isLoading?"ESTIMATING FEES":"FEES UNAVAILABLE":"WITHDRAW",Tt=!!_e&&(_e.step==="success"||_e.step==="error"),dn=s?.primaryColor||v.colors.primary,ln=402,un=At=>a.jsx(hp,{label:At,spiceAssetsLoading:Lt||Je,totalSelectedBalance:jt,onOpenBalancePopover:Ht,dark:k,dk:C});return a.jsx(rn,{isOpen:!0,onClose:Ot,title:"Withdraw",subtitle:a.jsx(mp,{dark:k,dk:C}),styles:s,theme:v,dark:k,maxWidth:"486px",footerLinkText:"Spicenet accounts \u2192",overlayDimmed:!1,closeOnBackdropClick:n,overlayContent:Tt?a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",flexDirection:"column",justifyContent:"flex-end",pointerEvents:"none",zIndex:20},children:a.jsx("div",{style:{pointerEvents:"auto"},children:a.jsx(hr,{type:"withdraw",isOpen:!0,isProcessing:Xe,onRetryTx:()=>{nn()},onNewTx:()=>{Be(null),X(""),ot(null),Ct.current=null},onClose:()=>{Be(null),ot(null),Ae(!1),Ct.current=null},onComplete:()=>{Be(null),ot(null),Ae(!1),Ct.current=null},results:[{asset:{symbol:Ie?.symbol||"Token",address:Ie?.address||""},txHash:_e?.txHash||"",success:_e?.step==="success",error:_e?.error?_s(_e.error):void 0,amount:z}],chainId:W??void 0,theme:v})})}):null,children:a.jsxs("fieldset",{disabled:xt,"aria-busy":xt,style:{width:`${ln}px`,minWidth:0,border:0,margin:"0 auto",padding:"0 0 4px 0",position:"relative",pointerEvents:xt?"none":void 0},children:[a.jsx(dp,{show:J,position:Q,popoverRef:Ce,spiceAssets:pe,dark:k,dk:C}),a.jsxs("div",{style:{marginTop:"16px",marginBottom:"16px",display:"flex",flexDirection:"column",gap:"16px"},children:[a.jsx(xp,{header:un("Source"),amount:z,setAmount:X,isInsufficient:ze,sourceAmountDecimals:$e,selectedSourceAsset:D,resolvedSelectedSourceAsset:ve,spiceAssets:pe,setSelectedSourceAsset:M,sourceUsdEstimate:Vt,sourceTokenLabel:Gt,sourceChainLabel:Wt,totalSelectedBalance:jt,showSourceTokenPopover:V,setShowSourceTokenPopover:G,tokenPopoverPos:he,setTokenPopoverPos:ne,tokenTriggerRef:_,primaryColor:dn,dark:k,dk:C}),a.jsx(wp,{header:un("Destination"),amount:z,receiveAmountDisplay:rt,receiveUsdEstimate:sn,selectedDestToken:Ie,destTokenSymbol:Dt,destChainName:je,destChainLogo:St,compatibleDestinationChains:He,networkSwitchRef:ie,onOpenNetworkPopover:Et,showNetworkPopover:N,setShowNetworkPopover:H,networkPopoverPos:P,selectedChainId:W,setSelectedChainId:q,dark:k,dk:C})]}),a.jsxs("div",{style:{marginBottom:v.spacing.sm},children:[a.jsx(fp,{show:re,onToggle:De,showCustomAddress:L,setShowCustomAddress:O,customRecipient:ee,setCustomRecipient:ue,externalAddress:Ue,recipientAddress:bt,destChainName:je,destChainLogo:St,compatibleDestinationChains:He,txDetailsChainSwitchRef:ce,onOpenNetworkPopover:Et,sourceChainLabel:Wt,sourceDetailsLogo:fe?ve?.logoURI:ts,sourceTokenLabel:Gt,amount:z,totalSourceDebitDisplay:me,receiveAmountDisplay:rt,destTokenSymbol:Dt,shouldQuoteWithdrawGas:le,estimatingFee:dt,feeError:yt?_s(yt):null,displayedGasFee:Ft,selectedDestToken:Ie,theme:v,styles:s,dark:k,dk:C}),fe&&re&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"7px",marginTop:"7px"},children:[a.jsx(bn,{palette:C,label:"FEE ASSET",value:a.jsxs("select",{"aria-label":"Withdrawal fee asset",value:ge.source?ge.sourceKey(ge.source):"",disabled:xt,onChange:At=>ge.setSource(ge.candidates.find(Pn=>ge.sourceKey(Pn)===At.target.value)??null),style:{background:"transparent",color:C.textPrimary,maxWidth:"220px"},children:[!ge.candidates.length&&a.jsx("option",{value:"",children:"No eligible fee balance"}),ge.candidates.map(At=>a.jsxs("option",{value:ge.sourceKey(At),children:[At.displaySymbol||At.symbol," \xB7 ",At._source==="spice"?"Spicenet":g.getChainConfig(At.chainId)?.displayName]},ge.sourceKey(At)))]})}),a.jsx(bn,{palette:C,label:"TOTAL ESTIMATED FEES",value:qe.fees.isLoading?"Estimating...":qe.fees.ready&&Fe&&Ut!==null?`${I.formatUnits(Ut,Fe.decimals)} ${Fe.symbol}${Ze&&Xt>0n?` + ${I.formatUnits(Xt,Ze.decimals)} ${Ze.symbol}`:""}`:"Unavailable"}),a.jsx(bn,{palette:C,label:"MAXIMUM FEE FUNDING",value:qe.fees.isLoading?"Estimating...":qe.fees.ready&&ge.source&&qe.amount.sourceRequiredAmount!==null?`${I.formatUnits(qe.amount.sourceRequiredAmount,ge.source.decimals)} ${ge.source.displaySymbol||ge.source.symbol}`:"Unavailable"}),(qe.status.error||qe.fees.error||qe.amount.isInsufficientBalance||!ge.feeToken)&&a.jsx(yn,{variant:"error",size:"compact",palette:C,children:_s(qe.status.error||qe.fees.error||(ge.feeToken?"This balance cannot cover the withdrawal fees.":"This network has no supported withdrawal fee token."))}),qe.status.statusMsg&&a.jsx("span",{role:"status",children:qe.status.statusMsg})]}),ve&&!Lt&&He.length===0&&a.jsx(yn,{variant:"warning",size:"compact",palette:C,children:"No withdrawal networks are available for this asset."}),nt&&a.jsx(yn,{variant:"error",size:"compact",palette:C,fontFamily:s?.fontFamily||v.typography.fontFamily,style:{marginBottom:"12px"},children:_s(nt)}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:()=>{ke&&(G(!1),H(!1),U(!1),fe?qe.submitPay():kt())},disabled:gt||xt,theme:v,dark:k,styles:s,style:{marginTop:"8px"},children:xt?"EXECUTING...":Pt&&fe?"WITHDRAWN":wt})]})]})})}return null},rl=kp;function Sp(e){const{isOpen:t,includeWalletAssets:n,isWhitelistGateActive:s,isSemi7702:o,destinationTokenAddress:r,sourceAssets:i,sourceChains:l,walletAddressForAssets:d,lockChainId:c,lockTokenSymbol:m,lockTokenLogoURI:p}=e,f=u.useMemo(()=>{if(!n)return[];if(s)return r?[I.getAddress(r)]:[];const B=new Set,j=[],T=R=>{if(!R)return;const D=R.toLowerCase();B.has(D)||(B.add(D),j.push(I.getAddress(R)))};r&&T(r);for(const R of i)T(R);return j},[n,o,r,i,s]),h=u.useMemo(()=>f.map(B=>B.toLowerCase()).sort().join(","),[f]),x=u.useMemo(()=>JSON.stringify([...l||[]].sort()),[l]),[b,y]=u.useState([]),w=u.useRef(0),S=u.useRef(async()=>{}),v=u.useCallback(async()=>{if(!n||!d||f.length===0){w.current++,y([]);return}const B=++w.current,j=I.getAddress(d),T=o?l&&l.length>0?l:[c]:[c],R=f.map(N=>{const H=N.toLowerCase();if(r&&g.addressesEqual(N,r)){const V=g.getChainConfig(c)?.supportedTokens?.find(G=>g.addressesEqual(G.address,H));return{address:N,chainId:c,configToken:V?{decimals:V.decimals,symbol:V.symbol,name:V.name,logo:V.logo}:void 0}}for(const V of T){const G=g.getChainConfig(V)?.supportedTokens?.find(J=>g.addressesEqual(J.address,H));if(G)return{address:N,chainId:V,configToken:{decimals:G.decimals,symbol:G.symbol,name:G.name,logo:G.logo}}}return{address:N,chainId:c}}),D=new Map;for(const N of R){const H=D.get(N.chainId)||[];H.push(N),D.set(N.chainId,H)}const M=(N,H)=>{let{symbol:V,name:G,logoURI:J}=H;const U=!!r&&g.addressesEqual(N.address,r)&&N.chainId===c;return U&&p&&(J=p),U&&m&&!N.configToken&&(V==="TOKEN"&&(V=m),G==="TOKEN"&&(G=m)),{symbol:V,name:G,logoURI:J}},W=(N,H,V,G)=>{const J=M(N,G),U=parseFloat((Number(H)/Math.pow(10,V)).toFixed(6));return{address:N.address,name:J.name,symbol:J.symbol,decimals:V,balance:H,balanceFormatted:U,balanceUsd:0,logoURI:J.logoURI,isNative:!1,chainId:N.chainId}},q=async(N,H)=>{try{const V=await on.readContract(N,{address:H.address,abi:I.erc20Abi,functionName:"balanceOf",args:[j]}),G=await Mi(N,H.address,H.configToken);return W(H,V,G.decimals,G)}catch{return null}},z=await Promise.all(Array.from(D.entries()).map(async([N,H])=>{let V;try{V=g.getClientForChain(N)}catch{return[]}const G=[],J=[];for(const L of H){const O=G.length;G.push({address:L.address,abi:I.erc20Abi,functionName:"balanceOf",args:[j]}),L.configToken||G.push({address:L.address,abi:I.erc20Abi,functionName:"decimals",args:[]},{address:L.address,abi:I.erc20Abi,functionName:"symbol",args:[]},{address:L.address,abi:I.erc20Abi,functionName:"name",args:[]}),J.push({start:O,item:L})}let U=null;try{U=await V.multicall({contracts:G})}catch{U=null}return U?J.map(({start:L,item:O})=>{const ee=U[L],ue=ee?.status==="success"?ee.result:0n;let re,se,ie,ce;if(O.configToken)re=O.configToken.decimals,se=O.configToken.symbol,ie=O.configToken.name,ce=O.configToken.logo;else{const _=U[L+1],Ce=U[L+2],P=U[L+3];re=_?.status==="success"?Number(_.result):18,se=Ce?.status==="success"?Ce.result:"TOKEN",ie=P?.status==="success"?P.result:se}return W(O,ue,re,{symbol:se,name:ie,logoURI:ce})}):(await Promise.all(H.map(L=>q(V,L)))).filter(L=>L!==null)}));if(B!==w.current)return;const X=z.flat();y(X)},[n,o,d,h,x,c,r,p,m]);u.useEffect(()=>{S.current=v},[v]),u.useEffect(()=>{if(!t||!n){y([]);return}S.current();const B=setInterval(()=>{S.current()},15e3);return()=>clearInterval(B)},[n,t,d,h,x,c,r]);const k=u.useCallback(()=>{v()},[v]),C=t&&n&&!o&&!s&&!!d,E=u.useMemo(()=>[c],[c]),{assets:F}=mn({address:C?d:void 0,supportedChains:E,fetchBalances:fn,enabled:C,refreshInterval:3e4});return{walletAssets:u.useMemo(()=>{const B=R=>`${R.chainId}:${A.normalizeNativeTokenAddress(R.address).toLowerCase()}`,j=new Set(b.map(B)),T=[...b];for(const R of F){const D=B(R);R.balance<=0n||j.has(D)||(j.add(D),T.push(R))}return T},[b,F]),refreshWalletAssets:k}}function Ap(e){const t=u.useContext(g.SpiceFlowProviderContext)?.rpcOverrides?.[e.lockChainId],n=e.selectedAsset?.asset,s=n?._source,[o,r]=u.useState(0),i=e.enabled&&n&&e.destinationTokenAddress?JSON.stringify([n.address.toLowerCase(),n.chainId,n.decimals,n.symbol,n.name,n.receiptTokenName,n.displaySymbol,n.displayName,n.isUniversal,s,n.chainTokens,e.lockChainId,e.destinationTokenAddress.toLowerCase(),o]):null,[l,d]=u.useState(null),[c,m]=u.useState(null);u.useEffect(()=>{if(!i||!n||!e.destinationTokenAddress||!t?.trim())return;const k=e.destinationTokenAddress;let C=!1;return m(null),(async()=>{try{if(await Promise.resolve(),C)return;if(s==="wallet"&&n.chainId!==e.lockChainId)throw new Error("Select a wallet asset on the lock chain.");const E=s==="wallet"?n.address:await So(n,e.lockChainId);if(C)return;if(!E)throw new Error(`This asset cannot be delivered on ${g.getChainName(e.lockChainId)}.`);const F=A.normalizeNativeTokenAddress(E),[B,j]=await Promise.all([g.getTokenDecimals(e.lockChainId,F),g.getTokenDecimals(e.lockChainId,k)]);C||d(T=>({key:i,rpcUrl:t,inputToken:F,inputDecimals:B,outputDecimals:j,generation:(T?.generation??0)+1}))}catch(E){C||m({key:i,message:E instanceof Error?E.message:"Unable to read lock token metadata. Please retry."})}})(),()=>{C=!0}},[i,t]);const p=l?.key===i&&l.rpcUrl===t?l:null,f=u.useMemo(()=>{if(!p||!n||!e.selectedAsset?.amount)return null;try{if((e.selectedAsset.amount.split(".")[1]?.replace(/0+$/,"")??"").length>n.decimals)return{error:`Use at most ${n.decimals} decimal places for this lock source.`};const k=I.parseUnits(e.selectedAsset.amount,n.decimals);if(k<=0n)return null;const C=Bt(k,n.decimals,p.inputDecimals,"floor");if(Bt(C,p.inputDecimals,n.decimals,"floor")!==k)return{error:`Use at most ${p.inputDecimals} decimal places for this lock source.`};const E={address:p.inputToken,decimals:p.inputDecimals,chainId:e.lockChainId,symbol:n.symbol,name:n.name,isNative:A.isNativeToken(p.inputToken),balance:0n,balanceFormatted:0,balanceUsd:0};return{amount:C,selected:{asset:E,amount:I.formatUnits(C,p.inputDecimals)}}}catch{return{error:"Enter a valid amount."}}},[p,n,e.selectedAsset?.amount,e.lockChainId]),h=u.useMemo(()=>p&&e.destinationTokenAddress?{address:e.destinationTokenAddress,chainId:e.lockChainId,decimals:p.outputDecimals,symbol:e.lockTokenSymbol,name:e.lockTokenSymbol,logoURI:e.lockTokenLogoURI,isNative:A.isNativeToken(e.destinationTokenAddress),balance:0n,balanceFormatted:0,balanceUsd:0}:null,[p,e.destinationTokenAddress,e.lockChainId,e.lockTokenSymbol,e.lockTokenLogoURI]),x=$s({direction:"input",selectedAsset:e.enabled?f?.selected??null:null,destinationToken:h?{...h,address:A.normalizeNativeTokenAddress(h.address)}:{address:A.ZERO_ADDRESS,decimals:0,symbol:e.lockTokenSymbol,chainId:e.lockChainId},chainId:e.lockChainId,recipient:e.recipient,maxSlippage:.01,refreshIntervalMs:3e4}),b=u.useCallback(()=>{x.refreshQuote(),r(k=>k+1)},[x.refreshQuote]),y=!!p&&!!h&&!g.addressesEqual(p.inputToken,A.normalizeNativeTokenAddress(h.address)),w=y?x.resolvedSwap?.amountOutMinimum:f?.amount,S=e.enabled&&p&&f?.selected&&h&&e.recipient&&w!==void 0&&w>0n&&(!y||x.quoteKey)?{input:f.selected.asset,amountIn:f.amount,output:h,minimum:w,swap:y?x.resolvedSwap:null,key:`${i}:${p.generation}:${e.selectedAsset?.amount}:${e.recipient.toLowerCase()}:${y?x.quoteKey:"direct"}`,expiresAt:y?x.quoteExpiresAt:null}:null,v=e.enabled?t?.trim()?c?.key===i?c.message:f?.error??x.quoteError??(w!==void 0&&w<=0n?"The swap output is too small to lock. Increase the amount.":null):`Configure SpiceFlowProvider rpcOverrides[${e.lockChainId}] for ${g.getChainName(e.lockChainId)} before locking.`:null;return{conversion:S,error:v,retryQuote:b,isQuoting:e.enabled&&!!n&&!!e.recipient&&Number(e.selectedAsset?.amount)>0&&!S&&!v}}const Ip=({options:e,selectedIndex:t,onSelect:n,primaryColor:s,dark:o=!1,textPrimary:r="#111827",textSecondary:i="#6b7280",trackColor:l})=>{const d=e.length-1,c=l||(o?"#3a3a3a":"#d1d5db"),m=o?"4px":"50%",p=o?"none":"2px solid white",f=o?"none":`0 0 0 1px ${s}`;return a.jsxs("div",{style:{width:"100%",userSelect:"none"},children:[a.jsxs("div",{style:{position:"relative",paddingBottom:"4px"},children:[a.jsx("div",{style:{position:"absolute",top:"50%",left:0,right:0,height:"4px",background:c,borderRadius:"2px",transform:"translateY(-50%)",pointerEvents:"none"}}),a.jsx("div",{style:{position:"absolute",top:"50%",left:0,width:`${t/d*100}%`,height:"4px",background:s,borderRadius:"2px",transform:"translateY(-50%)",pointerEvents:"none",transition:"width 0.15s ease"}}),a.jsx("input",{type:"range","aria-label":"Lock duration","aria-valuetext":e[t]?.label,"data-spiceflow-focus":!0,min:0,max:d,step:1,value:t,onChange:h=>n(Number(h.target.value)),style:{WebkitAppearance:"none",appearance:"none",width:"100%",height:"20px",background:"transparent",cursor:"pointer",outline:"none",border:"none",position:"relative",zIndex:1,margin:0,padding:0}})]}),a.jsx("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"6px"},children:e.map((h,x)=>a.jsxs("div",{onClick:()=>n(x),style:{display:"flex",flexDirection:"column",alignItems:x===0?"flex-start":x===d?"flex-end":"center",cursor:"pointer",flex:1},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:x===t?700:400,color:x===t?r:i,whiteSpace:"nowrap",transition:"color 0.15s, font-weight 0.15s"},children:h.label}),h.highlight&&a.jsx("span",{style:{fontSize:"10px",color:i,whiteSpace:"nowrap"},children:"(most common)"})]},x))}),a.jsx("style",{children:`
44
44
  input[type='range']::-webkit-slider-thumb {
45
45
  -webkit-appearance: none;
46
46
  width: 20px;
47
47
  height: 20px;
48
- border-radius: ${f};
48
+ border-radius: ${m};
49
49
  background: ${s};
50
50
  border: ${p};
51
- box-shadow: ${m};
51
+ box-shadow: ${f};
52
52
  cursor: pointer;
53
53
  transition: transform 0.15s ease;
54
54
  }
55
55
  input[type='range']::-moz-range-thumb {
56
56
  width: 20px;
57
57
  height: 20px;
58
- border-radius: ${f};
58
+ border-radius: ${m};
59
59
  background: ${s};
60
60
  border: ${p};
61
- box-shadow: ${m};
61
+ box-shadow: ${f};
62
62
  cursor: pointer;
63
63
  }
64
64
  input[type='range']::-webkit-slider-thumb:hover {
65
65
  transform: scale(1.12);
66
66
  }
67
- `})]})},Xu=d.memo(Zu);function Ju(e){const t=new Date;t.setDate(t.getDate()+Math.floor(e*30));const n=["January","February","March","April","May","June","July","August","September","October","November","December"],s=t.getDate(),o=s===1||s===21||s===31?"st":s===2||s===22?"nd":s===3||s===23?"rd":"th";return`${n[t.getMonth()]} ${s}${o} ${t.getFullYear()}`}const $u=({label:e,value:t,fontFamily:n,dark:s=!1,textPrimary:o="#111827",textSecondary:r="#6b7280"})=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[a.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"7",cy:"7",r:"6.5",stroke:r,strokeWidth:"1.2"}),a.jsx("path",{d:"M7 6v4",stroke:r,strokeWidth:"1.2",strokeLinecap:"round"}),a.jsx("circle",{cx:"7",cy:"4.5",r:"0.7",fill:r})]}),a.jsx("span",{style:{fontSize:"13px",color:r,fontFamily:n},children:e})]}),a.jsx("span",{style:{fontSize:s?"17px":"13px",fontWeight:700,color:o,fontFamily:g.font.mono,letterSpacing:"0.3px"},children:t})]}),Ai=d.memo($u),_u=({isOpen:e,data:t,isLocking:n,lockError:s,onContinue:o,onClose:r,primaryColor:i,fontFamily:l,dark:u=!1})=>{const{dk:c}=g.useSpiceBrand(),[f,p]=d.useState(!1),[m,h]=d.useState(!0),x=u?c.cardBg:"#ffffff",y=c.textPrimary,b=c.textSecondary,w=u?c.inputPlaceholder:"#9ca3af",C=u?c.successBg:"#d1fae5",S=u?c.successBorder:"#6ee7b7",k=u?c.successText:"#065f46",v=c.errorBg,F=c.errorBorder;d.useEffect(()=>{e||p(!1)},[e]);const T=()=>{p(!0),setTimeout(r,300)};if(!e||!t)return null;const B=[{label:"NETWORK",value:t.sourceNetwork.toUpperCase()},{label:"DEPOSITED AMOUNT",value:`${t.depositedAmount} ${t.depositedSymbol}`,positive:!0}];return a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:f?"lockSlideDown 0.3s ease-in":"lockSlideUp 0.3s ease-out",pointerEvents:"auto"},children:[a.jsxs("div",{style:{backgroundColor:x,width:"100%",padding:"18px 24px",boxShadow:u?"0 -4px 20px rgba(0,0,0,0.4)":"0 -4px 20px rgba(0,0,0,0.15)"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:C,border:`1px solid ${S}`,borderRadius:"8px",padding:"10px 14px",marginBottom:"16px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#10b981"}),a.jsx("path",{d:"M6 10l3 3 5-6",stroke:"#fff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),a.jsx("span",{style:{fontSize:"13px",fontWeight:700,color:k,fontFamily:g.font.mono,letterSpacing:"0.3px"},children:"CONFIRMED TRANSACTION"})]}),t.explorerUrl&&a.jsxs("a",{href:t.explorerUrl,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",color:k,textDecoration:"none",display:"flex",alignItems:"center",gap:"4px",fontFamily:l},children:["View on explorer",a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:a.jsx("path",{d:"M2.5 9.5L9.5 2.5M9.5 2.5H5M9.5 2.5V7"})})]})]}),a.jsxs("div",{onClick:()=>h(j=>!j),style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer",marginBottom:"8px"},children:[a.jsx("span",{style:{fontSize:"13px",fontWeight:500,color:b,fontFamily:l},children:"Transaction Details"}),a.jsxs("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[a.jsx(Bn,{color:b,direction:m?"up":"down"}),a.jsx("button",{onClick:j=>{j.stopPropagation(),T()},style:{background:"none",border:"none",cursor:"pointer",padding:"2px",color:b,display:"flex",alignItems:"center"},children:a.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:a.jsx("path",{d:"M11 3L3 11M3 3l8 8",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round"})})})]})]}),a.jsx("div",{style:{overflow:"hidden",maxHeight:m?"200px":"0",opacity:m?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:m?"16px":"8px",display:"flex",flexDirection:"column",gap:"10px"},children:B.map(j=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:500,color:w,fontFamily:g.font.mono,letterSpacing:"0.5px"},children:j.label}),a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:j.positive?"#10b981":y,fontFamily:g.font.mono},children:j.value})]},j.label))}),s&&a.jsx("div",{style:{marginBottom:"12px",padding:"10px 14px",backgroundColor:v,border:`1px solid ${F}`,borderRadius:"6px"},children:a.jsx("p",{style:{color:"#ef4444",fontSize:"13px",margin:0,fontFamily:l},children:s})}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:o,disabled:n,loading:n,dark:u,styles:{button:{backgroundColor:i}},style:{height:"48px"},children:n?"LOCKING...":"CONTINUE \u2192"}),a.jsx("div",{style:{marginTop:"12px",display:"flex",justifyContent:"center"},children:a.jsx("img",{src:Ao,alt:"Powered by SpiceNet",style:{height:"auto",width:"130px"}})})]}),a.jsx("style",{children:`
67
+ `})]})},Ep=u.memo(Ip);function Fp(e){const t=new Date;t.setDate(t.getDate()+Math.floor(e*30));const n=["January","February","March","April","May","June","July","August","September","October","November","December"],s=t.getDate(),o=s===1||s===21||s===31?"st":s===2||s===22?"nd":s===3||s===23?"rd":"th";return`${n[t.getMonth()]} ${s}${o} ${t.getFullYear()}`}const Tp=({label:e,value:t,fontFamily:n,dark:s=!1,textPrimary:o="#111827",textSecondary:r="#6b7280"})=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[a.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",style:{flexShrink:0},children:[a.jsx("circle",{cx:"7",cy:"7",r:"6.5",stroke:r,strokeWidth:"1.2"}),a.jsx("path",{d:"M7 6v4",stroke:r,strokeWidth:"1.2",strokeLinecap:"round"}),a.jsx("circle",{cx:"7",cy:"4.5",r:"0.7",fill:r})]}),a.jsx("span",{style:{fontSize:"13px",color:r,fontFamily:n},children:e})]}),a.jsx("span",{style:{fontSize:s?"17px":"13px",fontWeight:700,color:o,fontFamily:g.font.mono,letterSpacing:"0.3px"},children:t})]}),al=u.memo(Tp),Bp=({isOpen:e,data:t,isLocking:n,lockError:s,onContinue:o,onClose:r,primaryColor:i,fontFamily:l,dark:d=!1})=>{const{dk:c}=g.useSpiceBrand(),[m,p]=u.useState(!1),[f,h]=u.useState(!0),x=d?c.cardBg:"#ffffff",b=c.textPrimary,y=c.textSecondary,w=d?c.inputPlaceholder:"#9ca3af",S=d?c.successBg:"#d1fae5",v=d?c.successBorder:"#6ee7b7",k=d?c.successText:"#065f46",C=c.errorBg,E=c.errorBorder;u.useEffect(()=>{e||p(!1)},[e]);const F=()=>{p(!0),setTimeout(r,300)};if(!e||!t)return null;const B=[{label:"NETWORK",value:t.sourceNetwork.toUpperCase()},{label:"DEPOSITED AMOUNT",value:`${t.depositedAmount} ${t.depositedSymbol}`,positive:!0}];return a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:m?"lockSlideDown 0.3s ease-in":"lockSlideUp 0.3s ease-out",pointerEvents:"auto"},children:[a.jsxs("div",{style:{backgroundColor:x,width:"100%",padding:"18px 24px",boxShadow:d?"0 -4px 20px rgba(0,0,0,0.4)":"0 -4px 20px rgba(0,0,0,0.15)"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:S,border:`1px solid ${v}`,borderRadius:"8px",padding:"10px 14px",marginBottom:"16px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:[a.jsx("circle",{cx:"10",cy:"10",r:"10",fill:"#10b981"}),a.jsx("path",{d:"M6 10l3 3 5-6",stroke:"#fff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),a.jsx("span",{style:{fontSize:"13px",fontWeight:700,color:k,fontFamily:g.font.mono,letterSpacing:"0.3px"},children:"CONFIRMED TRANSACTION"})]}),t.explorerUrl&&a.jsxs("a",{href:t.explorerUrl,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",color:k,textDecoration:"none",display:"flex",alignItems:"center",gap:"4px",fontFamily:l},children:["View on explorer",a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:a.jsx("path",{d:"M2.5 9.5L9.5 2.5M9.5 2.5H5M9.5 2.5V7"})})]})]}),a.jsxs("div",{onClick:()=>h(j=>!j),style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer",marginBottom:"8px"},children:[a.jsx("span",{style:{fontSize:"13px",fontWeight:500,color:y,fontFamily:l},children:"Transaction Details"}),a.jsxs("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[a.jsx(Bn,{color:y,direction:f?"up":"down"}),a.jsx("button",{onClick:j=>{j.stopPropagation(),F()},style:{background:"none",border:"none",cursor:"pointer",padding:"2px",color:y,display:"flex",alignItems:"center"},children:a.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:a.jsx("path",{d:"M11 3L3 11M3 3l8 8",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round"})})})]})]}),a.jsx("div",{style:{overflow:"hidden",maxHeight:f?"200px":"0",opacity:f?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:f?"16px":"8px",display:"flex",flexDirection:"column",gap:"10px"},children:B.map(j=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:500,color:w,fontFamily:g.font.mono,letterSpacing:"0.5px"},children:j.label}),a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:j.positive?"#10b981":b,fontFamily:g.font.mono},children:j.value})]},j.label))}),s&&a.jsx("div",{style:{marginBottom:"12px",padding:"10px 14px",backgroundColor:C,border:`1px solid ${E}`,borderRadius:"6px"},children:a.jsx("p",{style:{color:"#ef4444",fontSize:"13px",margin:0,fontFamily:l},children:s})}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:o,disabled:n,loading:n,dark:d,styles:{button:{backgroundColor:i}},style:{height:"48px"},children:n?"LOCKING...":"CONTINUE \u2192"}),a.jsx("div",{style:{marginTop:"12px",display:"flex",justifyContent:"center"},children:a.jsx("img",{src:wo,alt:"Powered by SpiceNet",style:{height:"auto",width:"130px"}})})]}),a.jsx("style",{children:`
68
68
  @keyframes lockSlideUp {
69
69
  from { transform: translateY(100%); }
70
70
  to { transform: translateY(0); }
@@ -77,9 +77,9 @@
77
77
  from { transform: rotate(0deg); }
78
78
  to { transform: rotate(360deg); }
79
79
  }
80
- `})]})};function Ii(e,t){return e._source!=="wallet"||e.chainId!==t?!1:e.isNative||A.isNativeToken(e.address)||!A.getTokenByAddress(e.address,e.chainId)}function ep(e,t){const n=e[0];if(e.length!==1||!n||n.chainId!==t.chainId||n.domain==="spicenet"||n.tokenTransfers?.length||n.calls.length===0)throw new Error("SpiceLock requires one lock-chain action batch. Return only lock approval and action calls, without funding transfers.");if(t.amountIn<=0n)throw new Error("Enter a positive amount to lock.");if(t.swap&&(t.swap.amountOutMinimum<=0n||t.swap.amountOutMinimum>t.swap.amountOut||t.swap.calls.length===0))throw new Error("A valid swap quote is required before locking. Please retry.");return[{...n,calls:[...t.swap?.calls??[],...n.calls],...t.escrowFunded?{tokenTransfers:[{token:A.normalizeNativeTokenAddress(t.tokenIn),from:"escrow",to:t.recipient,amount:t.amountIn}]}:{}}]}function tp(e){const t=new Map;for(const n of e){if(n.amount<=0n)continue;const s=I.getAddress(n.token),o=I.getAddress(n.to),r=`${s.toLowerCase()}:${o.toLowerCase()}`,i=t.get(r);i?i.amount+=n.amount:t.set(r,{token:s,to:o,amount:n.amount})}return[...t.values()]}function np(e,t){return`0x${t}${e.slice(4)}`}function Ei(e,t){return Fi(e,t)}function Fi(e,t,n){const s=Fs(t,e),o=Math.floor(Date.now()/1e3)+60*10,r=A.hashChainBatches(s);return{user:e,...n?{chainAuthorizations:n}:{},intents:[{mode:"7702",signatureType:"ecdsa",signature:"0x00",nbf:0,exp:o,chainBatches:r.map((i,l)=>({hash:i.hash,chainId:i.chainId,tokenTransfers:s[l].domain==="spicenet"?[]:s[l].tokenTransfers??[],calls:i.calls}))}]}}function Gn(e,t,n,s){if(e.some(f=>f.domain==="spicenet"))return e;const o=n?.intents.flatMap(f=>f.batches),r=f=>f.from==="escrow",i=e.map(f=>{const p=o?.find(T=>T.chainId===f.chainId);if(!p)return f;const m=Yt(p),h=m.totalFee;if(h<=0n)return f;const x=(f.tokenTransfers??[]).filter(T=>r(T)&&I.getAddress(T.to).toLowerCase()===t.toLowerCase()),y=x.find(T=>!A.isNativeToken(I.getAddress(T.token)))??x[0];if(!y)return f;const b=I.getAddress(y.token),w=A.isNativeToken(b);let C=!1;const S=(f.tokenTransfers??[]).map(T=>C||!r(T)||I.getAddress(T.to).toLowerCase()!==t.toLowerCase()||I.getAddress(T.token).toLowerCase()!==b.toLowerCase()?T:(C=!0,{...T,amount:s?.payoutAlreadyGross?BigInt(T.amount):BigInt(T.amount)+h}));if(!C)return f;const k=(T,B)=>w?{to:T,value:B,data:"0x"}:{to:b,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[T,B]})},v=[];m.spicenetFee>0n&&v.push(k(A.SPICE_PLATFORM_FEE_RECIPIENT,m.spicenetFee));const F=m.gasFee+m.bridgeFee;return F>0n&&v.push(k(A.SPICE_GAS_FEE_RECIPIENT,F)),{...f,tokenTransfers:S,calls:[...v,...f.calls]}}),l=i.flatMap(f=>(f.tokenTransfers??[]).filter(r).map(p=>{const m=I.getAddress(p.token),h=I.getAddress(p.to),x=[{token:m,to:h,amount:BigInt(p.amount)}];return{chainId:f.chainId,transfers:tp(x)}}));if(l.length===0)return e;const u=s?.requestTimestampMs??Date.now(),c=BigInt(Math.floor(u/1e3))+3600n;return[{chainId:A.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:l.map((f,p)=>{const m=I.keccak256(I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"}],[t,f.transfers[0].token,f.transfers.reduce((x,y)=>x+y.amount,0n),BigInt(f.chainId),BigInt(u+p)])),h=np(m,"77");return{to:"0x0000000000000000000000000000000000000000",value:0n,data:I.encodeFunctionData({abi:A.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${f.chainId}`,idempotenceKey:h,nbf:0n,exp:c,metadata:"{}",transfers:f.transfers.map(x=>({token:x.token.toLowerCase(),to:x.to,amount:x.amount}))}]})}})},...i]}const sp=60*60,Ti=(e,t)=>!!e&&e.grossAmount===t.grossAmount&&e.netAmount===t.netAmount&&e.feeAmount===t.feeAmount;function Gs(e,t){return t?e.some(n=>(n.tokenTransfers??[]).some(s=>s.from==="escrow"&&BigInt(s.amount)>=t.grossAmount)):!1}function Bi(e){return!e.isSemi7702&&e.isDirectDeposit&&!e.isSourceDestToken&&!!e.selectedAsset?.asset&&!Ii(e.selectedAsset.asset,e.lockChainId)}function ar(e){if(e.swapFunding)return e.swapFunding.amount;const t=e.selectedAsset?.asset,n=e.selectedAsset?.amount;if(!(!t||!n))return I.parseUnits(n,t.decimals)}async function Zs({user:e,batches:t,authorizations:n,adjustBatchesForEstimate:s}){let o=t;for(let r=0;r<10;r+=1){const i=await g.relayerService.estimateActionFees(Fi(e,o,n)),l=await s({feeEstimate:i,batches:o});if(!l||oa(o,l))return o;o=l}throw new Error("Fee estimate did not converge. Please retry.")}function op(e){return{chainId:e.sourceChainId,calls:e.isNative?[{to:e.target,value:e.amount,data:"0x"}]:[{to:e.tokenAddr,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[e.target,e.amount]})}]}}function ir(e,t,n,s){const o=e.selectedAsset.asset,r=ar(e),i=o.chainId,l=e.escrowAddress||A.getEscrowContractAddress(i),u=A.normalizeNativeTokenAddress(o.address),c=o.isNative||A.isNativeToken(u),f=n.some(p=>p.tokenTransfers?.some(m=>m.from==="escrow"));return{asset:o,userNetAmountWei:r,sourceChainId:i,tokenAddr:u,isNative:c,hasEscrowBackedPayout:f,composeBatches:(p,m,h,x)=>{const y=op({sourceChainId:i,target:l,tokenAddr:u,isNative:c,amount:p});if(!f)return[y,...m];const b=Gn([...m],t,h,{payoutAlreadyGross:Gs(m,x),...s!==void 0?{requestTimestampMs:s}:{}});return[y,...b]}}}function lr(e){const t={};return{state:t,adjustBatchesForEstimate:({feeEstimate:n})=>{const s=jo(n,{symbol:e.symbol,decimals:e.decimals,actionAmount:e.actionAmount});if(!s)return null;t.plan={grossAmount:s.grossAmount,netAmount:s.netAmount,feeAmount:s.totalFee??0n};const o=An(e.ctx,t.plan);return e.rebuild(o,n,t.plan)}}}function An(e,t){const n=e.selectedAsset?.asset;if(!n||!e.selectedAsset?.amount)throw new Error("Select an asset and enter an amount");const s=I.parseUnits(e.selectedAsset.amount,n.decimals),o=t?Et(t.grossAmount,e.swapFunding?.decimals??n.decimals,n.decimals,"ceil"):s;return e.resolveLockBatches({amount:e.selectedAsset.amount,amountWei:s,grossAmount:I.formatUnits(o,n.decimals),grossAmountWei:o})}async function cr(e,t,n){e.assertCurrentQuote?.();const s=e.isSemi7702&&e.embeddedWalletAddress||e.address;if(!e.isConnected||!s)throw new Error("Please connect your wallet to continue");if(t.length===0)throw new Error("No lock batches configured");if(!e.ready||!e.authenticated)throw new Error(`Please authenticate with ${e.provider||"wallet provider"} to continue`);const o=n??await ls({chainBatches:t,signingAddress:s,actions:e.actions}),r=A.hashChainBatches(t),i=Math.floor(Date.now()/1e3)+sp;e.assertCurrentQuote?.();const l={mode:"7702",signatureType:"ecdsa",signature:await ia(e.actions,t,BigInt(i)),nbf:0,exp:i,chainBatches:r.map((c,f)=>{const p=t[f],m=p.domain==="spicenet";return{hash:c.hash,chainId:c.chainId,tokenTransfers:m?[]:p.tokenTransfers??[],calls:c.calls}})};e.assertCurrentQuote?.();const u=await g.relayerService.createAction({user:s,chainAuthorizations:o,intents:[l]});if(u){const c=g.createInitialSteps(t,g.getChainName),[f,p]=u.intentIds[0].split("/"),m=parseInt(p||"0",10),h=u.intentIds[0];e.beginStatusTracking(u.intentIds[0],c),await Es({actionId:f,intentIndex:m,intentId:h,totalSteps:t.length,isSpicenetStep:x=>t[x]?.domain==="spicenet",maxExecuteAttemptsForStep:x=>t[x]?.domain==="spicenet"?6:3,onStepUpdate:e.applyStepUpdate,maxPolls:72})}}function dr(e,t){const n=e.feeQuote;return n?t.adjustBatchesForEstimate({feeEstimate:n.feeEstimate,batches:[]}):null}async function rp(e){const t=An(e);if(t.length===0)throw new Error("No lock batches configured");const n=e.isSemi7702&&e.embeddedWalletAddress||e.address;if(!e.isConnected||!n)throw new Error("Please connect your wallet to continue");const s=await ls({chainBatches:t,signingAddress:n,actions:e.actions}),o=Date.now(),r=lr({ctx:e,actionAmount:ar(e),symbol:e.swapFunding?.symbol??e.selectedAsset?.asset.symbol??"",decimals:e.swapFunding?.decimals??e.selectedAsset?.asset.decimals??18,rebuild:(l,u,c)=>Gn([...l],n,u,{payoutAlreadyGross:Gs(l,c),requestTimestampMs:o})});let i=dr(e,r)??Gn([...t],n,void 0,{requestTimestampMs:o});i=await Zs({user:n,batches:i,authorizations:s,adjustBatchesForEstimate:r.adjustBatchesForEstimate}),await cr(e,i,s)}async function ap(e){if(!e.selectedAsset?.asset||!e.selectedAsset.amount)throw new Error("Select an asset and enter an amount");const t=e.embeddedWalletAddress||e.address;if(!e.isConnected||!t)throw new Error("Please connect your wallet to continue");const n=e.resolveLockBatches();if(n.length===0)throw new Error("No lock batches configured");const s=ir(e,t,n,Date.now()),o=lr({ctx:e,actionAmount:s.userNetAmountWei,symbol:e.swapFunding?.symbol??s.asset.symbol,decimals:e.swapFunding?.decimals??s.asset.decimals,rebuild:(l,u,c)=>s.composeBatches(c.grossAmount,l,u,c)});let r=dr(e,o)??s.composeBatches(s.userNetAmountWei,An(e));const i=await ls({chainBatches:r,signingAddress:t,actions:e.actions});s.hasEscrowBackedPayout&&(r=await Zs({user:t,batches:r,authorizations:i,adjustBatchesForEstimate:o.adjustBatchesForEstimate})),await cr(e,r,i)}async function ip(e){if(!e.selectedAsset?.asset||!e.selectedAsset.amount)throw new Error("Select an asset and enter an amount");if(!e.externalWalletAddress||!e.externalWallet)throw new Error("Please connect your external wallet to continue");const t=e.embeddedWalletAddress;if(!t)throw new Error("Embedded wallet not available \u2014 sign in to create one before locking");if(e.onLockExecute){const x=e.resolveLockBatches();if(x.length===0)throw new Error("No lock batches configured");const y=e.selectedAsset.asset,b=I.parseUnits(e.selectedAsset.amount,y.decimals),w=await e.onLockExecute({asset:y,amount:e.selectedAsset.amount,amountWei:b,lockDurationMonths:e.selectedDuration?.months??0,chainBatches:x});w&&e.onLockSuccess?.(w);return}const n=e.resolveLockBatches();if(n.length===0)throw new Error("No lock batches configured");const s=ir(e,t,n,Date.now()),{userNetAmountWei:o}=s,r=lr({ctx:e,actionAmount:o,symbol:s.asset.symbol,decimals:s.asset.decimals,rebuild:(x,y,b)=>s.composeBatches(b.grossAmount,x,y,b)});let i=dr(e,r)??s.composeBatches(o,An(e));const l=await ls({chainBatches:i,signingAddress:t,actions:e.actions});s.hasEscrowBackedPayout&&(i=await Zs({user:t,batches:i,authorizations:l,adjustBatchesForEstimate:r.adjustBatchesForEstimate}));const u=r.state.plan?.grossAmount??o,{extWc:c,viemChain:f}=await Nn({wallet:e.externalWallet,account:e.externalWalletAddress,chainId:s.sourceChainId}),p=g.getClientForChain(s.sourceChainId),m=x=>ya({extWc:c,sourceClient:p,recipient:t,tokenAddr:s.tokenAddr,isNative:s.isNative,amount:x,viemChain:f});await m(u);let h=u;if(s.hasEscrowBackedPayout)for(let x=0;x<4;x+=1){i=await Zs({user:t,batches:i,authorizations:l,adjustBatchesForEstimate:r.adjustBatchesForEstimate});const y=r.state.plan?.grossAmount??o;if(y<=h)break;await m(y-h),h=y}await cr(e,i,l)}async function lp(e,t){if(!e.selectedAsset?.asset||!e.selectedAsset.amount||!e.requiresRelayerFeeEstimate)return null;if(e.isSemi7702||Bi(e)){const u=e.embeddedWalletAddress||e.address;if(!u)throw new Error("Embedded wallet not available \u2014 sign in to create one before locking");const c=e.feeQuote;let f=An(e,c?.plan);if(f.length===0)throw new Error("No lock batches configured");const p=ir(e,u,f),{asset:m,userNetAmountWei:h}=p;let x=c?p.composeBatches(c.plan.grossAmount,f,c.feeEstimate,c.plan):p.composeBatches(h,f,void 0,{grossAmount:h,netAmount:0n,feeAmount:0n}),y=null,b=c?.plan;for(let w=0;w<4;w+=1){const C=await g.relayerService.estimateActionFees(Ei(u,x),{signal:t}),S=jo(C,{symbol:e.swapFunding?.symbol??m.symbol,decimals:e.swapFunding?.decimals??m.decimals,actionAmount:h});if(!S)return y;const k={grossAmount:S.grossAmount,netAmount:S.netAmount,feeAmount:S.totalFee??0n},v=Ti(b,k);if(y={preview:S,feeEstimate:C,plan:k},b=k,f=An(e,k),x=p.composeBatches(k.grossAmount,f,C,k),v)break}return y}const n=e.address;if(!e.isConnected||!n)throw new Error("Please connect your wallet to continue");const s=e.feeQuote;let o=An(e,s?.plan);if(o.length===0)throw new Error("No lock batches configured");let r=Gn([...o],n,s?.feeEstimate,s?{payoutAlreadyGross:Gs(o,s.plan)}:void 0),i=null,l=s?.plan;for(let u=0;u<4;u+=1){const c=await g.relayerService.estimateActionFees(Ei(n,r),{signal:t}),f=jo(c,{symbol:e.swapFunding?.symbol??e.selectedAsset.asset.symbol,decimals:e.swapFunding?.decimals??e.selectedAsset.asset.decimals,actionAmount:ar(e)});if(!f)return null;const p={grossAmount:f.grossAmount,netAmount:f.netAmount,feeAmount:f.totalFee??0n},m=Ti(l,p);if(i={preview:f,feeEstimate:c,plan:p},l=p,o=An(e,p),r=Gn([...o],n,c,{payoutAlreadyGross:Gs(o,p)}),m)break}return i}async function cp(e){if(!e.selectedAsset?.asset||!e.selectedAsset.amount)throw new Error("Select an asset and enter an amount");const t=e.activeSignerWallet??e.externalWallet,n=e.activeSignerAddress??e.externalWalletAddress;if(!n||!t)throw new Error("Please connect your wallet to continue");const s=e.resolveLockBatches();if(s.length===0)throw new Error("No lock batches configured");const o=s.find(c=>c.chainId===e.lockChainId)||s[0];if(!o)throw new Error("No lock batch for lock chain");const{extWc:r,viemChain:i}=await Nn({wallet:t,account:n,chainId:e.lockChainId}),l=g.getClientForChain(e.lockChainId),u=await Lo({extWc:r,client:l,calls:o.calls,viemChain:i,errorMessage:"Lock transaction failed"});u&&e.onLockSuccess?.(u)}async function dp(e){if(!e.selectedAsset?.asset||e.parsedAmount<=0){e.ui.setError("Select an asset and enter an amount");return}if(e.isInsufficientBalance){e.ui.setError("Insufficient balance. Add more assets.");return}try{e.assertCurrentQuote?.()}catch(n){e.ui.setError(n instanceof Error?n.message:"Refresh the lock quote before continuing.");return}e.ui.setIsExecuting(!0),e.ui.setError(null);const t=n=>{console.error("[SpiceLock] lock failed:",n);const s=g.sanitizeError(n,""),o=typeof n?.shortMessage=="string"?n.shortMessage:typeof n?.message=="string"?n.message:"";e.ui.setError(s||o||"Transaction failed. Please try again.")};if(e.isSemi7702){if(e.isSourceDestToken){try{await cp(e)}catch(n){t(n)}finally{e.ui.setIsExecuting(!1)}return}e.ui.setShowStatusPanel(!0);try{await ip(e)}catch(n){t(n)}finally{e.ui.setIsExecuting(!1)}return}e.ui.setShowStatusPanel(!0);try{Bi(e)?await ap(e):await rp(e)}catch(n){t(n)}finally{e.ui.setIsExecuting(!1)}}const up=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,lockBatches:s,lockTokenSymbol:o,lockTokenLogoURI:r,destinationInputHook:i,sourceAssetInputHook:l,lockDurationHook:u,lockChainId:c,durationOptions:f,votingPowerEstimate:p,escrowAddress:m,includeWalletAssets:h=!1,destinationTokenAddress:x,onLockSuccess:y,onLockError:b,onLockExecute:w,sourceToDestinationConversionRate:C,onAddFunds:S,buildSpicenetBatch:k,styles:v,dark:F=!1})=>{const{theme:T,dark:B,primaryColor:j,dk:E}=g.useSpiceBrand(v,F),R=T.typography.fontFamily,D=d.useContext(g.SpiceFlowProviderContext),O=D?.mode||"7702",H=!!D?.isWhitelistGateActive,U=O!=="7702",V=d.useMemo(()=>D?.supportedChainIds??[],[D?.supportedChainIds]),Y=d.useMemo(()=>{if(H)return[];const te=D?.allowedTokens;if(!te||te.length===0)return[];const Re=new Set(te.map(St=>St.toLowerCase())),At=[],Ke=new Set;for(const St of V){const Zt=g.getChainConfig(St);for(const qt of Zt?.supportedTokens??[]){if(!Re.has(qt.symbol.toLowerCase()))continue;const Ht=`${St}:${qt.address.toLowerCase()}`;Ke.has(Ht)||(Ke.add(Ht),At.push(I.getAddress(qt.address)))}}return At},[D?.allowedTokens,V,H]),N=B?E.cardBg:v?.assetSelector?.backgroundColor||v?.secondaryBackground||"#e9e9e9",L=B?`1px solid ${E.cardBorder}`:"0.5px solid #A8A8A7",z=B?"12px":"6px",G=B?E.textPrimary:"#111827",Z=B?E.textSecondary:"#6b7280",W=d.useMemo(()=>({...v,assetSelector:{...v?.assetSelector,backgroundColor:B?E.cardBg:v?.assetSelector?.backgroundColor,borderRadius:B?"12px":v?.assetSelector?.borderRadius},secondaryBackground:B?E.cardBg:v?.secondaryBackground}),[v,B]),q=d.useMemo(()=>B?{...T,colors:{...T.colors,secondary:E.cardBg,surfaceHover:E.hoverBg,border:E.cardBorder,borderHover:E.inputBorder}}:T,[B,T]),[M,se]=d.useState(null),[de,ae]=d.useState(0),ne=u?.selectedDurationIdx??de,ce=u?.setSelectedDurationIdx??ae,[ue,$]=d.useState(!1),[ve,P]=d.useState(null),oe=d.useRef(b);oe.current=b;const fe=d.useCallback(te=>{P(te),typeof te=="string"&&te&&oe.current?.(te,g.getRelayerErrorDetail(te))},[]),[_,Q]=d.useState(null),[ee,he]=d.useState(!1),[X,Se]=d.useState(null),[Je,we]=d.useState(null),[lt,Pe]=d.useState(!1),[We,$e]=d.useState(!1),[Ae,tt]=d.useState(null),Ye=g.useWallet(),{isReady:ct,isAuthenticated:nt,isConnected:ut,address:De,provider:yt,actions:dt}=Ye,{externalWallet:Be,activeWallet:Ge,activeAddress:Oe}=g.useProviderWallets(),{intentStatus:ge,beginStatusTracking:ye,applyStepUpdate:Ne,clearStatus:ie}=Hn(),{assets:Ue,refetch:Me}=ds({address:De,supportedChains:V,enabled:e&&ut&&!U&&!H,refetchInterval:3e4}),rt=d.useMemo(()=>{if(H)return[];if(Y.length===0)return Ue;const te=new Set(Y.map(Re=>A.normalizeNativeTokenAddress(Re).toLowerCase()));return Ue.filter(Re=>te.has(A.normalizeNativeTokenAddress(Re.address).toLowerCase()))},[Ue,Y,H]),_e=D?.embeddedWalletAddress,Ot=D?.externalWalletAddress,je=U?Oe??Ot:_e,{walletAssets:at,refreshWalletAssets:Ze}=au({isOpen:e,includeWalletAssets:h,isWhitelistGateActive:H,isSemi7702:U,destinationTokenAddress:x,sourceAssets:Y,sourceChains:V,walletAddressForAssets:je,lockChainId:c,lockTokenSymbol:o,lockTokenLogoURI:r}),Ce=d.useMemo(()=>at.filter(te=>te.balance>0n),[at]),be=d.useMemo(()=>{if(U)return Ce.map(Re=>({...Re,_source:"wallet"}));if(!h)return rt;const te=[];for(const Re of Ce)te.push({...Re,_source:"wallet"});for(const Re of rt)te.push({...Re,_source:"spice"});return te},[U,h,Ce,rt]),et=d.useMemo(()=>H?x?be.filter(te=>g.addressesEqual(te.address,x)&&te.chainId===c):[]:be,[be,H,x,c]),mt=d.useRef(null),bt=d.useRef(null);d.useEffect(()=>{bt.current=M},[M]),d.useEffect(()=>{!H||!M?.asset||x&&g.addressesEqual(M.asset.address,x)&&M.asset.chainId===c||se(null)},[H,M?.asset,x,c]),d.useEffect(()=>{e||(se(null),fe(null),Q(null),he(!1),Se(null),we(null),$(!1),$e(!1),tt(null),Pe(!1),ie())},[e,ie]),d.useEffect(()=>{i&&i.assetAmount!==(M?.amount||"")&&se(te=>te&&{...te,amount:i.assetAmount})},[i?.assetAmount]),d.useEffect(()=>{l&&l.assetAmount!==(M?.amount||"")&&se(te=>te&&{...te,amount:l.assetAmount})},[l?.assetAmount]),d.useEffect(()=>{if(!U&&ge?.overallStatus==="success"&&ge.intentId&&mt.current!==ge.intentId&&De&&ge.steps.find(te=>te.transactionHash)?.transactionHash){mt.current=ge.intentId;const te=bt.current;if(!te?.asset||!te.amount||te.asset._source==="wallet"||I.parseUnits(te.amount,te.asset.decimals)===0n)return;Me()}},[ge,De,c,Me,U]);const ke=parseFloat(M?.amount||"")||0,pt=d.useMemo(()=>M?.asset?M.asset._source==="wallet"?M.asset.balanceFormatted??0:rt.find(te=>g.addressesEqual(te.address,M.asset.address)&&te.chainId===M.asset.chainId)?.balanceFormatted??0:0,[M?.asset,rt]),it=u?.selectedDuration??f[ne]??f[0],Xe=d.useMemo(()=>!M?.asset||!x?!1:g.addressesEqual(M.asset.address,x)&&M.asset.chainId===c,[M?.asset,x,c]),He=!U&&typeof s=="function"&&!!x&&!Xe,ht=Gu({enabled:e&&He,selectedAsset:M,lockChainId:c,destinationTokenAddress:x,lockTokenSymbol:o,lockTokenLogoURI:r,recipient:_e}),Te=ht.conversion,Ft=d.useMemo(()=>ke<=0?0:He?Te?Number(I.formatUnits(Te.minimum,Te.output.decimals)):0:Xe?ke:!C||C<=0?0:ke/C,[ke,C,Xe,He,Te]),Tt=d.useMemo(()=>Ft<=0?null:Ft.toLocaleString(void 0,He?{maximumSignificantDigits:6}:{maximumFractionDigits:2}),[Ft,He]),Pt=p&&Ft>0&&it?p(Ft,it.months):void 0,Bt=d.useMemo(()=>{if(ke<=0)return"$0.00";if(He){const te=M?.asset;return!te||te.balanceFormatted<=0||te.balanceUsd<=0?null:(ke*te.balanceUsd/te.balanceFormatted).toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2})}return Xe&&C?(ke*C).toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2}):!C||C<=0?"$0.00":ke.toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2})},[ke,C,Xe,He,M?.asset]),vt=d.useMemo(()=>{if(!Tt)return null;if(He){const Re=at.find(At=>At.chainId===c&&g.addressesEqual(At.address,x));return!Re||Re.balanceFormatted<=0||Re.balanceUsd<=0?null:(Ft*Re.balanceUsd/Re.balanceFormatted).toLocaleString(void 0,{maximumFractionDigits:2})}const te=parseFloat(Tt.replace(/,/g,""));return Xe&&C?(te*C).toLocaleString(void 0,{maximumFractionDigits:2}):C?(te*C).toLocaleString(void 0,{maximumFractionDigits:2}):null},[Tt,C,Xe,He,at,c,x,Ft]),ft=d.useCallback(te=>{se(Re=>({asset:te,amount:Re?.asset?.address===te.address&&Re?.asset?.chainId===te.chainId&&Re.amount||""})),fe(null),Q(null),Se(null),we(null),l?.setSelectedAsset&&l.setSelectedAsset({symbol:te.symbol,address:te.address,decimals:te.decimals,chainId:te.chainId})},[l?.setSelectedAsset]),st=d.useCallback(te=>{se(Re=>Re&&{...Re,amount:te}),fe(null),Q(null),Se(null),we(null),i&&i.setAssetAmount(te),l&&l.setAssetAmount(te)},[i,l]),Wt=d.useCallback(te=>{if(typeof s=="function"){if(!M?.asset||!M.amount)throw new Error("Select an asset and enter an amount");if(He){if(!Te||!_e||Te.expiresAt!==null&&Date.now()>=Te.expiresAt)throw new Error(ht.error||"Wait for a current swap quote before locking.");const Re=s({asset:Te.output,amount:I.formatUnits(Te.minimum,Te.output.decimals),amountWei:Te.minimum,feeAdjusted:!!te});return ep(Re,{chainId:c,recipient:_e,tokenIn:Te.input.address,amountIn:Te.amountIn,swap:Te.swap,escrowFunded:!Ii(M.asset,c)})}return s({asset:M.asset,amount:te?.amount??M.amount,amountWei:te?.amountWei??I.parseUnits(M.amount,M.asset.decimals),grossAmount:te?.grossAmount,grossAmountWei:te?.grossAmountWei,feeAdjusted:!!te})}return s},[s,M,He,Te,_e,c,ht.error]),Qt=d.useRef(null),tn=d.useRef(null),kt=d.useMemo(()=>!M?.asset||ke<=0?!1:U?!Xe&&!w:!0,[M,ke,U,Xe,w]),Ie=d.useCallback(te=>lp(Qt.current,te),[]),jt=d.useRef(null),re=d.useMemo(()=>!M?.asset||ke<=0||He&&!Te?null:Symbol("lock-fee-input"),[M?.asset?.address,M?.asset?.chainId,M?.amount,M?.asset?.decimals,M?.asset?._source,ke,_e,De,Ot,x,c,U,He,Te?.key,it?.months,s,m]),le=!!re&&X===re,xe=le?Je:null,Ve=ke>0&&(xe?Number(I.formatUnits(xe.grossAmount,xe.decimals))>pt:ke>pt);as({shouldRun:e&&!ue&&!!M?.asset&&ke>0&&(!He||!!Te)&&kt,deps:[e,ue,re,kt,He,Ie],delayMs:500,backgroundIntervalMs:3e4,onSkip:()=>{if(!(!e||ue)){if(!M?.asset||ke<=0){Q(null),he(!1),Se(null),we(null);return}Q(null),he(!1),Se(re),we(null)}},run:async({isBackground:te,isCurrent:Re,signal:At})=>{const Ke=re;te||(Q(null),Se(null),he(!0));try{const St=await Ie(At);if(!Re())return;jt.current=St&&Ke?{key:Ke,quote:St}:null,Q(null),Se(Ke),we(St?.preview??null)}catch(St){if(!Re())return;te||(Q(g.sanitizeError(St,"Unable to calculate fees for this lock.")),Se(null))}finally{Re()&&!te&&he(!1)}}}),d.useEffect(()=>{if(ge?.overallStatus==="success"){const te=ge.steps.find(Re=>Re.transactionHash);y?.(te?.transactionHash)}},[ge?.overallStatus,y]);const Le=h&&M?.asset?._source==="wallet"&&M?.asset?.chainId===c,xt=d.useCallback(()=>dp(Qt.current),[]),Qe=!!M?.asset&&ke>0&&!Ve&&!ue&&(!He||!!Te)&&(!kt||le&&!ee&&!_),Rt=ve||ht.error||_,ot=a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"6px"},children:[a.jsx(Mo,{color:Z}),a.jsxs("p",{style:{fontSize:"13px",color:Z,margin:0,lineHeight:"1.5"},children:["Add ",o," by converting assets from your account"]})]});if(tn.current={key:re,conversionKey:Te?.key??null},Qt.current={selectedAsset:M,parsedAmount:ke,selectedDuration:it,isInsufficientBalance:Ve,isSemi7702:U,isSourceDestToken:Xe,isDirectDeposit:Le,requiresRelayerFeeEstimate:kt,address:De,embeddedWalletAddress:_e,externalWallet:Be,externalWalletAddress:Ot,activeSignerWallet:Ge,activeSignerAddress:Oe,isConnected:ut,ready:ct,authenticated:nt,provider:yt,actions:dt,lockChainId:c,escrowAddress:m,onLockExecute:w,onLockSuccess:y,buildSpicenetBatch:k,resolveLockBatches:Wt,beginStatusTracking:ye,applyStepUpdate:Ne,refreshSpiceAssets:Me,refreshWalletAssets:Ze,feeQuote:re&&jt.current?.key===re?jt.current.quote:null,...He?{swapFunding:Te?{amount:Te.amountIn,decimals:Te.input.decimals,symbol:Te.input.symbol}:void 0,assertCurrentQuote:()=>{if(!Te||!le||tn.current?.key!==re||tn.current?.conversionKey!==Te.key||Te.expiresAt!==null&&Date.now()>=Te.expiresAt)throw new Error("The lock quote changed or expired. Review the updated amount and try again.")}}:{},ui:{setError:fe,setIsExecuting:$,setShowStatusPanel:Pe}},!e)return null;const Kt={backgroundColor:N,border:L,borderRadius:z,padding:"16px",marginBottom:"16px"};return a.jsx(en,{isOpen:e,onClose:t,title:`Add ${o} to your account`,subtitle:ot,styles:v,dark:B,footerLinkText:"Spicenet accounts \u2192",overlayContent:We?a.jsx("div",{}):void 0,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"0 24px 8px 24px",position:"relative"},children:[a.jsxs("div",{style:{marginBottom:"12px"},children:[S&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(Uo,{onClick:S,color:j,fontFamily:R})}),a.jsx("div",{style:{marginTop:"10px",fontSize:"13px",color:Z,fontFamily:R},children:a.jsx(os,{assets:et,selectedAsset:M??void 0,onAssetSelect:ft,onAmountChange:st,label:"Amount",showBalance:!0,showMaxButton:!0,theme:q,styles:W})}),a.jsx("div",{style:{marginTop:"6px",paddingLeft:"4px",fontSize:"13px",color:Z,fontFamily:R},children:Bt})]}),a.jsxs("div",{style:Kt,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"16px",borderBottom:B?`1px solid ${E.cardBorder}`:"1px solid #e5e7eb"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[r?a.jsx("img",{src:r,alt:o,style:{width:"32px",height:"32px",borderRadius:"50%",objectFit:"cover"}}):a.jsx("div",{style:{width:"32px",height:"32px",borderRadius:"50%",backgroundColor:B?E.inputBg:"#d1d5db",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:700,color:G},children:o.slice(0,2)}),a.jsx("span",{style:{fontSize:"16px",fontWeight:600,color:G,fontFamily:R},children:o})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"22px",fontWeight:700,color:G,fontFamily:R,lineHeight:1.1},children:Tt??"0.00"}),(!He||vt!==null)&&a.jsxs("div",{style:{fontSize:"12px",color:Z,fontFamily:R,marginTop:"2px"},children:["~$",vt??"0.00"]})]})]}),a.jsxs("div",{style:{paddingTop:"16px",paddingBottom:"16px",borderBottom:B?`1px solid ${E.cardBorder}`:"1px solid #e5e7eb"},children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"16px"},children:[a.jsx("span",{style:{fontSize:"15px",fontWeight:500,color:Z,fontFamily:R},children:"Lock Duration"}),a.jsx(Bn,{color:Z})]}),a.jsx(Xu,{options:f,selectedIndex:ne,onSelect:ce,primaryColor:j,dark:B,textPrimary:G,textSecondary:Z})]}),a.jsxs("div",{style:{paddingTop:"12px",display:"flex",flexDirection:"column",gap:"8px"},children:[a.jsx(Ai,{label:"Estimated Lock Expiry",value:it?.months!==void 0?Ju(it.months):"\u2014",fontFamily:R,dark:B,textPrimary:G,textSecondary:Z}),p&&a.jsx(Ai,{label:"Estimated voting power",value:Pt!==void 0?`${Pt} votes/epoch`:"\u2014",fontFamily:R,dark:B,textPrimary:G,textSecondary:Z})]})]}),kt&&a.jsx(Wo,{fontFamily:R,textPrimary:G,textSecondary:Z,cardBg:N,cardBorder:L,resolvedDark:B,darkCardBorder:E.cardBorder,primaryColor:j,feePreview:xe,isLoading:ee||ht.isQuoting,errorText:_}),Rt&&a.jsx(kn,{variant:"error",palette:E,fontFamily:R,style:{marginBottom:"12px"},children:Rt}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:()=>{ht.error?(fe(null),Q(null),Se(null),ht.retryQuote()):xt()},disabled:ue||!Qe&&!ht.error,loading:ue,dark:B,styles:{...v,button:{...v?.button,backgroundColor:j}},children:ue?Xe?"LOCKING...":"CONVERTING...":ht.error?"RETRY QUOTE":ht.isQuoting?"GETTING SWAP QUOTE...":ee&&kt?"CALCULATING FEES...":Xe?`LOCK ${o}`:`CONVERT TO ${o}`}),a.jsx(_u,{isOpen:We,data:Ae,isLocking:ue,lockError:Rt,onContinue:xt,onClose:()=>$e(!1),primaryColor:j,fontFamily:R,dark:B}),ge&&lt&&a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:10,backgroundColor:B?"rgba(0, 0, 0, 0.45)":"rgba(255, 255, 255, 0.55)",backdropFilter:"blur(2px)",WebkitBackdropFilter:"blur(2px)",borderRadius:z},children:a.jsx(Ko,{type:"lock",showStepBreakdown:!1,isOpen:!!ge&&ge.overallStatus!=="processing",isProcessing:ue||ge?.overallStatus==="processing",closeOnComplete:!1,onRetryTx:()=>{ie(),Pe(!1),xt()},onNewTx:()=>{ie(),Pe(!1),se(null),mt.current=null,Me(),Ze()},onClose:()=>{ie(),Pe(!1)},onComplete:()=>{ie(),Pe(!1),se(null),mt.current=null,Me(),Ze()},results:ge?.overallStatus==="success"||ge?.overallStatus==="failed"?ge.steps.map(te=>({asset:{symbol:M?.asset?.symbol||o,address:M?.asset?.address||""},txHash:te.transactionHash||"",success:te.status==="success",amount:M?.amount})):void 0,chainId:c,theme:T,styles:v,dark:B})})]})})};function ji(e){return e?.trim().replace(/^spice/i,"").replace(/[^a-z0-9]/gi,"").toUpperCase()||void 0}function Ri(e,t){const n=`${e.chainId}:${A.normalizeNativeTokenAddress(e.address).toLowerCase()}`,s=Object.entries(t).find(([i])=>i.toLowerCase()===n)?.[1];if(s!==void 0&&Number.isFinite(s)&&s>0)return s;const o=new Map;Object.entries(t).forEach(([i,l])=>{if(!Number.isFinite(l)||l<=0||/^\d+:/.test(i))return;o.set(i,l),o.set(i.toUpperCase(),l);const u=ji(i);u&&o.set(u,l)});const r=[e.symbol,e.displaySymbol,e.receiptTokenName,e.name,e.displayName];for(const i of r){if(!i)continue;const l=o.get(i)??o.get(i.toUpperCase());if(l!==void 0)return l;const u=ji(i);if(!u)continue;const c=o.get(u);if(c!==void 0)return c}return 0}function Di(e){const t=d.useContext(g.SpiceFlowProviderContext),n=t?.embeddedWalletAddress,s=e?.enabled===!1?void 0:n,o=t?.network?{network:t.network,pollIntervalMs:e?.pollIntervalMs,chainIds:e?.chainIds??t.supportedChainIds,discoverWalletBalances:e?.discoverWalletBalances}:void 0;return{...Ia(s,o),embeddedWalletAddress:n}}var pp="data:image/svg+xml,%3csvg width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='black' stroke-opacity='0.5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' xmlns='http://www.w3.org/2000/svg'%3e%3cpolyline points='17 1 21 5 17 9' /%3e%3cpath d='M3 11V9a4 4 0 0 1 4-4h14' /%3e%3cpolyline points='7 23 3 19 7 15' /%3e%3cpath d='M21 13v2a4 4 0 0 1-4 4H3' /%3e%3c/svg%3e";const fp=({appName:e,status:t,statusLabel:n,totalUsdValue:s,hasUnpricedAssets:o,breakdownSubtitle:r,showUsdSummary:i=!0,address:l,dk:u,dark:c=!1,showModeToggle:f,isEmbeddedMode:p=!0,onModeToggle:m})=>{const[h,x]=d.useState(!1),y=async()=>{l&&await g.copyToClipboard(l)&&(x(!0),setTimeout(()=>x(!1),2e3))},b=t==="active",w=n||(b?"Active":"Inactive"),C=b?"#10b981":"#9ca3af",S=a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[a.jsxs("div",{children:[a.jsx("strong",{children:"Embedded:"})," Deposit assets into ",e," account and use them here."]}),a.jsxs("div",{children:[a.jsx("strong",{children:"External:"})," Use assets from your connected wallet here."]})]});return a.jsxs("div",{children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"4px"},children:[a.jsxs("div",{style:{fontSize:"13px",fontWeight:600,color:u.textPrimary},children:[e," Account"]}),f?a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsxs("button",{onClick:m,style:{display:"flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"9999px",backgroundColor:c?u.hoverBg:"#f3f4f6",border:c?`1px solid ${u.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"11px",fontWeight:600,fontFamily:g.font.mono,color:u.textSecondary,transition:"background-color 150ms ease, border-color 150ms ease, color 150ms ease",letterSpacing:"0.02em"},children:[a.jsx("span",{children:p?"Embedded":"External"}),a.jsx("img",{src:pp,alt:"","aria-hidden":"true",style:{width:"11px",height:"11px",display:"block",...c?{filter:"invert(0.65)"}:{}}})]}),a.jsx(fa,{content:S,label:"Account mode info",textColor:c?u.textPrimary:"#f9fafb",backgroundColor:c?u.cardBg:"#111827",borderColor:c?u.cardBorder:"rgba(255,255,255,0.08)",accentColor:c?u.textSecondary:"#6b7280",children:a.jsx("img",{src:Vo,alt:"","aria-hidden":"true",style:{width:"12px",height:"12px",display:"block",...c?{filter:"invert(0.65)"}:{}}})})]}):a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"9999px",backgroundColor:c?u.hoverBg:b?"#ecfdf5":"#f3f4f6",border:c?`1px solid ${u.cardBorder}`:b?"1px solid #a7f3d0":"1px solid #e5e7eb"},children:[a.jsx("div",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:C}}),a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:c?u.textSecondary:b?"#065f46":"#6b7280"},children:w})]})]}),i&&a.jsx("div",{style:{fontSize:"28px",fontWeight:700,color:u.textPrimary,lineHeight:1.2,marginBottom:"2px"},children:o?"Value unavailable":g.formatUsd(s)}),i&&r&&a.jsx("div",{style:{fontSize:"12px",color:u.textSecondary,marginBottom:"8px"},children:r}),l&&a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"12px",fontFamily:g.font.mono,color:c?u.textSecondary:"#9ca3af"},children:g.truncateAddress(l)}),a.jsx("button",{onClick:y,style:{padding:"2px 6px",fontSize:"10px",fontWeight:500,backgroundColor:"transparent",color:c?u.textSecondary:"#9ca3af",border:"none",cursor:"pointer",borderRadius:"4px",transition:"background-color 150ms ease, color 150ms ease"},title:"Copy address",children:h?"Copied":"Copy"})]})]})},mp=d.memo(fp),hp=({pendingDeposits:e,onCompleteDeposit:t,dk:n,dark:s=!1})=>e.length===0?null:a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:n.textSecondary,marginBottom:"8px",textTransform:"uppercase"},children:"Pending Deposits"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.map((o,r)=>{const i=g.getChainConfig(o.chainId)?.displayName||`Chain ${o.chainId}`;return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",backgroundColor:s?n.warningBg:"#fffbeb",border:s?`1px solid ${n.warningBorder}`:"1px solid #fde68a",borderRadius:"8px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("div",{style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:s?n.hoverBg:"#fde68a",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:600,color:n.warningText},children:o.tokenSymbol.charAt(0)}),a.jsxs("div",{children:[a.jsxs("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:[o.amount," ",o.tokenSymbol]}),a.jsxs("div",{style:{fontSize:"11px",color:n.warningText},children:["on ",i]})]})]}),a.jsx("button",{onClick:()=>t?.(o),style:{padding:"4px 12px",fontSize:"11px",fontWeight:600,backgroundColor:s?n.hoverBg:"#fef3c7",color:s?n.textPrimary:"#92400e",border:s?`1px solid ${n.warningBorder}`:"1px solid #fde68a",borderRadius:"9999px",cursor:"pointer",transition:"background-color 150ms ease, border-color 150ms ease, color 150ms ease"},children:"Complete"})]},`${o.tokenAddress}-${o.chainId}-${r}`)})})]}),gp=d.memo(hp),xp=e=>`${e.tokenAddress}-${e.chainId}`,yp=({spiceAssets:e,loading:t,dk:n,dark:s=!1,canDirectWithdraw:o=!1,onDirectWithdraw:r,directWithdrawState:i})=>{const l={fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:n.textSecondary,marginBottom:"8px",textTransform:"uppercase"},u={backgroundColor:n.cardBg,border:s?`1px solid ${n.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px"};return t?a.jsxs("div",{children:[a.jsx("div",{style:l,children:"Idle Balances"}),[1,2].map(c=>a.jsx("div",{style:{...u,padding:"12px",marginBottom:"6px",height:"48px",animation:"pulse 1.5s ease-in-out infinite",opacity:.5}},c))]}):e.length===0?a.jsxs("div",{children:[a.jsx("div",{style:l,children:"Idle Balances"}),a.jsx("div",{style:{...u,padding:"16px",textAlign:"center",fontSize:"13px",color:s?n.textSecondary:"#9ca3af"},children:"No assets yet. Deposit to get started."})]}):a.jsxs("div",{children:[a.jsx("div",{style:l,children:"Idle Balances"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.map((c,f)=>{const p=g.getChainConfig(c.chainId),m=c.chainDisplayName||p?.displayName||`Chain ${c.chainId}`,h=c.tokenDisplaySymbol||c.tokenDisplayName||c.tokenSymbol,x=xp(c),y=o&&c.directWithdraw&&!!r,b=i?.key===x?i:null,w=b?.step==="pending";return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",...u},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[c.logoURI?a.jsx("img",{src:c.logoURI,alt:c.tokenSymbol,style:{width:"24px",height:"24px",borderRadius:"50%"}}):a.jsx("div",{style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:s?n.hoverBg:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:600,color:n.textSecondary},children:h.charAt(0)}),a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:h}),a.jsx("div",{style:{fontSize:"11px",color:s?n.textSecondary:"#9ca3af"},children:m})]})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:g.formatBalance(c.balanceFormatted)}),a.jsx("div",{style:{fontSize:"11px",color:b?.step==="error"?n.errorText:s?n.textSecondary:"#9ca3af"},children:b?.step==="error"?b.message||"Withdraw failed":c.balanceFormatted>0&&!(c.usdValue>0)?"Price unavailable":g.formatUsd(c.usdValue)})]}),y&&a.jsx("button",{onClick:()=>!w&&r(c),disabled:w,title:"Withdraw to external wallet",style:{padding:"6px 10px",borderRadius:"6px",border:s?`1px solid ${n.cardBorder}`:"1px solid #e5e7eb",backgroundColor:s?n.hoverBg:"#ffffff",color:n.textPrimary,fontSize:"11px",fontWeight:600,cursor:w?"default":"pointer",opacity:w?.6:1,whiteSpace:"nowrap"},children:w?"Withdrawing\u2026":"Withdraw"})]})]},`${c.tokenAddress}-${c.chainId}-${f}`)})})]})},bp=d.memo(yp),wp=({section:e,dk:t,dark:n=!1})=>{const s=o=>{switch(o){case"green":return"#10b981";case"red":return"#ef4444";default:return t.textPrimary}};return a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:t.textSecondary,marginBottom:"8px",textTransform:"uppercase"},children:e.title}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.items.map((o,r)=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",backgroundColor:t.cardBg,border:n?`1px solid ${t.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[o.tokenLogoURI?a.jsx("img",{src:o.tokenLogoURI,alt:o.tokenSymbol,style:{width:"20px",height:"20px",borderRadius:"50%"}}):a.jsx("div",{style:{width:"20px",height:"20px",borderRadius:"50%",backgroundColor:n?t.hoverBg:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontWeight:600,color:t.textSecondary},children:o.tokenSymbol.charAt(0)}),a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:t.textPrimary},children:o.tokenSymbol}),a.jsx("div",{style:{fontSize:"11px",color:t.textSecondary},children:o.label})]})]}),a.jsx("div",{style:{fontSize:"13px",fontWeight:600,color:s(o.valueColor)},children:o.displayValue})]},r))})]})},Cp=d.memo(wp),vp=({onDepositClick:e,onWithdrawClick:t,depositDisabled:n=!1,withdrawDisabled:s=!1,primaryColor:o="#EA4B4B",dark:r=!1})=>!e&&!t?null:a.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e&&a.jsx(g.Button,{variant:"outline",onClick:e,disabled:n,dark:r,styles:{button:{backgroundColor:o}},style:{flex:1,height:"44px",fontSize:"12px"},children:"Deposit"}),t&&a.jsx(g.Button,{variant:"outline",onClick:t,disabled:s,dark:r,styles:{button:{backgroundColor:o}},style:{flex:1,height:"44px",fontSize:"12px"},children:"Withdraw"})]}),kp=d.memo(vp),Sp=({appName:e,status:t,statusLabel:n,totalUsdValue:s,hasUnpricedAssets:o,breakdownSubtitle:r,showUsdSummary:i,address:l,spiceAssets:u,spiceAssetsLoading:c,pendingDeposits:f,customSections:p,notice:m,onDepositClick:h,onWithdrawClick:x,depositDisabled:y,onCompleteDeposit:b,primaryColor:w,dk:C,dark:S=!1,showModeToggle:k,isEmbeddedMode:v,onModeToggle:F,showConnectExternalCta:T,onConnectExternalWallet:B,connectExternalError:j,showHowItWorks:E=!0,canDirectWithdraw:R,onDirectWithdraw:D,directWithdrawState:O})=>{const[H,U]=d.useState(!1);return a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"16px",padding:"16px",maxHeight:"calc(80vh - 32px)",overflowY:"auto"},children:[a.jsx(mp,{appName:e,status:t,statusLabel:n,totalUsdValue:s,hasUnpricedAssets:o,breakdownSubtitle:r,showUsdSummary:i,address:l,dk:C,dark:S,showModeToggle:k,isEmbeddedMode:v,onModeToggle:F}),m&&a.jsx("div",{style:{padding:"10px 12px",borderRadius:"8px",backgroundColor:m.tone==="warning"?S?"rgba(245, 158, 11, 0.12)":"#fffbeb":m.tone==="success"?S?"rgba(16, 185, 129, 0.12)":"#ecfdf5":C.cardBg,border:m.tone==="warning"?S?"1px solid rgba(245, 158, 11, 0.35)":"1px solid #fde68a":m.tone==="success"?S?"1px solid rgba(16, 185, 129, 0.35)":"1px solid #a7f3d0":S?`1px solid ${C.cardBorder}`:"1px solid #e5e7eb",color:m.tone==="warning"?S?"#fbbf24":"#92400e":m.tone==="success"?S?"#34d399":"#047857":C.textSecondary,fontSize:"12px",lineHeight:1.45,fontWeight:500},children:m.message}),T&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[a.jsx("button",{onClick:B,style:{width:"100%",padding:"10px 14px",borderRadius:"8px",backgroundColor:w||"#EA4B4B",color:"#ffffff",border:"none",cursor:"pointer",fontSize:"13px",fontWeight:600,fontFamily:g.font.ui,transition:"opacity 150ms ease"},children:"Connect External Wallet"}),j&&a.jsx("span",{style:{fontSize:"11px",color:S?C.errorText:"#b91c1c",lineHeight:1.4},children:j})]}),a.jsx("div",{style:{height:"1px",backgroundColor:S?"#2d2d2d":"#e5e7eb"}}),a.jsx(kp,{onDepositClick:h,onWithdrawClick:x,depositDisabled:y,primaryColor:w,dark:S}),E&&a.jsxs("div",{children:[a.jsxs("button",{onClick:()=>U(!H),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",padding:"8px 12px",backgroundColor:C.cardBg,border:S?`1px solid ${C.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px",cursor:"pointer",color:C.textSecondary,fontSize:"12px",fontWeight:500},children:[a.jsx("span",{children:"How It Works"}),a.jsx("span",{style:{transform:H?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease",fontSize:"10px"},children:"\u25BE"})]}),H&&a.jsxs("div",{style:{marginTop:"6px",padding:"10px 12px",backgroundColor:S?C.cardBg:"#f0fdf4",border:S?`1px solid ${C.cardBorder}`:"1px solid #bbf7d0",borderRadius:"8px",fontSize:"12px",lineHeight:1.5,color:S?C.textSecondary:"#374151"},children:["Fund your ",e," Account from any supported chain. Once funded, transact gas-free and asset-abstracted on ",e,"."]})]}),a.jsx(gp,{pendingDeposits:f,onCompleteDeposit:b,dk:C,dark:S}),a.jsx(bp,{spiceAssets:u,loading:c,dk:C,dark:S,canDirectWithdraw:R,onDirectWithdraw:D,directWithdrawState:O}),p.map((V,Y)=>a.jsx(Cp,{section:V,dk:C,dark:S},Y))]})},Ap=d.memo(Sp);function Ip(e){return!!e.embeddedAddress&&!!e.externalAddress}function Ep(e,t,n){const s=t-n.gasBridge-n.spicenetFee;if(s<=0n)throw new Error("Balance is too small to cover the network fee.");const o=[{recipient:e,amount:s}];return n.gasBridge>0n&&o.push({recipient:A.SPICE_GAS_FEE_RECIPIENT,amount:n.gasBridge}),n.spicenetFee>0n&&o.push({recipient:A.SPICE_PLATFORM_FEE_RECIPIENT,amount:n.spicenetFee}),o}function Ni(e,t,n){const s=n.filter(o=>o.amount>0n);return{chainId:e,domain:"evm",tokenTransfers:[],calls:A.isNativeToken(t)?s.map(o=>({to:o.recipient,value:o.amount,data:"0x"})):s.map(o=>({to:t,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[o.recipient,o.amount]})}))}}const Fp=new Set([A.SPICE_GAS_FEE_RECIPIENT,A.SPICE_PLATFORM_FEE_RECIPIENT].map(e=>e.toLowerCase()));function Tp(e,t){return!e||e.length!==t.length?!1:e.every((n,s)=>{const o=t[s];return n.recipient.toLowerCase()!==o.recipient.toLowerCase()?!1:Fp.has(n.recipient.toLowerCase())?vn(n.amount,o.amount,100n):!0})}function Bp(e,t){const n=e.intents.flatMap(o=>o.batches).filter(o=>Yt(o).totalFee>0n),s=n.filter(o=>o.chainId===t);return(s.length>0?s:n)[0]??null}function jp(e,t,n,s){const o=Bp(s,e),{gasFee:r,bridgeFee:i,spicenetFee:l}=o?Yt(o):{gasFee:0n,bridgeFee:0n,spicenetFee:0n};return Ep(t,n,{gasBridge:r+i,spicenetFee:l})}function Rp(){const{execute:e}=Hn(),t=d.useContext(g.SpiceFlowProviderContext)?.embeddedWalletAddress,{embeddedAddress:n}=g.useProviderWallets(),s=t||n;return{withdraw:d.useCallback(async({tokenAddress:o,chainId:r,balance:i,recipient:l,onProgress:u})=>{const c=o,f=l;if(i<=0n)throw new Error("Nothing to withdraw.");const p=[Ni(r,c,[{recipient:f,amount:i}])];let m=null;return e(p,c,0n,u,void 0,{useCustomTransfers:!0,userOverride:s,adjustBatchesForEstimate:({feeEstimate:h})=>{const x=jp(r,f,i,h);return Tp(m,x)?null:(m=x,[Ni(r,c,x)])}})},[e,s])}}const ur=380,On=8,Dp=[],Np=.01,Op=({appName:e="Spice",status:t="active",statusLabel:n,customSections:s=Dp,extraAssets:o=[],tokenPrices:r={},breakdownLabels:i=[],notice:l,styles:u,dark:c=!1,onDepositSuccess:f,onDepositClick:p,onWithdrawClick:m,onCompleteDeposit:h,showModeToggle:x=!1,defaultMode:y,showUsdSummary:b=!0})=>{const w=d.useContext(g.SpiceFlowProviderContext),C=w?.mode!=="7702",S=!!w?.isWhitelistGateActive,k=!!w?.isWhitelistConfigured&&w?.isUserWhitelisted!==!0,v=d.useRef(!1);d.useEffect(()=>{if(!v.current){if(g.hasStoredSpiceFlowMode()){v.current=!0;return}y&&w?.setMode&&(w.setMode(y==="non7702"?"ondemand":"7702"),v.current=!0)}},[w,y]);const[F,T]=d.useState(!1),[B,j]=d.useState(null),[E,R]=d.useState({top:0,bottom:0,left:0,placement:"below"}),D=d.useRef(null),O=d.useRef(null),{address:H,isConnected:U}=g.useWallet(),V=w?.embeddedWalletAddress,Y=w?.externalWalletAddress,{embeddedAddress:N}=g.useProviderWallets(),{dark:L,primaryColor:z,dk:G}=g.useSpiceBrand(u,c),Z=C&&!Y,W=!C||Z,q=W?V||N:H,M=d.useMemo(()=>w?.supportedChainIds??A.getChainIdsByNetwork("mainnet"),[w?.supportedChainIds]),{assets:se,loading:de}=ds({address:q,supportedChains:M,enabled:!!q&&W,refetchInterval:3e4}),ae=!!q&&W&&!S,{assets:ne,refreshAssets:ce}=wn({address:ae?q:void 0,supportedChains:M,fetchBalances:bn,enabled:ae,refreshInterval:3e4}),ue=d.useMemo(()=>{const ye=(ie,Ue)=>`${ie}:${A.normalizeNativeTokenAddress(Ue).toLowerCase()}`,Ne=new Set(o.map(ie=>ye(ie.chainId,ie.tokenAddress)));return ne.filter(ie=>ie.balance<=0n?!1:!Ne.has(ye(ie.chainId,ie.address))).map(ie=>({tokenAddress:ie.address,tokenSymbol:ie.symbol,tokenDecimals:ie.decimals,chainId:ie.chainId,chainDisplayName:g.getChainName(ie.chainId),balance:ie.balance.toString(),balanceFormatted:ie.balanceFormatted,usdValue:ie.balanceUsd||Ri(ie,r)*ie.balanceFormatted,logoURI:ie.logoURI,directWithdraw:!0}))},[ne,o,r]),$=d.useMemo(()=>{const ye=W?se.map(ie=>{const Ue=ie.balanceUsd||0,Me=Number.isFinite(ie.balanceFormatted)?ie.balanceFormatted:0,rt=Ue>0?Ue:Ri(ie,r)*Me;return{tokenAddress:ie.address,tokenSymbol:ie.symbol,tokenDisplaySymbol:vo(ie),tokenDisplayName:_l(ie),tokenDecimals:ie.decimals,chainId:ie.chainId,chainDisplayName:ko(ie),balance:ie.balance.toString(),balanceFormatted:ie.balanceFormatted,usdValue:rt,logoURI:ie.logoURI}}):[],Ne=Z?[]:o;return[...ye,...ue,...Ne].filter(ie=>ie.balanceFormatted>0&&!(ie.usdValue>0&&ie.usdValue<Np))},[W,Z,se,r,ue,o]),ve=d.useMemo(()=>$.reduce((ye,Ne)=>ye+Ne.usdValue,0),[$]),{pendingDeposits:P,refresh:oe}=Di({chainIds:M,enabled:!!H,discoverWalletBalances:!0}),fe=d.useMemo(()=>s.reduce((ye,Ne)=>ye+(Ne.totalValue??0),0),[s]),_=ve+fe,Q=$.some(ye=>ye.balanceFormatted>0&&!(ye.usdValue>0)),ee=Q,he=d.useMemo(()=>{const ye=[];ve>0&&ye.push(`${g.formatUsd(ve)} idle`);for(const Ne of s){if(Ne.totalValue===void 0)continue;const ie=i.find(Ue=>Ue.sectionTitle===Ne.title)?.label||Ne.title.toLowerCase();ye.push(`${g.formatUsd(Ne.totalValue)} ${ie}`)}return Q&&ye.push("Some asset prices unavailable"),ye.join(" \xB7 ")},[ve,s,i,Q]),X=d.useCallback(ye=>{h?h(ye):j(ye)},[h]),Se=d.useCallback(()=>{j(null)},[]),Je=d.useCallback(()=>{j(null),f?.()},[f]),we=d.useCallback(()=>{if(!D.current)return;const ye=D.current.getBoundingClientRect(),Ne=window.innerHeight-ye.bottom-On,ie=ye.top-On,Ue=Ne>=400||Ne>=ie?"below":"above",Me=Math.max(On,Math.min(ye.right-ur,window.innerWidth-ur-On)),rt=Ue==="below"?ye.bottom+On:ye.top-On,_e=Ue==="above"?window.innerHeight-rt:0;R({top:rt,bottom:_e,left:Me,placement:Ue})},[]);d.useLayoutEffect(()=>{F&&we()},[F,we]),d.useEffect(()=>{if(!F)return;const ye=Ue=>{D.current&&!D.current.contains(Ue.target)&&O.current&&!O.current.contains(Ue.target)&&T(!1)},Ne=Ue=>{Ue.key==="Escape"&&T(!1)},ie=()=>we();return document.addEventListener("mousedown",ye),document.addEventListener("keydown",Ne),window.addEventListener("scroll",ie,{passive:!0}),window.addEventListener("resize",we),()=>{document.removeEventListener("mousedown",ye),document.removeEventListener("keydown",Ne),window.removeEventListener("scroll",ie),window.removeEventListener("resize",we)}},[F,we]);const lt=W?V||N||H:Y||H,Pe=d.useCallback(()=>{w?.setMode&&w.setMode(W?"ondemand":"7702")},[w,W]),[We,$e]=d.useState(null);let Ae=null;try{Ae=Mr.useConnectWallet({onSuccess:()=>$e(null),onError:ye=>$e(g.sanitizeError(ye,"Failed to connect wallet."))}).connectWallet}catch{Ae=null}const tt=d.useCallback(()=>{Ae&&(T(!1),$e(null),Ae({walletChainType:"ethereum-only"}))},[Ae]),Ye=!Y&&!!Ae,ct=d.useCallback(()=>{T(!1),p?.()},[p]),nt=d.useCallback(()=>{T(!1),m?.()},[m]),ut=d.useCallback(ye=>{T(!1),X(ye)},[X]),{withdraw:De}=Rp(),[yt,dt]=d.useState(null),Be=Ip({embeddedAddress:V||N,externalAddress:Y}),Ge=d.useCallback(async ye=>{if(!Y)return;const Ne=`${ye.tokenAddress}-${ye.chainId}`;dt({key:Ne,step:"pending"});try{await De({tokenAddress:ye.tokenAddress,chainId:ye.chainId,balance:BigInt(ye.balance),recipient:Y}),dt(null),oe(),ce()}catch(ie){dt({key:Ne,step:"error",message:g.sanitizeError(ie,"Withdraw failed")})}},[De,Y,oe,ce]);if(typeof window>"u")return null;const Oe=a.jsxs("button",{ref:D,onClick:()=>T(!F),style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 14px",borderRadius:"9999px",backgroundColor:L?G.hoverBg:"#ffffff",border:L?`1px solid ${G.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"13px",fontWeight:500,fontFamily:g.font.ui,color:L?G.textPrimary:"#111827",transition:"background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease",boxShadow:L?"none":"0 1px 2px rgba(0,0,0,0.05)"},children:[a.jsxs("span",{children:[e," Account"]}),U&&b&&a.jsxs("span",{style:{color:L?G.textSecondary:"#6b7280"},children:["\xB7 ",ee?"Value unavailable":g.formatUsd(_)]}),a.jsx("span",{style:{fontSize:"10px",color:L?G.textSecondary:"#9ca3af",transform:F?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease"},children:"\u25BE"})]}),ge=F?es.createPortal(a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.08)",zIndex:g.z.popover},onClick:()=>T(!1)}),a.jsx("div",{ref:O,style:{position:"fixed",top:E.placement==="below"?`${E.top}px`:"auto",bottom:E.placement==="above"?`${E.bottom}px`:"auto",left:`${E.left}px`,width:`${ur}px`,maxWidth:`calc(100vw - ${On*2}px)`,maxHeight:"80vh",backgroundColor:L?G.shell:"#ffffff",border:L?`1px solid ${G.cardBorder}`:"1px solid #e5e7eb",borderRadius:"12px",boxShadow:L?"0 10px 40px rgba(0, 0, 0, 0.5)":"0 10px 40px rgba(0, 0, 0, 0.12)",zIndex:g.z.popover+1,overflow:"hidden",animation:`accountDisplayFadeIn 200ms ${g.easing.out}`},children:a.jsx(Ap,{appName:e,status:t,statusLabel:n,totalUsdValue:_,hasUnpricedAssets:ee,breakdownSubtitle:he,showUsdSummary:b,address:W?lt:H,spiceAssets:$,spiceAssetsLoading:de,pendingDeposits:P,customSections:s,notice:l,onDepositClick:p?ct:void 0,onWithdrawClick:m?nt:void 0,depositDisabled:k,onCompleteDeposit:ut,primaryColor:z,dk:G,dark:L,showModeToggle:x,isEmbeddedMode:W,onModeToggle:Pe,showConnectExternalCta:Ye,onConnectExternalWallet:tt,connectExternalError:We,showHowItWorks:!S,canDirectWithdraw:Be,onDirectWithdraw:Ge,directWithdrawState:yt})}),a.jsx("style",{children:`
80
+ `})]})},jp=60*60,il=(e,t)=>!!e&&e.grossAmount===t.grossAmount&&e.netAmount===t.netAmount&&e.feeAmount===t.feeAmount;function to(e,t){return t?e.some(n=>(n.tokenTransfers??[]).some(s=>s.from==="escrow"&&BigInt(s.amount)>=t.grossAmount)):!1}function ll(e){return!e.isSemi7702&&e.isDirectDeposit&&!e.isSourceDestToken&&!!e.selectedAsset?.asset&&!pi(e.selectedAsset.asset,e.lockChainId)}function br(e){if(e.swapFunding)return e.swapFunding.amount;const t=e.selectedAsset?.asset,n=e.selectedAsset?.amount;if(!(!t||!n))return I.parseUnits(n,t.decimals)}async function no({user:e,batches:t,authorizations:n,adjustBatchesForEstimate:s}){let o=t;for(let r=0;r<10;r+=1){const i=await g.relayerService.estimateActionFees(mi(e,o,n)),l=await s({feeEstimate:i,batches:o});if(!l||oa(o,l))return o;o=l}throw new Error("Fee estimate did not converge. Please retry.")}function Rp(e){return{chainId:e.sourceChainId,calls:e.isNative?[{to:e.target,value:e.amount,data:"0x"}]:[{to:e.tokenAddr,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[e.target,e.amount]})}]}}function wr(e,t,n,s){const o=e.selectedAsset.asset,r=br(e),i=o.chainId,l=e.escrowAddress||A.getEscrowContractAddress(i),d=A.normalizeNativeTokenAddress(o.address),c=o.isNative||A.isNativeToken(d),m=n.some(p=>p.tokenTransfers?.some(f=>f.from==="escrow"));return{asset:o,userNetAmountWei:r,sourceChainId:i,tokenAddr:d,isNative:c,hasEscrowBackedPayout:m,composeBatches:(p,f,h,x)=>{const b=Rp({sourceChainId:i,target:l,tokenAddr:d,isNative:c,amount:p});if(!m)return[b,...f];const y=Gn([...f],t,h,{payoutAlreadyGross:to(f,x),...s!==void 0?{requestTimestampMs:s}:{}});return[b,...y]}}}function Cr(e){const t={};return{state:t,adjustBatchesForEstimate:({feeEstimate:n})=>{const s=Eo(n,{symbol:e.symbol,decimals:e.decimals,actionAmount:e.actionAmount});if(!s)return null;t.plan={grossAmount:s.grossAmount,netAmount:s.netAmount,feeAmount:s.totalFee??0n};const o=Fn(e.ctx,t.plan);return e.rebuild(o,n,t.plan)}}}function Fn(e,t){const n=e.selectedAsset?.asset;if(!n||!e.selectedAsset?.amount)throw new Error("Select an asset and enter an amount");const s=I.parseUnits(e.selectedAsset.amount,n.decimals),o=t?Bt(t.grossAmount,e.swapFunding?.decimals??n.decimals,n.decimals,"ceil"):s;return e.resolveLockBatches({amount:e.selectedAsset.amount,amountWei:s,grossAmount:I.formatUnits(o,n.decimals),grossAmountWei:o})}async function vr(e,t,n){e.assertCurrentQuote?.();const s=e.isSemi7702&&e.embeddedWalletAddress||e.address;if(!e.isConnected||!s)throw new Error("Please connect your wallet to continue");if(t.length===0)throw new Error("No lock batches configured");if(!e.ready||!e.authenticated)throw new Error(`Please authenticate with ${e.provider||"wallet provider"} to continue`);const o=n??await ls({chainBatches:t,signingAddress:s,actions:e.actions}),r=A.hashChainBatches(t),i=Math.floor(Date.now()/1e3)+jp;e.assertCurrentQuote?.();const l={mode:"7702",signatureType:"ecdsa",signature:await ia(e.actions,t,BigInt(i)),nbf:0,exp:i,chainBatches:r.map((c,m)=>{const p=t[m],f=p.domain==="spicenet";return{hash:c.hash,chainId:c.chainId,tokenTransfers:f?[]:p.tokenTransfers??[],calls:c.calls}})};e.assertCurrentQuote?.();const d=await g.relayerService.createAction({user:s,chainAuthorizations:o,intents:[l]});if(d){const c=g.createInitialSteps(t,g.getChainName),[m,p]=d.intentIds[0].split("/"),f=parseInt(p||"0",10),h=d.intentIds[0];e.beginStatusTracking(d.intentIds[0],c),await Io({actionId:m,intentIndex:f,intentId:h,totalSteps:t.length,isSpicenetStep:x=>t[x]?.domain==="spicenet",maxExecuteAttemptsForStep:x=>t[x]?.domain==="spicenet"?6:3,onStepUpdate:e.applyStepUpdate,maxPolls:72})}}function kr(e,t){const n=e.feeQuote;return n?t.adjustBatchesForEstimate({feeEstimate:n.feeEstimate,batches:[]}):null}async function Dp(e){const t=Fn(e);if(t.length===0)throw new Error("No lock batches configured");const n=e.isSemi7702&&e.embeddedWalletAddress||e.address;if(!e.isConnected||!n)throw new Error("Please connect your wallet to continue");const s=await ls({chainBatches:t,signingAddress:n,actions:e.actions}),o=Date.now(),r=Cr({ctx:e,actionAmount:br(e),symbol:e.swapFunding?.symbol??e.selectedAsset?.asset.symbol??"",decimals:e.swapFunding?.decimals??e.selectedAsset?.asset.decimals??18,rebuild:(l,d,c)=>Gn([...l],n,d,{payoutAlreadyGross:to(l,c),requestTimestampMs:o})});let i=kr(e,r)??Gn([...t],n,void 0,{requestTimestampMs:o});i=await no({user:n,batches:i,authorizations:s,adjustBatchesForEstimate:r.adjustBatchesForEstimate}),await vr(e,i,s)}async function Np(e){if(!e.selectedAsset?.asset||!e.selectedAsset.amount)throw new Error("Select an asset and enter an amount");const t=e.embeddedWalletAddress||e.address;if(!e.isConnected||!t)throw new Error("Please connect your wallet to continue");const n=e.resolveLockBatches();if(n.length===0)throw new Error("No lock batches configured");const s=wr(e,t,n,Date.now()),o=Cr({ctx:e,actionAmount:s.userNetAmountWei,symbol:e.swapFunding?.symbol??s.asset.symbol,decimals:e.swapFunding?.decimals??s.asset.decimals,rebuild:(l,d,c)=>s.composeBatches(c.grossAmount,l,d,c)});let r=kr(e,o)??s.composeBatches(s.userNetAmountWei,Fn(e));const i=await ls({chainBatches:r,signingAddress:t,actions:e.actions});s.hasEscrowBackedPayout&&(r=await no({user:t,batches:r,authorizations:i,adjustBatchesForEstimate:o.adjustBatchesForEstimate})),await vr(e,r,i)}async function Mp(e){if(!e.selectedAsset?.asset||!e.selectedAsset.amount)throw new Error("Select an asset and enter an amount");if(!e.externalWalletAddress||!e.externalWallet)throw new Error("Please connect your external wallet to continue");const t=e.embeddedWalletAddress;if(!t)throw new Error("Embedded wallet not available \u2014 sign in to create one before locking");if(e.onLockExecute){const x=e.resolveLockBatches();if(x.length===0)throw new Error("No lock batches configured");const b=e.selectedAsset.asset,y=I.parseUnits(e.selectedAsset.amount,b.decimals),w=await e.onLockExecute({asset:b,amount:e.selectedAsset.amount,amountWei:y,lockDurationMonths:e.selectedDuration?.months??0,chainBatches:x});w&&e.onLockSuccess?.(w);return}const n=e.resolveLockBatches();if(n.length===0)throw new Error("No lock batches configured");const s=wr(e,t,n,Date.now()),{userNetAmountWei:o}=s,r=Cr({ctx:e,actionAmount:o,symbol:s.asset.symbol,decimals:s.asset.decimals,rebuild:(x,b,y)=>s.composeBatches(y.grossAmount,x,b,y)});let i=kr(e,r)??s.composeBatches(o,Fn(e));const l=await ls({chainBatches:i,signingAddress:t,actions:e.actions});s.hasEscrowBackedPayout&&(i=await no({user:t,batches:i,authorizations:l,adjustBatchesForEstimate:r.adjustBatchesForEstimate}));const d=r.state.plan?.grossAmount??o,{extWc:c,viemChain:m}=await On({wallet:e.externalWallet,account:e.externalWalletAddress,chainId:s.sourceChainId}),p=g.getClientForChain(s.sourceChainId),f=x=>ya({extWc:c,sourceClient:p,recipient:t,tokenAddr:s.tokenAddr,isNative:s.isNative,amount:x,viemChain:m});await f(d);let h=d;if(s.hasEscrowBackedPayout)for(let x=0;x<4;x+=1){i=await no({user:t,batches:i,authorizations:l,adjustBatchesForEstimate:r.adjustBatchesForEstimate});const b=r.state.plan?.grossAmount??o;if(b<=h)break;await f(b-h),h=b}await vr(e,i,l)}async function Op(e,t){if(!e.selectedAsset?.asset||!e.selectedAsset.amount||!e.requiresRelayerFeeEstimate)return null;if(e.isSemi7702||ll(e)){const d=e.embeddedWalletAddress||e.address;if(!d)throw new Error("Embedded wallet not available \u2014 sign in to create one before locking");const c=e.feeQuote;let m=Fn(e,c?.plan);if(m.length===0)throw new Error("No lock batches configured");const p=wr(e,d,m),{asset:f,userNetAmountWei:h}=p;let x=c?p.composeBatches(c.plan.grossAmount,m,c.feeEstimate,c.plan):p.composeBatches(h,m,void 0,{grossAmount:h,netAmount:0n,feeAmount:0n}),b=null,y=c?.plan;for(let w=0;w<4;w+=1){const S=await g.relayerService.estimateActionFees(fi(d,x),{signal:t}),v=Eo(S,{symbol:e.swapFunding?.symbol??f.symbol,decimals:e.swapFunding?.decimals??f.decimals,actionAmount:h});if(!v)return b;const k={grossAmount:v.grossAmount,netAmount:v.netAmount,feeAmount:v.totalFee??0n},C=il(y,k);if(b={preview:v,feeEstimate:S,plan:k},y=k,m=Fn(e,k),x=p.composeBatches(k.grossAmount,m,S,k),C)break}return b}const n=e.address;if(!e.isConnected||!n)throw new Error("Please connect your wallet to continue");const s=e.feeQuote;let o=Fn(e,s?.plan);if(o.length===0)throw new Error("No lock batches configured");let r=Gn([...o],n,s?.feeEstimate,s?{payoutAlreadyGross:to(o,s.plan)}:void 0),i=null,l=s?.plan;for(let d=0;d<4;d+=1){const c=await g.relayerService.estimateActionFees(fi(n,r),{signal:t}),m=Eo(c,{symbol:e.swapFunding?.symbol??e.selectedAsset.asset.symbol,decimals:e.swapFunding?.decimals??e.selectedAsset.asset.decimals,actionAmount:br(e)});if(!m)return null;const p={grossAmount:m.grossAmount,netAmount:m.netAmount,feeAmount:m.totalFee??0n},f=il(l,p);if(i={preview:m,feeEstimate:c,plan:p},l=p,o=Fn(e,p),r=Gn([...o],n,c,{payoutAlreadyGross:to(o,p)}),f)break}return i}async function Wp(e){if(!e.selectedAsset?.asset||!e.selectedAsset.amount)throw new Error("Select an asset and enter an amount");const t=e.activeSignerWallet??e.externalWallet,n=e.activeSignerAddress??e.externalWalletAddress;if(!n||!t)throw new Error("Please connect your wallet to continue");const s=e.resolveLockBatches();if(s.length===0)throw new Error("No lock batches configured");const o=s.find(c=>c.chainId===e.lockChainId)||s[0];if(!o)throw new Error("No lock batch for lock chain");const{extWc:r,viemChain:i}=await On({wallet:t,account:n,chainId:e.lockChainId}),l=g.getClientForChain(e.lockChainId),d=await Oo({extWc:r,client:l,calls:o.calls,viemChain:i,errorMessage:"Lock transaction failed"});d&&e.onLockSuccess?.(d)}async function Pp(e){if(!e.selectedAsset?.asset||e.parsedAmount<=0){e.ui.setError("Select an asset and enter an amount");return}if(e.isInsufficientBalance){e.ui.setError("Insufficient balance. Add more assets.");return}try{e.assertCurrentQuote?.()}catch(n){e.ui.setError(n instanceof Error?n.message:"Refresh the lock quote before continuing.");return}e.ui.setIsExecuting(!0),e.ui.setError(null);const t=n=>{console.error("[SpiceLock] lock failed:",n);const s=g.sanitizeError(n,""),o=typeof n?.shortMessage=="string"?n.shortMessage:typeof n?.message=="string"?n.message:"";e.ui.setError(s||o||"Transaction failed. Please try again.")};if(e.isSemi7702){if(e.isSourceDestToken){try{await Wp(e)}catch(n){t(n)}finally{e.ui.setIsExecuting(!1)}return}e.ui.setShowStatusPanel(!0);try{await Mp(e)}catch(n){t(n)}finally{e.ui.setIsExecuting(!1)}return}e.ui.setShowStatusPanel(!0);try{ll(e)?await Np(e):await Dp(e)}catch(n){t(n)}finally{e.ui.setIsExecuting(!1)}}const Up=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,lockBatches:s,lockTokenSymbol:o,lockTokenLogoURI:r,destinationInputHook:i,sourceAssetInputHook:l,lockDurationHook:d,lockChainId:c,durationOptions:m,votingPowerEstimate:p,escrowAddress:f,includeWalletAssets:h=!1,destinationTokenAddress:x,onLockSuccess:b,onLockError:y,onLockExecute:w,sourceToDestinationConversionRate:S,onAddFunds:v,buildSpicenetBatch:k,styles:C,dark:E=!1})=>{const{theme:F,dark:B,primaryColor:j,dk:T}=g.useSpiceBrand(C,E),R=F.typography.fontFamily,D=u.useContext(g.SpiceFlowProviderContext),M=D?.mode||"7702",W=!!D?.isWhitelistGateActive,q=M!=="7702",z=u.useMemo(()=>D?.supportedChainIds??[],[D?.supportedChainIds]),X=u.useMemo(()=>{if(W)return[];const oe=D?.allowedTokens;if(!oe||oe.length===0)return[];const Le=new Set(oe.map(kt=>kt.toLowerCase())),Ot=[],Ve=new Set;for(const kt of z){const nn=g.getChainConfig(kt);for(const de of nn?.supportedTokens??[]){if(!Le.has(de.symbol.toLowerCase()))continue;const me=`${kt}:${de.address.toLowerCase()}`;Ve.has(me)||(Ve.add(me),Ot.push(I.getAddress(de.address)))}}return Ot},[D?.allowedTokens,z,W]),N=B?T.cardBg:C?.assetSelector?.backgroundColor||C?.secondaryBackground||"#e9e9e9",H=B?`1px solid ${T.cardBorder}`:"0.5px solid #A8A8A7",V=B?"12px":"6px",G=B?T.textPrimary:"#111827",J=B?T.textSecondary:"#6b7280",U=u.useMemo(()=>({...C,assetSelector:{...C?.assetSelector,backgroundColor:B?T.cardBg:C?.assetSelector?.backgroundColor,borderRadius:B?"12px":C?.assetSelector?.borderRadius},secondaryBackground:B?T.cardBg:C?.secondaryBackground}),[C,B]),L=u.useMemo(()=>B?{...F,colors:{...F.colors,secondary:T.cardBg,surfaceHover:T.hoverBg,border:T.cardBorder,borderHover:T.inputBorder}}:F,[B,F]),[O,ee]=u.useState(null),[ue,re]=u.useState(0),se=d?.selectedDurationIdx??ue,ie=d?.setSelectedDurationIdx??re,[ce,_]=u.useState(!1),[Ce,P]=u.useState(null),ae=u.useRef(y);ae.current=y;const he=u.useCallback(oe=>{P(oe),typeof oe=="string"&&oe&&ae.current?.(oe,g.getRelayerErrorDetail(oe))},[]),[ne,Q]=u.useState(null),[te,be]=u.useState(!1),[$,Se]=u.useState(null),[ct,xe]=u.useState(null),[pt,Me]=u.useState(!1),[Ue,Xe]=u.useState(!1),[Ae,nt]=u.useState(null),st=g.useWallet(),{isReady:ft,isAuthenticated:ot,isConnected:_e,address:Be,provider:Ct,actions:mt}=st,{externalWallet:Te,activeWallet:Ke,activeAddress:Oe}=g.useProviderWallets(),{intentStatus:Y,beginStatusTracking:Ee,applyStepUpdate:ye,clearStatus:Re}=ds(),{assets:dt,refetch:Qe}=ms({address:Be,supportedChains:z,enabled:e&&_e&&!q&&!W,refetchInterval:3e4}),yt=u.useMemo(()=>{if(W)return[];if(X.length===0)return dt;const oe=new Set(X.map(Le=>A.normalizeNativeTokenAddress(Le).toLowerCase()));return dt.filter(Le=>oe.has(A.normalizeNativeTokenAddress(Le.address).toLowerCase()))},[dt,X,W]),lt=D?.embeddedWalletAddress,qt=D?.externalWalletAddress,Lt=q?Oe??qt:lt,{walletAssets:Nt,refreshWalletAssets:Je}=Sp({isOpen:e,includeWalletAssets:h,isWhitelistGateActive:W,isSemi7702:q,destinationTokenAddress:x,sourceAssets:X,sourceChains:z,walletAddressForAssets:Lt,lockChainId:c,lockTokenSymbol:o,lockTokenLogoURI:r}),pe=u.useMemo(()=>Nt.filter(oe=>oe.balance>0n),[Nt]),We=u.useMemo(()=>{if(q)return pe.map(Le=>({...Le,_source:"wallet"}));if(!h)return yt;const oe=[];for(const Le of pe)oe.push({...Le,_source:"wallet"});for(const Le of yt)oe.push({...Le,_source:"spice"});return oe},[q,h,pe,yt]),at=u.useMemo(()=>W?x?We.filter(oe=>g.addressesEqual(oe.address,x)&&oe.chainId===c):[]:We,[We,W,x,c]),ut=u.useRef(null),ve=u.useRef(null);u.useEffect(()=>{ve.current=O},[O]),u.useEffect(()=>{!W||!O?.asset||x&&g.addressesEqual(O.asset.address,x)&&O.asset.chainId===c||ee(null)},[W,O?.asset,x,c]),u.useEffect(()=>{e||(ee(null),he(null),Q(null),be(!1),Se(null),xe(null),_(!1),Xe(!1),nt(null),Me(!1),Re())},[e,Re]),u.useEffect(()=>{i&&i.assetAmount!==(O?.amount||"")&&ee(oe=>oe&&{...oe,amount:i.assetAmount})},[i?.assetAmount]),u.useEffect(()=>{l&&l.assetAmount!==(O?.amount||"")&&ee(oe=>oe&&{...oe,amount:l.assetAmount})},[l?.assetAmount]),u.useEffect(()=>{if(!q&&Y?.overallStatus==="success"&&Y.intentId&&ut.current!==Y.intentId&&Be&&Y.steps.find(oe=>oe.transactionHash)?.transactionHash){ut.current=Y.intentId;const oe=ve.current;if(!oe?.asset||!oe.amount||oe.asset._source==="wallet"||I.parseUnits(oe.amount,oe.asset.decimals)===0n)return;Qe()}},[Y,Be,c,Qe,q]);const fe=parseFloat(O?.amount||"")||0,He=u.useMemo(()=>O?.asset?O.asset._source==="wallet"?O.asset.balanceFormatted??0:yt.find(oe=>g.addressesEqual(oe.address,O.asset.address)&&oe.chainId===O.asset.chainId)?.balanceFormatted??0:0,[O?.asset,yt]),it=d?.selectedDuration??m[se]??m[0],Ge=u.useMemo(()=>!O?.asset||!x?!1:g.addressesEqual(O.asset.address,x)&&O.asset.chainId===c,[O?.asset,x,c]),Ie=!q&&typeof s=="function"&&!!x&&!Ge,Et=Ap({enabled:e&&Ie,selectedAsset:O,lockChainId:c,destinationTokenAddress:x,lockTokenSymbol:o,lockTokenLogoURI:r,recipient:lt}),De=Et.conversion,bt=u.useMemo(()=>fe<=0?0:Ie?De?Number(I.formatUnits(De.minimum,De.output.decimals)):0:Ge?fe:!S||S<=0?0:fe/S,[fe,S,Ge,Ie,De]),jt=u.useMemo(()=>bt<=0?null:bt.toLocaleString(void 0,Ie?{maximumSignificantDigits:6}:{maximumFractionDigits:2}),[bt,Ie]),Ht=p&&bt>0&&it?p(bt,it.months):void 0,zt=u.useMemo(()=>{if(fe<=0)return"$0.00";if(Ie){const oe=O?.asset;return!oe||oe.balanceFormatted<=0||oe.balanceUsd<=0?null:(fe*oe.balanceUsd/oe.balanceFormatted).toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2})}return Ge&&S?(fe*S).toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2}):!S||S<=0?"$0.00":fe.toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2})},[fe,S,Ge,Ie,O?.asset]),Wt=u.useMemo(()=>{if(!jt)return null;if(Ie){const Le=Nt.find(Ot=>Ot.chainId===c&&g.addressesEqual(Ot.address,x));return!Le||Le.balanceFormatted<=0||Le.balanceUsd<=0?null:(bt*Le.balanceUsd/Le.balanceFormatted).toLocaleString(void 0,{maximumFractionDigits:2})}const oe=parseFloat(jt.replace(/,/g,""));return Ge&&S?(oe*S).toLocaleString(void 0,{maximumFractionDigits:2}):S?(oe*S).toLocaleString(void 0,{maximumFractionDigits:2}):null},[jt,S,Ge,Ie,Nt,c,x,bt]),$e=u.useCallback(oe=>{ee(Le=>({asset:oe,amount:Le?.asset?.address===oe.address&&Le?.asset?.chainId===oe.chainId&&Le.amount||""})),he(null),Q(null),Se(null),xe(null),l?.setSelectedAsset&&l.setSelectedAsset({symbol:oe.symbol,address:oe.address,decimals:oe.decimals,chainId:oe.chainId})},[l?.setSelectedAsset]),et=u.useCallback(oe=>{ee(Le=>Le&&{...Le,amount:oe}),he(null),Q(null),Se(null),xe(null),i&&i.setAssetAmount(oe),l&&l.setAssetAmount(oe)},[i,l]),Rt=u.useCallback(oe=>{if(typeof s=="function"){if(!O?.asset||!O.amount)throw new Error("Select an asset and enter an amount");if(Ie){if(!De||!lt||De.expiresAt!==null&&Date.now()>=De.expiresAt)throw new Error(Et.error||"Wait for a current swap quote before locking.");const Le=s({asset:De.output,amount:I.formatUnits(De.minimum,De.output.decimals),amountWei:De.minimum,feeAdjusted:!!oe});return Cu(Le,{chainId:c,recipient:lt,tokenIn:De.input.address,amountIn:De.amountIn,swap:De.swap,escrowFunded:!pi(O.asset,c)})}return s({asset:O.asset,amount:oe?.amount??O.amount,amountWei:oe?.amountWei??I.parseUnits(O.amount,O.asset.decimals),grossAmount:oe?.grossAmount,grossAmountWei:oe?.grossAmountWei,feeAdjusted:!!oe})}return s},[s,O,Ie,De,lt,c,Et.error]),Yt=u.useRef(null),tn=u.useRef(null),Ft=u.useMemo(()=>!O?.asset||fe<=0?!1:q?!Ge&&!w:!0,[O,fe,q,Ge,w]),ge=u.useCallback(oe=>Op(Yt.current,oe),[]),qe=u.useRef(null),xt=u.useMemo(()=>!O?.asset||fe<=0||Ie&&!De?null:Symbol("lock-fee-input"),[O?.asset?.address,O?.asset?.chainId,O?.amount,O?.asset?.decimals,O?.asset?._source,fe,lt,Be,qt,x,c,q,Ie,De?.key,it?.months,s,f]),Pt=!!xt&&$===xt,Fe=Pt?ct:null,Ut=fe>0&&(Fe?Number(I.formatUnits(Fe.grossAmount,Fe.decimals))>He:fe>He);as({shouldRun:e&&!ce&&!!O?.asset&&fe>0&&(!Ie||!!De)&&Ft,deps:[e,ce,xt,Ft,Ie,ge],delayMs:500,backgroundIntervalMs:3e4,onSkip:()=>{if(!(!e||ce)){if(!O?.asset||fe<=0){Q(null),be(!1),Se(null),xe(null);return}Q(null),be(!1),Se(xt),xe(null)}},run:async({isBackground:oe,isCurrent:Le,signal:Ot})=>{const Ve=xt;oe||(Q(null),Se(null),be(!0));try{const kt=await ge(Ot);if(!Le())return;qe.current=kt&&Ve?{key:Ve,quote:kt}:null,Q(null),Se(Ve),xe(kt?.preview??null)}catch(kt){if(!Le())return;oe||(Q(g.sanitizeError(kt,"Unable to calculate fees for this lock.")),Se(null))}finally{Le()&&!oe&&be(!1)}}}),u.useEffect(()=>{if(Y?.overallStatus==="success"){const oe=Y.steps.find(Le=>Le.transactionHash);b?.(oe?.transactionHash)}},[Y?.overallStatus,b]);const Ze=h&&O?.asset?._source==="wallet"&&O?.asset?.chainId===c,Xt=u.useCallback(()=>Pp(Yt.current),[]),tt=!!O?.asset&&fe>0&&!Ut&&!ce&&(!Ie||!!De)&&(!Ft||Pt&&!te&&!ne),Mt=Ce||Et.error||ne,vt=a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"6px"},children:[a.jsx(Ro,{color:J}),a.jsxs("p",{style:{fontSize:"13px",color:J,margin:0,lineHeight:"1.5"},children:["Add ",o," by converting assets from your account"]})]});if(tn.current={key:xt,conversionKey:De?.key??null},Yt.current={selectedAsset:O,parsedAmount:fe,selectedDuration:it,isInsufficientBalance:Ut,isSemi7702:q,isSourceDestToken:Ge,isDirectDeposit:Ze,requiresRelayerFeeEstimate:Ft,address:Be,embeddedWalletAddress:lt,externalWallet:Te,externalWalletAddress:qt,activeSignerWallet:Ke,activeSignerAddress:Oe,isConnected:_e,ready:ft,authenticated:ot,provider:Ct,actions:mt,lockChainId:c,escrowAddress:f,onLockExecute:w,onLockSuccess:b,buildSpicenetBatch:k,resolveLockBatches:Rt,beginStatusTracking:Ee,applyStepUpdate:ye,refreshSpiceAssets:Qe,refreshWalletAssets:Je,feeQuote:xt&&qe.current?.key===xt?qe.current.quote:null,...Ie?{swapFunding:De?{amount:De.amountIn,decimals:De.input.decimals,symbol:De.input.symbol}:void 0,assertCurrentQuote:()=>{if(!De||!Pt||tn.current?.key!==xt||tn.current?.conversionKey!==De.key||De.expiresAt!==null&&Date.now()>=De.expiresAt)throw new Error("The lock quote changed or expired. Review the updated amount and try again.")}}:{},ui:{setError:he,setIsExecuting:_,setShowStatusPanel:Me}},!e)return null;const Jt={backgroundColor:N,border:H,borderRadius:V,padding:"16px",marginBottom:"16px"};return a.jsx(rn,{isOpen:e,onClose:t,title:`Add ${o} to your account`,subtitle:vt,styles:C,dark:B,footerLinkText:"Spicenet accounts \u2192",overlayContent:Ue?a.jsx("div",{}):void 0,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"0 24px 8px 24px",position:"relative"},children:[a.jsxs("div",{style:{marginBottom:"12px"},children:[v&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(Mo,{onClick:v,color:j,fontFamily:R})}),a.jsx("div",{style:{marginTop:"10px",fontSize:"13px",color:J,fontFamily:R},children:a.jsx(os,{assets:at,selectedAsset:O??void 0,onAssetSelect:$e,onAmountChange:et,label:"Amount",showBalance:!0,showMaxButton:!0,theme:L,styles:U})}),a.jsx("div",{style:{marginTop:"6px",paddingLeft:"4px",fontSize:"13px",color:J,fontFamily:R},children:zt})]}),a.jsxs("div",{style:Jt,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"16px",borderBottom:B?`1px solid ${T.cardBorder}`:"1px solid #e5e7eb"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[r?a.jsx("img",{src:r,alt:o,style:{width:"32px",height:"32px",borderRadius:"50%",objectFit:"cover"}}):a.jsx("div",{style:{width:"32px",height:"32px",borderRadius:"50%",backgroundColor:B?T.inputBg:"#d1d5db",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:700,color:G},children:o.slice(0,2)}),a.jsx("span",{style:{fontSize:"16px",fontWeight:600,color:G,fontFamily:R},children:o})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"22px",fontWeight:700,color:G,fontFamily:R,lineHeight:1.1},children:jt??"0.00"}),(!Ie||Wt!==null)&&a.jsxs("div",{style:{fontSize:"12px",color:J,fontFamily:R,marginTop:"2px"},children:["~$",Wt??"0.00"]})]})]}),a.jsxs("div",{style:{paddingTop:"16px",paddingBottom:"16px",borderBottom:B?`1px solid ${T.cardBorder}`:"1px solid #e5e7eb"},children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"16px"},children:[a.jsx("span",{style:{fontSize:"15px",fontWeight:500,color:J,fontFamily:R},children:"Lock Duration"}),a.jsx(Bn,{color:J})]}),a.jsx(Ep,{options:m,selectedIndex:se,onSelect:ie,primaryColor:j,dark:B,textPrimary:G,textSecondary:J})]}),a.jsxs("div",{style:{paddingTop:"12px",display:"flex",flexDirection:"column",gap:"8px"},children:[a.jsx(al,{label:"Estimated Lock Expiry",value:it?.months!==void 0?Fp(it.months):"\u2014",fontFamily:R,dark:B,textPrimary:G,textSecondary:J}),p&&a.jsx(al,{label:"Estimated voting power",value:Ht!==void 0?`${Ht} votes/epoch`:"\u2014",fontFamily:R,dark:B,textPrimary:G,textSecondary:J})]})]}),Ft&&a.jsx(No,{fontFamily:R,textPrimary:G,textSecondary:J,cardBg:N,cardBorder:H,resolvedDark:B,darkCardBorder:T.cardBorder,primaryColor:j,feePreview:Fe,isLoading:te||Et.isQuoting,errorText:ne}),Mt&&a.jsx(yn,{variant:"error",palette:T,fontFamily:R,style:{marginBottom:"12px"},children:Mt}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:()=>{Et.error?(he(null),Q(null),Se(null),Et.retryQuote()):Xt()},disabled:ce||!tt&&!Et.error,loading:ce,dark:B,styles:{...C,button:{...C?.button,backgroundColor:j}},children:ce?Ge?"LOCKING...":"CONVERTING...":Et.error?"RETRY QUOTE":Et.isQuoting?"GETTING SWAP QUOTE...":te&&Ft?"CALCULATING FEES...":Ge?`LOCK ${o}`:`CONVERT TO ${o}`}),a.jsx(Bp,{isOpen:Ue,data:Ae,isLocking:ce,lockError:Mt,onContinue:Xt,onClose:()=>Xe(!1),primaryColor:j,fontFamily:R,dark:B}),Y&&pt&&a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:10,backgroundColor:B?"rgba(0, 0, 0, 0.45)":"rgba(255, 255, 255, 0.55)",backdropFilter:"blur(2px)",WebkitBackdropFilter:"blur(2px)",borderRadius:V},children:a.jsx(hr,{type:"lock",showStepBreakdown:!1,isOpen:!!Y&&Y.overallStatus!=="processing",isProcessing:ce||Y?.overallStatus==="processing",closeOnComplete:!1,onRetryTx:()=>{Re(),Me(!1),Xt()},onNewTx:()=>{Re(),Me(!1),ee(null),ut.current=null,Qe(),Je()},onClose:()=>{Re(),Me(!1)},onComplete:()=>{Re(),Me(!1),ee(null),ut.current=null,Qe(),Je()},results:Y?.overallStatus==="success"||Y?.overallStatus==="failed"?Y.steps.map(oe=>({asset:{symbol:O?.asset?.symbol||o,address:O?.asset?.address||""},txHash:oe.transactionHash||"",success:oe.status==="success",amount:O?.amount})):void 0,chainId:c,theme:F,styles:C,dark:B})})]})})};function cl(e){return e?.trim().replace(/^spice/i,"").replace(/[^a-z0-9]/gi,"").toUpperCase()||void 0}function dl(e,t){const n=`${e.chainId}:${A.normalizeNativeTokenAddress(e.address).toLowerCase()}`,s=Object.entries(t).find(([i])=>i.toLowerCase()===n)?.[1];if(s!==void 0&&Number.isFinite(s)&&s>0)return s;const o=new Map;Object.entries(t).forEach(([i,l])=>{if(!Number.isFinite(l)||l<=0||/^\d+:/.test(i))return;o.set(i,l),o.set(i.toUpperCase(),l);const d=cl(i);d&&o.set(d,l)});const r=[e.symbol,e.displaySymbol,e.receiptTokenName,e.name,e.displayName];for(const i of r){if(!i)continue;const l=o.get(i)??o.get(i.toUpperCase());if(l!==void 0)return l;const d=cl(i);if(!d)continue;const c=o.get(d);if(c!==void 0)return c}return 0}function ul(e){const t=u.useContext(g.SpiceFlowProviderContext),n=t?.embeddedWalletAddress,s=e?.enabled===!1?void 0:n,o=t?.network?{network:t.network,pollIntervalMs:e?.pollIntervalMs,chainIds:e?.chainIds??t.supportedChainIds,discoverWalletBalances:e?.discoverWalletBalances}:void 0;return{...Ia(s,o),embeddedWalletAddress:n}}var Lp="data:image/svg+xml,%3csvg width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='black' stroke-opacity='0.5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' xmlns='http://www.w3.org/2000/svg'%3e%3cpolyline points='17 1 21 5 17 9' /%3e%3cpath d='M3 11V9a4 4 0 0 1 4-4h14' /%3e%3cpolyline points='7 23 3 19 7 15' /%3e%3cpath d='M21 13v2a4 4 0 0 1-4 4H3' /%3e%3c/svg%3e";const zp=({appName:e,status:t,statusLabel:n,totalUsdValue:s,hasUnpricedAssets:o,breakdownSubtitle:r,showUsdSummary:i=!0,address:l,dk:d,dark:c=!1,showModeToggle:m,isEmbeddedMode:p=!0,onModeToggle:f})=>{const[h,x]=u.useState(!1),b=async()=>{l&&await g.copyToClipboard(l)&&(x(!0),setTimeout(()=>x(!1),2e3))},y=t==="active",w=n||(y?"Active":"Inactive"),S=y?"#10b981":"#9ca3af",v=a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[a.jsxs("div",{children:[a.jsx("strong",{children:"Embedded:"})," Deposit assets into ",e," account and use them here."]}),a.jsxs("div",{children:[a.jsx("strong",{children:"External:"})," Use assets from your connected wallet here."]})]});return a.jsxs("div",{children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"4px"},children:[a.jsxs("div",{style:{fontSize:"13px",fontWeight:600,color:d.textPrimary},children:[e," Account"]}),m?a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsxs("button",{onClick:f,style:{display:"flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"9999px",backgroundColor:c?d.hoverBg:"#f3f4f6",border:c?`1px solid ${d.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"11px",fontWeight:600,fontFamily:g.font.mono,color:d.textSecondary,transition:"background-color 150ms ease, border-color 150ms ease, color 150ms ease",letterSpacing:"0.02em"},children:[a.jsx("span",{children:p?"Embedded":"External"}),a.jsx("img",{src:Lp,alt:"","aria-hidden":"true",style:{width:"11px",height:"11px",display:"block",...c?{filter:"invert(0.65)"}:{}}})]}),a.jsx(fa,{content:v,label:"Account mode info",textColor:c?d.textPrimary:"#f9fafb",backgroundColor:c?d.cardBg:"#111827",borderColor:c?d.cardBorder:"rgba(255,255,255,0.08)",accentColor:c?d.textSecondary:"#6b7280",children:a.jsx("img",{src:Lo,alt:"","aria-hidden":"true",style:{width:"12px",height:"12px",display:"block",...c?{filter:"invert(0.65)"}:{}}})})]}):a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"9999px",backgroundColor:c?d.hoverBg:y?"#ecfdf5":"#f3f4f6",border:c?`1px solid ${d.cardBorder}`:y?"1px solid #a7f3d0":"1px solid #e5e7eb"},children:[a.jsx("div",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:S}}),a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:c?d.textSecondary:y?"#065f46":"#6b7280"},children:w})]})]}),i&&a.jsx("div",{style:{fontSize:"28px",fontWeight:700,color:d.textPrimary,lineHeight:1.2,marginBottom:"2px"},children:o?"Value unavailable":g.formatUsd(s)}),i&&r&&a.jsx("div",{style:{fontSize:"12px",color:d.textSecondary,marginBottom:"8px"},children:r}),l&&a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"12px",fontFamily:g.font.mono,color:c?d.textSecondary:"#9ca3af"},children:g.truncateAddress(l)}),a.jsx("button",{onClick:b,style:{padding:"2px 6px",fontSize:"10px",fontWeight:500,backgroundColor:"transparent",color:c?d.textSecondary:"#9ca3af",border:"none",cursor:"pointer",borderRadius:"4px",transition:"background-color 150ms ease, color 150ms ease"},title:"Copy address",children:h?"Copied":"Copy"})]})]})},qp=u.memo(zp),Hp=({pendingDeposits:e,onCompleteDeposit:t,dk:n,dark:s=!1})=>e.length===0?null:a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:n.textSecondary,marginBottom:"8px",textTransform:"uppercase"},children:"Pending Deposits"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.map((o,r)=>{const i=g.getChainConfig(o.chainId)?.displayName||`Chain ${o.chainId}`;return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",backgroundColor:s?n.warningBg:"#fffbeb",border:s?`1px solid ${n.warningBorder}`:"1px solid #fde68a",borderRadius:"8px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("div",{style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:s?n.hoverBg:"#fde68a",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:600,color:n.warningText},children:o.tokenSymbol.charAt(0)}),a.jsxs("div",{children:[a.jsxs("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:[o.amount," ",o.tokenSymbol]}),a.jsxs("div",{style:{fontSize:"11px",color:n.warningText},children:["on ",i]})]})]}),a.jsx("button",{onClick:()=>t?.(o),style:{padding:"4px 12px",fontSize:"11px",fontWeight:600,backgroundColor:s?n.hoverBg:"#fef3c7",color:s?n.textPrimary:"#92400e",border:s?`1px solid ${n.warningBorder}`:"1px solid #fde68a",borderRadius:"9999px",cursor:"pointer",transition:"background-color 150ms ease, border-color 150ms ease, color 150ms ease"},children:"Complete"})]},`${o.tokenAddress}-${o.chainId}-${r}`)})})]}),Vp=u.memo(Hp),Qp=e=>`${e.tokenAddress}-${e.chainId}`,Kp=({spiceAssets:e,loading:t,dk:n,dark:s=!1,canDirectWithdraw:o=!1,onDirectWithdraw:r,directWithdrawState:i})=>{const l={fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:n.textSecondary,marginBottom:"8px",textTransform:"uppercase"},d={backgroundColor:n.cardBg,border:s?`1px solid ${n.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px"};return t?a.jsxs("div",{children:[a.jsx("div",{style:l,children:"Idle Balances"}),[1,2].map(c=>a.jsx("div",{style:{...d,padding:"12px",marginBottom:"6px",height:"48px",animation:"pulse 1.5s ease-in-out infinite",opacity:.5}},c))]}):e.length===0?a.jsxs("div",{children:[a.jsx("div",{style:l,children:"Idle Balances"}),a.jsx("div",{style:{...d,padding:"16px",textAlign:"center",fontSize:"13px",color:s?n.textSecondary:"#9ca3af"},children:"No assets yet. Deposit to get started."})]}):a.jsxs("div",{children:[a.jsx("div",{style:l,children:"Idle Balances"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.map((c,m)=>{const p=g.getChainConfig(c.chainId),f=c.chainDisplayName||p?.displayName||`Chain ${c.chainId}`,h=c.tokenDisplaySymbol||c.tokenDisplayName||c.tokenSymbol,x=Qp(c),b=o&&c.directWithdraw&&!!r,y=i?.key===x?i:null,w=y?.step==="pending";return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",...d},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[c.logoURI?a.jsx("img",{src:c.logoURI,alt:c.tokenSymbol,style:{width:"24px",height:"24px",borderRadius:"50%"}}):a.jsx("div",{style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:s?n.hoverBg:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:600,color:n.textSecondary},children:h.charAt(0)}),a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:h}),a.jsx("div",{style:{fontSize:"11px",color:s?n.textSecondary:"#9ca3af"},children:f})]})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:g.formatBalance(c.balanceFormatted)}),a.jsx("div",{style:{fontSize:"11px",color:y?.step==="error"?n.errorText:s?n.textSecondary:"#9ca3af"},children:y?.step==="error"?y.message||"Withdraw failed":c.balanceFormatted>0&&(!Number.isFinite(c.usdValue)||!(c.usdValue>0))?"Price unavailable":g.formatUsd(c.usdValue)})]}),b&&a.jsx("button",{onClick:()=>!w&&r(c),disabled:w,title:"Withdraw to external wallet",style:{padding:"6px 10px",borderRadius:"6px",border:s?`1px solid ${n.cardBorder}`:"1px solid #e5e7eb",backgroundColor:s?n.hoverBg:"#ffffff",color:n.textPrimary,fontSize:"11px",fontWeight:600,cursor:w?"default":"pointer",opacity:w?.6:1,whiteSpace:"nowrap"},children:w?"Withdrawing\u2026":"Withdraw"})]})]},`${c.tokenAddress}-${c.chainId}-${m}`)})})]})},Yp=u.memo(Kp),Gp=({section:e,dk:t,dark:n=!1})=>{const s=o=>{switch(o){case"green":return"#10b981";case"red":return"#ef4444";default:return t.textPrimary}};return a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:t.textSecondary,marginBottom:"8px",textTransform:"uppercase"},children:e.title}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.items.map((o,r)=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",backgroundColor:t.cardBg,border:n?`1px solid ${t.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[o.tokenLogoURI?a.jsx("img",{src:o.tokenLogoURI,alt:o.tokenSymbol,style:{width:"20px",height:"20px",borderRadius:"50%"}}):a.jsx("div",{style:{width:"20px",height:"20px",borderRadius:"50%",backgroundColor:n?t.hoverBg:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontWeight:600,color:t.textSecondary},children:o.tokenSymbol.charAt(0)}),a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:t.textPrimary},children:o.tokenSymbol}),a.jsx("div",{style:{fontSize:"11px",color:t.textSecondary},children:o.label})]})]}),a.jsx("div",{style:{fontSize:"13px",fontWeight:600,color:s(o.valueColor)},children:o.displayValue})]},r))})]})},Zp=u.memo(Gp),Xp=({onDepositClick:e,onWithdrawClick:t,depositDisabled:n=!1,withdrawDisabled:s=!1,primaryColor:o="#EA4B4B",dark:r=!1})=>!e&&!t?null:a.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e&&a.jsx(g.Button,{variant:"outline",onClick:e,disabled:n,dark:r,styles:{button:{backgroundColor:o}},style:{flex:1,height:"44px",fontSize:"12px"},children:"Deposit"}),t&&a.jsx(g.Button,{variant:"outline",onClick:t,disabled:s,dark:r,styles:{button:{backgroundColor:o}},style:{flex:1,height:"44px",fontSize:"12px"},children:"Withdraw"})]}),Jp=u.memo(Xp),$p=({appName:e,status:t,statusLabel:n,totalUsdValue:s,hasUnpricedAssets:o,breakdownSubtitle:r,showUsdSummary:i,address:l,spiceAssets:d,spiceAssetsLoading:c,pendingDeposits:m,customSections:p,notice:f,onDepositClick:h,onWithdrawClick:x,depositDisabled:b,onCompleteDeposit:y,primaryColor:w,dk:S,dark:v=!1,showModeToggle:k,isEmbeddedMode:C,onModeToggle:E,showConnectExternalCta:F,onConnectExternalWallet:B,connectExternalError:j,showHowItWorks:T=!0,canDirectWithdraw:R,onDirectWithdraw:D,directWithdrawState:M})=>{const[W,q]=u.useState(!1);return a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"16px",padding:"16px",maxHeight:"calc(80vh - 32px)",overflowY:"auto"},children:[a.jsx(qp,{appName:e,status:t,statusLabel:n,totalUsdValue:s,hasUnpricedAssets:o,breakdownSubtitle:r,showUsdSummary:i,address:l,dk:S,dark:v,showModeToggle:k,isEmbeddedMode:C,onModeToggle:E}),f&&a.jsx("div",{style:{padding:"10px 12px",borderRadius:"8px",backgroundColor:f.tone==="warning"?v?"rgba(245, 158, 11, 0.12)":"#fffbeb":f.tone==="success"?v?"rgba(16, 185, 129, 0.12)":"#ecfdf5":S.cardBg,border:f.tone==="warning"?v?"1px solid rgba(245, 158, 11, 0.35)":"1px solid #fde68a":f.tone==="success"?v?"1px solid rgba(16, 185, 129, 0.35)":"1px solid #a7f3d0":v?`1px solid ${S.cardBorder}`:"1px solid #e5e7eb",color:f.tone==="warning"?v?"#fbbf24":"#92400e":f.tone==="success"?v?"#34d399":"#047857":S.textSecondary,fontSize:"12px",lineHeight:1.45,fontWeight:500},children:f.message}),F&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[a.jsx("button",{onClick:B,style:{width:"100%",padding:"10px 14px",borderRadius:"8px",backgroundColor:w||"#EA4B4B",color:"#ffffff",border:"none",cursor:"pointer",fontSize:"13px",fontWeight:600,fontFamily:g.font.ui,transition:"opacity 150ms ease"},children:"Connect External Wallet"}),j&&a.jsx("span",{style:{fontSize:"11px",color:v?S.errorText:"#b91c1c",lineHeight:1.4},children:j})]}),a.jsx("div",{style:{height:"1px",backgroundColor:v?"#2d2d2d":"#e5e7eb"}}),a.jsx(Jp,{onDepositClick:h,onWithdrawClick:x,depositDisabled:b,primaryColor:w,dark:v}),T&&a.jsxs("div",{children:[a.jsxs("button",{onClick:()=>q(!W),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",padding:"8px 12px",backgroundColor:S.cardBg,border:v?`1px solid ${S.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px",cursor:"pointer",color:S.textSecondary,fontSize:"12px",fontWeight:500},children:[a.jsx("span",{children:"How It Works"}),a.jsx("span",{style:{transform:W?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease",fontSize:"10px"},children:"\u25BE"})]}),W&&a.jsxs("div",{style:{marginTop:"6px",padding:"10px 12px",backgroundColor:v?S.cardBg:"#f0fdf4",border:v?`1px solid ${S.cardBorder}`:"1px solid #bbf7d0",borderRadius:"8px",fontSize:"12px",lineHeight:1.5,color:v?S.textSecondary:"#374151"},children:["Fund your ",e," Account from any supported chain. Once funded, transact gas-free and asset-abstracted on ",e,"."]})]}),a.jsx(Vp,{pendingDeposits:m,onCompleteDeposit:y,dk:S,dark:v}),a.jsx(Yp,{spiceAssets:d,loading:c,dk:S,dark:v,canDirectWithdraw:R,onDirectWithdraw:D,directWithdrawState:M}),p.map((z,X)=>a.jsx(Zp,{section:z,dk:S,dark:v},X))]})},_p=u.memo($p),Sr=380,Wn=8,ef=[],tf=({appName:e="Spice",status:t="active",statusLabel:n,customSections:s=ef,extraAssets:o=[],tokenPrices:r={},breakdownLabels:i=[],notice:l,styles:d,dark:c=!1,onDepositSuccess:m,onDepositClick:p,onWithdrawClick:f,onCompleteDeposit:h,showModeToggle:x=!1,defaultMode:b,showUsdSummary:y=!0})=>{const w=u.useContext(g.SpiceFlowProviderContext),S=w?.mode!=="7702",v=!!w?.isWhitelistGateActive,k=!!w?.isWhitelistConfigured&&w?.isUserWhitelisted!==!0,C=u.useRef(!1);u.useEffect(()=>{if(!C.current){if(g.hasStoredSpiceFlowMode()){C.current=!0;return}b&&w?.setMode&&(w.setMode(b==="non7702"?"ondemand":"7702"),C.current=!0)}},[w,b]);const[E,F]=u.useState(!1),[B,j]=u.useState(null),[T,R]=u.useState({top:0,bottom:0,left:0,placement:"below"}),D=u.useRef(null),M=u.useRef(null),{address:W,isConnected:q}=g.useWallet(),z=w?.embeddedWalletAddress,X=w?.externalWalletAddress,{embeddedAddress:N}=g.useProviderWallets(),{dark:H,primaryColor:V,dk:G}=g.useSpiceBrand(d,c),J=S&&!X,U=!S||J,L=U?z||N:W,O=u.useMemo(()=>w?.supportedChainIds??A.getChainIdsByNetwork("mainnet"),[w?.supportedChainIds]),{assets:ee,loading:ue}=ms({address:L,supportedChains:O,enabled:!!L&&U,refetchInterval:3e4}),re=!!L&&U&&!v,{assets:se,refreshAssets:ie}=mn({address:re?L:void 0,supportedChains:O,fetchBalances:fn,enabled:re,refreshInterval:3e4}),ce=u.useMemo(()=>{const Y=(ye,Re)=>`${ye}:${A.normalizeNativeTokenAddress(Re).toLowerCase()}`,Ee=new Set(o.map(ye=>Y(ye.chainId,ye.tokenAddress)));return se.filter(ye=>ye.balance<=0n?!1:!Ee.has(Y(ye.chainId,ye.address))).map(ye=>({tokenAddress:ye.address,tokenSymbol:ye.symbol,tokenDecimals:ye.decimals,chainId:ye.chainId,chainDisplayName:g.getChainName(ye.chainId),balance:ye.balance.toString(),balanceFormatted:ye.balanceFormatted,usdValue:Number.isFinite(ye.balanceUsd)&&ye.balanceUsd>0?ye.balanceUsd:dl(ye,r)*ye.balanceFormatted,logoURI:ye.logoURI,directWithdraw:!0}))},[se,o,r]),_=u.useMemo(()=>{const Y=U?ee.map(ye=>{const Re=Number.isFinite(ye.balanceUsd)?ye.balanceUsd:0,dt=Number.isFinite(ye.balanceFormatted)?ye.balanceFormatted:0,Qe=Re>0?Re:dl(ye,r)*dt;return{tokenAddress:ye.address,tokenSymbol:ye.symbol,tokenDisplaySymbol:xo(ye),tokenDisplayName:_l(ye),tokenDecimals:ye.decimals,chainId:ye.chainId,chainDisplayName:yo(ye),balance:ye.balance.toString(),balanceFormatted:ye.balanceFormatted,usdValue:Qe,logoURI:ye.logoURI}}):[],Ee=J?[]:o;return[...Y,...ce,...Ee].filter(ye=>ye.balanceFormatted>0)},[U,J,ee,r,ce,o]),Ce=u.useMemo(()=>_.reduce((Y,Ee)=>Y+Ee.usdValue,0),[_]),{pendingDeposits:P,refresh:ae}=ul({chainIds:O,enabled:!!W,discoverWalletBalances:!0}),he=u.useMemo(()=>s.reduce((Y,Ee)=>Y+(Ee.totalValue??0),0),[s]),ne=Ce+he,Q=_.some(Y=>Y.balanceFormatted>0&&(!Number.isFinite(Y.usdValue)||!(Y.usdValue>0))),te=Q,be=u.useMemo(()=>{const Y=[];Ce>0&&Y.push(`${g.formatUsd(Ce)} idle`);for(const Ee of s){if(Ee.totalValue===void 0)continue;const ye=i.find(Re=>Re.sectionTitle===Ee.title)?.label||Ee.title.toLowerCase();Y.push(`${g.formatUsd(Ee.totalValue)} ${ye}`)}return Q&&Y.push("Some asset prices unavailable"),Y.join(" \xB7 ")},[Ce,s,i,Q]),$=u.useCallback(Y=>{h?h(Y):j(Y)},[h]),Se=u.useCallback(()=>{j(null)},[]),ct=u.useCallback(()=>{j(null),m?.()},[m]),xe=u.useCallback(()=>{if(!D.current)return;const Y=D.current.getBoundingClientRect(),Ee=window.innerHeight-Y.bottom-Wn,ye=Y.top-Wn,Re=Ee>=400||Ee>=ye?"below":"above",dt=Math.max(Wn,Math.min(Y.right-Sr,window.innerWidth-Sr-Wn)),Qe=Re==="below"?Y.bottom+Wn:Y.top-Wn,yt=Re==="above"?window.innerHeight-Qe:0;R({top:Qe,bottom:yt,left:dt,placement:Re})},[]);u.useLayoutEffect(()=>{E&&xe()},[E,xe]),u.useEffect(()=>{if(!E)return;const Y=Re=>{D.current&&!D.current.contains(Re.target)&&M.current&&!M.current.contains(Re.target)&&F(!1)},Ee=Re=>{Re.key==="Escape"&&F(!1)},ye=()=>xe();return document.addEventListener("mousedown",Y),document.addEventListener("keydown",Ee),window.addEventListener("scroll",ye,{passive:!0}),window.addEventListener("resize",xe),()=>{document.removeEventListener("mousedown",Y),document.removeEventListener("keydown",Ee),window.removeEventListener("scroll",ye),window.removeEventListener("resize",xe)}},[E,xe]);const pt=U?z||N||W:X||W,Me=u.useCallback(()=>{w?.setMode&&w.setMode(U?"ondemand":"7702")},[w,U]),[Ue,Xe]=u.useState(null);let Ae=null;try{Ae=Or.useConnectWallet({onSuccess:()=>Xe(null),onError:Y=>Xe(g.sanitizeError(Y,"Failed to connect wallet."))}).connectWallet}catch{Ae=null}const nt=u.useCallback(()=>{Ae&&(F(!1),Xe(null),Ae({walletChainType:"ethereum-only"}))},[Ae]),st=!X&&!!Ae,ft=u.useCallback(()=>{F(!1),p?.()},[p]),ot=u.useCallback(()=>{F(!1),f?.()},[f]),_e=u.useCallback(Y=>{F(!1),$(Y)},[$]),[Be,Ct]=u.useState(null),mt=U&&Ju({embeddedAddress:z||N,externalAddress:X}),Te=u.useCallback(Y=>{F(!1),Ct({address:Y.tokenAddress,symbol:Y.tokenSymbol,name:Y.tokenDisplayName||Y.tokenSymbol,decimals:Y.tokenDecimals,chainId:Y.chainId,balance:BigInt(Y.balance),balanceFormatted:Y.balanceFormatted,balanceUsd:Y.usdValue,displayChainName:Y.chainDisplayName,logoURI:Y.logoURI,isNative:A.isNativeToken(Y.tokenAddress),_source:"wallet",_fundingWallet:"embedded"})},[]);if(typeof window>"u")return null;const Ke=a.jsxs("button",{ref:D,onClick:()=>F(!E),style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 14px",borderRadius:"9999px",backgroundColor:H?G.hoverBg:"#ffffff",border:H?`1px solid ${G.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"13px",fontWeight:500,fontFamily:g.font.ui,color:H?G.textPrimary:"#111827",transition:"background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease",boxShadow:H?"none":"0 1px 2px rgba(0,0,0,0.05)"},children:[a.jsxs("span",{children:[e," Account"]}),q&&y&&a.jsxs("span",{style:{color:H?G.textSecondary:"#6b7280"},children:["\xB7 ",te?"Value unavailable":g.formatUsd(ne)]}),a.jsx("span",{style:{fontSize:"10px",color:H?G.textSecondary:"#9ca3af",transform:E?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease"},children:"\u25BE"})]}),Oe=E?qn.createPortal(a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.08)",zIndex:g.z.popover},onClick:()=>F(!1)}),a.jsx("div",{ref:M,style:{position:"fixed",top:T.placement==="below"?`${T.top}px`:"auto",bottom:T.placement==="above"?`${T.bottom}px`:"auto",left:`${T.left}px`,width:`${Sr}px`,maxWidth:`calc(100vw - ${Wn*2}px)`,maxHeight:"80vh",backgroundColor:H?G.shell:"#ffffff",border:H?`1px solid ${G.cardBorder}`:"1px solid #e5e7eb",borderRadius:"12px",boxShadow:H?"0 10px 40px rgba(0, 0, 0, 0.5)":"0 10px 40px rgba(0, 0, 0, 0.12)",zIndex:g.z.popover+1,overflow:"hidden",animation:`accountDisplayFadeIn 200ms ${g.easing.out}`},children:a.jsx(_p,{appName:e,status:t,statusLabel:n,totalUsdValue:ne,hasUnpricedAssets:te,breakdownSubtitle:be,showUsdSummary:y,address:U?pt:W,spiceAssets:_,spiceAssetsLoading:ue,pendingDeposits:P,customSections:s,notice:l,onDepositClick:p?ft:void 0,onWithdrawClick:f?ot:void 0,depositDisabled:k,onCompleteDeposit:_e,primaryColor:V,dk:G,dark:H,showModeToggle:x,isEmbeddedMode:U,onModeToggle:Me,showConnectExternalCta:st,onConnectExternalWallet:nt,connectExternalError:Ue,showHowItWorks:!v,canDirectWithdraw:mt,onDirectWithdraw:Te})}),a.jsx("style",{children:`
81
81
  @keyframes accountDisplayFadeIn {
82
82
  from { opacity: 0; transform: translateY(-4px); }
83
83
  to { opacity: 1; transform: translateY(0); }
84
84
  }
85
- `})]}),document.body):null;return a.jsxs(a.Fragment,{children:[Oe,ge,B&&es.createPortal(a.jsx(ka,{isOpen:!0,onClose:Se,supportedChains:[B.chainId],escrowOnly:!0,escrowTokenAddress:B.tokenAddress,escrowAmount:B.amount,escrowTokenDecimals:B.tokenDecimals,escrowTokenSymbol:B.tokenSymbol,styles:u,onDepositSuccess:Je}),document.body)]})},Mp=({variant:e,destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:u,cardBorder:c,dk:f,dark:p,isQuoting:m,quoteError:h,estimatedOutput:x,paymentAmount:y,needsSwap:b,exactOutputSwap:w,adjustable:C=!1,maxAmount:S,onAmountChange:k})=>e==="supply"?a.jsxs("div",{style:{backgroundColor:u,border:`1px solid ${c}`,borderRadius:p?"8px":"7px",padding:"14px 16px 12px 16px",marginBottom:"16px",minHeight:"112px",display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px"},children:[a.jsxs("div",{style:{minWidth:0},children:[a.jsx("span",{style:{fontFamily:r,fontSize:"17px",fontWeight:500,color:p?"#a7abb2":"#7D7C7B",lineHeight:"24px"},children:"Used in TX"}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:l,fontFamily:r,marginTop:"10px"},children:"Net amount after swap and fees"})]}),a.jsxs("div",{style:{textAlign:"right",minWidth:0,display:"inline-flex",alignItems:"center",gap:"8px",border:`1px solid ${c}`,borderRadius:"8px",padding:"8px 10px",minHeight:"42px"},children:[a.jsx(Mi,{symbol:t,logoURI:n,primaryColor:o,size:24}),a.jsx("span",{style:{fontSize:"16px",fontWeight:500,color:p?"#f3f4f6":"#3C3E42",lineHeight:"1.3",fontFamily:r,letterSpacing:0},children:t})]})]}),a.jsx("div",{style:{textAlign:"right",minWidth:0},children:m?a.jsx("span",{style:{fontSize:"18px",color:l,fontFamily:r},children:"Quoting..."}):h?a.jsx("span",{style:{fontSize:"13px",color:p?"#f87171":"#dc2626",fontFamily:r},children:"Quote failed"}):x?a.jsx(jn,{value:x,title:x,fontFamily:r,color:i,lineHeight:"0.95",textAlign:"right",maxFontSize:32,minFontSize:18}):a.jsx("span",{style:{fontSize:"20px",color:l,fontFamily:r},children:"\u2014"})})]}):a.jsx(Pp,{destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:u,cardBorder:c,dk:f,dark:p,paymentAmount:y||"0",needsSwap:b,exactOutputSwap:w,isQuoting:m,adjustable:C,maxAmount:S,onAmountChange:k}),Oi=d.memo(Mp),Mi=({symbol:e,logoURI:t,primaryColor:n,size:s})=>t?a.jsx("img",{src:t,alt:e,style:{width:s,height:s,borderRadius:"50%",objectFit:"cover"}}):a.jsx("div",{style:{width:s,height:s,borderRadius:"50%",backgroundColor:`${n}22`,display:"flex",alignItems:"center",justifyContent:"center",fontSize:s<30?"11px":"12px",fontWeight:700,color:n},children:e.slice(0,2)}),Pp=({destinationSymbol:e,destinationLogoURI:t,destinationDecimals:n,primaryColor:s,fontFamily:o,textPrimary:r,textSecondary:i,cardBg:l,cardBorder:u,dk:c,dark:f,paymentAmount:p,needsSwap:m,exactOutputSwap:h,isQuoting:x,adjustable:y,maxAmount:b,onAmountChange:w})=>{const C=g.font.mono,S=parseFloat(p||"0"),k=b?parseFloat(b):0,[v,F]=d.useState(p||""),T=d.useRef(null),[B,j]=d.useState(null),[E,R]=d.useState(null);d.useEffect(()=>{y||F(p||"")},[p,y]);const D=U=>{let V=U;V.startsWith(".")&&(V="0"+V);const Y=g.parseNumericInput(V);let N=Y;b&&parseFloat(Y)>parseFloat(b)&&(N=b),F(N),T.current&&clearTimeout(T.current),T.current=setTimeout(()=>w?.(N),300)},O=U=>{if(!k)return;if(U===100){F(b||k.toString()),T.current&&clearTimeout(T.current),w?.(b||k.toString());return}const V=10**n,Y=Math.floor(k*U/100*V)/V,N=g.formatDecimalInput(Y,n);F(N),T.current&&clearTimeout(T.current),w?.(N)},H=k>0?parseFloat(v||"0")/k*100:0;return d.useEffect(()=>()=>{T.current&&clearTimeout(T.current)},[]),a.jsxs("div",{style:{backgroundColor:l,border:`1px solid ${u}`,borderRadius:f?"12px":"6px",padding:"16px",marginBottom:"16px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[a.jsx(Mi,{symbol:e,logoURI:t,primaryColor:s,size:32}),a.jsxs("div",{children:[a.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:r,fontFamily:o},children:"Payment"}),a.jsx("div",{style:{fontSize:"12px",color:i,fontFamily:o,marginTop:"2px"},children:e})]})]}),a.jsxs("div",{style:{textAlign:"right"},children:[y?a.jsx(jn,{element:"input",ariaLabel:`${e} amount`,dataSpiceflowFocus:!0,value:v,onChange:U=>D(U.target.value),placeholder:"0.0",fontFamily:C,color:r,lineHeight:1.1,textAlign:"right",maxFontSize:20,minFontSize:12,style:{width:"120px"}}):a.jsx(jn,{element:"div",value:S>0?p:"0.00",title:S>0?p:"0.00",fontFamily:C,color:r,lineHeight:1.1,textAlign:"right",maxFontSize:20,minFontSize:12}),a.jsx("div",{style:{fontSize:"12px",color:i,fontFamily:C,marginTop:"2px"},children:e}),y&&k>0&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px",marginTop:"6px"},children:[0,25,50,75,100].map((U,V)=>{const Y=Math.abs(H-U)<1,N=V===4,L=B===U,z=E===U;return a.jsx("button",{onClick:()=>O(U),onMouseEnter:()=>j(U),onMouseLeave:()=>{j(null),R(null)},onMouseDown:()=>R(U),onMouseUp:()=>R(null),title:`${U}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:"pointer",opacity:Y?1:L?.8:.5,transform:z?"scale(0.85)":L?"scale(1.15)":"scale(1)",transition:g.transition.interactive},children:a.jsx(yo,{pct:U,isMax:N,primaryColor:s,dark:f,fillColor:f?c?.textSecondary||"#9ca3af":"#3C3E42"})},U)})})]})]}),m&&h&&!x&&a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:f?`1px solid ${c?.cardBorder||u}`:"1px solid #e5e7eb",display:"flex",justifyContent:"flex-end"},children:a.jsxs("span",{style:{fontSize:"11px",color:i,fontFamily:o,opacity:.7},children:["via ",h.venue]})})]})},Pi={idle:"",building:"Preparing transaction...","signing-delegation":"Signing delegation...","signing-intent":"Signing intent...",submitting:"Submitting transaction...",executing:"Executing on-chain...",success:"Deposit confirmed",error:"Transaction failed"},Wi=["building","signing-delegation","signing-intent","submitting","executing"],Wp=({step:e,statusMsg:t,txHash:n,explorerUrl:s,currentStepIdx:o,palette:r,cardBg:i,cardBorder:l,textPrimary:u,textSecondary:c,fontFamily:f,primaryColor:p,onRetry:m})=>a.jsxs("div",{style:{padding:"10px 14px",borderRadius:"7px",marginBottom:"16px",backgroundColor:e==="success"?i:e==="error"?r.errorBg:i,border:`1px solid ${e==="success"?l:e==="error"?r.errorBorder:l}`},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[e==="success"?a.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:a.jsx("path",{d:"M5 13l4 4L19 7",stroke:r.successText,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"})}):e==="error"?a.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:a.jsx("path",{d:"M18 6L6 18M6 6l12 12",stroke:r.errorText,strokeWidth:"2.5",strokeLinecap:"round"})}):a.jsx(g.Spinner,{size:14,color:p}),a.jsx("span",{style:{fontSize:"13px",fontWeight:500,color:e==="success"?u:e==="error"?r.errorText:u,fontFamily:f,flex:1},children:e==="success"?"Deposit confirmed":e==="error"?t||"Transaction failed":t||Pi[e]}),e==="success"&&n&&a.jsx("a",{href:`${s}/tx/${n}`,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",color:p,fontFamily:f,textDecoration:"none",whiteSpace:"nowrap",flexShrink:0},children:"View tx \u2192"}),e==="error"&&a.jsx("button",{onClick:m,style:{background:"none",border:"none",fontSize:"12px",color:p,fontFamily:f,cursor:"pointer",padding:0,whiteSpace:"nowrap",flexShrink:0},children:"Retry \u2192"})]}),o>=0&&e!=="success"&&e!=="error"&&a.jsx("div",{style:{marginTop:"8px",height:"3px",borderRadius:"2px",backgroundColor:`${c}22`,overflow:"hidden"},children:a.jsx("div",{style:{height:"100%",width:"100%",borderRadius:"2px",backgroundColor:p,transformOrigin:"left center",transform:`scaleX(${(o+1)/Wi.length})`,transition:"transform 400ms ease"}})})]}),Up="0xa9059cbb";function Ui(e,t,n){return A.isNativeToken(e)?{to:n,value:t,data:"0x"}:{to:e,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[n,t]})}}function Xs(e,t,n){return{chainId:n,calls:[Ui(e,t,A.getEscrowContractAddress(n))]}}function Gt(e,t){if(!e||e._source!=="wallet")return!1;const n=e._fundingWallet;return n==="external"||t&&n!=="embedded"}function Li(e,t,n){return e?.asset._source==="wallet"&&!Gt(e.asset,t)}function zi(e){return e.isNative||A.isNativeToken(e.address)?!0:!A.getTokenByAddress(e.address,e.chainId)}function qi(e,t,n,s){const o=l=>A.isNativeToken(s)?l.data==="0x"&&l.value>0n&&[A.SPICE_GAS_FEE_RECIPIENT,A.SPICE_PLATFORM_FEE_RECIPIENT].some(u=>g.addressesEqual(l.to,u)):g.addressesEqual(l.to,s)&&l.data.startsWith(Up);if(t!=="user-transfer"||!n||e.length===0||!o(e[0]))return{feeCalls:[],remainingCalls:e};const r=e.findIndex(l=>!o(l)),i=r===-1?e.length:r;return{feeCalls:e.slice(0,i),remainingCalls:e.slice(i)}}async function Js(e,t,n,s){if(!t)return[e];const o=await t({...n,requestTimestampMs:s});return o?[o,e]:[e]}function $s(e){const t=(e.tokenTransfers??[]).filter(n=>n.from==="escrow").map(n=>({token:A.normalizeNativeTokenAddress(n.token),recipient:n.to,amount:BigInt(n.amount)})).filter(n=>n.amount>0n);return t.length>0?t:void 0}function zt(e,t,n){return Et(e,t,n,"ceil")}async function Zn(e,t,n){if(e.chainId!==t.chainId&&!Ss(e,n,t.chainId)&&!zn(e,t.chainId).some(s=>g.addressesEqual(s,n)))throw new Error("No supported bridge route for this source asset");return g.addressesEqual(n,t.address)?t.decimals:e.chainId===t.chainId&&g.addressesEqual(n,e.address)?e.decimals:g.getTokenDecimals(t.chainId,n)}async function Hi(e,t){const{currentPaymentAmount:n,destinationToken:s,embeddedWalletAddress:o,providerEmbeddedAddress:r,address:i,isNon7702:l,isPayMode:u,resolvedChainId:c,buildActionCalls:f,feeExecutionMode:p,buildSpicenetBatch:m,selectedAsset:h,needsSwap:x,exactOutputSwap:y,resolvedTokenIn:b,requestTimestampMs:w}=e,C=t?.fundingTokenOverride??b,S=I.parseUnits(n,s.decimals),k=e.feeOnlyAction?0n:t?.actionAmountOverride??S,v=!!e.feeOnlyAction&&(t?.fundingAmountOverride??0n)>0n;if(v&&h?.asset._source==="wallet"&&h.asset.chainId===c&&!A.isNativeToken(h.asset.address)&&!A.getTokenByAddress(h.asset.address,c))throw new Error("Choose a registered token or native asset to fund action fees");const F=o||r||(l?void 0:i);if(!F)throw new Error("Embedded wallet address is not available. Please sign in and try again.");const T={userAddress:F,executorAddress:F,outputRecipient:!e.feeOnlyAction&&x&&y?e.swapOutputRecipient??F:void 0,chainId:c,destinationToken:s.address,grossAmount:t?.fundingAmountOverride??S,netAmount:k,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:p,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},B=await f(k,T),j={chainId:c,calls:B},E=!u&&!l?!0:h?.asset._source==="spice",R=Li(h??null,l);if(e.feeOnlyAction&&t?.fundingTokenOverride&&R&&h?.asset.chainId===c&&g.addressesEqual(t.fundingTokenOverride,h.asset.address))return[j];const D=v||E||Gt(h?.asset,l)&&h?.asset.chainId!==c||R&&!!h&&(h.asset.chainId!==c||!zi(h.asset)),O=(Y,N)=>({token:A.normalizeNativeTokenAddress(Y),from:"escrow",to:F,amount:N}),H=(Y,N)=>R||Gt(h?.asset,l)&&(h?.asset.chainId!==c||v)?[Xs(h.asset.address,t?.sourceFundingAmountOverride??zt(Y,V,h.asset.decimals),h.asset.chainId),...N]:N;if(S===0n&&!v)return[j];const U=C??(h?Lt(h.asset,c):null)??s.address,V=h?await Zn(h.asset,s,U):s.decimals;if(!e.feeOnlyAction&&x&&y){const Y=C??Lt(h.asset,c)??h.asset.address,N=t?.fundingAmountOverride??y.amountInMax,L=D?[O(Y,N)]:[],z={chainId:c,calls:[...y.calls,...B],tokenTransfers:[...L,...j.tokenTransfers??[]]};if(!D)return[z];const G=await Js(z,m,{userAddress:F,destinationChainId:c,deliveryToken:Y,deliveryAmount:N,deliveryRecipient:F,deliveryTransfers:$s(z),sourceAsset:h.asset},w);return H(N,G)}if(D){const Y=C??(h?Lt(h.asset,c):null)??s.address;if(!v&&R&&h?.asset.chainId===c&&Y.toLowerCase()===s.address.toLowerCase())return[j];const N=t?.fundingAmountOverride??S,L={...j,tokenTransfers:[O(Y,N),...j.tokenTransfers??[]]},z=await Js(L,m,{userAddress:F,destinationChainId:c,deliveryToken:Y,deliveryAmount:N,deliveryRecipient:F,deliveryTransfers:$s(L),sourceAsset:h?.asset},w);return H(N,z)}return[j]}async function Vi(e,t){const{selectedAsset:n,embeddedWalletAddress:s,externalWalletAddress:o,recipient:r,resolvedChainId:i,destinationToken:l,buildActionCalls:u,feeExecutionMode:c,buildSpicenetBatch:f,isPayMode:p,isNon7702:m,needsSwap:h,resolvedSwap:x,quoteAmountOut:y,resolvedTokenIn:b,requestTimestampMs:w}=e,C=x?.amountOutMinimum??y;if(!n?.asset||!s)return[];const S=r??(m?o:s);if(!S)return[];const k=I.parseUnits(n.amount,n.asset.decimals),v=b??Lt(n.asset,i)??l.address,F=await Zn(n.asset,l,v),T=t?.fundingAmountOverride??Et(k,n.asset.decimals,F,"floor");if(T<=0n)throw new Error("Amount is below the destination token's precision");const B=t?.fundingAmountOverride??T,j=t?.sourceFundingAmountOverride??(t?.fundingAmountOverride===void 0?k:zt(B,F,n.asset.decimals)),E=t?.deliveryAmountOverride??B,R=t?.withdrawalAmountOverride??E,D=t?.actionAmountOverride??T,O=t?.actionContextOverride?.feeBreakdown;if(e.isFeeInclusiveInput&&h&&e.swapInputAmount!=null&&O){const se=Et(k,n.asset.decimals,F,"floor");if(e.swapInputAmount+O.gasFee+O.spicenetFee+O.bridgeFee>se)throw new Error("Swap input plus fees exceeds the entered amount. Refresh the quote before retrying.")}const H={userAddress:S,executorAddress:s,outputRecipient:h&&x?e.swapOutputRecipient??s:void 0,chainId:i,destinationToken:l.address,feeToken:c==="user-transfer"&&h&&b?b:l.address,grossAmount:B,netAmount:D,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:c,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},U=()=>u(D,H),V=n.asset._source==="wallet",Y=n.asset._fundingWallet,N=V&&(Y==="external"||m&&Y!=="embedded");if(!p&&V&&n.asset.chainId===i&&(m||Y==="external"||zi(n.asset))){if(h){if(!b)throw new Error("Swap input token could not be resolved");if(!x||C===null)throw new Error("Swap quote not available yet")}if(h&&x&&C){const se=await u(t?.actionAmountOverride??C,{...H,netAmount:t?.actionAmountOverride??C}),{feeCalls:de,remainingCalls:ae}=qi(se,c,h,H.feeToken);return[{chainId:i,calls:[...de,...x.calls,...ae]}]}return[{chainId:i,calls:await U()}]}const L=!p&&!m?n.asset._source!=="wallet":n.asset._source==="spice",z=Li(n,m);if(!(L||N||z))return[{chainId:i,calls:await U()}];const G=z?Xs(A.normalizeNativeTokenAddress(n.asset.address),j,n.asset.chainId):N&&n.asset.chainId!==i?{chainId:n.asset.chainId,calls:[Ui(A.normalizeNativeTokenAddress(n.asset.address),j,A.getEscrowContractAddress(n.asset.chainId))]}:null,Z=(se,de)=>({token:A.normalizeNativeTokenAddress(se),from:"escrow",to:s,amount:de});if(h){if(!b)throw new Error("Swap input token could not be resolved");if(!x||C===null)throw new Error("Swap quote not available yet")}if(h&&x&&C&&b){const se=await u(t?.actionAmountOverride??C,{...H,netAmount:t?.actionAmountOverride??C}),{feeCalls:de,remainingCalls:ae}=qi(se,c,h,H.feeToken),ne={chainId:i,calls:[...de,...x.calls,...ae],tokenTransfers:[Z(b,E)]},ce=await Js(ne,f,{userAddress:s,destinationChainId:i,deliveryToken:b,deliveryAmount:E,withdrawalAmount:R,deliveryRecipient:s,deliveryTransfers:$s(ne),sourceAsset:n.asset},w);return G?[G,...ce]:ce}const W=b??Lt(n.asset,i)??l.address,q={chainId:i,calls:await U(),tokenTransfers:[Z(W,E)]},M=await Js(q,f,{userAddress:s,destinationChainId:i,deliveryToken:W,deliveryAmount:E,withdrawalAmount:R,deliveryRecipient:s,deliveryTransfers:$s(q),sourceAsset:n.asset},w);return G?[G,...M]:M}async function Lp(e,t,n,s,o){let r=e;for(let i=0;i<4;i++){const l=await t(r),u=await s(l,n,r,o),c=Lc(u);if(c===null||c>=e)return r;const f=r-c,p=e+f;if(p<=r)return r;r=p}return r}function In(e,t,n,s){const o=e.filter(i=>i.domain!=="spicenet"),r=i=>(i.tokenTransfers??[]).some(l=>l.from==="escrow");return[...o.filter(i=>!r(i)),...Gn(o.filter(r),t,n,s)]}function pr(e,t,n,s,o){const r=e[e.length-1];if(!r?.calls.length||r.domain==="spicenet")throw new Error("Proceeds fees require a final destination action");const i=[{to:A.SPICE_PLATFORM_FEE_RECIPIENT,amount:o},{to:A.SPICE_GAS_FEE_RECIPIENT,amount:s}].filter(l=>l.amount>0n);return e.map(l=>l===r?{...l,calls:[...l.calls,...i.map(u=>({to:n,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[u.to,u.amount]})}))],tokenTransfers:[...l.tokenTransfers??[],...i.map(u=>({from:t,to:u.to,token:n,amount:u.amount}))]}:l)}async function Qi(e,t,n,s,o){const r=A.hashChainBatches(e),i=await g.relayerService.estimateBatchGas({user:t,outputToken:n,signal:s,requireSimulation:!0,includePlatformFee:o!==void 0,chainBatches:e.map((l,u)=>({...l,hash:r[u].hash}))});if(i.gasQuoteSource!=="estimated"||!i.simulationVerified)throw new Error("Action proceeds require a successful live batch simulation; fallback gas pricing is not sufficient");if(o!==void 0&&(i.platformFee===void 0||i.platformFee>o))throw new Error("Fee conversion platform price changed; refresh before retrying");return i.gasFee}async function zp(e){if(e.proceeds.token.toLowerCase()!==e.token.toLowerCase())throw new Error("Action proceeds must use the destination fee token");const t=await e.proceeds.resolve(e.signal);if(e.signal?.aborted)throw new Error("Action proceeds quote was cancelled");if(t<0n)throw new Error("Action proceeds cannot be negative");const n=await e.baseline();if(!n?.feeEstimate)throw new Error("Action fee quote is unavailable");let s=n.preview.gasFee;const o=n.preview.spicenetFee,r=n.preview.bridgeFee??0n;for(let i=0;i<5;i++){const l=s+o+r,u=t<l?t:l,c=l-u,f=c>0n?(c*110n+99n)/100n+2n:0n,p=In(await e.buildBatches(f),e.owner),m=pr(p,e.owner,e.token,s+r,o),h=await Qi(m,e.owner,e.token,e.signal);if(h===s)return{preview:{...n.preview,grossAmount:f,netAmount:0n,gasFee:s,totalFee:l,gasQuoteSource:"estimated"},feeEstimate:n.feeEstimate,grossFundingAmount:f,proceedsAvailable:t,proceedsUsed:u};s=h}throw new Error("Action proceeds fee estimate did not converge")}function Ki(e,t,n){if(e._source==="wallet")return e._fundingWallet==="embedded"&&e.chainId===t&&A.getTokenByAddress(e.address,t)?e.address:null;const s=zn(e,t);return s.find(o=>o.toLowerCase()===n.toLowerCase())??s[0]??null}class Yi extends Error{constructor(t,n){super("The selected balance cannot cover the fee funding amount"),this.requiredAmount=t,this.balance=n,this.name="InsufficientFeeFundingBalanceError"}}async function qp(e){const t=e.selectedAsset?.asset,n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!t||!n||t._source!=="spice"&&!(t._source==="wallet"&&t._fundingWallet==="embedded"&&t.chainId===e.resolvedChainId))throw new Error("A local embedded or Spice balance is required for fee conversion");const s=Ki(t,e.resolvedChainId,e.destinationToken.address);if(!s)throw new Error("This receipt has no registered destination withdrawal token");const o=A.getTokenByAddress(s,e.resolvedChainId);if(!o)throw new Error("Fee funding token metadata is unavailable");const r=e.destinationToken.address;if(e.actionProceeds&&e.actionProceeds.token.toLowerCase()!==r.toLowerCase())throw new Error("Action proceeds must use the destination fee token");const i=e.actionProceeds?await e.actionProceeds.resolve(e.signal):0n;if(i<0n||e.signal?.aborted)throw new Error("Action proceeds quote was cancelled or invalid");const l=Ks({executorAddress:n,customVenues:[...e.resolveExactOutputSwap?[{name:"consumer-exact-output",chainIds:[e.resolvedChainId],preferred:!0,resolve:e.resolveExactOutputSwap}]:[],...Yn(e.liquidityVenues).output]}),u=async f=>{const p=A.hashChainBatches(f),m=await g.relayerService.estimateBatchGas({user:n,outputToken:r,requireSimulation:!0,includePlatformFee:!0,signal:e.signal,chainBatches:f.map((h,x)=>({...h,hash:p[x].hash}))});if(!m.simulationVerified||m.gasQuoteSource!=="estimated"||m.platformFee===void 0||m.gasFee<=0n)throw new Error("Fee conversion requires verified gas and platform pricing");return m};let c=await u(await e.buildPayChainBatches({fundingAmountOverride:0n}));for(let f=0;f<8;f++){const p=c.gasFee+c.platformFee,m=i<p?i:p,h=p-m,x=h>0n?(h*110n+99n)/100n+2n:0n,y=x>0n?await l.getQuote({tokenIn:s,tokenOut:r,amountOut:x,maxSlippage:e.maxSlippage},e.resolvedChainId,n):null;if(e.signal?.aborted)throw new Error("Fee conversion quote was cancelled");if(y&&(y.amountOut!==x||y.amountInMax<=0n||y.amountInMax<y.amountIn||!y.calls.length))throw new Error("Invalid exact-output fee conversion quote");const b=y?.amountInMax??0n,w=zt(b,o.decimals,t.decimals);if(w>t.balance)throw new Yi(w,t.balance);let C=In(await e.buildPayChainBatches({fundingAmountOverride:b,fundingTokenOverride:s}),n);if(y){const k=C.length-1;C=C.map((v,F)=>F===k?{...v,calls:[...v.calls,...y.calls]}:v)}C=pr(C,n,r,c.gasFee,c.platformFee);const S=await u(C);if(S.gasFee<=c.gasFee&&(c.gasFee-S.gasFee)*100n<=S.gasFee*15n&&S.platformFee===c.platformFee){const k={tokenIn:s,tokenOut:r,amountInMax:b,amountOut:x,sourceAmountMax:w};return{feeEstimate:null,preview:{symbol:e.destinationToken.symbol,decimals:e.destinationToken.decimals,grossAmount:x,netAmount:0n,gasFee:c.gasFee,spicenetFee:c.platformFee,totalFee:p,gasQuoteSource:"estimated"},grossFundingAmount:b,proceedsAvailable:i,proceedsUsed:m,fundingConversion:k,fundingBatches:C}}c=S}throw new Error("Fee conversion pricing did not converge")}function _s(e){return JSON.stringify(e,(t,n)=>typeof n=="bigint"?n.toString():n)}async function Gi(e,t,n){const s=e.sourceConversion,o=e.selectedAsset?.asset,r=e.embeddedWalletAddress??e.providerEmbeddedAddress;try{if(!o||!r||o._source!=="wallet")throw new Error("Select a wallet source for source-chain conversion");if(!e.isPayMode&&!e.isFeeInclusiveInput)throw new Error("Source-chain conversion requires input-inclusive or exact-output mode");const i=s.virtualSelectedAsset,l=i.asset.chainId===e.resolvedChainId&&g.addressesEqual(i.asset.address,e.destinationToken.address);await t({...e,sourceConversion:void 0,sourceConversionRequired:!1,sourceFunding:void 0,selectedAsset:i,parsedAmount:e.isPayMode?e.parsedAmount:Number(i.amount),isInsufficientBalance:!1,isSourceDestToken:l,executionTokenDecimals:i.asset.decimals,execution:{...e.execution,execute:async(u,c,f,p,m,h)=>{const x=(b,w)=>{const C=s.getPlan(b);if(!s.isCurrent()||!C||C.expiresAt<=Date.now())throw new Error("Source funding quote expired or changed; refresh it before retrying");const S=C.quote.plan.source;if(S.chainId!==o.chainId||S.decimals!==o.decimals||!g.addressesEqual(S.address,o.address)||!g.addressesEqual(C.quote.executorAddress,r))throw new Error("The source funding quote does not belong to this wallet and asset");if(!e.isPayMode&&C.quote.sourceAmountInMax!==I.parseUnits(e.selectedAsset.amount,o.decimals))throw new Error("The source quote exceeds the entered input-inclusive budget");if(C.quote.sourceAmountInMax>s.acceptedSourceAmountInMax)throw new Error("The source quote exceeds the displayed maximum; review the refreshed quote before retrying");if(w!==void 0&&C.quote.sourceAmountInMax>w)throw new Error("The refreshed source quote exceeds this operation's funded amount");if(!C.chainBatches.every((k,v)=>b[v]&&_s(b[v])===_s(k)))throw new Error("The source conversion calls changed after quoting");return C},y=x(u).quote.sourceAmountInMax;if(Gt(o,e.isNon7702)){const b=BigInt(e.sourceFunding?.confirmedAmount??"0")+BigInt(e.sourceFunding?.pending?.amount??"0");if(y>o.balance+b)throw new Error("Insufficient selected-source balance for the quoted amount and fees");await n(y)}else{const b=g.getClientForChain(o.chainId);if((o.isNative||A.isNativeToken(o.address)?await b.getBalance({address:r}):await b.readContract({address:o.address,abi:I.erc20Abi,functionName:"balanceOf",args:[r]}))<y)throw new Error("Insufficient embedded source balance for this conversion")}return x(u,y),e.execution.execute(u,c,f,p,m,{...h,skipUserFundingPreflight:!0,adjustBatchesForEstimate:async b=>{const w=await h?.adjustBatchesForEstimate?.(b);return x(w??b.chainBatches,y),w??null},validateBeforeSubmit:async b=>{await h?.validateBeforeSubmit?.(b),x(b,y)}})}}})}catch(i){const l=g.sanitizeError(i,"Source funding conversion failed");e.ui.setError(l),e.ui.setStep("error"),e.isPayMode&&e.ui.setPaymentResult({status:"failed",error:l})}}function Zi(e,t){let n,s;if(A.isNativeToken(t)){if(e.data!=="0x")return null;n=e.to,s=e.value}else{if(!g.addressesEqual(e.to,t))return null;try{const o=I.decodeFunctionData({abi:I.erc20Abi,data:e.data});if(o.functionName!=="transfer")return null;[n,s]=o.args}catch{return null}}return g.addressesEqual(n,A.SPICE_GAS_FEE_RECIPIENT)?{gas:s,platform:0n}:g.addressesEqual(n,A.SPICE_PLATFORM_FEE_RECIPIENT)?{gas:0n,platform:s}:null}function fs(e,t,n){return e.map(s=>s.chainId===t?{...s,calls:s.calls.filter(o=>!Zi(o,n))}:s)}function Xi(e,t,n){if(!e.feeOnlyAction)return{};const s=e.embeddedWalletAddress??e.providerEmbeddedAddress;if(e.actionProceeds||e.feeQuote?.fundingConversion){const l=e.feeQuote?.fundingConversion,u=e.actionProceeds??{token:t,resolve:async()=>0n},c=e.feeQuote?.preview,f=e.feeQuote?.proceedsUsed;if(!c||f===void 0||u.token.toLowerCase()!==t.toLowerCase())throw new Error("Refresh the action proceeds quote");const p=c.gasFee+(c.bridgeFee??0n),m=c.spicenetFee,h=async()=>{e.validateFeeQuote?.();const y=await u.resolve(e.signal);if(e.validateFeeQuote?.(),e.signal?.aborted||y<f||y+(l?.amountOut??n)<p+m)throw new Error("Action proceeds changed; refresh before retrying");return[{chainId:e.resolvedChainId,token:t,amount:f+(l?.amountOut??0n)}]},x=async y=>{await h();const b=await Qi(y,s,t,e.signal,l?m:void 0);if(await h(),(b>c.gasFee?b-c.gasFee:c.gasFee-b)*100n>b*15n)throw new Error("Action gas quote changed; refresh before retrying")};return{resolveActionOutputCredits:h,prepareForSigning:async y=>{const b=fs(y,e.resolvedChainId,t).map(C=>({...C,tokenTransfers:C.tokenTransfers?.filter(S=>!(typeof S.from=="string"&&g.addressesEqual(S.from,s)&&(g.addressesEqual(S.to,A.SPICE_GAS_FEE_RECIPIENT)||g.addressesEqual(S.to,A.SPICE_PLATFORM_FEE_RECIPIENT))))})),w=pr(b,s,t,p,m);return await x(w),w},validateBeforeSubmit:x}}const o=A.getTokenByAddress(t,e.resolvedChainId),r={chainId:e.resolvedChainId,tokenAddress:t,symbol:o?.symbol??e.destinationToken.symbol,decimals:e.executionTokenDecimals??o?.decimals??e.destinationToken.decimals},i=async l=>{const u=fs(l,e.resolvedChainId,t),c=await e.execution.estimate(u,t,n,{userOverride:s,useCustomTransfers:!0,feeExecutionMode:"backend-transfer"}),f=un(c,r);if(!f||f.chainId!==e.resolvedChainId)throw new Error("The fee service did not return the destination action's fee quote");if(f.gasFee+f.spicenetFee+(f.bridgeFee??0n)+2n>n)throw new Error("Fees exceed the displayed maximum funding; refresh the quote before retrying");return{raw:u,feeEstimate:c,fees:f}};return{prepareForSigning:async l=>{const{raw:u,feeEstimate:c}=await i(l);return In(u,s,c,{payoutAlreadyGross:!0})},validateBeforeSubmit:async l=>{const{fees:u}=await i(l);let c=0n,f=0n;for(const m of l)if(m.chainId===e.resolvedChainId)for(const h of m.calls){const x=Zi(h,t);x&&(c+=x.gas,f+=x.platform)}if(c+f+2n>n)throw new Error("Signed fees exceed the displayed maximum funding");const p=u.gasFee+(u.bridgeFee??0n);if((c>p?c-p:p-c)*100n>p*15n||f!==u.spicenetFee)throw new Error("The signed gas quote changed materially; refresh before retrying")}}}const Ji=(e,t)=>(e+t-1n)/t;function Hp(e,t){const n=e.spicenetFee+(e.bridgeFee??0n);return e.grossAmount<=n?t+e.gasFee+n:Ji((t+e.gasFee)*e.grossAmount,e.grossAmount-n)+2n}function $i(e,t,n){return e.every(s=>s.domain!=="spicenet"&&!s.tokenTransfers?.length)?{...t,grossAmount:n,netAmount:n,totalFee:0n,gasFee:0n,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"static_zero"}:null}async function fr(e){const{requiredNetFunding:t}=e;if(e.feeOnlyAction){const f=e.executionOptions?.userOverride;if(!f||t!==0n)throw new Error("Fee-only estimates require a zero action amount and its embedded executor");let p=1n,m;for(let h=0;h<8;h++){const x=In(await e.buildBatches(p),f,m,{payoutAlreadyGross:!0}),y=await e.estimate(fs(x,e.tokenDescriptor.chainId,e.fundingToken),e.fundingToken,p,{...e.executionOptions,feeExecutionMode:"backend-transfer"}),b=un(y,e.tokenDescriptor);if(!b)throw new Error("The fee service did not return a fee quote for this action");const w=b.gasFee+b.spicenetFee+(b.bridgeFee??0n);if(m&&w+2n<=p)return{preview:{...b,grossAmount:p,netAmount:0n},feeEstimate:y,grossFundingAmount:p};p=(w*110n+99n)/100n+2n,m=y}throw new Error("Fee-only funding did not converge; refresh the fee quote before retrying")}const n=t,s=await e.buildBatches(n),o=await e.estimate(s,e.fundingToken,n,e.executionOptions),r=un(o,e.tokenDescriptor);if(!r)return{preview:$i(s,e.tokenDescriptor,t),feeEstimate:o,grossFundingAmount:t};const i=Hp(r,t),l=f=>r.grossAmount>0n?Ji(f*i,r.grossAmount):f,u=l(r.spicenetFee),c=l(r.bridgeFee??0n);return{preview:{...r,grossAmount:i,netAmount:t,spicenetFee:u,bridgeFee:c,totalFee:r.gasFee+u+c},feeEstimate:o,grossFundingAmount:i}}function Vp(e,t,n,s){if(e<=0n)return 0n;const o=e-t;if(o<=0n)return 0n;const r=s+n;return r<=0n?o:o*s/r}async function _i(e){const{asset:t,isPayMode:n,isNon7702:s,needsSwap:o,isQuoting:r,embeddedWalletAddress:i,buildSupplyChainBatches:l,estimate:u,executionTokenAddress:c,feeExecutionMode:f}=e;if(n||s||o||r||!i||t.balance<=0n)return null;const p=i,m=await l({fundingAmountOverride:t.balance,actionAmountOverride:t.balance});if(m.length===0)return null;const h=m.some(S=>S.tokenTransfers?.length),x=await u(m,c,t.balance,h?{userOverride:p,useCustomTransfers:!0,feeExecutionMode:f}:f?{userOverride:p,feeExecutionMode:f}:{userOverride:p}),y=un(x,{chainId:t.chainId,tokenAddress:t.address,symbol:t.symbol,decimals:t.decimals}),b=y?zt(y.gasFee,y.decimals,t.decimals):0n,w=y?zt(y.spicenetFee,y.decimals,t.decimals):0n,C=Vp(t.balance,b,w,t.balance);return C>0n?la(C,t.decimals):null}async function mr(e){const{signal:t,selectedAsset:n,isPayMode:s,isFeeInclusiveInput:o=!1,parsedAmount:r,needsSwap:i,exactOutputSwap:l,isNon7702:u,isSourceDestToken:c,currentPaymentAmount:f,destinationToken:p,feeExecutionMode:m,resolvedTokenIn:h,embeddedWalletAddress:x,providerEmbeddedAddress:y,resolvedChainId:b,isConnected:w,address:C,ready:S,authenticated:k,isDirect:v,resolvedSwap:F,isQuoting:T,executionTokenAddress:B,buildPayChainBatches:j,buildSupplyChainBatches:E,estimate:R}=e;if(e.feeOnlyAction&&n&&(n.asset._source==="spice"||n.asset._source==="wallet"&&n.asset._fundingWallet==="embedded"&&n.asset.chainId===b)&&(h?h.toLowerCase()!==p.address.toLowerCase():n.asset.receiptTokenId||n.asset.chainTokens))return qp(e);if(e.actionProceeds&&e.feeOnlyAction){const M=x||y;if(!M||!S||!k)return null;if(h&&h.toLowerCase()!==p.address.toLowerCase())throw new Error("Action proceeds require a matching fee-token source");return zp({proceeds:e.actionProceeds,owner:M,token:p.address,signal:t,buildBatches:se=>j({fundingAmountOverride:se}),baseline:()=>mr({...e,actionProceeds:void 0,selectedAsset:n??{amount:"0",asset:{...p,name:p.symbol,balance:0n,balanceFormatted:0,balanceUsd:0,isNative:!1,_source:"spice"}}})})}if(!n?.asset)return null;if(s){if(r<=0&&!e.feeOnlyAction||i&&!l&&!e.feeOnlyAction||c&&n.asset._source==="wallet"&&!e.feeOnlyAction||u&&!x&&!y)return null;const M=I.parseUnits(f,p.decimals),se=h||Lt(n.asset,b)||n.asset.address||p.address,de={chainId:b,tokenAddress:se,symbol:A.getTokenByAddress(se,b)?.symbol??n.asset.symbol,decimals:await Zn(n.asset,p,se)};if(Gt(n.asset,u)){const ue=x||y;if(!ue)return null;const $=i?l?.amountInMax??0n:M;if($===0n&&!e.feeOnlyAction)return null;const ve=await fr({requiredNetFunding:$,feeOnlyAction:e.feeOnlyAction,buildBatches:P=>j({fundingAmountOverride:P}),fundingToken:se,estimate:R,executionOptions:{userOverride:ue,useCustomTransfers:!0,feeExecutionMode:m,signal:t},tokenDescriptor:de});return ve.preview?{...ve,preview:ve.preview}:null}if(!w||!C||!S||!k)return null;const ae=x||y||C,ne=i?l?.amountInMax??0n:M;if(ne===0n&&!e.feeOnlyAction)return null;const ce=await fr({requiredNetFunding:ne,feeOnlyAction:e.feeOnlyAction,buildBatches:ue=>j({fundingAmountOverride:ue}).then($=>In($,ae)),fundingToken:se,estimate:R,executionOptions:{userOverride:ae,useCustomTransfers:!0,feeExecutionMode:m,signal:t},tokenDescriptor:de});return ce.preview?{...ce,preview:ce.preview}:null}if(r<=0||!x)return null;const D=x||y;if(!(!s&&!u&&n.asset._source==="wallet"&&n.asset.chainId!==b)&&!v&&!F&&!T||T)return null;const O=await Zn(n.asset,p,B),H=Et(I.parseUnits(n.amount,n.asset.decimals),n.asset.decimals,O,"floor"),U=await E();if(U.length===0)return null;const V=n.asset._source==="wallet",Y=V&&(n.asset._fundingWallet==="external"||u&&n.asset._fundingWallet!=="embedded")&&V&&n.asset.chainId===b,N={chainId:b,tokenAddress:B,symbol:A.getTokenByAddress(B,b)?.symbol??p.symbol,decimals:O};if(Y){const M=await g.relayerService.estimateBatchGas({user:D,outputToken:B,stepIndex:0,chainBatches:U,signal:t}),se=o?Bs(H,M.gasFee,Dn):(()=>{const de=qn(H,Dn),ae=de+M.gasFee;return{netAmount:H,spicenetFee:de,totalFee:ae,grossAmount:H+ae}})();return{preview:{...N,grossAmount:se.grossAmount,netAmount:se.netAmount,totalFee:se.totalFee,gasFee:M.gasFee,spicenetFee:se.spicenetFee,bridgeFee:0n,gasQuoteSource:M.gasQuoteSource},feeEstimate:null}}const L=U.some(M=>M.tokenTransfers?.length),z=await R(U,B,H,L?{userOverride:D,useCustomTransfers:!0,feeExecutionMode:m,signal:t}:m?{userOverride:D,feeExecutionMode:m,signal:t}:{userOverride:D,signal:t}),G=un(z,N),Z=G??$i(U,N,H);if(!Z)return null;if(!o||!G)return{preview:Z,feeEstimate:z};const W=Z.gasFee+(Z.bridgeFee??0n),q=Bs(H,W,Dn);return{preview:{...Z,grossAmount:q.grossAmount,netAmount:q.netAmount,totalFee:q.totalFee,spicenetFee:q.spicenetFee},feeEstimate:z}}function hr(e){if(!e||typeof e!="object")return!1;const t=e;return t.version===1&&typeof t.identity=="string"&&/^[0-9]+$/.test(t.baseline)&&/^[0-9]+$/.test(t.confirmedAmount)&&(!t.pending||/^[1-9][0-9]*$/.test(t.pending.amount)&&(!t.pending.hash||/^0x[0-9a-f]{64}$/i.test(t.pending.hash)))}async function eo(e){const t=()=>e.isNative?e.sourceClient.getBalance({address:e.recipient}):e.sourceClient.readContract({address:e.tokenAddr,abi:I.erc20Abi,functionName:"balanceOf",args:[e.recipient]});let n=e.state;if(n&&(!hr(n)||n.identity!==e.identity))throw new Error("Restore the pending funding operation's original source, wallets and amount before retrying");n||(n={version:1,identity:e.identity,baseline:(await t()).toString(),confirmedAmount:"0"});const s=()=>e.onState({...n,pending:n.pending&&{...n.pending}}),o=()=>{delete n.pending,s()},r=()=>{n.confirmedAmount=(BigInt(n.confirmedAmount)+BigInt(n.pending.amount)).toString(),delete n.pending,s()};if(n.pending){if(!n.pending.hash)throw new Error("Source funding submission is unconfirmed; recover it before retrying to avoid spending twice");const{receipt:p}=await Os({client:e.sourceClient,hash:n.pending.hash,call:ga(e.recipient,e.tokenAddr,e.isNative,BigInt(n.pending.amount)),onRepriced:m=>{n.pending.hash=m,s()},onCancelled:o});if(p.status!=="success")throw o(),new Error("Source funding reverted; retry when ready");r()}if(e.reconcileOnly)return;const i=BigInt(n.confirmedAmount),l=async()=>{if(BigInt(n.confirmedAmount)>0n&&await t()<BigInt(n.baseline)+BigInt(n.confirmedAmount))throw new Error("Previously funded assets are no longer reserved in the embedded wallet; recover this operation before funding again")};await l();const u=e.requiredAmount>i?e.requiredAmount-i:0n;if(u===0n)return;const{extWc:c,viemChain:f}=await e.createWallet();await ya({extWc:c,sourceClient:e.sourceClient,recipient:e.recipient,tokenAddr:e.tokenAddr,isNative:e.isNative,amount:u,viemChain:f,observer:{onSending:async()=>{await e.observer?.onSending?.(0),n.pending={amount:u.toString()},s()},onSubmitted:(p,m)=>{n.pending.hash=m,s(),e.observer?.onSubmitted?.(0,m)},onConfirmed:(p,m)=>{r(),e.observer?.onConfirmed?.(0,m)},onRejected:()=>{o(),e.observer?.onRejected?.(0)},onReverted:(p,m)=>{o(),e.observer?.onReverted?.(0,m)}}}),await l()}function el(e){return e.selectedAsset||!e.feeOnlyAction||!e.actionProceeds?e.selectedAsset:{amount:"0",asset:{...e.destinationToken,name:e.destinationToken.symbol,balance:0n,balanceFormatted:0,balanceUsd:0,isNative:!1,_source:"wallet",_fundingWallet:"embedded"}}}function ms(e){const t=el(e),n=t?.asset;return JSON.stringify([e.externalWalletAddress?.toLowerCase(),(e.embeddedWalletAddress??e.providerEmbeddedAddress)?.toLowerCase(),n?.address.toLowerCase(),n?.chainId,n?.decimals,n?._source,n?._fundingWallet,t?.amount,e.resolvedChainId,e.destinationToken.address.toLowerCase(),e.recipient?.toLowerCase(),e.isPayMode,e.currentPaymentAmount??"0",e.isFeeInclusiveInput??!1,e.sourceFundingRecoveryKey??"generic",e.destinationToken.decimals,n?n.isNative??A.isNativeToken(n.address):null,...e.feeOnlyAction?[!0]:[]])}async function to(e,t){const n=e.selectedAsset.asset,s=A.normalizeNativeTokenAddress(n.address);await eo({identity:ms(e),state:e.sourceFunding,onState:o=>{e.sourceFunding=o,e.onSourceFundingChange?.(o)},createWallet:()=>Nn({wallet:e.externalWallet,account:e.externalWalletAddress,chainId:n.chainId,onSwitch:()=>e.ui.setStatusMsg("Switching source network...")}),sourceClient:g.getClientForChain(n.chainId),recipient:e.embeddedWalletAddress??e.providerEmbeddedAddress,tokenAddr:s,isNative:n.isNative||A.isNativeToken(s),requiredAmount:t,observer:e.fundingObserver})}function tl(e,t){const n=e.selectedAsset?.asset;if(!n||n._source!=="wallet")return;const s=Lt(n,e.resolvedChainId);if(!s||!g.addressesEqual(s,e.executionTokenAddress))return;const o=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId),r=zt(t,e.executionTokenDecimals??o?.decimals??e.destinationToken.decimals,n.decimals),i=n.balance+BigInt(e.sourceFunding?.confirmedAmount??"0");if(r<=i)return;const l=I.formatUnits(r,n.decimals),u=I.formatUnits(i,n.decimals);throw new Error(`Insufficient ${n.symbol} for amount plus fees. Required ${l} ${n.symbol}; available ${u} ${n.symbol}.`)}function En(e){const t=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:e.executionTokenAddress,symbol:t?.symbol??e.destinationToken.symbol,decimals:e.executionTokenDecimals??t?.decimals??e.destinationToken.decimals}}function hs(e,t,n){const s=un(e,En(t));if(!s)return;const o=s.bridgeFee??0n,r=s.gasFee+o;if(t.isFeeInclusiveInput){const c=Bs(n,r,Dn);if(!c.coversFees){const{symbol:f,decimals:p}=En(t);throw new Error(`Amount too small: fees are ${I.formatUnits(r,p)} ${f}.`)}if(t.needsSwap&&!t.exactOutputSwap&&(t.swapInputAmount??t.feeQuote?.preview?.netAmount)!=null&&c.netAmount<(t.swapInputAmount??t.feeQuote.preview.netAmount))throw new Error("Fees changed. Refresh the swap quote before retrying so the total stays within your entered amount.");return{grossAmount:c.grossAmount,netAmount:c.netAmount,combinedFeeAmount:c.totalFee,feeExecutionMode:"user-transfer",feeBreakdown:{spicenetFee:c.spicenetFee,gasFee:s.gasFee,bridgeFee:o}}}const i=n,l=qn(n,Dn),u=l+r;return{grossAmount:i+u,netAmount:i,combinedFeeAmount:u,feeExecutionMode:"user-transfer",feeBreakdown:{spicenetFee:l,gasFee:s.gasFee,bridgeFee:o}}}function nl(e,t,n){let s=0n,o=0n;const r=n.toLowerCase();for(const i of e)if(i.chainId===t)for(const l of i.calls??[]){if(A.isNativeToken(n)&&l.data==="0x"&&l.value>0n){g.addressesEqual(l.to,A.SPICE_PLATFORM_FEE_RECIPIENT)?s+=l.value:g.addressesEqual(l.to,A.SPICE_GAS_FEE_RECIPIENT)&&(o+=l.value);continue}if(l.to.toLowerCase()===r)try{const u=I.decodeFunctionData({abi:I.erc20Abi,data:l.data});if(u.functionName!=="transfer")continue;const c=u.args[0].toLowerCase(),f=u.args[1];c===A.SPICE_PLATFORM_FEE_RECIPIENT.toLowerCase()?s+=f:c===A.SPICE_GAS_FEE_RECIPIENT.toLowerCase()&&(o+=f)}catch{continue}}return{spicenetFee:s,gasFee:o}}function gr(e,t,n){const s=t.feeExecutionMode==="user-transfer"&&t.needsSwap&&t.resolvedTokenIn?t.resolvedTokenIn:t.executionTokenAddress,o=nl(e,t.resolvedChainId,s);return o.spicenetFee===0n&&n.feeBreakdown.spicenetFee>0n||o.gasFee===0n&&n.feeBreakdown.gasFee>0n?!1:vn(o.spicenetFee,n.feeBreakdown.spicenetFee,100n)&&vn(o.gasFee,n.feeBreakdown.gasFee,100n)}function sl(e,t){if(!e.isFeeInclusiveInput||!e.needsSwap||e.swapInputAmount==null||!e.selectedAsset)return;const n=En(e),s=Et(I.parseUnits(e.selectedAsset.amount,e.selectedAsset.asset.decimals),e.selectedAsset.asset.decimals,n.decimals,"floor"),o=nl(t,e.resolvedChainId,e.resolvedTokenIn??e.executionTokenAddress);if(e.swapInputAmount+o.gasFee+o.spicenetFee>s)throw new Error("Swap input plus fees exceeds the entered amount. Refresh the quote before retrying.")}function ol(e,t){return e?vn(e.grossAmount,t.grossAmount,100n)&&vn(e.feeBreakdown.spicenetFee,t.feeBreakdown.spicenetFee,100n)&&vn(e.feeBreakdown.gasFee,t.feeBreakdown.gasFee,100n)&&vn(e.feeBreakdown.bridgeFee,t.feeBreakdown.bridgeFee,100n):!1}function rl(e,t){const n=A.getTokenByAddress(t,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:t,symbol:n?.symbol??e.selectedAsset?.asset.symbol??"",decimals:e.executionTokenDecimals??n?.decimals??e.selectedAsset?.asset.decimals??e.destinationToken.decimals}}async function xr(e,t){const n=e.feeQuote;return n?.feeEstimate&&n.grossFundingAmount!==void 0?{grossFundingAmount:n.grossFundingAmount,feeEstimate:n.feeEstimate}:fr({...t,feeOnlyAction:e.feeOnlyAction,estimate:e.execution.estimate,tokenDescriptor:rl(e,t.fundingToken)})}function al(e,t){if(e.feeOnlyAction)return 0n;const n=e.selectedIsEquivalent?t:e.exactOutputSwap?e.exactOutputSwap.amountInMax:0n;if(n===0n)throw new Error("Quote not available yet");return n}function yr(e,t,n){const s=t instanceof Error?t:new Error(String(t));if(s.name==="AbortError"||n){e.ui.setStep("idle");return}const o=s.message||"Transaction failed";e.ui.setStep("error"),e.ui.setStatusMsg(o),e.ui.setError(o)}function br(e,t){const n=g.sanitizeError(t,"Payment failed. Please try again.");e.ui.setError(n),e.ui.setPaymentResult({status:"failed",error:n})}function Qp(e){if(!e.isFeeInclusiveInput||e.feeExecutionMode==="user-transfer")return e;const t=A.normalizeNativeTokenAddress(e.executionTokenAddress);let n=!1;const s=(o,r)=>A.isNativeToken(t)?{to:o,value:r,data:"0x"}:{to:t,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[o,r]})};return{...e,feeExecutionMode:"user-transfer",execution:{...e.execution,execute:(...o)=>{if(!n)throw new Error("Inclusive supply requires a destination fee quote");return e.execution.execute(...o)},estimate:async(o,r,i,l)=>{const u=await e.execution.estimate(fs(o,e.resolvedChainId,t),r,i,{...l,feeExecutionMode:"backend-transfer"});if(!un(u,En(e)))throw new Error("Inclusive supply requires a destination fee quote");return u},buildSupplyChainBatches:async o=>{const r=o?.actionContextOverride,i=await e.execution.buildSupplyChainBatches({...o,actionContextOverride:r?{...r,feeExecutionMode:"backend-transfer"}:void 0});if(!r?.feeBreakdown)return i;n=!0;const{spicenetFee:l,gasFee:u,bridgeFee:c}=r.feeBreakdown,f=[...l>0n?[s(A.SPICE_PLATFORM_FEE_RECIPIENT,l)]:[],...u+c>0n?[s(A.SPICE_GAS_FEE_RECIPIENT,u+c)]:[]],p=fs(i,e.resolvedChainId,t),m=p[p.length-1];if(m?.chainId!==e.resolvedChainId)throw new Error("Inclusive supply requires a final destination action batch");return p.map(h=>h===m?{...h,calls:[...f,...h.calls]}:h)}}}}async function no(e){if(e.feeOnlyAction){e.ui.setError("Fee-only actions require output mode and a zero action amount");return}if(e.sourceConversion)return Gi(e,no,s=>to(e,s));if(e.sourceConversionRequired){e.ui.setError("Wait for the source funding quote before continuing");return}if(!e.selectedAsset?.asset||e.parsedAmount<=0){e.ui.setError("Select an asset and enter an amount");return}if(e.isInsufficientBalance&&!e.sourceFunding){e.ui.setError("Insufficient balance");return}const t=e.selectedAsset;try{e={...e,executionTokenDecimals:await Zn(t.asset,e.destinationToken,e.executionTokenAddress)}}catch(s){yr(e,s,!1);return}if(e=Qp(e),Gt(t.asset,e.isNon7702)){const s=e.isNon7702&&e.isSourceDestToken,o=e.externalWalletAddress;if(s?!o:!e.externalWalletAddress){e.ui.setError("Please connect your wallet to continue");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setTxHash(null);try{if(s){e.ui.setStep("executing"),e.ui.setStatusMsg("Submitting transaction...");const r=await il({...e,activeSignerAddress:e.externalWalletAddress,activeSignerWallet:e.externalWallet});e.ui.setTxHash(r??null)}else{e.ui.setStep("building"),e.ui.setStatusMsg("Building transaction..."),e.refs.spiceDepositSubmittedRef.current=!1;const r=new AbortController;e.refs.abortControllerRef.current=r,await Kp(e,r.signal)}e.ui.setStep("success"),e.ui.setStatusMsg(s?"Transaction confirmed":"Deposit confirmed")}catch(r){yr(e,r,!!e.refs.abortControllerRef.current?.signal.aborted)}finally{e.ui.setIsExecuting(!1)}return}if(!e.embeddedWalletAddress){e.ui.setError("Wallet not ready");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setStep("building"),e.ui.setStatusMsg("Building transaction..."),e.ui.setTxHash(null),e.refs.spiceDepositSubmittedRef.current=!1;const n=new AbortController;e.refs.abortControllerRef.current=n;try{const s=Et(I.parseUnits(t.amount,t.asset.decimals),t.asset.decimals,En(e).decimals,"floor"),o=s;let r=await e.execution.buildSupplyChainBatches();const i=t.asset._source==="wallet",l=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(e.buildSpicenetBatch&&!e.isPayMode&&!e.isNon7702&&!i&&!r.some(y=>A.isSpicenetChainId(y.chainId)))throw new Error("Spice-funded supplies must include a Spicenet funding batch before the destination chain batch.");const u=r.some(y=>y.tokenTransfers?.length),c=u?{userOverride:l,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode}:e.feeExecutionMode?{userOverride:l,feeExecutionMode:e.feeExecutionMode}:{userOverride:l};let f=s;const p=e.feeExecutionMode==="user-transfer"&&e.needsSwap&&!e.exactOutputSwap;let m,h=e.feeExecutionMode==="user-transfer"&&!p?o:void 0;for(let y=0;y<4;y+=1){const b=y===0&&e.feeQuote?.feeEstimate||await e.execution.estimate(r,e.executionTokenAddress,u?f:0n,c),w=un(b,En(e));m=e.feeExecutionMode==="user-transfer"&&w?hs(b,e,o):void 0,e.isFeeInclusiveInput&&m&&!p&&(h=m.netAmount);const C=m?.grossAmount??w?.grossAmount??f;if(C===f){f=C;break}f=C,r=await e.execution.buildSupplyChainBatches({fundingAmountOverride:f,actionAmountOverride:h,actionContextOverride:m})}e.feeExecutionMode==="user-transfer"&&(tl(e,f),r=await e.execution.buildSupplyChainBatches({fundingAmountOverride:f,actionAmountOverride:h,actionContextOverride:m}));let x=m;await e.execution.execute(r,e.executionTokenAddress,u?f:0n,e.execution.onProgress,n.signal,e.feeExecutionMode==="user-transfer"?{...c,skipUserFundingPreflight:!0,validateBeforeSubmit:async y=>sl(e,y),adjustBatchesForEstimate:({feeEstimate:y,chainBatches:b})=>{const w=hs(y,e,o);if(!w)return null;const C=ol(x,w),S=gr(b,e,w);return C||S?null:(x=w,e.isFeeInclusiveInput&&!p&&(h=w.netAmount),e.execution.buildSupplyChainBatches({fundingAmountOverride:w.grossAmount,actionAmountOverride:h,actionContextOverride:w}))}}:{...c,skipPreSubmitFeeEstimate:!0}),e.ui.setStep("success"),e.ui.setStatusMsg("Deposit confirmed")}catch(s){yr(e,s,n.signal.aborted)}finally{e.ui.setIsExecuting(!1)}}async function Kp(e,t){if(!e.selectedAsset?.asset)throw new Error("Select a payment source");if(!e.externalWalletAddress)throw new Error("Please connect your external wallet to continue");const n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!n)throw new Error("Embedded wallet not available \u2014 sign in to create one before supplying");const s=e.selectedAsset.asset,o=Gt(s,e.isNon7702);if(o&&!e.externalWallet)throw new Error("Please connect your external wallet to continue");const r=Et(I.parseUnits(e.selectedAsset.amount,s.decimals),s.decimals,En(e).decimals,"floor"),i=r,l=s._source==="wallet"&&s.chainId===e.resolvedChainId;let u=await e.execution.buildSupplyChainBatches();const c={userOverride:n,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode,signAuthorizationsForEstimate:!0};let f=r;const p=e.feeExecutionMode==="user-transfer"&&e.needsSwap&&!e.exactOutputSwap;let m=e.feeExecutionMode==="user-transfer"&&!p?i:void 0,h;if(l){const S=e.feeQuote?.preview.gasFee??(await g.relayerService.estimateBatchGas({user:n,outputToken:e.executionTokenAddress,stepIndex:0,chainBatches:u})).gasFee,k=e.isFeeInclusiveInput&&e.feeExecutionMode==="user-transfer"?Bs(r,S,Dn):null;if(k&&!k.coversFees)throw new Error("Amount too small to cover supply fees");const v=k?.spicenetFee??qn(r,10n),F=v+S;f=k?.grossAmount??r+F,k&&!p&&(m=k.netAmount),e.feeExecutionMode==="user-transfer"&&(h={grossAmount:f,netAmount:k?.netAmount??i,combinedFeeAmount:F,feeExecutionMode:e.feeExecutionMode,feeBreakdown:{spicenetFee:v,gasFee:S,bridgeFee:0n}})}else for(let S=0;S<4;S+=1){const k=await e.execution.estimate(u,e.executionTokenAddress,0n,c),v=e.feeExecutionMode==="user-transfer"?hs(k,e,i):void 0,F=un(k,En(e)),T=v?.grossAmount??(F?F.grossAmount>r?F.grossAmount:r:f);if(h=v,e.isFeeInclusiveInput&&!p&&v&&(m=v.netAmount),T===f){f=T;break}f=T;const B=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId),j=zt(f,e.executionTokenDecimals??B?.decimals??e.destinationToken.decimals,s.decimals);u=await e.execution.buildSupplyChainBatches({fundingAmountOverride:f,sourceFundingAmountOverride:j,withdrawalAmountOverride:f,actionAmountOverride:m,actionContextOverride:v})}const x=A.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId);let y=l?f:zt(f,e.executionTokenDecimals??x?.decimals??e.destinationToken.decimals,s.decimals);tl(e,f),u=await e.execution.buildSupplyChainBatches({fundingAmountOverride:f,sourceFundingAmountOverride:y,withdrawalAmountOverride:f,actionAmountOverride:m,actionContextOverride:h});const b=async S=>{o&&await to(e,S)};o&&(e.ui.setStatusMsg("Funding embedded wallet..."),await b(y));let w=y;if(e.feeExecutionMode==="user-transfer")for(let S=0;S<4;S+=1){const k=await e.execution.estimate(u,e.executionTokenAddress,0n,c),v=hs(k,e,i);if(!v)break;const F=l?v.grossAmount:zt(v.grossAmount,e.executionTokenDecimals??x?.decimals??e.destinationToken.decimals,s.decimals);if(o&&F>w&&(e.ui.setStatusMsg("Topping up embedded wallet..."),await b(F),w=F),h=v,e.isFeeInclusiveInput&&!p&&v&&(m=v.netAmount),f=v.grossAmount,y=F,u=await e.execution.buildSupplyChainBatches({fundingAmountOverride:f,sourceFundingAmountOverride:y,withdrawalAmountOverride:f,actionAmountOverride:m,actionContextOverride:v}),gr(u,e,v))break}e.ui.setStatusMsg("Preparing transaction...");let C=h;await e.execution.execute(u,e.executionTokenAddress,0n,e.execution.onProgress,t,e.feeExecutionMode==="user-transfer"?{...c,skipUserFundingPreflight:!0,validateBeforeSubmit:async S=>sl(e,S),adjustBatchesForEstimate:({feeEstimate:S,chainBatches:k})=>{const v=hs(S,e,i);if(!v)return null;const F=ol(C,v),T=gr(k,e,v);if(F||T)return null;if(v.grossAmount>f)throw new Error("Fee estimate increased after wallet funding. Please retry so the signed fee can match the latest relayer estimate.");C=v,e.isFeeInclusiveInput&&!p&&(m=v.netAmount);const B=l?v.grossAmount:zt(v.grossAmount,e.executionTokenDecimals??x?.decimals??e.destinationToken.decimals,s.decimals);return e.execution.buildSupplyChainBatches({fundingAmountOverride:v.grossAmount,sourceFundingAmountOverride:B,withdrawalAmountOverride:v.grossAmount,actionAmountOverride:m,actionContextOverride:v})}}:{...c,skipPreSubmitFeeEstimate:!0})}async function il(e){const t=e.isPayMode&&e.parsedAmount===0;if(!e.selectedAsset?.asset&&!t)throw new Error("Select a payment source");const n=e.activeSignerWallet??e.externalWallet,s=e.activeSignerAddress??e.externalWalletAddress;if(!s||!n)throw new Error("Please connect your wallet to continue");const o=I.parseUnits(e.isPayMode?e.currentPaymentAmount:e.selectedAsset.amount,e.destinationToken.decimals),r={userAddress:s,executorAddress:s,chainId:e.resolvedChainId,destinationToken:e.destinationToken.address},i=await e.buildActionCalls(o,r);if(i.length===0)throw new Error("No action calls configured");const{extWc:l,viemChain:u}=await Nn({wallet:n,account:s,chainId:e.resolvedChainId}),c=g.getClientForChain(e.resolvedChainId);return Lo({extWc:l,client:c,calls:i,viemChain:u,errorMessage:"Transaction failed"})}async function Yp(e){if(!e.selectedAsset?.asset)throw new Error("Select a payment source");if(!e.externalWalletAddress||!e.externalWallet)throw new Error("Please connect your external wallet to continue");const t=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!t)throw new Error("Embedded wallet not available \u2014 sign in to create one before paying");const n=e.selectedAsset.asset,s=I.parseUnits(e.currentPaymentAmount,e.destinationToken.decimals),o=al(e,s),r=e.resolvedTokenIn||Lt(n,e.resolvedChainId)||n.address,i=rl(e,r).decimals,l=w=>zt(w,i,n.decimals),u={userOverride:t,useCustomTransfers:!0,requireDestinationReceipt:e.feeOnlyAction},c=t,f=async(w,C,S)=>In(await e.execution.buildPayChainBatches({fundingAmountOverride:w}),c,C,S),{grossFundingAmount:p,feeEstimate:m}=await xr(e,{requiredNetFunding:o,buildBatches:w=>f(w),fundingToken:r,executionOptions:{...u,feeExecutionMode:e.feeExecutionMode}});let h=await f(p,e.actionProceeds?void 0:m,{payoutAlreadyGross:!0});const x=Xi(e,r,p);x.prepareForSigning&&(h=await x.prepareForSigning(h)),await to(e,l(p));const y=h.some(w=>w.tokenTransfers?.length),b={...u,...x,skipUserFundingPreflight:!e.actionProceeds,skipPreSubmitFeeEstimate:!0};return await e.execution.execute(h,r,y?p:0n,w=>{w.txHash&&(e.ui.setPaymentResult(C=>({...C??{status:"processing"},txHash:w.txHash})),e.ui.setTxHash(w.txHash))},void 0,y?b:{userOverride:t,skipUserFundingPreflight:!0,skipPreSubmitFeeEstimate:!0})}async function wr(e){if(e.feeOnlyAction&&(e.parsedAmount!==0||!e.selectedAsset&&!e.actionProceeds||e.onPayExecute||!e.feeQuote?.feeEstimate&&!e.feeQuote?.fundingConversion||e.feeQuote.grossFundingAmount===void 0||!e.actionProceeds&&e.feeQuote.grossFundingAmount===0n)){e.ui.setError("Select a fee source and wait for its fee quote before continuing");return}if(e.sourceConversion)return Gi(e,wr,s=>to(e,s));if(e.sourceConversionRequired){e.ui.setError("Wait for the source funding quote before continuing");return}if(e.parsedAmount<0){e.ui.setError("Enter a valid payment amount");return}const t=e.parsedAmount===0;if(!e.selectedAsset?.asset&&!t){e.ui.setError("Select a payment source");return}if(e.isInsufficientBalance&&!e.sourceFunding){e.ui.setError("Insufficient balance");return}if(e.parsedAmount>0&&e.needsSwap&&!e.exactOutputSwap){e.ui.setError("Swap quote not available. Try a different asset.");return}if(e.selectedAsset)try{e={...e,executionTokenDecimals:await Zn(e.selectedAsset.asset,e.destinationToken,e.executionTokenAddress)}}catch(s){br(e,s);return}const n=(e.feeQuote?.grossFundingAmount!==0n||!e.actionProceeds)&&Gt(e.selectedAsset?.asset,e.isNon7702);if(n||e.isNon7702&&t&&!e.feeOnlyAction){const s=n?e.externalWalletAddress:e.activeSignerAddress??e.externalWalletAddress;if(e.isSourceDestToken||t?!s:!e.externalWalletAddress){e.ui.setError("Please connect your wallet to continue");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setShowStatusPanel(!0),e.ui.setPaymentResult({status:"processing"});try{let o;if((e.isSourceDestToken||e.parsedAmount===0)&&!e.feeOnlyAction)o=await il(n?{...e,activeSignerAddress:e.externalWalletAddress,activeSignerWallet:e.externalWallet}:e);else if(e.onPayExecute&&e.selectedAsset?.asset){const r=e.selectedAsset.asset,i=I.parseUnits(e.currentPaymentAmount,e.destinationToken.decimals),l=al(e,i),u=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!u)throw new Error("Embedded wallet not available \u2014 sign in to create one before paying");const c=e.resolvedTokenIn||r.address,{grossFundingAmount:f}=await xr(e,{requiredNetFunding:l,buildBatches:h=>e.execution.buildPayChainBatches({fundingAmountOverride:h}),fundingToken:c,executionOptions:{userOverride:u,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode}}),p=await e.execution.buildPayChainBatches({fundingAmountOverride:f}),m=await e.onPayExecute({asset:r,amount:e.currentPaymentAmount,amountWei:i,destinationToken:e.destinationToken,chainBatches:p,requiredNetFunding:l,grossFundingAmount:f,selectedIsEquivalent:e.selectedIsEquivalent,resolvedTokenIn:c,exactOutputSwapAmountInMax:e.exactOutputSwap?.amountInMax});m&&(e.ui.setTxHash(m),e.ui.setPaymentResult(h=>({...h??{status:"processing"},txHash:m}))),o=m||void 0}else o=await Yp(e);e.ui.setPaymentResult(r=>({status:"success",txHash:r?.txHash||o||""}))}catch(o){br(e,o)}finally{e.ui.setIsExecuting(!1)}return}if(e.isNon7702&&!e.embeddedWalletAddress&&!e.providerEmbeddedAddress){e.ui.setError("Embedded wallet is not ready for this payment source");return}if(!e.isConnected||!e.address){e.ui.setError("Please connect your wallet to continue");return}if(!e.ready||!e.authenticated){e.ui.setError(`Please authenticate with ${e.provider||"wallet provider"} to continue`);return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setShowStatusPanel(!0),e.ui.setPaymentResult({status:"processing"});try{const s=I.parseUnits(e.currentPaymentAmount,e.destinationToken.decimals),o={userOverride:e.embeddedWalletAddress??e.providerEmbeddedAddress??e.address,useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode,requireDestinationReceipt:e.feeOnlyAction};if(t&&!e.feeOnlyAction){const y=await e.execution.buildPayChainBatches(),b=await e.execution.execute(y,e.executionTokenAddress,0n,w=>{w.txHash&&(e.ui.setPaymentResult(C=>({...C??{status:"processing"},txHash:w.txHash})),e.ui.setTxHash(w.txHash))},void 0,o);e.ui.setPaymentResult(w=>({status:"success",txHash:w?.txHash||b}));return}const r=e.selectedAsset?.asset;if(!r&&!e.actionProceeds)throw new Error("Select a payment source");const i=e.feeQuote?.fundingConversion?.tokenIn||e.resolvedTokenIn||r?.address||e.destinationToken.address,l=e.needsSwap?e.exactOutputSwap?.amountInMax??0n:s,u=e.embeddedWalletAddress||e.providerEmbeddedAddress||e.address,{grossFundingAmount:c,feeEstimate:f}=e.feeQuote?.fundingConversion?{grossFundingAmount:e.feeQuote.grossFundingAmount,feeEstimate:void 0}:await xr(e,{requiredNetFunding:l,buildBatches:y=>e.execution.buildPayChainBatches({fundingAmountOverride:y}).then(b=>In(b,u)),fundingToken:i,executionOptions:o}),p=e.feeQuote?.fundingBatches??In(await e.execution.buildPayChainBatches({fundingAmountOverride:c}),u,e.actionProceeds?void 0:f,{payoutAlreadyGross:!0}),m=Xi(e,e.feeQuote?.fundingConversion?.tokenOut??i,c),h=e.feeOnlyAction||p.some(y=>y.tokenTransfers?.length),x=await e.execution.execute(p,i,h?c:0n,y=>{y.txHash&&(e.ui.setPaymentResult(b=>({...b,txHash:y.txHash})),e.ui.setTxHash(y.txHash))},void 0,{...o,...m,skipPreSubmitFeeEstimate:!0});e.ui.setPaymentResult(y=>({status:"success",txHash:y?.txHash||x}))}catch(s){br(e,s)}finally{e.ui.setIsExecuting(!1)}}const Xn="spiceflow:source-funding";function ll(e){return!!e&&I.isAddress(e.address)&&Number.isSafeInteger(e.chainId)&&e.chainId>0&&Number.isInteger(e.decimals)&&e.decimals>=0&&e.decimals<=255&&typeof e.symbol=="string"}function Gp(e){const t=e?.asset;return!!e&&typeof e.amount=="string"&&/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/.test(e.amount)&&ll(t)&&typeof t.name=="string"&&typeof t.isNative=="boolean"&&typeof t.balance=="string"&&/^[0-9]+$/.test(t.balance)&&Number.isFinite(t.balanceFormatted)&&Number.isFinite(t.balanceUsd)&&[void 0,"wallet","spice"].includes(t._source)&&[void 0,"external","embedded"].includes(t._fundingWallet)&&(t.chainTokens===void 0||t.chainTokens&&typeof t.chainTokens=="object"&&!Array.isArray(t.chainTokens)&&Object.entries(t.chainTokens).every(([n,s])=>/^evm:[1-9][0-9]*:(?:0x)?[0-9a-f]{40}$/i.test(n)&&s&&(s.decimals===void 0||Number.isInteger(s.decimals)&&s.decimals>=0&&s.decimals<=255)&&(s.name===void 0||typeof s.name=="string")))}function Zp(e,t){return{feeOnlyAction:e.feeOnlyAction===!0,phase:e.submitted?"routing":"funding",confirmedAmount:e.funding.confirmedAmount,matchesSelection:e.identity===ms(t),matchesPurpose:e.recoveryKey===(t.sourceFundingRecoveryKey??"generic"),requiresRecovery:!!(e.funding.pending&&!e.funding.pending.hash||e.submitted&&!e.route),recoveryKey:e.recoveryKey,selectedAsset:{amount:e.selectedAsset.amount,asset:{...e.selectedAsset.asset,balance:BigInt(e.selectedAsset.asset.balance)}},destinationToken:{...e.destinationToken},paymentAmount:e.paymentAmount,amountDirection:e.amountDirection}}function so(e){const t=localStorage.getItem(e);if(!t)return null;const n=JSON.parse(t),s=typeof n.identity=="string"?JSON.parse(n.identity):null,o=Array.isArray(s)&&(s.length===17||s.length===18&&s[17]===!0)&&s[17]===!0==(n.feeOnlyAction===!0)&&s[2]===n.selectedAsset?.asset.address.toLowerCase()&&s[3]===n.selectedAsset?.asset.chainId&&s[4]===n.selectedAsset?.asset.decimals&&s[5]===(n.selectedAsset?.asset._source??null)&&s[6]===(n.selectedAsset?.asset._fundingWallet??null)&&s[7]===n.selectedAsset?.amount&&s[8]===n.destinationToken?.chainId&&s[9]===n.destinationToken?.address.toLowerCase()&&s[11]===(n.amountDirection==="output")&&s[12]===n.paymentAmount&&s[13]===(n.amountDirection==="input-inclusive")&&s[14]===n.recoveryKey&&s[15]===n.destinationToken?.decimals&&s[16]===n.selectedAsset?.asset.isNative;if(n.version!==2||n.scope!==e||typeof n.identity!="string"||!hr(n.funding)||n.funding.identity!==n.identity||!o||typeof n.submitted!="boolean"||n.feeOnlyAction!==void 0&&n.feeOnlyAction!==!0||typeof n.recoveryKey!="string"||!n.recoveryKey.trim()||n.recoveryKey.length>128||!Gp(n.selectedAsset)||!ll(n.destinationToken)||typeof n.paymentAmount!="string"||!/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/.test(n.paymentAmount)||!["input","input-inclusive","output"].includes(n.amountDirection)||n.route&&(!/^[a-zA-Z0-9_-]+$/.test(n.route.actionId)||!Number.isInteger(n.route.intentIndex)||n.route.intentIndex<0||n.route.intentId!==`${n.route.actionId}/${n.route.intentIndex}`||!Array.isArray(n.route.spicenetSteps)||!n.route.spicenetSteps.length||n.route.spicenetSteps.some(r=>typeof r!="boolean")))throw new Error("Saved source funding is invalid; recover it before starting another operation");return n}function Cr(e,t,n){return!t||t.funding.pending||(t.submitted||t.route)&&!n?!1:(localStorage.setItem(`spiceflow:archivedSourceSupply:${Date.now()}:${crypto.randomUUID()}`,JSON.stringify(t)),localStorage.removeItem(e),window.dispatchEvent(new Event(Xn)),!0)}async function Xp(e){return!e||!navigator.locks?!1:navigator.locks.request(e,{ifAvailable:!0},async t=>{if(!t)return!1;let n=so(e);if(!n)return!1;if(n.submitted||n.route){if(!n.submitted||!n.route||n.funding.pending)return!1;const s=await g.relayerService.checkIntentRecovery(n.route.intentId);return s==="unresolved"?!1:Cr(e,n,s)}if(n.funding.pending){if(!n.funding.pending.hash)return!1;const s=JSON.parse(n.identity)[1];if(!I.isAddress(s))throw new Error("Saved funding recipient is invalid");const o=n.selectedAsset.asset;await eo({identity:n.identity,state:n.funding,reconcileOnly:!0,requiredAmount:0n,recipient:s,tokenAddr:o.address,isNative:o.isNative||A.isNativeToken(o.address),sourceClient:g.getClientForChain(o.chainId),createWallet:async()=>{throw new Error("Reconciliation cannot request funding")},onState:r=>{n.funding=r,localStorage.setItem(e,JSON.stringify(n))}})}return Cr(e,n)})}async function Jp(e){const{scope:t,ctx:n}=e;if(!so(t)&&!Gt(n.selectedAsset?.asset,n.isNon7702)&&!n.sourceConversion&&!n.feeOnlyAction)return e.run(n);if(!navigator.locks)throw new Error("This browser cannot safely track source funding");await navigator.locks.request(t,{ifAvailable:!0},async s=>{if(!s)throw new Error("Another supply is already using these wallets");let o=so(t);const r=ms(n),i=n.sourceFundingRecoveryKey??"generic";if(!i.trim()||i.length>128)throw new Error("Use a stable source funding recovery key");const l=()=>{if(!e.isCurrent())throw new Error("Restore the original source, amount and account before resuming")};if(l(),o&&o.identity!==r)throw new Error("Restore the pending supply's original source, amount and destination before starting another operation");const u=()=>{o?localStorage.setItem(t,JSON.stringify(o)):localStorage.removeItem(t),e.onRecord?.(o&&{...o}),window.dispatchEvent(new Event(Xn))};if(o?.submitted){if(!o.route)throw new Error("A funding route submission is unconfirmed; recover it before retrying to avoid spending twice");const p=o.route;n.ui.setIsExecuting(!0),n.ui.setStatusMsg("Resuming the existing funding route...");try{const m=await Es({...p,totalSteps:p.spicenetSteps.length,isSpicenetStep:h=>p.spicenetSteps[h],maxPolls:180});if(n.feeOnlyAction&&!/^0x[0-9a-f]{64}$/i.test(m??""))throw new Error("The destination receipt is not available yet; resume this route to confirm completion");o=null,u(),e.isCurrent()&&(n.ui.setStep("success"),m&&n.ui.setTxHash(m),n.isPayMode&&n.ui.setPaymentResult({status:"success",txHash:m}))}finally{e.isCurrent()&&n.ui.setIsExecuting(!1)}return}const c=el(n),f=p=>({...n.feeOnlyAction?{feeOnlyAction:!0}:{},version:2,scope:t,identity:r,funding:p,submitted:!1,recoveryKey:i,selectedAsset:{amount:c.amount,asset:{...c.asset,symbol:c.asset.symbol??"",name:c.asset.name??c.asset.symbol??"",balance:(c.asset.balance??0n).toString(),balanceFormatted:c.asset.balanceFormatted??0,balanceUsd:c.asset.balanceUsd??0,isNative:c.asset.isNative??A.isNativeToken(c.asset.address)}},destinationToken:{...n.destinationToken},paymentAmount:n.currentPaymentAmount??"0",amountDirection:n.isPayMode?"output":n.isFeeInclusiveInput?"input-inclusive":"input"});try{await e.run({...n,sourceFunding:o?.funding,onSourceFundingChange:p=>{o=!p.pending&&p.confirmedAmount==="0"?null:f(p),u()},fundingObserver:{onSending:l},execution:{...n.execution,execute:async(p,m,h,x,y,b)=>{l(),!o&&(n.sourceConversion||n.feeOnlyAction)&&(o=f({version:1,identity:r,baseline:"0",confirmedAmount:"0"}),u());const w=await n.execution.execute(p,m,h,C=>{o&&(C.step==="submitting"&&(o.submitted=!0),C.actionId&&C.intentId&&C.intentIndex!==void 0&&(o.submitted=!0,o.route={actionId:C.actionId,intentId:C.intentId,intentIndex:C.intentIndex,spicenetSteps:p.map(S=>S.domain==="spicenet")}),u()),x?.(C)},y,{...b,validateBeforeSubmit:async C=>{l(),await b?.validateBeforeSubmit?.(C),l()}});return o=null,u(),w}}})}finally{e.recovery==="balance"&&Cr(t,o)&&e.onRecord?.(null)}})}function $p(e,t,n,s,o){if(!o.trim()||o.length>128||!I.isAddress(n)||!I.isAddress(s))throw new Error("External action recovery requires valid wallet addresses and a stable recovery key");return`spiceflow:externalSupply:${JSON.stringify([e,t,n.toLowerCase(),s.toLowerCase(),o])}`}function oo(e){const t=localStorage.getItem(e);if(!t)return null;const n=JSON.parse(t),s=o=>!o||Number.isSafeInteger(o.chainId)&&o.chainId>0&&(!o.hash||/^0x[0-9a-f]{64}$/i.test(o.hash));if(n.version!==2||n.scope!==e||!I.isAddress(n.destinationToken)||!Number.isInteger(n.destinationDecimals)||n.destinationDecimals<0||n.destinationDecimals>255||typeof n.sourceKey!="string"||typeof n.routeSubmitted!="boolean"||n.sourceFunding!==void 0&&!hr(n.sourceFunding)||!["funding","routing","action","complete"].includes(n.phase)||!Number.isInteger(n.confirmedCalls)||n.confirmedCalls<0||n.amount!==void 0&&!/^[1-9][0-9]*$/.test(n.amount)||!s(n.pendingCall)||n.calls!==void 0&&(!Array.isArray(n.calls)||n.calls.length===0||n.calls.some(o=>!I.isAddress(o.to)||!/^[0-9]+$/.test(o.value)||!/^0x(?:[0-9a-f]{2})*$/i.test(o.data)))||n.confirmedCalls>(n.calls?.length??0)||n.phase==="complete"&&(n.confirmedCalls!==n.calls?.length||n.pendingCall||n.sourceFunding?.pending)||n.pendingCall&&(n.phase!=="action"||n.confirmedCalls>=(n.calls?.length??0))||["action","complete"].includes(n.phase)&&(!n.amount||!n.calls)||n.route&&(typeof n.route.actionId!="string"||!/^[a-zA-Z0-9_-]+$/.test(n.route.actionId)||n.route.intentId!==`${n.route.actionId}/${n.route.intentIndex}`||!Number.isInteger(n.route.intentIndex)||n.route.intentIndex<0||!Array.isArray(n.route.spicenetSteps)||n.route.spicenetSteps.length===0||n.route.spicenetSteps.some(o=>typeof o!="boolean")))throw new Error("Saved external action is invalid or unsupported; recovery is required before starting another supply");return n}function vr(e){return{destinationToken:e.destinationToken,destinationDecimals:e.destinationDecimals,phase:e.phase,confirmedCalls:e.confirmedCalls,totalCalls:e.calls?.length??0,amount:e.amount,requiresRecovery:!!(e.sourceFunding?.pending&&!e.sourceFunding.pending.hash||e.pendingCall&&!e.pendingCall.hash||e.routeSubmitted&&!e.route&&e.phase==="routing")}}function cl(e,t){return!t||t.routeSubmitted||t.route||t.pendingCall||t.confirmedCalls||t.sourceFunding?.pending||!["funding","routing"].includes(t.phase)?!1:(localStorage.setItem(`spiceflow:archivedSourceSupply:${Date.now()}:${crypto.randomUUID()}`,JSON.stringify(t)),localStorage.removeItem(e),window.dispatchEvent(new Event("spiceflow:source-funding")),!0)}async function _p(e){return navigator.locks?navigator.locks.request(e,{ifAvailable:!0},async t=>{if(!t)return!1;const n=oo(e);if(!n||n.routeSubmitted||n.route||n.pendingCall||n.confirmedCalls||!["funding","routing"].includes(n.phase))return!1;if(n.sourceFunding?.pending){if(!n.sourceFunding.pending.hash)return!1;const s=JSON.parse(n.sourceFunding.identity),o=JSON.parse(e.slice(25));if(!Array.isArray(s)||!g.addressesEqual(s[0],o[2])||!g.addressesEqual(s[1],o[3])||!I.isAddress(s[2])||!Number.isSafeInteger(s[3]))throw new Error("Saved funding identity is invalid");await eo({identity:n.sourceFunding.identity,state:n.sourceFunding,reconcileOnly:!0,recipient:o[3],tokenAddr:s[2],isNative:s[16]===!0||A.isNativeToken(s[2]),sourceClient:g.getClientForChain(s[3]),requiredAmount:0n,createWallet:async()=>{throw new Error("Reconciliation cannot request funding")},onState:r=>{n.sourceFunding=r,localStorage.setItem(e,JSON.stringify(n))}})}return cl(e,n)}):!1}function ef(e){const t=oo(e);if(t&&t.phase!=="complete")throw new Error("Finish the pending external action before starting another supply");localStorage.removeItem(e)}function tf(e,t,n){const s=[],o=(r,i,l)=>{l>0n&&s.push(A.isNativeToken(r)?{to:i,value:l,data:"0x"}:{to:r,value:0n,data:I.encodeFunctionData({abi:I.erc20Abi,functionName:"transfer",args:[i,l]})})};return t.feeExecutionMode==="user-transfer"&&t.feeBreakdown&&(o(t.feeToken??t.destinationToken,A.SPICE_PLATFORM_FEE_RECIPIENT,t.feeBreakdown.spicenetFee),o(t.feeToken??t.destinationToken,A.SPICE_GAS_FEE_RECIPIENT,t.feeBreakdown.gasFee+t.feeBreakdown.bridgeFee)),o(t.destinationToken,n,e),s}const kr=e=>e.map(t=>({to:t.to.toLowerCase(),data:t.data.toLowerCase(),value:t.value.toString()})),dl=e=>JSON.stringify([e.selectedAsset?.asset.address.toLowerCase(),e.selectedAsset?.asset.chainId,e.selectedAsset?.asset.decimals,e.selectedAsset?.asset._source,e.selectedAsset?.asset._fundingWallet,e.selectedAsset?.amount]);async function nf(e){if(!navigator.locks)throw new Error("This browser cannot safely resume external wallet actions");await navigator.locks.request(e.scope,{ifAvailable:!0},async t=>{if(!t)throw new Error("This external action is already running in another tab");const{ctx:n,scope:s,buildActionCalls:o,onRecord:r}=e,i=()=>{if(e.isCurrent?.()===!1)throw new Error("Restore the original account before resuming this action")};i();const l=n.externalWalletAddress,u=n.embeddedWalletAddress??n.providerEmbeddedAddress,c=JSON.parse(s.slice(25));if(!s.startsWith("spiceflow:externalSupply:")||!Array.isArray(c)||c.length!==5||c[1]!==n.resolvedChainId||!g.addressesEqual(c[2],l)||!g.addressesEqual(c[3],u))throw new Error("Restore the pending action's original wallets and network before resuming");if(!l||!u||!n.externalWallet)throw new Error("Connect the external wallet and its Spicenet account");const f=oo(s);if(n.isPayMode||A.isNativeToken(n.destinationToken.address))throw new Error("External action execution currently supports exact-input supplies into ERC20 destination actions");let p=f;const m=y=>o(BigInt(y),{userAddress:l,executorAddress:l,chainId:n.resolvedChainId,destinationToken:n.destinationToken.address}),h=()=>{localStorage.setItem(s,JSON.stringify(p)),r({...p})};if(p){if(!g.addressesEqual(p.destinationToken,n.destinationToken.address)||p.destinationDecimals!==n.destinationToken.decimals)throw new Error("Restore the pending action's destination token before resuming");if(p.calls&&JSON.stringify(kr(await m(p.amount)))!==JSON.stringify(p.calls))throw new Error("The intended action changed; restore its original configuration before resuming");if(vr(p).requiresRecovery)throw new Error("A transaction submission is unconfirmed; recover it before retrying to avoid spending twice");if(p.pendingCall&&p.pendingCall.chainId!==n.resolvedChainId)throw new Error("Saved external action chain is invalid");if(p.phase==="complete"){n.ui.setTxHash(p.lastHash??null),n.ui.setStep("success");return}if(!p.routeSubmitted&&p.phase!=="action"&&p.sourceKey!==dl(n))throw new Error("Restore the pending action's source and amount before resuming")}else{if(!n.selectedAsset||n.parsedAmount<=0)throw new Error("Select an asset and enter an amount");p={version:2,scope:s,destinationToken:n.destinationToken.address,destinationDecimals:n.destinationToken.decimals,sourceKey:dl(n),phase:"funding",confirmedCalls:0,routeSubmitted:!1},h()}const x=async y=>{if(y<=0n)throw new Error("The route did not fund a positive action amount");const b=kr(await m(y.toString()));if(!b.length)throw new Error("No external action calls configured");p.amount=y.toString(),p.calls=b,h()};try{if(p.phase!=="action")if(p.route){n.ui.setStatusMsg("Resuming the existing funding route...");const b=p.route;await Es({...b,totalSteps:b.spicenetSteps.length,isSpicenetStep:w=>b.spicenetSteps[w],maxPolls:180}),p.phase="action",h()}else if(n.selectedAsset&&Gt(n.selectedAsset.asset,n.isNon7702)&&n.isSourceDestToken)await x(I.parseUnits(n.selectedAsset.amount,n.destinationToken.decimals)),p.phase="action",h();else{let b;const w={onSending:async()=>{if(i(),!(await(await n.externalWallet.getEthereumProvider()).request({method:"eth_accounts"})).some(S=>g.addressesEqual(S,l)))throw new Error("Restore the original external wallet before funding");p.phase="funding",h()}},C=async S=>{let k=0n;for(const v of S)if(v.chainId===n.resolvedChainId){for(const F of v.calls)if(g.addressesEqual(F.to,n.destinationToken.address))try{const T=I.decodeFunctionData({abi:I.erc20Abi,data:F.data});T.functionName==="transfer"&&g.addressesEqual(T.args[0],l)&&(k+=T.args[1])}catch{}}await x(k)};if(await no({...n,sourceFunding:p.sourceFunding,onSourceFundingChange:S=>{p.sourceFunding=S,h()},fundingObserver:w,ui:{...n.ui,setIsExecuting:()=>{},setStep:S=>{S!=="success"&&n.ui.setStep(S)},setError:S=>{typeof S=="string"&&S&&(b=S)}},execution:{...n.execution,execute:async(S,k,v,F,T,B)=>{i(),await C(S),p.phase="routing",h();const j=await n.execution.execute(S,k,v,E=>{E.step==="submitting"&&(p.routeSubmitted=!0,h()),E.actionId&&E.intentId&&E.intentIndex!==void 0&&(p.route={actionId:E.actionId,intentId:E.intentId,intentIndex:E.intentIndex,spicenetSteps:S.map(R=>R.domain==="spicenet")},h()),n.execution.onProgress({...E,step:E.step==="success"?"executing":E.step})},T,{...B,adjustBatchesForEstimate:B?.adjustBatchesForEstimate?async E=>{const R=await B.adjustBatchesForEstimate(E);return R&&await C(R),R}:void 0});return p.phase="action",h(),j}}}),b)throw new Error(b);if(vr(p).phase!=="action")throw new Error("Funding route has not completed; resume it before continuing")}const y=await m(p.amount);if(JSON.stringify(kr(y))!==JSON.stringify(p.calls))throw new Error("The intended external action changed during funding");if(p.pendingCall){const b=await Os({client:g.getClientForChain(p.pendingCall.chainId),hash:p.pendingCall.hash,call:y[p.confirmedCalls],onRepriced:S=>{p.pendingCall.hash=S,h()},onCancelled:()=>{delete p.pendingCall,h()}}),w=b.receipt,C=b.hash;if(delete p.pendingCall,w.status==="success"&&(p.confirmedCalls++,p.lastHash=C),h(),w.status!=="success")throw new Error("External action transaction reverted; retry when ready")}if(p.confirmedCalls<y.length){const{extWc:b,viemChain:w}=await Nn({wallet:n.externalWallet,account:l,chainId:n.resolvedChainId}),C=p.confirmedCalls;n.ui.setStatusMsg(`Confirm the remaining ${y.length-C} action transactions in your external wallet`),await Lo({extWc:b,client:g.getClientForChain(n.resolvedChainId),calls:y.slice(C),viemChain:w,errorMessage:"External action transaction reverted",observer:{onSending:async()=>{if(i(),!(await b.getAddresses()).some(S=>g.addressesEqual(S,l)))throw new Error("Restore the original external wallet before resuming");p.pendingCall={chainId:n.resolvedChainId},h()},onSubmitted:(S,k)=>{p.pendingCall.hash=k,h()},onConfirmed:(S,k)=>{p.confirmedCalls=C+S+1,p.lastHash=k,delete p.pendingCall,h()},onRejected:()=>{delete p.pendingCall,h()},onReverted:()=>{delete p.pendingCall,h()}}})}p.phase="complete",h(),n.ui.setTxHash(p.lastHash??null),n.ui.setStep("success"),n.ui.setStatusMsg("External wallet action confirmed")}finally{e.recovery==="balance"&&cl(s,p)&&r(null)}})}function ul(e,t,n){const s=g.addressesEqual(e.address,t),o=e.chainId===n,r=e._source==="wallet";return r&&s&&o?0:r&&o?1:!r&&s?2:!r&&o?3:4}function Jn(e,t){return!t||t.length===0||e.isNative&&t.some(A.isNativeToken)||t.some(n=>g.addressesEqual(n,e.address))?!0:Object.keys(e.chainTokens??{}).some(n=>{const s=Rn(n);return s?t.some(o=>g.addressesEqual(o,s.address)):!1})}function sf(e,t,n){return e._source!=="wallet"?!0:e.chainId===t&&Jn(e,n)}function Sr(e,t,n){let{symbol:s,name:o,logoURI:r}=t;const i=g.addressesEqual(e.address,n.address)&&e.chainId===n.chainId;i&&n.logoURI&&(r=n.logoURI),i&&!e.configToken&&s==="TOKEN"&&(s=n.symbol,o=n.symbol);const l=parseFloat((Number(t.balance)/Math.pow(10,t.decimals)).toFixed(6));return{address:e.address,name:o,symbol:s,decimals:t.decimals,balance:t.balance,balanceFormatted:l,balanceUsd:0,logoURI:r,isNative:A.isNativeToken(e.address),chainId:e.chainId}}function pl(e){const{destinationToken:t,supportedSourceAssets:n,sourceChains:s,enabled:o,includeExternalWalletAssets:r=!1,includeCrossChainEmbeddedAssets:i=!1}=e,l=d.useContext(g.SpiceFlowProviderContext),u=(l?.mode||"7702")!=="7702",c=l?.embeddedWalletAddress,{externalAddress:f,embeddedAddress:p}=g.useProviderWallets(),m=c||p,{assets:h,refreshAssets:x,loading:y,error:b}=wn({address:f,supportedChains:s??[],fetchBalances:bn,enabled:o&&r&&!!f,refreshInterval:15e3}),{assets:w,refetch:C}=ds({address:m,supportedChains:s,enabled:o&&(!u||i)&&!!m,refetchInterval:3e4}),S=d.useMemo(()=>u&&!i?[]:w.filter(z=>Jn(z,n)),[w,n,u,i]),k=u?f:m,v=d.useMemo(()=>i?Array.from(new Set([t.chainId,...s??[]])):[t.chainId],[t.chainId,s,i]),F=o&&(!u||i)&&!!m&&!l?.isWhitelistGateActive,{assets:T,refreshAssets:B,loading:j,error:E}=wn({address:F?m:void 0,supportedChains:v,fetchBalances:bn,enabled:F,refreshInterval:3e4}),R=d.useMemo(()=>{const z=new Set,G=[],Z=W=>{if(!W)return;const q=W.toLowerCase();z.has(q)||(z.add(q),G.push(I.getAddress(W)))};if(Z(t.address),n)for(const W of n)Z(W);return G},[u,t.address,n]),D=d.useMemo(()=>R.map(z=>z.toLowerCase()).sort().join(","),[R]),O=d.useMemo(()=>JSON.stringify([...s||[]].sort()),[s]),[H,U]=d.useState([]),V=d.useRef(0),Y=d.useRef(async()=>{}),N=d.useCallback(async()=>{if(!o||!k||R.length===0){V.current++,U([]);return}const z=++V.current,G=I.getAddress(k),Z=u?s&&s.length>0?s:[t.chainId]:[t.chainId],W=[];for(const de of R){const ae=de.toLowerCase();if(ae===A.ZERO_ADDRESS)continue;if(A.isNativeToken(ae)){const ce=g.addressesEqual(ae,t.address)&&!Z.includes(t.chainId)?[t.chainId,...Z]:Z;for(const ue of ce){const $=g.getChainConfig(ue)?.supportedTokens?.find(ve=>A.isNativeToken(ve.address));$&&W.push({address:de,chainId:ue,configToken:{decimals:$.decimals,symbol:$.symbol,name:$.name,logo:$.logo}})}continue}if(ae===t.address.toLowerCase()){const ce=g.getChainConfig(t.chainId)?.supportedTokens?.find(ue=>g.addressesEqual(ue.address,ae));W.push({address:de,chainId:t.chainId,configToken:ce?{decimals:ce.decimals,symbol:ce.symbol,name:ce.name,logo:ce.logo}:void 0});continue}let ne=!1;for(const ce of Z){const ue=g.getChainConfig(ce)?.supportedTokens?.find($=>g.addressesEqual($.address,ae));if(ue){W.push({address:de,chainId:ce,configToken:{decimals:ue.decimals,symbol:ue.symbol,name:ue.name,logo:ue.logo}}),ne=!0;break}}ne||W.push({address:de,chainId:t.chainId})}const q=new Map;for(const de of W){const ae=q.get(de.chainId)||[];ae.push(de),q.set(de.chainId,ae)}const M=async(de,ae)=>{try{const ne=await _t.readContract(de,{address:ae.address,abi:I.erc20Abi,functionName:"balanceOf",args:[G]}),{decimals:ce,symbol:ue,name:$,logoURI:ve}=await Va(de,ae.address,ae.configToken);return Sr(ae,{decimals:ce,symbol:ue,name:$,logoURI:ve,balance:ne},t)}catch{return null}},se=await Promise.all(Array.from(q.entries()).map(async([de,ae])=>{let ne;try{ne=g.getClientForChain(de)}catch{return[]}const ce=ae.filter(_=>A.isNativeToken(_.address)),ue=ae.filter(_=>!A.isNativeToken(_.address)),$=await Promise.all(ce.map(async _=>{const Q=await ne.getBalance({address:G}).catch(()=>0n),ee=g.getChainConfig(de)?.nativeCurrency;return Sr(_,{decimals:_.configToken?.decimals??ee?.decimals??18,symbol:_.configToken?.symbol??ee?.symbol??"ETH",name:_.configToken?.name??ee?.name??"Ether",logoURI:_.configToken?.logo,balance:Q},t)}));if(ue.length===0)return $;const ve=[],P=[];for(const _ of ue){const Q=ve.length;ve.push({address:_.address,abi:I.erc20Abi,functionName:"balanceOf",args:[G]}),_.configToken||ve.push({address:_.address,abi:I.erc20Abi,functionName:"decimals"},{address:_.address,abi:I.erc20Abi,functionName:"symbol"},{address:_.address,abi:I.erc20Abi,functionName:"name"}),P.push({start:Q,item:_})}let oe=null;try{oe=await ne.multicall({contracts:ve})}catch{oe=null}if(oe){const _=P.map(({start:Q,item:ee})=>{const he=oe[Q],X=he?.status==="success"?he.result:0n;let Se,Je,we,lt;if(ee.configToken)Se=ee.configToken.decimals,Je=ee.configToken.symbol,we=ee.configToken.name,lt=ee.configToken.logo;else{const Pe=oe[Q+1],We=oe[Q+2],$e=oe[Q+3];Se=Pe?.status==="success"?Number(Pe.result):18,Je=We?.status==="success"?We.result:"TOKEN",we=$e?.status==="success"?$e.result:Je}return Sr(ee,{decimals:Se,symbol:Je,name:we,logoURI:lt,balance:X},t)});return[...$,..._]}const fe=await Promise.all(ue.map(_=>M(ne,_)));return[...$,...fe.filter(_=>_!==null)]}));z===V.current&&U(se.flat())},[o,u,k,D,O,t.address,t.chainId,t.symbol,t.logoURI]);d.useEffect(()=>{Y.current=N},[N]),d.useEffect(()=>{if(!o){U([]);return}Y.current();const z=setInterval(()=>{Y.current()},15e3);return()=>clearInterval(z)},[o,u,k,D,O,t.address,t.chainId]);const L=d.useCallback(()=>{N(),B(),r&&x()},[N,r,x,B]);return{displayAssets:d.useMemo(()=>{const z=[],G=new Set,Z=(q,M)=>{const se=`${M}:${q.chainId}:${A.normalizeNativeTokenAddress(q.address).toLowerCase()}`;G.has(se)||(G.add(se),z.push({...q,_source:"wallet",_fundingWallet:M,displayChainName:`${g.getChainName(q.chainId)} \xB7 ${M==="external"?"Wallet":"Embedded wallet"}`}))};for(const q of H)q.balance>0n&&Z(q,g.addressesEqual(k,m)?"embedded":"external");for(const q of T)q.balance>0n&&Jn(q,n)&&Z(q,"embedded");if(r)for(const q of h)q.balance>0n&&Jn(q,n)&&Z(q,"external");for(const q of S)z.push({...q,_source:"spice"});const W=t.address.toLowerCase();return z.sort((q,M)=>ul(q,W,t.chainId)-ul(M,W,t.chainId)),z},[H,k,m,T,h,S,r,u,n,t.address,t.chainId]),loading:y||j,error:b||E,filteredSpiceAssets:S,walletAssets:H,embeddedWalletAddress:m,externalAddress:f,isNon7702:u,refreshSpiceAssets:C,refreshWalletAssets:L}}function of(e,t){const n=Ha({sourceAsset:e,outputAsset:t,sourceChainId:e.chainId,destinationChainId:t.chainId});if(n.strategy==="direct"||n.strategy==="direct-swap")return null;let s=n.strategy==="source-swap"?t:n.intermediaryAsset;if(!s)throw new Error("No bridge token exists for this route");if(A.isNativeToken(s.address)){const r=Us(s.chainId),i=r&&A.getTokenByAddress(r,s.chainId);if(!i)throw new Error("No registered wrapped bridge token exists for native output");s={address:i.address,symbol:i.symbol,decimals:i.decimals,chainId:s.chainId}}const o=pn(s.address,e.chainId,t.chainId);if(!o)throw new Error("No source-chain equivalent exists for the bridge token");return{source:e,bridgeSource:o,bridgeDestination:s}}function fl(e,t){if(e.sourceAmountIn<=0n||e.sourceAmountInMax<e.sourceAmountIn||e.bridgeSourceMinimum<=0n||e.bridgeDestinationMinimum<=0n||e.sourceCalls.length===0)throw new Error("Invalid source funding quote");return{...e,quoteKey:JSON.stringify(e,(n,s)=>typeof s=="bigint"?s.toString():s),expiresAt:t+3e4}}async function rf(e){if(e.sourceAmountIn<=0n)throw new Error("Enter a positive source amount");const{plan:t}=e,n=await e.registry.resolveSwap({type:"swap",tokenIn:t.source.address,tokenOut:t.bridgeSource.address,amountIn:e.sourceAmountIn,maxSlippage:e.maxSlippage},t.source.chainId,e.executorAddress);if(!n||n.amountOutMinimum>n.amountOut)throw new Error("No valid source-chain swap quote");return fl({plan:t,executorAddress:e.executorAddress,direction:"input",sourceAmountIn:e.sourceAmountIn,sourceAmountInMax:e.sourceAmountIn,bridgeSourceMinimum:n.amountOutMinimum,bridgeDestinationMinimum:Et(n.amountOutMinimum,t.bridgeSource.decimals,t.bridgeDestination.decimals,"floor"),sourceCalls:n.calls},e.nowMs??Date.now())}async function af(e){if(e.bridgeDestinationAmount<=0n)throw new Error("Enter a positive bridge amount");const{plan:t}=e,n=e.nowMs??Date.now(),s=Et(e.bridgeDestinationAmount,t.bridgeDestination.decimals,t.bridgeSource.decimals,"ceil"),o=await e.registry.getQuote({tokenIn:t.source.address,tokenOut:t.bridgeSource.address,amountOut:s,maxSlippage:e.maxSlippage},t.source.chainId,e.executorAddress);if(o.amountOut!==s)throw new Error("Source quote does not match the required bridge output");return fl({plan:t,executorAddress:e.executorAddress,direction:"output",sourceAmountIn:o.amountIn,sourceAmountInMax:o.amountInMax,bridgeSourceMinimum:s,bridgeDestinationMinimum:Et(s,t.bridgeSource.decimals,t.bridgeDestination.decimals,"floor"),sourceCalls:o.calls},n)}async function ml(e,t){const n=()=>{if(e.expiresAt<=(t?.nowMs??Date.now()))throw new Error("Source funding quote expired; request a fresh quote")};n();const s=e.plan.bridgeSource;if(A.isNativeToken(s.address))throw new Error("Source conversion requires a wrapped ERC20 bridge token");const o=await Do({chainBatches:[{chainId:s.chainId,calls:e.sourceCalls}],user:e.executorAddress,token:s.address,grossAmount:e.bridgeSourceMinimum,chainAuthorizations:t?.chainAuthorizations});n();const r=Et(o.netEscrowAmount,s.decimals,e.plan.bridgeDestination.decimals,"floor");if(r<=0n)throw new Error("Source output after fees is below the destination token's precision");return{quote:e,chainBatches:o.chainBatches,sourceGasFee:o.gasFee,sourceSpicenetFee:o.spicenetFee,bridgeSourceNet:o.netEscrowAmount,bridgeDestinationNet:r,outputCredit:o.outputCredit,quoteKey:`${e.quoteKey}:${o.gasFee}:${o.spicenetFee}:${o.netEscrowAmount}`,expiresAt:e.expiresAt}}async function lf(e){let t=e.bridgeDestinationAmount;for(let n=0;n<5;n++){const s=await af({...e,bridgeDestinationAmount:t});let o;try{o=await ml(s,{nowMs:e.nowMs,chainAuthorizations:e.chainAuthorizations})}catch(r){if(!(r instanceof g.SpiceflowError)||r.code!=="INVALID_PARAMS"||r.message!=="Borrow amount is too small after gas and Spicenet fees.")throw r;const{grossAmount:i,gasFee:l,spicenetFee:u}=r.context;if(![i,l,u].every(h=>typeof h=="string"&&/^(0|[1-9][0-9]*)$/.test(h)))throw r;const c=BigInt(i),f=BigInt(l)+BigInt(u);if(c!==s.bridgeSourceMinimum||f<c)throw r;const p=Et(e.bridgeDestinationAmount,e.plan.bridgeDestination.decimals,e.plan.bridgeSource.decimals,"ceil"),m=Et(p+f,e.plan.bridgeSource.decimals,e.plan.bridgeDestination.decimals,"ceil");if(m<=t)throw r;t=m;continue}if(o.bridgeDestinationNet>=e.bridgeDestinationAmount)return o;t+=e.bridgeDestinationAmount-o.bridgeDestinationNet}throw new Error("Source funding fees did not converge; request a fresh quote")}function cf(e){const t=d.useContext(g.SpiceFlowProviderContext),n=e.selectedAsset?.asset,s=!!n&&n._source==="wallet"&&n.chainId!==e.destinationToken.chainId&&!Lt(n,e.destinationToken.chainId),o=d.useMemo(()=>{if(!s||!n)return{plan:null,error:null};try{if(e.direction==="input")throw new Error("Source-chain conversion requires input-inclusive or exact-output mode");const w=S=>({name:S.symbol,equivalenceGroup:"",logo:"",swapContracts:[],network:"mainnet",...A.getTokenByAddress(S.address,S.chainId),...S}),C=of(w(n),w(e.destinationToken));if(!C)throw new Error("No source-chain conversion route is available");return{plan:C,error:null}}catch(w){return{plan:null,error:w instanceof Error?w.message:"Source route unavailable"}}},[s,n?.address,n?.chainId,n?.decimals,e.destinationToken,e.direction]),r=d.useMemo(()=>{const w=Yn(t?.liquidityVenues);return{input:sr({executorAddress:e.executorAddress,aerodrome:!1,oneInch:t?.liquidityVenues?.includeDefaults===!1?{chainIds:[]}:void 0,customVenues:w.input}),output:Ks({executorAddress:e.executorAddress,customVenues:w.output})}},[t?.liquidityVenues,e.executorAddress]),i=JSON.stringify([t?.network,t?.liquidityVenues,s,n?.address,n?.chainId,n?.decimals,n?._source,n?._fundingWallet,e.direction==="output"?"output":e.selectedAsset?.amount,e.destinationToken.address,e.destinationToken.chainId,e.destinationToken.decimals,e.executorAddress,e.direction,e.maxSlippage]),l=d.useRef({key:i,plans:new Map,pending:new Map,latestOutput:void 0});l.current.key!==i&&(l.current={key:i,plans:new Map,pending:new Map,latestOutput:void 0});const u=l.current,[c,f]=d.useState(0),[p,m]=d.useState(null),h=d.useCallback(async(w,C=!1)=>{if(!e.enabled||!o.plan||!e.executorAddress)throw new Error("Source funding route is not ready");const S=e.direction==="output"?String(w??0n):"input";e.direction==="output"&&w&&w>0n&&(u.latestOutput=w);const k=u.plans.get(S);if(!C&&k&&k.expiresAt>Date.now()){if(w&&k.bridgeDestinationNet<w)throw new Error("The source budget cannot cover destination funding; refresh the quote");return k}const v=u.pending.get(S);if(v)return v;const F=(async()=>{try{const T=e.direction==="output"?await lf({plan:o.plan,executorAddress:e.executorAddress,bridgeDestinationAmount:w??0n,registry:r.output,maxSlippage:e.maxSlippage}):await ml(await rf({plan:o.plan,executorAddress:e.executorAddress,sourceAmountIn:I.parseUnits(e.selectedAsset.amount,n.decimals),registry:r.input,maxSlippage:e.maxSlippage}));if(l.current!==u)throw new Error("Source quote changed before funding completed");return u.plans.set(S,T),m(null),f(B=>B+1),T}catch(T){throw l.current===u&&m({key:i,message:T instanceof Error?T.message:"Unable to quote source funding"}),T}finally{u.pending.delete(S)}})();return u.pending.set(S,F),F},[e.enabled,o.plan,e.executorAddress,e.direction,e.selectedAsset?.amount,e.maxSlippage,r,u]);d.useEffect(()=>{if(!s||!e.enabled||!o.plan)return;const w=()=>{const S=e.direction==="output"?e.outputAmount??u.latestOutput:void 0;if(e.direction==="output"&&S===void 0)return;const k=e.direction==="output"?String(S):"input",v=u.plans.get(k);h(S,!!v&&v.expiresAt-Date.now()<=(e.direction==="input-inclusive"?2e4:1e4)).catch(()=>{})};w();const C=setInterval(w,5e3);return()=>clearInterval(C)},[s,e.enabled,e.direction,e.outputAmount,o.plan,h]),d.useEffect(()=>{if(!e.enabled)return;const w=e.direction==="output"?String(e.outputAmount??u.latestOutput??0n):"input",C=u.plans.get(w)?.expiresAt;if(!C||C<=Date.now())return;const S=setTimeout(()=>f(k=>k+1),C-Date.now());return()=>clearTimeout(S)},[e.enabled,e.direction,e.outputAmount,u,c]);const x=w=>{const C=u.plans.get(e.direction==="output"?String(w??0n):"input");return C&&C.expiresAt>Date.now()?C:null},y=u.plans.get("input")??null,b=d.useMemo(()=>{if(!o.plan||e.direction!=="output"&&!y)return null;const w=o.plan.bridgeDestination;return{amount:y?I.formatUnits(y.bridgeDestinationNet,w.decimals):"1",asset:{address:w.address,chainId:w.chainId,decimals:w.decimals,symbol:w.symbol,name:w.symbol,isNative:A.isNativeToken(w.address),_source:"spice",balance:y?.bridgeDestinationNet??0n,balanceFormatted:0,balanceUsd:0}}},[o.plan,e.direction,y?.quoteKey]);return{required:s,plan:o.plan,key:i,virtualSelectedAsset:b,prepare:h,getPrepared:x,error:o.error??(p?.key===i?p.message:null),isCurrent:()=>l.current===u}}function hl(e){const{enabled:t,actionExecution:n,destinationToken:s,selectedAsset:o,paymentAmount:r="0",amountDirection:i="input",sourceChains:l,supportedSourceAssets:u,includeExternalWalletAssets:c=!1,includeCrossChainEmbeddedAssets:f=!1,sourceFundingRecoveryKey:p="generic",sourceFundingRecovery:m="resume",feeOnlyAction:h=!1,actionProceeds:x,buildActionCalls:y,feeExecutionMode:b=e.feeOnlyAction?"backend-transfer":"user-transfer",buildSpicenetBatch:w,onPayExecute:C,recipient:S,maxSlippage:k,resolveInputSwap:v,resolveExactOutputSwap:F,prependSourceEscrow:T=!1,isZeroAmountPay:B=!1,onSuccess:j,onError:E}=e,R=i==="output",D=x&&(!h||A.isNativeToken(s.address))?"Action proceeds require a fee-only ERC20 action":h&&(!R||Number(r)!==0||n||C||T)?"Fee-only actions require zero-output mode and SDK-managed embedded execution":null,O=d.useRef(D);O.current=D;const H=i==="input-inclusive",U=R?"output":"input",V=s.chainId,Y=d.useRef(t);Y.current=t;const N=d.useContext(g.SpiceFlowProviderContext),L=(N?.mode||"7702")!=="7702",z=!!N?.isWhitelistGateActive,G=!!N?.isWhitelistConfigured&&N?.isUserWhitelisted!==!0,{address:Z,isConnected:W,isReady:q,isAuthenticated:M,provider:se}=g.useWallet(),{execute:de,estimate:ae}=Hn(),{externalWallet:ne,embeddedAddress:ce,activeWallet:ue,activeAddress:$}=g.useProviderWallets(),ve=N?.externalWalletAddress,P=N?.embeddedWalletAddress||ce,oe=d.useRef({resolve:x?.resolve,token:x?.token,owner:P,buildActionCalls:y,resolver:F,revision:0});(oe.current.owner!==P||oe.current.resolve!==x?.resolve||oe.current.token!==x?.token||oe.current.buildActionCalls!==y||oe.current.resolver!==F)&&(oe.current={resolve:x?.resolve,token:x?.token,owner:P,buildActionCalls:y,resolver:F,revision:oe.current.revision+1});const fe=oe.current.revision,_=JSON.stringify([fe,s.address,s.chainId,s.decimals,r,i,S,h,b,o?.asset.decimals,o?.asset.address,o?.asset.chainId,o?.asset.receiptTokenId,o?.asset._source,o?.asset._fundingWallet,o?.asset.chainTokens,k,N?.liquidityVenues]),Q=d.useRef(_);Q.current=_;const ee=d.useMemo(()=>l??N?.supportedChainIds??[],[l,N?.supportedChainIds]),he=d.useMemo(()=>{if(z)return[];if(u)return u;const K=N?.allowedTokens;if(!K||K.length===0)return;const pe=new Set(K.map(It=>It.toLowerCase())),ze=[],Fe=new Set;for(const It of ee){const Jt=g.getChainConfig(It);for(const Tn of Jt?.supportedTokens??[]){if(!pe.has(Tn.symbol.toLowerCase()))continue;const Nr=Tn.address.toLowerCase();Fe.has(Nr)||(Fe.add(Nr),ze.push(Tn.address))}}return ze},[u,N?.allowedTokens,ee,z]),X=pl({destinationToken:s,supportedSourceAssets:he,sourceChains:ee,includeExternalWalletAssets:c,includeCrossChainEmbeddedAssets:f,enabled:t&&(L?!!ve:!!P)}),{displayAssets:Se,filteredSpiceAssets:Je,embeddedWalletAddress:we}=X,lt=d.useMemo(()=>z||R||L?Se:Se.filter(K=>c&&K._fundingWallet==="external"||f&&K._fundingWallet==="embedded"&&Jn(K,he)||sf(K,V,he)),[Se,z,R,L,c,f,V,he]),[Pe,We]=d.useState(!1),[$e,Ae]=d.useState(null),[tt,Ye]=d.useState("idle"),[ct,nt]=d.useState(""),[ut,De]=d.useState(null),[yt,dt]=d.useState(!1),[Be,Ge]=d.useState(null),[Oe,ge]=d.useState(null),ye=Oe,[Ne,ie]=d.useState(!1),[Ue,Me]=d.useState(!1),[rt,_e]=d.useState(null),[Ot,je]=d.useState(null),at=d.useRef(E);at.current=E;const Ze=d.useCallback(K=>{Ae(K),typeof K=="string"&&K&&at.current?.(new Error(K),g.getRelayerErrorDetail(K))},[]),Ce=d.useRef(o);Ce.current=o;const be=d.useRef(!1),et=d.useRef(null),mt=d.useRef(null),bt=d.useRef(null),ke=d.useRef(null),pt=d.useRef(null),it=d.useRef(null),Xe=d.useRef(null),[,He]=d.useState(0),ht=d.useMemo(()=>{if(!n)return{scope:null,error:null};if(R||T||A.isNativeToken(s.address))return{scope:null,error:"External action execution requires an ERC20 input supply with SDK-managed funding"};const K=we??ce;if(!ve||!K)return{scope:null,error:null};try{return{scope:$p(N?.network??"testnet",V,ve,K,n.recoveryKey),error:null}}catch(pe){return{scope:null,error:g.sanitizeError(pe,"External action recovery is unavailable")}}},[n?.recoveryKey,!!n,R,T,s.address,we,ce,ve,N?.network,V]),Te=ht.scope,[Ft,Tt]=d.useState({scope:null,record:null,error:null});d.useEffect(()=>{const K=()=>{try{Tt({scope:Te,record:Te?oo(Te):null,error:null})}catch(Fe){Tt({scope:Te,record:null,error:g.sanitizeError(Fe,"Saved action needs recovery")})}},pe=()=>{K(),m==="balance"&&Te&&_p(Te).then(Fe=>{Fe&&(K(),X.refreshWalletAssets(),X.refreshSpiceAssets())}).catch(Fe=>console.warn("[useSpiceSupply] external funding reconciliation pending",Fe))};pe(),Ye("idle"),nt(""),De(null),Ae(null),window.addEventListener("storage",pe),window.addEventListener(Xn,pe);const ze=m==="balance"?setInterval(pe,15e3):void 0;return()=>{clearInterval(ze),window.removeEventListener("storage",pe),window.removeEventListener(Xn,pe)}},[Te,m]);const Pt=Ft.scope===Te,Bt=Pt?Ft.record:null,vt=Bt?vr(Bt):null,ft=ht.error??(Pt?Ft.error:null),st=d.useRef({actionExecution:n,scope:Te,error:ft,buildActionCalls:y});st.current={actionExecution:n,scope:Te,error:ft,buildActionCalls:y};const Wt=d.useCallback((K,pe)=>{if(!n)return y(K,pe);if(!ve)throw new Error("Connect the external wallet before supplying");return tf(K,pe,ve)},[!!n,y,ve]),Qt=d.useCallback(()=>{ke.current=null,Ze(null),_e(null),Me(!1)},[Ze]),tn=o?`${o.asset.address}:${o.asset.chainId}:${o.asset._source}:${o.asset._fundingWallet}:${o.amount}`:"";d.useEffect(()=>{Qt()},[tn,r,Qt]);const kt=(n?void 0:S)??we??ce??Z,Ie=cf({enabled:t&&!Pe,selectedAsset:o,destinationToken:s,executorAddress:we??ce,direction:i,outputAmount:R?Oe?.grossAmount:void 0,maxSlippage:k}),jt=d.useMemo(()=>({}),[_,tn,Ie.key,kt,v,F,w,$,ve]),re=d.useRef(jt);re.current=jt;const le=Ie.getPrepared(R?Oe?.grossAmount:void 0),xe=d.useRef(null),Ve=H&&Ie.required;(!Ve||xe.current?.scope!==jt)&&(xe.current=null),Ve&&(!xe.current||xe.current.plan.expiresAt<=Date.now()||it.current?.sourcePlan===xe.current.plan)&&(xe.current=le&&Ie.virtualSelectedAsset?{scope:jt,plan:le,selection:Ie.virtualSelectedAsset}:null);const Le=Ve?xe.current?.plan??null:le,xt=Ve&&Le&&Le.expiresAt>Date.now()?null:Ie.error,Qe=Ve?xe.current?.selection??null:Ie.required?Ie.virtualSelectedAsset:o,Rt=d.useRef(new Map),ot=Ys({direction:U,selectedAsset:h?null:Qe,destinationToken:s,chainId:V,recipient:kt,executorAddress:we??ce,fixedInputToken:Ie.plan?.bridgeDestination.address,paymentAmount:r,maxSlippage:k,resolveInputSwap:v,resolveExactOutputSwap:F}),Kt=d.useMemo(()=>{if(H&&Ie.required&&Qe&&(!Oe||Oe.grossAmount!==Et(I.parseUnits(Qe.amount,Qe.asset.decimals),Qe.asset.decimals,Oe.decimals,"floor")))return null;if(!H||!Qe||!Oe)return Qe;if(Oe.netAmount<=0n)return null;const K=Et(Oe.netAmount,Oe.decimals,Qe.asset.decimals,"floor");return{...Qe,amount:I.formatUnits(K,Qe.asset.decimals)}},[H,Ie.required,Qe,Oe]),te=Ys({direction:U,selectedAsset:h?null:Kt,destinationToken:s,chainId:V,recipient:kt,executorAddress:we??ce,fixedInputToken:Ie.plan?.bridgeDestination.address,paymentAmount:r,maxSlippage:k,resolveInputSwap:v,resolveExactOutputSwap:F}),Re=H?te:ot,At=Ie.plan?.bridgeDestination.address??(Qe?Qe.asset._source==="spice"?Ki(Qe.asset,V,s.address):Lt(Qe.asset,V):null),Ke=h?{...Re,needsSwap:!1,isDirect:!0,selectedIsEquivalent:!0,isQuoting:!1,resolvedTokenIn:At,exactOutputSwap:null,resolvedSwap:null}:Re,{isQuoting:St,resolvedSwap:Zt,exactOutputSwap:qt,resolvedTokenIn:Ht,isDirect:nn,needsSwap:Ut,selectedIsEquivalent:rn}=Ke,an=St||H&&ot.isQuoting||Ie.required&&!Qe;d.useEffect(()=>{Ie.required&&R&&Oe?.grossAmount&&t&&!Pe&&Ie.prepare(Oe.grossAmount).catch(()=>{})},[Ie.key,Ie.prepare,R,Oe?.grossAmount,t,Pe]);const Mn=Ie.required?Le?.quote.sourceAmountInMax??null:o&&Oe?zt(Oe.grossAmount,Oe.decimals,o.asset.decimals):null,wt=H?ot:Ke,Mt=R?parseFloat(r||"0"):parseFloat(o?.amount||"")||0,Fn=o?.asset?._source==="wallet",ro=!!o?.asset&&Fn&&o.asset.chainId!==V,J=d.useMemo(()=>o?.asset?Je.find(K=>g.addressesEqual(K.address,o.asset.address))?.balanceFormatted??0:0,[o,Je]),me=Fn?o?.asset.balanceFormatted??0:J,qe=d.useMemo(()=>{if(!o?.asset)return!1;if(Ie.required)return Mn!==null&&Mn>o.asset.balance;if(R)return ye?zt(ye.grossAmount,ye.decimals,o.asset.decimals)>o.asset.balance:rn||nn?Mt>o.asset.balanceFormatted:qt?parseFloat(I.formatUnits(qt.amountInMax,o.asset.decimals))>o.asset.balanceFormatted:!1;if(ye){const K=zt(ye.grossAmount,ye.decimals,o.asset.decimals);return Fn?K>o.asset.balance:parseFloat(I.formatUnits(K,o.asset.decimals))>me}return Mt>me},[o,Ie.required,Mn,R,ye,rn,Mt,qt,me,Fn,nn]),Ee=H&&!!ye&&ye.netAmount===0n,gt=d.useMemo(()=>o?.asset?g.addressesEqual(o.asset.address,s.address)&&o.asset.chainId===s.chainId:!1,[o,s.address,s.chainId]),Ct=!h&&gt&&o?.asset._source==="wallet"&&Gt(o.asset,L)&&(R||L||!!n),Dt=Ct&&Mt>0&&!!o?.asset,mn=G&&!Ct,hn=d.useMemo(()=>Ie.plan?Ie.plan.bridgeDestination.address:o?.asset?Ut&&Ht?Ht:o.asset.chainId===V?o.asset.address:Ht??Lt(o.asset,V)??s.address:s.address,[o,Ie.plan,s.address,Ut,V,Ht]),Pn=d.useCallback((K,pe)=>({currentPaymentAmount:r,destinationToken:s,embeddedWalletAddress:we,providerEmbeddedAddress:ce,externalWalletAddress:ve,address:Z,recipient:S,swapOutputRecipient:kt,isNon7702:L,isPayMode:R,isFeeInclusiveInput:H,swapInputAmount:pe.inputAmount,feeOnlyAction:h,resolvedChainId:V,buildActionCalls:Wt,feeExecutionMode:b,buildSpicenetBatch:w,selectedAsset:K&&T?{...K,asset:{...K.asset,_source:"spice",_fundingWallet:void 0}}:K,needsSwap:pe.needsSwap,resolvedSwap:pe.resolvedSwap,exactOutputSwap:pe.exactOutputSwap,quoteAmountOut:pe.quoteAmountOut,resolvedTokenIn:pe.resolvedTokenIn}),[r,s,we,ce,ve,Z,S,kt,L,R,H,h,V,Wt,b,w,T]),sn=d.useMemo(()=>Pn(Qe,Ke),[Pn,Qe,Ke.needsSwap,Ke.resolvedSwap,Ke.exactOutputSwap,Ke.quoteAmountOut,Ke.resolvedTokenIn,Ke.inputAmount]),gs=d.useMemo(()=>H?Pn(Qe,ot):sn,[H,sn,Pn,Qe,ot.needsSwap,ot.resolvedSwap,ot.exactOutputSwap,ot.quoteAmountOut,ot.resolvedTokenIn,ot.inputAmount]),xs=d.useCallback(async(K,pe)=>{if(!Ie.required||!K.length)return K;const ze=H&&Le?Le:await Ie.prepare(pe);if(!Ie.isCurrent()||ze.expiresAt<=Date.now())throw new Error("Source funding quote expired or changed; refresh before retrying");if(ze.bridgeDestinationNet<pe)throw new Error("Source funding no longer covers the quoted destination amount");for(const[Fe,It]of Rt.current)It.expiresAt<=Date.now()&&Rt.current.delete(Fe);return Rt.current.set(_s(ze.chainBatches[0]),ze),[...ze.chainBatches,...K]},[Ie.required,Ie.prepare,H,Le]),ao=d.useCallback(async K=>{const pe=await Hi({...sn,requestTimestampMs:mt.current??Date.now()},K),ze=K?.fundingAmountOverride??sn.exactOutputSwap?.amountInMax??I.parseUnits(r||"0",s.decimals);return xs(pe,ze)},[sn,xs,r,s.decimals]),ys=d.useCallback(async(K,pe)=>{const ze={...K,requestTimestampMs:mt.current??Date.now()},Fe=await Vi(ze,pe);if(Ie.required){const Tn=pe?.fundingAmountOverride??I.parseUnits(K.selectedAsset?.amount||"0",K.selectedAsset?.asset.decimals??18);return xs(Fe,Tn)}if(!T||!o||Fe.length===0)return Fe;const It=R?ze.currentPaymentAmount:o.amount;let Jt=pe?.fundingAmountOverride;if(Jt===void 0)try{Jt=I.parseUnits(It||"0",o.asset.decimals)}catch{return Fe}return Jt<=0n?Fe:[Xs(o.asset.address,Jt,o.asset.chainId),...Fe]},[T,o,R,Ie.required,xs]),io=d.useCallback(K=>ys(sn,K),[ys,sn]),Ar=d.useCallback(K=>ys(gs,K),[ys,gs]),Ir=d.useCallback(K=>mr({signal:K,liquidityVenues:N?.liquidityVenues,maxSlippage:k,resolveExactOutputSwap:F,selectedAsset:gs.selectedAsset,isPayMode:R,isFeeInclusiveInput:H,feeOnlyAction:h,actionProceeds:x,parsedAmount:Mt,needsSwap:wt.needsSwap,exactOutputSwap:wt.exactOutputSwap,isNon7702:L,isSourceDestToken:gt,currentPaymentAmount:r,destinationToken:s,feeExecutionMode:b,resolvedTokenIn:wt.resolvedTokenIn,embeddedWalletAddress:we,providerEmbeddedAddress:ce,resolvedChainId:V,isConnected:W,address:Z,ready:q,authenticated:M,isDirect:wt.isDirect,resolvedSwap:wt.resolvedSwap,isQuoting:wt.isQuoting,executionTokenAddress:hn,buildPayChainBatches:ao,buildSupplyChainBatches:Ar,estimate:ae}),[gs,N?.liquidityVenues,k,F,R,H,h,x,Mt,wt,L,gt,r,s,b,we,ce,ao,ae,V,W,Z,q,M,Ar,hn]);d.useEffect(()=>{bt.current=Ir},[Ir]);const Er=d.useMemo(()=>{if(!Dt)return null;let K;try{K=I.parseUnits(r||"0",s.decimals)}catch{return null}return{symbol:s.symbol,decimals:s.decimals,grossAmount:K,netAmount:K,totalFee:0n,gasFee:0n,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"static_zero"}},[Dt,r,s.symbol,s.decimals]),gn=(!!o?.asset||!!x)&&(Mt>0||h),Xt=d.useMemo(()=>!t||Pe||tt!=="idle"||!gn||Dt||!o?.asset&&!x?null:[R?"pay":"supply",i,h?"fee-only":"supply",o?.asset.address.toLowerCase()??"proceeds",o?.asset.chainId,o?.asset._source,o?.asset.receiptTokenId,o?.asset.decimals,o?.asset._fundingWallet,o?.amount,h?fe:"",h?o?.asset.balance.toString():"",h?JSON.stringify(o?.asset.chainTokens??{}):"",h?JSON.stringify(N?.liquidityVenues??{}):"",h?k:"",Ie.key,Qe?.amount??"",r,s.address.toLowerCase(),s.chainId,s.decimals,V,wt.resolvedTokenIn?.toLowerCase()??"",wt.needsSwap?"swap":"direct",wt.isDirect?"direct-token":"routed-token",L?"non7702":"7702",gt?"source-dest":"cross-chain",wt.isQuoting?"quoting":"quoted",wt.exactOutputSwap?.amountIn?.toString()??"",wt.exactOutputSwap?.amountInMax?.toString()??"",wt.exactOutputSwap?.venue??"",wt.resolvedSwap?.amountOut?.toString()??"",wt.quoteAmountOut?.toString()??"",we??"",ce??"",Z??"",kt??""].join("|"),[t,Pe,tt,gn,x,fe,N?.liquidityVenues,k,Dt,o,o?.asset.balance,Ie.key,Qe?.amount,R,i,h,r,s,V,wt,L,gt,we,ce,Z,kt]),Wn=!!Xt&&ke.current?.key===Xt,bs=Ot?.key===Xt?Ot:null,gl=bs?bs.requiredAmount:h&&!Wn?null:ke.current?.quote.fundingConversion?.sourceAmountMax??Mn,ws=!!bs||(!h||Wn)&&(ke.current?.quote.fundingConversion&&o?ke.current.quote.fundingConversion.sourceAmountMax>o.asset.balance:qe);as({shouldRun:t&&!Pe&&tt==="idle"&&gn&&!Dt&&!wt.isQuoting&&!!Xt,deps:[t,Pe,tt,gn,Dt,Er,wt.isQuoting,Xt],onSkip:()=>{if(je(null),!t){ke.current=null,ie(!1),Me(!1),_e(null),ge(null);return}if(Pe||tt!=="idle"){ie(!1);return}if(!gn){ke.current=null,ge(null),ie(!1),Me(!1),_e(null);return}if(Dt){ge(Er),ie(!1),Me(!0),_e(null);return}wt.isQuoting&&(ie(!1),Me(!1))},onCleanup:()=>{ie(!1),je(null)},delayMs:500,backgroundIntervalMs:H&&Ie.required?void 0:5e3,run:async({isBackground:K,isCurrent:pe,signal:ze})=>{const Fe=Xt;je(null),K||(_e(null),ie(!0));try{const It=await bt.current?.(ze);if(!pe())return;It&&Fe?(ke.current={key:Fe,quote:It},ge(It.preview),Me(!0)):(ke.current=null,ge(null),Me(!1)),_e(null)}catch(It){if(!pe())return;if(It instanceof Yi&&Fe){ke.current=null,ge(null),Me(!1),je({key:Fe,requiredAmount:It.requiredAmount}),_e(null);return}if(K&&ke.current?.key===Fe){console.warn("[useSpiceSupply] fee refresh failed:",It),Me(!1),_e("Fees could not be refreshed. Waiting for a new estimate.");return}const Jt=g.sanitizeError(It,"Unable to calculate fees for this action.");ke.current=null,ge(null),Me(!1),_e(Jt)}finally{pe()&&ie(!1)}}});const xl=d.useCallback(K=>{Ye({building:"building","signing-delegation":"signing-delegation","signing-intent":"signing-intent",submitting:"submitting",executing:"executing",success:"success",error:"error"}[K.step]||"executing"),nt(K.message),K.txHash&&De(K.txHash)},[]);d.useEffect(()=>{t||(Ze(null),We(!1),Ye("idle"),nt(""),De(null),dt(!1),Ge(null),ge(null),ie(!1),Me(!1),_e(null),be.current=!1,et.current&&(et.current.abort(),et.current=null))},[t,Ze]),d.useEffect(()=>()=>{et.current?.abort(),oe.current.revision++},[]),d.useEffect(()=>{if(!R||Be?.status!=="success"||be.current||!Z)return;be.current=!0;const K=Ce.current;!K?.asset||K.asset._source==="wallet"||X.refreshSpiceAssets()},[R,Be?.status,Z,X]),pt.current={selectedAsset:Ie.required?o:sn.selectedAsset,sourceConversionRequired:Ie.required,sourceConversion:Ie.required&&Qe?{virtualSelectedAsset:Qe,acceptedSourceAmountInMax:Le?.quote.sourceAmountInMax??0n,getPlan:K=>K[0]?Rt.current.get(_s(K[0])):void 0,isCurrent:Ie.isCurrent}:void 0,parsedAmount:Mt,currentPaymentAmount:r,isInsufficientBalance:ws,isPayMode:R,isFeeInclusiveInput:H,feeOnlyAction:h,validateFeeQuote:()=>{if(!Y.current||Q.current!==_)throw new Error("The fee action or route changed; refresh before retrying")},actionProceeds:x?{token:x.token,resolve:async K=>{if(!Y.current||oe.current.revision!==fe)throw new Error("Action proceeds quote is stale");const pe=await x.resolve(K);if(!Y.current||oe.current.revision!==fe)throw new Error("Action proceeds quote is stale");return pe}}:void 0,isNon7702:L,isSourceDestToken:gt,needsSwap:Ut,swapInputAmount:Ke.inputAmount,exactOutputSwap:qt,selectedIsEquivalent:rn,resolvedTokenIn:Ht,embeddedWalletAddress:we,providerEmbeddedAddress:ce,externalWallet:ne,externalWalletAddress:ve,activeSignerWallet:ue,activeSignerAddress:$,address:Z,isConnected:W,ready:q,authenticated:M,provider:se,resolvedChainId:V,executionTokenAddress:hn,destinationToken:s,sourceFundingRecoveryKey:p,recipient:S,buildActionCalls:Wt,feeExecutionMode:b,buildSpicenetBatch:w,onPayExecute:C,onSuccess:j,feeQuote:Xt&&ke.current?.key===Xt?ke.current.quote:null,execution:{estimate:ae,execute:de,buildPayChainBatches:ao,buildSupplyChainBatches:io,onProgress:xl},ui:{setError:Ze,setStep:Ye,setStatusMsg:nt,setTxHash:De,setIsExecuting:We,setShowStatusPanel:dt,setPaymentResult:Ge},refs:{spiceDepositSubmittedRef:be,abortControllerRef:et}};const Un=d.useRef(!1),xn=d.useRef({scope:"",identity:""});xn.current={scope:we??ce?`spiceflow:sourceSupply:${JSON.stringify([N?.network??"testnet",V,(ve??we??ce).toLowerCase(),(we??ce).toLowerCase()])}`:"",identity:ms(pt.current)};const[Nt,lo]=d.useState({scope:"",record:null,error:null}),$t=n?"":xn.current.scope;d.useEffect(()=>{const K=()=>{try{lo({scope:$t,record:$t?so($t):null,error:null})}catch(Fe){lo({scope:$t,record:null,error:g.sanitizeError(Fe,"Saved funding needs recovery")})}},pe=()=>{K(),m==="balance"&&Xp($t).then(Fe=>{Fe&&(K(),X.refreshWalletAssets(),X.refreshSpiceAssets())}).catch(Fe=>{console.warn("[useSpiceSupply] funding reconciliation pending",Fe)})};pe();const ze=m==="balance"?setInterval(pe,15e3):void 0;return window.addEventListener("storage",pe),window.addEventListener(Xn,pe),()=>{clearInterval(ze),window.removeEventListener("storage",pe),window.removeEventListener(Xn,pe)}},[$t,m]);const Ln=d.useCallback(async K=>{if(Un.current)return;Un.current=!0;const pe=pt.current,ze=xn.current;try{if(O.current)throw new Error(O.current);if(Xe.current?.(),!ze.scope)return await K(pe);await Jp({scope:ze.scope,recovery:m,ctx:pe,run:K,isCurrent:()=>Y.current&&xn.current.scope===ze.scope&&xn.current.identity===ze.identity,onRecord:Fe=>{xn.current.scope===ze.scope&&lo({scope:ze.scope,record:Fe,error:null})}})}catch(Fe){if(xn.current.scope===ze.scope){const It=g.sanitizeError(Fe,"Supply funding failed");Ze(It),Ye("error"),pe.isPayMode&&Ge({status:"failed",error:It})}}finally{Un.current=!1,X.refreshWalletAssets(),X.refreshSpiceAssets()}},[Ze,m]),co=d.useCallback(async()=>{if(!Y.current||Un.current)return;mt.current=Date.now();const K=st.current;if(!K.actionExecution)return Ln(no);Un.current=!0,We(!0),Ze(null),Ye("executing");try{if(K.error)throw new Error(K.error);if(!K.scope)throw new Error("Connect the external wallet and its Spicenet account");const pe=()=>Y.current&&st.current.scope===K.scope,ze=pt.current;await nf({scope:K.scope,recovery:m,ctx:{...ze,execution:{...ze.execution,onProgress:Fe=>{pe()&&ze.execution.onProgress(Fe)}},ui:{setError:Fe=>{pe()&&ze.ui.setError(Fe)},setStep:Fe=>{pe()&&ze.ui.setStep(Fe)},setStatusMsg:Fe=>{pe()&&ze.ui.setStatusMsg(Fe)},setTxHash:Fe=>{pe()&&ze.ui.setTxHash(Fe)},setIsExecuting:Fe=>{pe()&&ze.ui.setIsExecuting(Fe)},setShowStatusPanel:Fe=>{pe()&&ze.ui.setShowStatusPanel(Fe)},setPaymentResult:Fe=>{pe()&&ze.ui.setPaymentResult(Fe)}}},buildActionCalls:K.buildActionCalls,isCurrent:pe,onRecord:Fe=>{pe()&&Tt({scope:K.scope,record:Fe,error:null})}})}catch(pe){st.current.scope===K.scope&&(Ze(g.sanitizeError(pe,"External wallet action failed")),Ye("error"))}finally{Un.current=!1,We(!1)}},[Ze,Ln,m]),yl=d.useCallback(()=>Y.current?(mt.current=Date.now(),st.current.actionExecution?(Ze("External action execution currently supports exact-input supplies"),Promise.resolve()):Ln(wr)):Promise.resolve(),[Ln]),bl=d.useCallback(async K=>{if(!Y.current)throw new Error("Supply is disabled");if(st.current.actionExecution)throw new Error("submitSupply manages external action funding");const pe=Ce.current?.asset;if(!pe)throw new Error("No source asset selected");if(!we)throw new Error("Your Spicenet account is not ready yet");const ze=A.normalizeNativeTokenAddress(pe.address),Fe=pe.isNative||A.isNativeToken(ze),It=g.getClientForChain(pe.chainId);await Ln(async Jt=>{await eo({identity:ms(Jt),state:Jt.sourceFunding,onState:Tn=>Jt.onSourceFundingChange?.(Tn),sourceClient:It,recipient:we,tokenAddr:ze,isNative:Fe,requiredAmount:K,createWallet:()=>Nn({wallet:ne,account:ve,chainId:pe.chainId,onSwitch:()=>nt("Switching source network...")})})})},[we,ve,ne,Ln]),wl=d.useCallback(K=>H?Promise.resolve(Gt(K,L)&&(K.isNative||A.isNativeToken(K.address))?null:I.formatUnits(K.balance,K.decimals)):_i({asset:K,isPayMode:R,isNon7702:L,needsSwap:Ut,isQuoting:an,embeddedWalletAddress:we,buildSupplyChainBatches:io,estimate:ae,executionTokenAddress:hn,feeExecutionMode:b}),[H,R,L,Ut,an,we,io,ae,hn,b]),Cl=d.useCallback(()=>{const K=st.current.scope;K&&(ef(K),Tt({scope:K,record:null,error:null})),Ye("idle"),De(null),X.refreshSpiceAssets()},[X]),vl=d.useCallback(()=>{dt(!1),Ge(null)},[]),kl=d.useCallback(()=>{Y.current&&(Ye("idle"),Ze(null),setTimeout(()=>{Y.current&&(mt.current=Date.now(),co())},50))},[Ze,co]),Sl=d.useCallback(()=>{dt(!1),Ge(null),be.current=!1,X.refreshSpiceAssets(),X.refreshWalletAssets()},[X]),Fr=!!Xt&&ke.current?.key===Xt,Tr=!!x&&Fr&&ye?.grossAmount===0n&&Ue,Br=(!gn||Dt||Wn)&&(!(x||h)||Fr)&&t&&(!h||R&&Mt===0&&(!!o||Tr)&&!n&&!C&&!T)&&(!Ie.required||!!Le&&!xt)&&(R?(B||!!o?.asset||Tr)&&Mt>=0&&!ws&&!Pe&&(B&&!h||Dt||Ue)&&!rt&&(B||!Ut||!!qt)&&!mn:!!o?.asset&&Mt>0&&!ws&&!Pe&&(Ct||Ue)&&!rt&&!Ee&&(ro||nn||!!Zt&&!an)&&!mn),jr=n?t&&!!Te&&Pt&&!ft&&!Pe&&!mn&&(vt?vt.phase!=="complete"&&!vt.requiresRecovery:Br):Nt.scope===$t&&Nt.error?!1:Nt.scope===$t&&Nt.record?t&&!Pe&&!mn&&Nt.record.identity===xn.current.identity&&!(Nt.record.funding.pending&&!Nt.record.funding.pending.hash)&&!(Nt.record.submitted&&!Nt.record.route)&&(!!Nt.record.route||m!=="balance"&&!xt&&(!Ie.required||!!Le)&&!rt&&!an&&(!Ut||(R?!!qt:!!Zt))):Br,yn={assets:{...X,selectable:lt},quote:{...Ke,isQuoting:an||Ie.required&&!Le&&!xt,quoteError:xt??Ke.quoteError,hasSourceConversion:Ie.required,executionInput:Ie.plan?{address:Ie.plan.bridgeDestination.address,chainId:V,decimals:Ie.plan.bridgeDestination.decimals,amount:ye?.netAmount??0n}:null},fees:{preview:ye,fundingConversion:Wn?ke.current?.quote.fundingConversion:void 0,proceedsUsed:ke.current?.key===Xt?ke.current?.quote.proceedsUsed:void 0,fundingShortfall:(x||ke.current?.quote.fundingConversion)&&ke.current?.key===Xt?ke.current?.quote.fundingConversion?.amountOut??ke.current?.quote.grossFundingAmount:void 0,source:Le?{address:Le.quote.plan.bridgeSource.address,chainId:Le.quote.plan.bridgeSource.chainId,symbol:Le.quote.plan.bridgeSource.symbol,decimals:Le.quote.plan.bridgeSource.decimals,gasFee:Le.sourceGasFee,spicenetFee:Le.sourceSpicenetFee}:null,isLoading:Ne||t&&!Pe&&tt==="idle"&&gn&&!Dt&&!wt.isQuoting&&!Wn&&!bs&&!rt,ready:Ue&&(!gn||Dt||Wn),error:rt},amount:{parsed:Mt,isInsufficientBalance:ws,sourceBalance:me,feesExceedAmount:Ee,sourceRequiredAmount:gl},status:{step:tt,statusMsg:ct,txHash:ut,isExecuting:Pe,error:D??ft??(Nt.scope===$t?Nt.error:null)??$e,showStatusPanel:yt,paymentResult:Be,externalAction:vt,sourceFunding:Nt.scope===$t&&Nt.record?Zp(Nt.record,pt.current):null},flags:{directExecutionFeeNote:Dt},canExecute:jr,submitSupply:co,submitPay:yl,fundEmbeddedSource:bl,retrySupply:kl,dismissPaymentStatus:vl,resolveMaxAmount:wl,resetAfterSuccess:Cl,resetPaymentState:Sl},$n=H&&(Ie.required||Ut)&&!h&&!n&&!(Nt.scope===$t&&(Nt.record||Nt.error)),_n=o&&X.displayAssets.find(K=>K.chainId===o.asset.chainId&&g.addressesEqual(A.normalizeNativeTokenAddress(K.address),A.normalizeNativeTokenAddress(o.asset.address))&&K._source===o.asset._source&&K._fundingWallet===o.asset._fundingWallet),uo=(()=>{try{return o?I.parseUnits(o.amount||"0",o.asset.decimals):null}catch{return null}})(),Rr=$n&&t&&!Pe&&tt==="idle"&&W&&q&&M&&!mn&&!!_n&&uo!==null&&uo>0n&&uo<=_n.balance;(!Rr||it.current?.scope!==jt)&&(it.current=null);const Dr=Math.min((Ie.required?Le?.expiresAt:1/0)??0,Ut?Ke.quoteExpiresAt??0:1/0);if(Rr&&jr&&!yn.quote.isQuoting&&!yn.fees.isLoading&&(!Ut||Ke.resolvedSwap&&Ke.inputAmount!=null)&&Dr>Date.now()){const K=pt.current;it.current={scope:jt,expiresAt:Dr,context:K,sourcePlan:Le,quote:yn.quote,fees:yn.fees,amount:yn.amount}}const Vt=it.current;d.useEffect(()=>{const K=xe.current;Ve&&le&&K&&K.plan===Vt?.sourcePlan&&K.plan!==le&&He(pe=>pe+1)},[Ve,le,Vt?.sourcePlan]);const po=!!Vt&&Vt.scope===jt&&Vt.expiresAt>Date.now();if(Xe.current=$n?()=>{if(!Y.current||!po||re.current!==Vt.scope||Vt.expiresAt<=Date.now())throw new Error("Swap quote expired or changed; wait for a complete quote before retrying")}:null,po){const K=Xe.current,pe=Vt.context;pt.current={...pe,selectedAsset:o&&_n?{...o,asset:_n}:o,validateFeeQuote:()=>{K(),pe.validateFeeQuote?.()},sourceConversion:pe.sourceConversion?{...pe.sourceConversion,isCurrent:()=>Y.current&&re.current===Vt.scope&&Vt.expiresAt>Date.now()&&pe.sourceConversion.isCurrent()}:void 0}}const fo=Math.min(...[Vt?.expiresAt,Le?.expiresAt].filter(K=>K!==void 0&&K>Date.now()));d.useEffect(()=>{if(!Number.isFinite(fo))return;const K=setTimeout(()=>He(pe=>pe+1),fo-Date.now());return()=>clearTimeout(K)},[fo]);const Cs=Math.min(ot.quoteExpiresAt??1/0,Ke.quoteExpiresAt??1/0);return d.useEffect(()=>{if(!$n||!t||Pe||!Number.isFinite(Cs)||Ie.required&&!Le||Le&&Le.expiresAt<Cs)return;const K=setTimeout(()=>{ot.refreshQuote(),te.refreshQuote()},Math.max(0,Cs-Date.now()-1e4));return()=>clearTimeout(K)},[$n,t,Pe,Ie.required,Le?.expiresAt,Cs,ot.refreshQuote,te.refreshQuote]),$n?po?{...yn,quote:Vt.quote,fees:Vt.fees,amount:{...Vt.amount,sourceBalance:_n?.balanceFormatted??me,isInsufficientBalance:!1},canExecute:!0}:{...yn,canExecute:!1}:yn}const df=()=>{},uf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,destinationToken:s,sourceChains:o,supportedSourceAssets:r,includeExternalWalletAssets:i=!1,includeCrossChainEmbeddedAssets:l=!1,sourceFundingRecoveryKey:u,sourceFundingRecovery:c,feeOnlyAction:f,actionProceeds:p,buildActionCalls:m,feeExecutionMode:h="user-transfer",buildSpicenetBatch:x,onPayExecute:y,resolveExactOutputSwap:b,actionLabel:w,amountDirection:C="input",swapDescription:S,directDescription:k,paymentAmount:v,amountInputMode:F="fixed",minPaymentAmount:T,maxPaymentAmount:B,onAmountChange:j,styles:E,dark:R,title:D,subtitle:O,onAddFunds:H,onSuccess:U,onError:V})=>{const Y=C==="output",{theme:N,dark:L,primaryColor:z,dk:G,palette:Z,fontFamily:W,monoFont:q,inputDark:M,cardBg:se,cardBorder:de,textPrimary:ae,textSecondary:ne,subtitleText:ce}=g.useSpiceBrand(E,R),ue=d.useMemo(()=>M?{...N,colors:{...N.colors,secondary:G.cardBg,surfaceHover:G.hoverBg,border:"#2d2d2d",borderHover:"#3a3a3a"}}:N,[M,N,G.cardBg,G.hoverBg]),$=d.useMemo(()=>s.logoURI?s:{...s,logoURI:wo[s.symbol]},[s]),ve=$.chainId,[P,oe]=d.useState(null),[fe,_]=d.useState(v||""),Q=F==="adjustable"?fe:v||"0",ee=v?.trim(),he=Y&&F==="fixed"&&ee!==void 0&&ee!==""&&parseFloat(Q||"0")===0,{assets:{selectable:X,refreshSpiceAssets:Se,refreshWalletAssets:Je},quote:{isQuoting:we,quoteError:lt,estimatedOutput:Pe,exactOutputSwap:We,isDirect:$e,needsSwap:Ae},fees:{preview:tt,isLoading:Ye,error:ct},amount:{parsed:nt,isInsufficientBalance:ut},status:{step:De,statusMsg:yt,txHash:dt,isExecuting:Be,error:Ge,showStatusPanel:Oe,paymentResult:ge},flags:{directExecutionFeeNote:ye},canExecute:Ne,submitSupply:ie,retrySupply:Ue,dismissPaymentStatus:Me,submitPay:rt,resolveMaxAmount:_e,resetAfterSuccess:Ot,resetPaymentState:je}=hl({enabled:e,destinationToken:$,selectedAsset:P,paymentAmount:Q,amountDirection:C,sourceChains:o,supportedSourceAssets:r,includeExternalWalletAssets:i,includeCrossChainEmbeddedAssets:l,sourceFundingRecoveryKey:u,sourceFundingRecovery:c,feeOnlyAction:f,actionProceeds:p,buildActionCalls:m,feeExecutionMode:h,buildSpicenetBatch:x,onPayExecute:y,resolveExactOutputSwap:b,isZeroAmountPay:he,onSuccess:U,onError:V}),at=!!P?.asset&&(nt>0||f),Ze=Ge;d.useEffect(()=>{e||(oe(null),F==="adjustable"&&_(v||""))},[e]);const Ce=d.useCallback(ft=>{oe(st=>({asset:ft,amount:st?.asset?.address===ft.address&&st?.asset?.chainId===ft.chainId&&st.amount||""}))},[]),be=d.useCallback(ft=>{oe(st=>st&&{...st,amount:ft})},[]),et=d.useCallback(ft=>{let st=ft;B&&parseFloat(st)>parseFloat(B)&&(st=B),_(st),j?.(st)},[B,j]),mt=d.useCallback(()=>{je(),oe(null)},[je]);d.useEffect(()=>{!Y&&De==="success"&&dt&&(Se(),U?.(dt))},[Y,De,dt,Se,U]);const bt=d.useRef(U),ke=d.useRef(V);d.useEffect(()=>{bt.current=U},[U]),d.useEffect(()=>{ke.current=V},[V]),d.useEffect(()=>{e&&(Se(),Je())},[e,Se,Je]),d.useEffect(()=>{Y&&(ge?.status==="success"&&bt.current?.(ge.txHash||""),ge?.status==="failed"&&ke.current?.(new Error("Payment execution failed")))},[Y,ge?.status]);const pt=$e?k||`Your ${$.symbol} will be used directly.`:S||"Your assets will be swapped and used in a single atomic transaction.",it=(ve?g.getChainConfig(ve):void 0)?.viemChain?.blockExplorers?.default?.url??"",Xe=Wi.indexOf(De),He=Be?(Pi[De]||"EXECUTING...").toUpperCase():De==="success"?"DONE":ut?"INSUFFICIENT BALANCE":Ae&&lt&&!we?"QUOTE ERROR":w.toUpperCase(),ht=d.useMemo(()=>{if(ge?.status==="success")return"DONE";if(Be)return"PAYING...";if(ut&&P?.asset)return`INSUFFICIENT ${P.asset.symbol}`;if(Ae&&lt&&!we)return"QUOTE ERROR";if(w)return w.toUpperCase();const ft=nt>0?` ${Q} ${$.symbol}`:"";return Ae?`SWAP & PAY${ft}`:`PAY${ft}`},[Be,ut,P,w,nt,Q,$.symbol,Ae,lt,we,ge?.status]),Te=De==="success"?()=>{Ot(),oe(null)}:ie,Ft=De==="success"?!1:!Ne;if(!e)return null;const Tt=Y?D||`Pay ${$.symbol}`:w,Pt=Y?O:a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"3px"},children:[a.jsx("span",{style:{marginTop:"3px",flexShrink:0},children:a.jsx(Mo,{color:ce})}),a.jsx("p",{style:{fontSize:"12px",color:ce,margin:0,lineHeight:"1.4",fontFamily:W},children:pt})]}),Bt={...E,button:{...E?.button,backgroundColor:z}},vt=at&&a.jsx(Wo,{fontFamily:W,textPrimary:ae,textSecondary:ne,cardBg:se,cardBorder:de,resolvedDark:L,darkCardBorder:G.cardBorder,primaryColor:z,feePreview:tt,isLoading:Ye,errorText:ct,directExecutionFeeNote:ye});if(Y){const ft=ge&&(ge.status==="success"||ge.status==="failed")?[{asset:{symbol:P?.asset?.symbol||$.symbol,address:P?.asset?.address||""},amount:Q,txHash:ge.txHash||"",success:ge.status==="success",error:ge.status==="failed"?ge.error:void 0}]:void 0;return a.jsx(en,{isOpen:e,onClose:t,title:Tt,subtitle:Pt,styles:E,dark:L,footerLinkText:"Spicenet accounts \u2192",closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"16px 24px 8px 24px",position:"relative"},children:[H&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(Uo,{onClick:H,color:z,fontFamily:W})}),(!he||f)&&a.jsx("div",{style:{marginBottom:"12px"},children:a.jsx(os,{assets:X,selectedAsset:P??void 0,onAssetSelect:Ce,onAmountChange:df,label:"Pay with",showBalance:!0,showMaxButton:!1,hideAmountInput:!0,displayAmount:P?.asset?Ae?we?"...":We?`~${parseFloat(I.formatUnits(We.amountIn,P.asset.decimals)).toFixed(6)}`:void 0:Q??void 0:void 0,dark:L,theme:ue,styles:E})}),a.jsx(Oi,{variant:"pay",destinationSymbol:$.symbol,destinationLogoURI:$.logoURI,destinationDecimals:$.decimals,primaryColor:z,fontFamily:W,textPrimary:ae,textSecondary:ne,cardBg:se,cardBorder:de,dk:G,dark:L,isQuoting:we,quoteError:lt,estimatedOutput:Pe,paymentAmount:Q,needsSwap:Ae,exactOutputSwap:We,adjustable:F==="adjustable",maxAmount:B,onAmountChange:et}),vt,Ze&&a.jsx(kn,{variant:"error",palette:Z,fontFamily:W,style:{marginBottom:"12px"},children:Ze}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:ge?.status==="success"?t:rt,disabled:ge?.status==="success"?!1:!Ne,loading:Be,dark:L,styles:Bt,children:ht}),ge&&Oe&&a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:10,backgroundColor:L?G.shell:"white",borderRadius:L?"12px":"6px",padding:"16px 0"},children:a.jsx(Ko,{type:"payment",isOpen:ge.status!=="processing",isProcessing:Be||ge.status==="processing",closeOnComplete:!1,chainId:ve,onRetryTx:()=>{Me(),rt()},onNewTx:mt,onClose:Me,onComplete:mt,results:ft,styles:E,dark:L})})]})})}return a.jsx(en,{isOpen:e,onClose:t,title:Tt,subtitle:Pt,dark:L,styles:E,theme:N,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px",position:"relative"},children:[a.jsx("div",{style:{marginBottom:"16px"},children:a.jsx(os,{assets:X,selectedAsset:P||void 0,onAssetSelect:Ce,onAmountChange:be,disabled:Be||De==="success",showBalance:!0,label:"From Wallet",placeholder:"0.00",theme:ue,styles:E,dark:M,showMaxButton:!(C==="input-inclusive"&&P?.asset._source==="wallet"&&P.asset._fundingWallet!=="embedded"&&(P.asset.isNative||A.isNativeToken(P.asset.address))),resolveMaxAmount:_e,maxAmount:P?.asset?I.formatUnits(P.asset.balance,P.asset.decimals):void 0})}),P?.asset&&!$e&&a.jsx(Oi,{variant:"supply",destinationSymbol:$.symbol,destinationLogoURI:$.logoURI,destinationDecimals:$.decimals,primaryColor:z,fontFamily:W,textPrimary:ae,textSecondary:ne,cardBg:se,cardBorder:de,dark:L,isQuoting:we,quoteError:lt,estimatedOutput:Pe}),vt,De!=="idle"&&a.jsx(Wp,{step:De,statusMsg:yt,txHash:dt,explorerUrl:it,currentStepIdx:Xe,palette:Z,cardBg:se,cardBorder:de,textPrimary:ae,textSecondary:ne,fontFamily:W,primaryColor:z,onRetry:Ue}),Ze&&De==="idle"&&a.jsx(kn,{variant:"error",palette:Z,fontFamily:W,style:{marginBottom:"16px"},children:Ze}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,disabled:Ft,onClick:Te,theme:N,dark:L,styles:Bt,style:{fontSize:"20px",fontWeight:600,letterSpacing:"1.5px",fontFamily:q},children:He})]})})},pf=()=>{const[e,t]=d.useState("0"),[n,s]=d.useState(null);return{assetAmount:e,setAssetAmount:t,selectedAsset:n,setSelectedAsset:s}};function ff(e,t=0){const[n,s]=d.useState(t),o=e[n]??e[0],r=d.useMemo(()=>o?BigInt(Math.round(o.months*30*24*3600)):0n,[o?.months]);return{selectedDurationIdx:n,setSelectedDurationIdx:s,selectedDuration:o,durationSeconds:r}}function mf(){const{actions:e,isReady:t,isAuthenticated:n}=g.useWallet(),s=d.useContext(g.SpiceFlowProviderContext)?.embeddedWalletAddress,o=d.useRef(!1),r=d.useRef(0),i=d.useRef(null),l=d.useRef(e),[u,c]=d.useState(0);l.current=e,d.useEffect(()=>{o.current=!1,r.current=0,i.current&&(clearTimeout(i.current),i.current=null)},[s]),d.useEffect(()=>{if(!s||!t||!n||o.current)return;o.current=!0;let f=!1;return(async()=>{await cn(2e3);try{await g.ensureSmartWallet(s,l.current.signMessage),r.current=0}catch(p){console.warn("[SmartWallet] Registration failed:",p),o.current=!1,!f&&r.current<3&&(r.current+=1,i.current=setTimeout(()=>{c(m=>m+1)},5e3))}})(),()=>{f=!0,i.current&&(clearTimeout(i.current),i.current=null)}},[s,t,n,u])}function hf(e){return`0x77${e.slice(4)}`}function gf({userAddress:e,destinationChainId:t,deliveryToken:n,deliveryAmount:s,withdrawalAmount:o,deliveryRecipient:r,deliveryTransfers:i,requestTimestampMs:l}){const u=i?.length?i:[{token:n,recipient:r,amount:o??s}],c=u.reduce((h,x)=>h+x.amount,0n);if(c<=0n)return null;const f=l??Date.now(),p=BigInt(Math.floor(f/1e3)),m=hf(I.keccak256(I.encodeAbiParameters([{type:"address"},{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"}],[e??r,n,r,c,BigInt(t),BigInt(f)])));return{chainId:A.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:[{to:A.ZERO_ADDRESS,value:0n,data:I.encodeFunctionData({abi:A.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${t}`,idempotenceKey:m,nbf:0n,exp:p+3600n,metadata:"{}",transfers:u.map(h=>({token:I.getAddress(h.token).toLowerCase(),to:I.getAddress(h.recipient).toLowerCase(),amount:h.amount}))}]})}]}}Ml(),exports.SpiceFlowProvider=g.SpiceFlowProvider,exports.SpiceFlowProviderContext=g.SpiceFlowProviderContext,exports.SpiceflowError=g.SpiceflowError,exports.Spinner=g.Spinner,exports.buildDarkPalette=g.buildDarkPalette,exports.buildLightPalette=g.buildLightPalette,exports.duration=g.duration,exports.easing=g.easing,exports.font=g.font,exports.getChainConfig=g.getChainConfig,exports.getChainName=g.getChainName,exports.getClientForChain=g.getClientForChain,exports.getRelayerErrorDetail=g.getRelayerErrorDetail,exports.isSpiceflowError=g.isSpiceflowError,exports.radius=g.radius,exports.relayerService=g.relayerService,exports.resolveTheme=g.resolveTheme,exports.sanitizeError=g.sanitizeError,exports.transition=g.transition,exports.useIsUserWhitelisted=g.useIsUserWhitelisted,exports.useSpiceBrand=g.useSpiceBrand,exports.useWallet=g.useWallet,exports.z=g.z,Object.defineProperty(exports,"NATIVE_TOKEN_ADDRESS",{enumerable:!0,get:function(){return A.ZERO_ADDRESS}}),Object.defineProperty(exports,"SPICENET_NATIVE_CHAIN_ID",{enumerable:!0,get:function(){return A.SPICENET_NATIVE_CHAIN_ID}}),Object.defineProperty(exports,"SPICE_COMBINED_FEE_RECIPIENT",{enumerable:!0,get:function(){return A.SPICE_COMBINED_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_GAS_FEE_RECIPIENT",{enumerable:!0,get:function(){return A.SPICE_GAS_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_PLATFORM_FEE_RECIPIENT",{enumerable:!0,get:function(){return A.SPICE_PLATFORM_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_SOLVER_ADDRESS",{enumerable:!0,get:function(){return A.SPICE_SOLVER_ADDRESS}}),Object.defineProperty(exports,"applySlippage",{enumerable:!0,get:function(){return A.applySlippage}}),Object.defineProperty(exports,"buildUniV3SwapCalls",{enumerable:!0,get:function(){return A.buildUniV3SwapCalls}}),Object.defineProperty(exports,"getChainIdsByNetwork",{enumerable:!0,get:function(){return A.getChainIdsByNetwork}}),Object.defineProperty(exports,"getEscrowContractAddress",{enumerable:!0,get:function(){return A.getEscrowContractAddress}}),Object.defineProperty(exports,"isNativeToken",{enumerable:!0,get:function(){return A.isNativeToken}}),Object.defineProperty(exports,"isSpicenetChainId",{enumerable:!0,get:function(){return A.isSpicenetChainId}}),Object.defineProperty(exports,"normalizeNativeTokenAddress",{enumerable:!0,get:function(){return A.normalizeNativeTokenAddress}}),Object.defineProperty(exports,"spicenetAbi",{enumerable:!0,get:function(){return A.spicenetAbi}}),Object.defineProperty(exports,"spicenetWithdrawalAbi",{enumerable:!0,get:function(){return A.spicenetAbi}}),exports.AERODROME_BASE_CONFIG=er,exports.ALGEBRA_CITREA_CONFIG=Du,exports.AccountDisplay=Op,exports.AddFundsLink=Uo,exports.CheckIcon=Pr,exports.ChevronIcon=Bn,exports.CloseIcon=rs,exports.DEFAULT_LIQUIDITY_VENUES=ki,exports.DetailRow=Vn,exports.ProviderLogin=Qo,exports.SATSUMA_CITREA_CONFIG=_o,exports.SPICE_PLATFORM_FEE_BPS=Dn,exports.SearchInput=ho,exports.SelectChainModal=Dd,exports.SpiceDeposit=Rd,exports.SpiceLock=up,exports.SpiceSupply=uf,exports.SpiceWithdraw=ru,exports.StatusBanner=kn,exports.UNIV3_BASE_CONFIG=si,exports.UNIV3_ROBINHOOD_CONFIG=oi,exports.UNIV3_ROBINHOOD_SUSHI_CONFIG=ri,exports.UNIV4_BASE_CONFIG=pi,exports.UNIV4_ROBINHOOD_CONFIG=fi,exports.V4_NATIVE_CURRENCY=on,exports.areEquivalentOnChains=is,exports.buildEmbeddedEscrowDepositBatch=Xs,exports.buildLiquidityVenues=Yn,exports.buildPayChainBatches=Hi,exports.buildRoutedBatches=nu,exports.buildSpicenetWithdrawalBatch=gf,exports.buildSupplyChainBatches=Vi,exports.calculateBpsFee=qn,exports.createAerodromeExactOutputVenue=li,exports.createAerodromeVenue=tr,exports.createAlgebraVenue=ci,exports.createExactOutputRegistry=Ks,exports.createLiquidityRegistry=sr,exports.createSatsumaExactOutputVenue=nr,exports.createSatsumaVenue=ps,exports.createUniV3ExactOutputVenue=nr,exports.createUniV3Venue=ps,exports.createUniV4ExactOutputVenue=vi,exports.createUniV4Venue=Ci,exports.encodeUniV3ExactOutputCall=Za,exports.estimateFeePreview=mr,exports.estimateRequiredGrossFunding=Lp,exports.estimateSupplyMaxAmount=_i,exports.executePay=wr,exports.executeSupply=no,exports.fetchBalances=bn,exports.findEquivalentOnChain=pn,exports.getAssetChainTokenCandidates=zn,exports.getBestUniV3ExactOutputQuote=Ja,exports.getBestUniV3Quote=Xa,exports.isExternalSource=Gt,exports.isSupportedSupplyAsset=Jn,exports.resolveAssetTokenAddressOnChain=Lt,exports.resolveFundedToken=To,exports.resolveInputSupplySwapQuote=Yu,exports.resolveRoute=Ha,exports.reverseUniV3Path=du,exports.scaleTokenAmount=zt,exports.useAssetInput=pf,exports.useDebouncedEstimate=as,exports.useLockDuration=ff,exports.useSmartWallet=mf,exports.useSpiceAssets=ds,exports.useSpiceExecution=Hn,exports.useSpicePendingDeposits=Di,exports.useSpiceSupply=hl,exports.useSupplyAssets=pl,exports.useSupplyQuote=Ys,exports.useWalletBalances=wn;
85
+ `})]}),document.body):null;return a.jsxs(a.Fragment,{children:[Ke,Oe,Be&&qn.createPortal(a.jsx(rl,{isOpen:!0,onClose:()=>Ct(null),styles:d,walletAssets:{initialAsset:Be},onWithdrawSuccess:()=>{ae(),ie()}}),document.body),B&&qn.createPortal(a.jsx(ka,{isOpen:!0,onClose:Se,supportedChains:[B.chainId],escrowOnly:!0,escrowTokenAddress:B.tokenAddress,escrowAmount:B.amount,escrowTokenDecimals:B.tokenDecimals,escrowTokenSymbol:B.tokenSymbol,styles:d,onDepositSuccess:ct}),document.body)]})},nf=({variant:e,destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:d,cardBorder:c,dk:m,dark:p,isQuoting:f,quoteError:h,estimatedOutput:x,paymentAmount:b,needsSwap:y,exactOutputSwap:w,adjustable:S=!1,maxAmount:v,onAmountChange:k})=>e==="supply"?a.jsxs("div",{style:{backgroundColor:d,border:`1px solid ${c}`,borderRadius:p?"8px":"7px",padding:"14px 16px 12px 16px",marginBottom:"16px",minHeight:"112px",display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px"},children:[a.jsxs("div",{style:{minWidth:0},children:[a.jsx("span",{style:{fontFamily:r,fontSize:"17px",fontWeight:500,color:p?"#a7abb2":"#7D7C7B",lineHeight:"24px"},children:"Used in TX"}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:l,fontFamily:r,marginTop:"10px"},children:"Net amount after swap and fees"})]}),a.jsxs("div",{style:{textAlign:"right",minWidth:0,display:"inline-flex",alignItems:"center",gap:"8px",border:`1px solid ${c}`,borderRadius:"8px",padding:"8px 10px",minHeight:"42px"},children:[a.jsx(fl,{symbol:t,logoURI:n,primaryColor:o,size:24}),a.jsx("span",{style:{fontSize:"16px",fontWeight:500,color:p?"#f3f4f6":"#3C3E42",lineHeight:"1.3",fontFamily:r,letterSpacing:0},children:t})]})]}),a.jsx("div",{style:{textAlign:"right",minWidth:0},children:f?a.jsx("span",{style:{fontSize:"18px",color:l,fontFamily:r},children:"Quoting..."}):h?a.jsx("span",{style:{fontSize:"13px",color:p?"#f87171":"#dc2626",fontFamily:r},children:"Quote failed"}):x?a.jsx(jn,{value:x,title:x,fontFamily:r,color:i,lineHeight:"0.95",textAlign:"right",maxFontSize:32,minFontSize:18}):a.jsx("span",{style:{fontSize:"20px",color:l,fontFamily:r},children:"\u2014"})})]}):a.jsx(sf,{destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:d,cardBorder:c,dk:m,dark:p,paymentAmount:b||"0",needsSwap:y,exactOutputSwap:w,isQuoting:f,adjustable:S,maxAmount:v,onAmountChange:k}),pl=u.memo(nf),fl=({symbol:e,logoURI:t,primaryColor:n,size:s})=>t?a.jsx("img",{src:t,alt:e,style:{width:s,height:s,borderRadius:"50%",objectFit:"cover"}}):a.jsx("div",{style:{width:s,height:s,borderRadius:"50%",backgroundColor:`${n}22`,display:"flex",alignItems:"center",justifyContent:"center",fontSize:s<30?"11px":"12px",fontWeight:700,color:n},children:e.slice(0,2)}),sf=({destinationSymbol:e,destinationLogoURI:t,destinationDecimals:n,primaryColor:s,fontFamily:o,textPrimary:r,textSecondary:i,cardBg:l,cardBorder:d,dk:c,dark:m,paymentAmount:p,needsSwap:f,exactOutputSwap:h,isQuoting:x,adjustable:b,maxAmount:y,onAmountChange:w})=>{const S=g.font.mono,v=parseFloat(p||"0"),k=y?parseFloat(y):0,[C,E]=u.useState(p||""),F=u.useRef(null),[B,j]=u.useState(null),[T,R]=u.useState(null);u.useEffect(()=>{b||E(p||"")},[p,b]);const D=q=>{let z=q;z.startsWith(".")&&(z="0"+z);const X=g.parseNumericInput(z);let N=X;y&&parseFloat(X)>parseFloat(y)&&(N=y),E(N),F.current&&clearTimeout(F.current),F.current=setTimeout(()=>w?.(N),300)},M=q=>{if(!k)return;if(q===100){E(y||k.toString()),F.current&&clearTimeout(F.current),w?.(y||k.toString());return}const z=10**n,X=Math.floor(k*q/100*z)/z,N=g.formatDecimalInput(X,n);E(N),F.current&&clearTimeout(F.current),w?.(N)},W=k>0?parseFloat(C||"0")/k*100:0;return u.useEffect(()=>()=>{F.current&&clearTimeout(F.current)},[]),a.jsxs("div",{style:{backgroundColor:l,border:`1px solid ${d}`,borderRadius:m?"12px":"6px",padding:"16px",marginBottom:"16px"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[a.jsx(fl,{symbol:e,logoURI:t,primaryColor:s,size:32}),a.jsxs("div",{children:[a.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:r,fontFamily:o},children:"Payment"}),a.jsx("div",{style:{fontSize:"12px",color:i,fontFamily:o,marginTop:"2px"},children:e})]})]}),a.jsxs("div",{style:{textAlign:"right"},children:[b?a.jsx(jn,{element:"input",ariaLabel:`${e} amount`,dataSpiceflowFocus:!0,value:C,onChange:q=>D(q.target.value),placeholder:"0.0",fontFamily:S,color:r,lineHeight:1.1,textAlign:"right",maxFontSize:20,minFontSize:12,style:{width:"120px"}}):a.jsx(jn,{element:"div",value:v>0?p:"0.00",title:v>0?p:"0.00",fontFamily:S,color:r,lineHeight:1.1,textAlign:"right",maxFontSize:20,minFontSize:12}),a.jsx("div",{style:{fontSize:"12px",color:i,fontFamily:S,marginTop:"2px"},children:e}),b&&k>0&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px",marginTop:"6px"},children:[0,25,50,75,100].map((q,z)=>{const X=Math.abs(W-q)<1,N=z===4,H=B===q,V=T===q;return a.jsx("button",{onClick:()=>M(q),onMouseEnter:()=>j(q),onMouseLeave:()=>{j(null),R(null)},onMouseDown:()=>R(q),onMouseUp:()=>R(null),title:`${q}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:"pointer",opacity:X?1:H?.8:.5,transform:V?"scale(0.85)":H?"scale(1.15)":"scale(1)",transition:g.transition.interactive},children:a.jsx(mo,{pct:q,isMax:N,primaryColor:s,dark:m,fillColor:m?c?.textSecondary||"#9ca3af":"#3C3E42"})},q)})})]})]}),f&&h&&!x&&a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:m?`1px solid ${c?.cardBorder||d}`:"1px solid #e5e7eb",display:"flex",justifyContent:"flex-end"},children:a.jsxs("span",{style:{fontSize:"11px",color:i,fontFamily:o,opacity:.7},children:["via ",h.venue]})})]})},ml={idle:"",building:"Preparing transaction...","signing-delegation":"Signing delegation...","signing-intent":"Signing intent...",submitting:"Submitting transaction...",executing:"Executing on-chain...",success:"Deposit confirmed",error:"Transaction failed"},hl=["building","signing-delegation","signing-intent","submitting","executing"],of=({step:e,statusMsg:t,txHash:n,explorerUrl:s,currentStepIdx:o,palette:r,cardBg:i,cardBorder:l,textPrimary:d,textSecondary:c,fontFamily:m,primaryColor:p,onRetry:f})=>a.jsxs("div",{style:{padding:"10px 14px",borderRadius:"7px",marginBottom:"16px",backgroundColor:e==="success"?i:e==="error"?r.errorBg:i,border:`1px solid ${e==="success"?l:e==="error"?r.errorBorder:l}`},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[e==="success"?a.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:a.jsx("path",{d:"M5 13l4 4L19 7",stroke:r.successText,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"})}):e==="error"?a.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:a.jsx("path",{d:"M18 6L6 18M6 6l12 12",stroke:r.errorText,strokeWidth:"2.5",strokeLinecap:"round"})}):a.jsx(g.Spinner,{size:14,color:p}),a.jsx("span",{style:{fontSize:"13px",fontWeight:500,color:e==="success"?d:e==="error"?r.errorText:d,fontFamily:m,flex:1},children:e==="success"?"Deposit confirmed":e==="error"?t||"Transaction failed":t||ml[e]}),e==="success"&&n&&a.jsx("a",{href:`${s}/tx/${n}`,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",color:p,fontFamily:m,textDecoration:"none",whiteSpace:"nowrap",flexShrink:0},children:"View tx \u2192"}),e==="error"&&a.jsx("button",{onClick:f,style:{background:"none",border:"none",fontSize:"12px",color:p,fontFamily:m,cursor:"pointer",padding:0,whiteSpace:"nowrap",flexShrink:0},children:"Retry \u2192"})]}),o>=0&&e!=="success"&&e!=="error"&&a.jsx("div",{style:{marginTop:"8px",height:"3px",borderRadius:"2px",backgroundColor:`${c}22`,overflow:"hidden"},children:a.jsx("div",{style:{height:"100%",width:"100%",borderRadius:"2px",backgroundColor:p,transformOrigin:"left center",transform:`scaleX(${(o+1)/hl.length})`,transition:"transform 400ms ease"}})})]}),rf=()=>{},af=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,destinationToken:s,sourceChains:o,supportedSourceAssets:r,includeExternalWalletAssets:i=!1,includeCrossChainEmbeddedAssets:l=!1,sourceFundingRecoveryKey:d,sourceFundingRecovery:c,feeOnlyAction:m,actionProceeds:p,buildActionCalls:f,feeExecutionMode:h="user-transfer",buildSpicenetBatch:x,onPayExecute:b,resolveExactOutputSwap:y,actionLabel:w,amountDirection:S="input",swapDescription:v,directDescription:k,paymentAmount:C,amountInputMode:E="fixed",minPaymentAmount:F,maxPaymentAmount:B,onAmountChange:j,styles:T,dark:R,title:D,subtitle:M,onAddFunds:W,onSuccess:q,onError:z})=>{const X=S==="output",{theme:N,dark:H,primaryColor:V,dk:G,palette:J,fontFamily:U,monoFont:L,inputDark:O,cardBg:ee,cardBorder:ue,textPrimary:re,textSecondary:se,subtitleText:ie}=g.useSpiceBrand(T,R),ce=u.useMemo(()=>O?{...N,colors:{...N.colors,secondary:G.cardBg,surfaceHover:G.hoverBg,border:"#2d2d2d",borderHover:"#3a3a3a"}}:N,[O,N,G.cardBg,G.hoverBg]),_=u.useMemo(()=>s.logoURI?s:{...s,logoURI:ho[s.symbol]},[s]),Ce=_.chainId,[P,ae]=u.useState(null),[he,ne]=u.useState(C||""),Q=E==="adjustable"?he:C||"0",te=C?.trim(),be=X&&E==="fixed"&&te!==void 0&&te!==""&&parseFloat(Q||"0")===0,{assets:{selectable:$,refreshSpiceAssets:Se,refreshWalletAssets:ct},quote:{isQuoting:xe,quoteError:pt,estimatedOutput:Me,exactOutputSwap:Ue,isDirect:Xe,needsSwap:Ae},fees:{preview:nt,isLoading:st,error:ft},amount:{parsed:ot,isInsufficientBalance:_e},status:{step:Be,statusMsg:Ct,txHash:mt,isExecuting:Te,error:Ke,showStatusPanel:Oe,paymentResult:Y},flags:{directExecutionFeeNote:Ee},canExecute:ye,submitSupply:Re,retrySupply:dt,dismissPaymentStatus:Qe,submitPay:yt,resolveMaxAmount:lt,resetAfterSuccess:qt,resetPaymentState:Lt}=mr({enabled:e,destinationToken:_,selectedAsset:P,paymentAmount:Q,amountDirection:S,sourceChains:o,supportedSourceAssets:r,includeExternalWalletAssets:i,includeCrossChainEmbeddedAssets:l,sourceFundingRecoveryKey:d,sourceFundingRecovery:c,feeOnlyAction:m,actionProceeds:p,buildActionCalls:f,feeExecutionMode:h,buildSpicenetBatch:x,onPayExecute:b,resolveExactOutputSwap:y,isZeroAmountPay:be,onSuccess:q,onError:z}),Nt=!!P?.asset&&(ot>0||m),Je=Ke;u.useEffect(()=>{e||(ae(null),E==="adjustable"&&ne(C||""))},[e]);const pe=u.useCallback($e=>{ae(et=>({asset:$e,amount:et?.asset?.address===$e.address&&et?.asset?.chainId===$e.chainId&&et.amount||""}))},[]),We=u.useCallback($e=>{ae(et=>et&&{...et,amount:$e})},[]),at=u.useCallback($e=>{let et=$e;B&&parseFloat(et)>parseFloat(B)&&(et=B),ne(et),j?.(et)},[B,j]),ut=u.useCallback(()=>{Lt(),ae(null)},[Lt]);u.useEffect(()=>{!X&&Be==="success"&&mt&&(Se(),q?.(mt))},[X,Be,mt,Se,q]);const ve=u.useRef(q),fe=u.useRef(z);u.useEffect(()=>{ve.current=q},[q]),u.useEffect(()=>{fe.current=z},[z]),u.useEffect(()=>{e&&(Se(),ct())},[e,Se,ct]),u.useEffect(()=>{X&&(Y?.status==="success"&&ve.current?.(Y.txHash||""),Y?.status==="failed"&&fe.current?.(new Error("Payment execution failed")))},[X,Y?.status]);const He=Xe?k||`Your ${_.symbol} will be used directly.`:v||"Your assets will be swapped and used in a single atomic transaction.",it=(Ce?g.getChainConfig(Ce):void 0)?.viemChain?.blockExplorers?.default?.url??"",Ge=hl.indexOf(Be),Ie=Te?(ml[Be]||"EXECUTING...").toUpperCase():Be==="success"?"DONE":_e?"INSUFFICIENT BALANCE":Ae&&pt&&!xe?"QUOTE ERROR":w.toUpperCase(),Et=u.useMemo(()=>{if(Y?.status==="success")return"DONE";if(Te)return"PAYING...";if(_e&&P?.asset)return`INSUFFICIENT ${P.asset.symbol}`;if(Ae&&pt&&!xe)return"QUOTE ERROR";if(w)return w.toUpperCase();const $e=ot>0?` ${Q} ${_.symbol}`:"";return Ae?`SWAP & PAY${$e}`:`PAY${$e}`},[Te,_e,P,w,ot,Q,_.symbol,Ae,pt,xe,Y?.status]),De=Be==="success"?()=>{qt(),ae(null)}:Re,bt=Be==="success"?!1:!ye;if(!e)return null;const jt=X?D||`Pay ${_.symbol}`:w,Ht=X?M:a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"3px"},children:[a.jsx("span",{style:{marginTop:"3px",flexShrink:0},children:a.jsx(Ro,{color:ie})}),a.jsx("p",{style:{fontSize:"12px",color:ie,margin:0,lineHeight:"1.4",fontFamily:U},children:He})]}),zt={...T,button:{...T?.button,backgroundColor:V}},Wt=Nt&&a.jsx(No,{fontFamily:U,textPrimary:re,textSecondary:se,cardBg:ee,cardBorder:ue,resolvedDark:H,darkCardBorder:G.cardBorder,primaryColor:V,feePreview:nt,isLoading:st,errorText:ft,directExecutionFeeNote:Ee});if(X){const $e=Y&&(Y.status==="success"||Y.status==="failed")?[{asset:{symbol:P?.asset?.symbol||_.symbol,address:P?.asset?.address||""},amount:Q,txHash:Y.txHash||"",success:Y.status==="success",error:Y.status==="failed"?Y.error:void 0}]:void 0;return a.jsx(rn,{isOpen:e,onClose:t,title:jt,subtitle:Ht,styles:T,dark:H,footerLinkText:"Spicenet accounts \u2192",closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"16px 24px 8px 24px",position:"relative"},children:[W&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(Mo,{onClick:W,color:V,fontFamily:U})}),(!be||m)&&a.jsx("div",{style:{marginBottom:"12px"},children:a.jsx(os,{assets:$,selectedAsset:P??void 0,onAssetSelect:pe,onAmountChange:rf,label:"Pay with",showBalance:!0,showMaxButton:!1,hideAmountInput:!0,displayAmount:P?.asset?Ae?xe?"...":Ue?`~${parseFloat(I.formatUnits(Ue.amountIn,P.asset.decimals)).toFixed(6)}`:void 0:Q??void 0:void 0,dark:H,theme:ce,styles:T})}),a.jsx(pl,{variant:"pay",destinationSymbol:_.symbol,destinationLogoURI:_.logoURI,destinationDecimals:_.decimals,primaryColor:V,fontFamily:U,textPrimary:re,textSecondary:se,cardBg:ee,cardBorder:ue,dk:G,dark:H,isQuoting:xe,quoteError:pt,estimatedOutput:Me,paymentAmount:Q,needsSwap:Ae,exactOutputSwap:Ue,adjustable:E==="adjustable",maxAmount:B,onAmountChange:at}),Wt,Je&&a.jsx(yn,{variant:"error",palette:J,fontFamily:U,style:{marginBottom:"12px"},children:Je}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,onClick:Y?.status==="success"?t:yt,disabled:Y?.status==="success"?!1:!ye,loading:Te,dark:H,styles:zt,children:Et}),Y&&Oe&&a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:10,backgroundColor:H?G.shell:"white",borderRadius:H?"12px":"6px",padding:"16px 0"},children:a.jsx(hr,{type:"payment",isOpen:Y.status!=="processing",isProcessing:Te||Y.status==="processing",closeOnComplete:!1,chainId:Ce,onRetryTx:()=>{Qe(),yt()},onNewTx:ut,onClose:Qe,onComplete:ut,results:$e,styles:T,dark:H})})]})})}return a.jsx(rn,{isOpen:e,onClose:t,title:jt,subtitle:Ht,dark:H,styles:T,theme:N,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px",position:"relative"},children:[a.jsx("div",{style:{marginBottom:"16px"},children:a.jsx(os,{assets:$,selectedAsset:P||void 0,onAssetSelect:pe,onAmountChange:We,disabled:Te||Be==="success",showBalance:!0,label:"From Wallet",placeholder:"0.00",theme:ce,styles:T,dark:O,showMaxButton:!(S==="input-inclusive"&&P?.asset._source==="wallet"&&P.asset._fundingWallet!=="embedded"&&(P.asset.isNative||A.isNativeToken(P.asset.address))),resolveMaxAmount:lt,maxAmount:P?.asset?I.formatUnits(P.asset.balance,P.asset.decimals):void 0})}),P?.asset&&!Xe&&a.jsx(pl,{variant:"supply",destinationSymbol:_.symbol,destinationLogoURI:_.logoURI,destinationDecimals:_.decimals,primaryColor:V,fontFamily:U,textPrimary:re,textSecondary:se,cardBg:ee,cardBorder:ue,dark:H,isQuoting:xe,quoteError:pt,estimatedOutput:Me}),Wt,Be!=="idle"&&a.jsx(of,{step:Be,statusMsg:Ct,txHash:mt,explorerUrl:it,currentStepIdx:Ge,palette:J,cardBg:ee,cardBorder:ue,textPrimary:re,textSecondary:se,fontFamily:U,primaryColor:V,onRetry:dt}),Je&&Be==="idle"&&a.jsx(yn,{variant:"error",palette:J,fontFamily:U,style:{marginBottom:"16px"},children:Je}),a.jsx(g.Button,{variant:"outline",fullWidth:!0,disabled:bt,onClick:De,theme:N,dark:H,styles:zt,style:{fontSize:"20px",fontWeight:600,letterSpacing:"1.5px",fontFamily:L},children:Ie})]})})},lf=()=>{const[e,t]=u.useState("0"),[n,s]=u.useState(null);return{assetAmount:e,setAssetAmount:t,selectedAsset:n,setSelectedAsset:s}};function cf(e,t=0){const[n,s]=u.useState(t),o=e[n]??e[0],r=u.useMemo(()=>o?BigInt(Math.round(o.months*30*24*3600)):0n,[o?.months]);return{selectedDurationIdx:n,setSelectedDurationIdx:s,selectedDuration:o,durationSeconds:r}}function df(){const{actions:e,isReady:t,isAuthenticated:n}=g.useWallet(),s=u.useContext(g.SpiceFlowProviderContext)?.embeddedWalletAddress,o=u.useRef(!1),r=u.useRef(0),i=u.useRef(null),l=u.useRef(e),[d,c]=u.useState(0);l.current=e,u.useEffect(()=>{o.current=!1,r.current=0,i.current&&(clearTimeout(i.current),i.current=null)},[s]),u.useEffect(()=>{if(!s||!t||!n||o.current)return;o.current=!0;let m=!1;return(async()=>{await hn(2e3);try{await g.ensureSmartWallet(s,l.current.signMessage),r.current=0}catch(p){console.warn("[SmartWallet] Registration failed:",p),o.current=!1,!m&&r.current<3&&(r.current+=1,i.current=setTimeout(()=>{c(f=>f+1)},5e3))}})(),()=>{m=!0,i.current&&(clearTimeout(i.current),i.current=null)}},[s,t,n,d])}Ol(),exports.SpiceFlowProvider=g.SpiceFlowProvider,exports.SpiceFlowProviderContext=g.SpiceFlowProviderContext,exports.SpiceflowError=g.SpiceflowError,exports.Spinner=g.Spinner,exports.buildDarkPalette=g.buildDarkPalette,exports.buildLightPalette=g.buildLightPalette,exports.duration=g.duration,exports.easing=g.easing,exports.font=g.font,exports.getChainConfig=g.getChainConfig,exports.getChainName=g.getChainName,exports.getClientForChain=g.getClientForChain,exports.getRelayerErrorDetail=g.getRelayerErrorDetail,exports.isSpiceflowError=g.isSpiceflowError,exports.radius=g.radius,exports.relayerService=g.relayerService,exports.resolveTheme=g.resolveTheme,exports.sanitizeError=g.sanitizeError,exports.transition=g.transition,exports.useIsUserWhitelisted=g.useIsUserWhitelisted,exports.useSpiceBrand=g.useSpiceBrand,exports.useWallet=g.useWallet,exports.z=g.z,Object.defineProperty(exports,"NATIVE_TOKEN_ADDRESS",{enumerable:!0,get:function(){return A.ZERO_ADDRESS}}),Object.defineProperty(exports,"SPICENET_NATIVE_CHAIN_ID",{enumerable:!0,get:function(){return A.SPICENET_NATIVE_CHAIN_ID}}),Object.defineProperty(exports,"SPICE_COMBINED_FEE_RECIPIENT",{enumerable:!0,get:function(){return A.SPICE_COMBINED_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_GAS_FEE_RECIPIENT",{enumerable:!0,get:function(){return A.SPICE_GAS_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_PLATFORM_FEE_RECIPIENT",{enumerable:!0,get:function(){return A.SPICE_PLATFORM_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_SOLVER_ADDRESS",{enumerable:!0,get:function(){return A.SPICE_SOLVER_ADDRESS}}),Object.defineProperty(exports,"applySlippage",{enumerable:!0,get:function(){return A.applySlippage}}),Object.defineProperty(exports,"buildUniV3SwapCalls",{enumerable:!0,get:function(){return A.buildUniV3SwapCalls}}),Object.defineProperty(exports,"getChainIdsByNetwork",{enumerable:!0,get:function(){return A.getChainIdsByNetwork}}),Object.defineProperty(exports,"getEscrowContractAddress",{enumerable:!0,get:function(){return A.getEscrowContractAddress}}),Object.defineProperty(exports,"isNativeToken",{enumerable:!0,get:function(){return A.isNativeToken}}),Object.defineProperty(exports,"isSpicenetChainId",{enumerable:!0,get:function(){return A.isSpicenetChainId}}),Object.defineProperty(exports,"normalizeNativeTokenAddress",{enumerable:!0,get:function(){return A.normalizeNativeTokenAddress}}),Object.defineProperty(exports,"spicenetAbi",{enumerable:!0,get:function(){return A.spicenetAbi}}),Object.defineProperty(exports,"spicenetWithdrawalAbi",{enumerable:!0,get:function(){return A.spicenetAbi}}),exports.AERODROME_BASE_CONFIG=Yo,exports.ALGEBRA_CITREA_CONFIG=iu,exports.AccountDisplay=tf,exports.AddFundsLink=Mo,exports.CheckIcon=Wr,exports.ChevronIcon=Bn,exports.CloseIcon=rs,exports.DEFAULT_LIQUIDITY_VENUES=ri,exports.DetailRow=bn,exports.ProviderLogin=zo,exports.SATSUMA_CITREA_CONFIG=Ko,exports.SPICE_PLATFORM_FEE_BPS=Mn,exports.SearchInput=uo,exports.SelectChainModal=Dd,exports.SpiceDeposit=Rd,exports.SpiceLock=Up,exports.SpiceSupply=af,exports.SpiceWithdraw=rl,exports.StatusBanner=yn,exports.UNIV3_BASE_CONFIG=Ua,exports.UNIV3_ROBINHOOD_CONFIG=La,exports.UNIV3_ROBINHOOD_SUSHI_CONFIG=za,exports.UNIV4_BASE_CONFIG=Ga,exports.UNIV4_ROBINHOOD_CONFIG=Za,exports.V4_NATIVE_CURRENCY=cn,exports.areEquivalentOnChains=is,exports.buildEmbeddedEscrowDepositBatch=Qs,exports.buildLiquidityVenues=Kn,exports.buildPayChainBatches=di,exports.buildRoutedBatches=Qu,exports.buildSpicenetWithdrawalBatch=Vi,exports.buildSupplyChainBatches=ui,exports.calculateBpsFee=Hn,exports.createAerodromeExactOutputVenue=Va,exports.createAerodromeVenue=Go,exports.createAlgebraVenue=Qa,exports.createExactOutputRegistry=Ps,exports.createLiquidityRegistry=Xo,exports.createSatsumaExactOutputVenue=Zo,exports.createSatsumaVenue=us,exports.createUniV3ExactOutputVenue=Zo,exports.createUniV3Venue=us,exports.createUniV4ExactOutputVenue=oi,exports.createUniV4Venue=si,exports.encodeUniV3ExactOutputCall=ja,exports.estimateFeePreview=er,exports.estimateRequiredGrossFunding=wu,exports.estimateSupplyMaxAmount=ki,exports.executePay=ir,exports.executeSupply=Xs,exports.fetchBalances=fn,exports.findEquivalentOnChain=Cn,exports.getAssetChainTokenCandidates=Dn,exports.getBestUniV3ExactOutputQuote=Da,exports.getBestUniV3Quote=Ra,exports.isExternalSource=en,exports.isSupportedSupplyAsset=Xn,exports.resolveAssetTokenAddressOnChain=Qt,exports.resolveFundedToken=So,exports.resolveInputSupplySwapQuote=Hu,exports.resolveRoute=zi,exports.reverseUniV3Path=Pd,exports.scaleTokenAmount=Kt,exports.useAssetInput=lf,exports.useDebouncedEstimate=as,exports.useLockDuration=cf,exports.useSmartWallet=df,exports.useSpiceAssets=ms,exports.useSpiceExecution=ds,exports.useSpicePendingDeposits=ul,exports.useSpiceSupply=mr,exports.useSupplyAssets=Wi,exports.useSupplyQuote=$s,exports.useWalletBalances=mn;