@spicenet-io/spiceflow-ui 4.18.4 → 4.18.5
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 +7 -7
- package/dist/index.js +7 -7
- package/dist/types/deposit.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
(function(){if(typeof document==="undefined"||document.getElementById("spiceflow-styles"))return;var s=document.createElement("style");s.id="spiceflow-styles";s.textContent="@keyframes spiceflow-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}.spiceflow-focus-ring:focus-visible,[data-spiceflow-focus]:focus-visible{border-radius:4px;outline:2px solid currentColor;outline-offset:2px}@media (forced-colors:active){.spiceflow-focus-ring:focus-visible,[data-spiceflow-focus]:focus-visible{outline:2px solid Highlight}}.ibm-plex-mono-thin{font-weight:100}.ibm-plex-mono-extralight,.ibm-plex-mono-thin{font-family:IBM Plex Mono,monospace!important;font-style:normal}.ibm-plex-mono-extralight{font-weight:200}.ibm-plex-mono-light{font-weight:300}.ibm-plex-mono-light,.ibm-plex-mono-regular{font-family:IBM Plex Mono,monospace!important;font-style:normal}.ibm-plex-mono-regular{font-weight:400}.ibm-plex-mono-medium{font-weight:500}.ibm-plex-mono-medium,.ibm-plex-mono-semibold{font-family:IBM Plex Mono,monospace!important;font-style:normal}.ibm-plex-mono-semibold{font-weight:600}.ibm-plex-mono-bold{font-family:IBM Plex Mono,monospace!important;font-style:normal;font-weight:700}#privy-modal-content button{border-radius:6px;font-family:IBM Plex Mono,monospace!important;font-size:small;letter-spacing:-.5px;text-transform:uppercase}#privy-modal-content input{background:#fff;border-radius:6px;padding-top:5px!important}#privy-dialog-title{display:none!important;font-size:18px;padding-bottom:10px;padding-top:10px}.AppLogoContainer-sc-a206bd44-0{display:none}#privy-modal-content{background:var(--Neutral-0,#fafafa);border:6px solid var(--Neutral-1,#e9e9e9);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15),0 330px 92px transparent,0 211px 84px rgba(0,0,0,.01),0 119px 71px rgba(0,0,0,.05),0 53px 53px rgba(0,0,0,.09),0 13px 29px rgba(0,0,0,.1);height:auto!important;padding-bottom:10px}.Subtitle-sc-ddbf22b4-4{font-size:12px;margin-top:-14px;opacity:.5}.StyledLink-sc-1c6127e5-0{background:none!important}.StyledLink-sc-c8577138-0,.login-method-button{font-family:IBM Plex Mono,monospace!important}.StyledLink-sc-c8577138-0{font-style:uppercase}#protected-by-privy{color:#000!important}";document.head.appendChild(s)})();
|
|
3
|
-
"use strict";var ic=Object.create;var $r=Object.defineProperty;var lc=Object.getOwnPropertyDescriptor;var cc=Object.getOwnPropertyNames;var dc=Object.getPrototypeOf,uc=Object.prototype.hasOwnProperty;var pc=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of cc(t))!uc.call(e,o)&&o!==n&&$r(e,o,{get:()=>t[o],enumerable:!(s=lc(t,o))||s.enumerable});return e};var fc=(e,t,n)=>(n=e!=null?ic(dc(e)):{},pc(t||!e||!e.__esModule?$r(n,"default",{value:e,enumerable:!0}):n,e));const a=require("react/jsx-runtime"),u=require("./privy-Df1bsdsz.js"),p=require("react"),S=require("@spicenet-io/spiceflow-core"),yn=require("wagmi"),T=require("viem"),un=require("viem/actions"),fs=require("@privy-io/react-auth"),Gn=require("react-dom");require("@tanstack/react-query");const mc="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@100;200;300;400;500;600;700&display=swap",hc="spiceflow-ibm-plex-mono",gc="spiceflow-preconnect-googleapis",xc="spiceflow-preconnect-gstatic";function Eo(e,t){if(document.getElementById(e))return;const n=t();n.id=e,document.head.appendChild(n)}function yc(){typeof document>"u"||(Eo(gc,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.googleapis.com",e}),Eo(xc,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.gstatic.com",e.crossOrigin="",e}),Eo(hc,()=>{const e=document.createElement("link");return e.rel="stylesheet",e.href=mc,e}))}const wc={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",84532:"0x4200000000000000000000000000000000000006"},_r=T.parseAbi(["function deposit() payable","function withdraw(uint256 wad)"]);function Fo(e){return u.getChainConfig(e)?.wrappedNativeTokenAddress??wc[e]}const To=(e,t)=>({to:e,value:t,data:T.encodeFunctionData({abi:_r,functionName:"deposit"})}),Bo=(e,t)=>({to:e,value:0n,data:T.encodeFunctionData({abi:_r,functionName:"withdraw",args:[t]})});function Ro(e,t,n){const s=S.isNativeToken(t),o=S.isNativeToken(n);if(!s&&!o)return null;const r=Fo(e);return r?{weth:r,wrapIn:s,unwrapOut:o}:null}function ea(e,t,n,s){const o=Ro(e,t,n);return!o||s<=0n?null:o.wrapIn&&!o.unwrapOut&&n.toLowerCase()===o.weth.toLowerCase()?[To(o.weth,s)]:o.unwrapOut&&!o.wrapIn&&t.toLowerCase()===o.weth.toLowerCase()?[Bo(o.weth,s)]:null}function bc(e){return{...e,resolve:async(t,n,s,o)=>{const r=ea(n,t.tokenIn,t.tokenOut,t.amountIn);if(r)return{venue:"native-wrap",amountOut:t.amountIn,amountOutMinimum:t.amountIn,calls:r};const i=await e.resolve(t,n,s,o);if(i)return i;const l=Ro(n,t.tokenIn,t.tokenOut);if(!l)return null;const c=await e.resolve({...t,tokenIn:l.wrapIn?l.weth:t.tokenIn,tokenOut:l.unwrapOut?l.weth:t.tokenOut},n,s,o);return c?{...c,calls:[...l.wrapIn?[To(l.weth,t.amountIn)]:[],...c.calls,...l.unwrapOut?[Bo(l.weth,c.amountOutMinimum)]:[]]}:null}}}function vc(e){return{...e,resolve:async(t,n,s)=>{const o=ea(n,t.tokenIn,t.tokenOut,t.amountOut);if(o)return{venue:"native-wrap",amountIn:t.amountOut,amountInMax:t.amountOut,amountOut:t.amountOut,calls:o};const r=await e.resolve(t,n,s);if(r)return r;const i=Ro(n,t.tokenIn,t.tokenOut);if(!i)return null;const l=await e.resolve({...t,tokenIn:i.wrapIn?i.weth:t.tokenIn,tokenOut:i.unwrapOut?i.weth:t.tokenOut},n,s);return l?{...l,calls:[...i.wrapIn?[To(i.weth,l.amountInMax)]:[],...l.calls,...i.unwrapOut?[Bo(i.weth,l.amountOut)]:[]]}:null}}}const ta=[100,500,3e3,1e4];function Hs(e,t,n,s,o){const r=[];for(const i of n){const l=typeof i=="object"&&!Array.isArray(i)?i:void 0,c=l?l.tokens:Array.isArray(i)?i:[i];if(!c.length||c.length>2)throw new Error("A v3 route must have one or two intermediate tokens");const d=[e,...c,t];if(l&&(l.feeTiers.length!==d.length-1||l.feeTiers.some(m=>!m.length)))throw new Error("A v3 route needs fee tiers for every pool");if(new Set(d.map(m=>m.toLowerCase())).size!==d.length)continue;const f=(m,h)=>{if(m===d.length){r.push(o==="in"?h:na(h));return}for(const y of l?.feeTiers[m-1]??s)f(m+1,T.concatHex([h,T.encodePacked(["uint24","address"],[y,d[m]])]))};f(1,d[0])}return[...new Set(r)]}function na(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 Cc=T.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)"]),kc=T.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)"]),Sc=1800;function sa(e){const{config:t,route:n,tokenIn:s,tokenOut:o,recipient:r,amountOut:i}=e,l=e.amountInMaximum,c=e.routerHasDeadline?kc:Cc,d=e.routerHasDeadline?{deadline:BigInt(Math.floor(Date.now()/1e3)+Sc)}:{},f=n.path?T.encodeFunctionData({abi:c,functionName:"exactOutput",args:[{path:n.path,recipient:r,...d,amountOut:i,amountInMaximum:l}]}):T.encodeFunctionData({abi:c,functionName:"exactOutputSingle",args:[{tokenIn:s,tokenOut:o,fee:n.fee,recipient:r,...d,amountOut:i,amountInMaximum:l,sqrtPriceLimitX96:0n}]});return{to:t.swapRouter,value:0n,data:f}}const Ic=T.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 ms(e,t,n,s,o){const r=u.getClientForChain(e),{result:i}=await r.simulateContract({address:t.quoterV2,abi:Ic,functionName:o==="in"?"quoteExactInput":"quoteExactOutput",args:[n,s]}),[l,,,c]=i;if(l<=0n)throw new Error("No liquidity along this path.");return{amount:l,gasEstimate:c}}async function Ac(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 u.getClientForChain(r).simulateContract({address:i.quoterV2,abi:S.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 oa(e){const t=e.feeTiers??ta,n=Hs(e.tokenIn,e.tokenOut,e.hubs??[],t,"in"),s=await Promise.allSettled([...t.map(async r=>({...await Ac({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await ms(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 Ec=[{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 Fc(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 u.getClientForChain(r).simulateContract({address:i.quoterV2,abi:Ec,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 ra(e){const t=e.feeTiers??ta,n=Hs(e.tokenIn,e.tokenOut,e.hubs??[],t,"out"),s=await Promise.allSettled([...t.map(async r=>({...await Fc({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await ms(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}function Tc(e){return e.type==="swap"}const hs=.02,Bc=[1,8453,42161,10,137,43114,56],Rc="https://api.1inch.dev/swap/v6.0";function jo(e,t){return S.applySlippage(e,t)}function jc(e){const t=e?.baseUrl??Rc;return{name:"1inch",chainIds:e?.chainIds??Bc,resolve:async(n,s,o)=>{const r=n.maxSlippage??hs,i=r*100,l=S.isNativeToken(n.tokenIn)?S.NATIVE_TOKEN_ADDRESS:n.tokenIn,c=S.isNativeToken(n.tokenOut)?S.NATIVE_TOKEN_ADDRESS:n.tokenOut,d=S.isNativeToken(n.tokenIn);try{const f=new URL(`${t}/${s}/swap`);f.searchParams.set("src",l),f.searchParams.set("dst",c),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 m={Accept:"application/json"};e?.apiKey&&(m.Authorization=`Bearer ${e.apiKey}`);const h=await fetch(f.toString(),{headers:m});if(!h.ok)throw new u.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] API returned ${h.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 ${h.status}`});const y=await h.json();if(!y.dstAmount||!y.tx)return console.warn(`[1inchVenue] No route data for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const g=BigInt(y.dstAmount);if(g<=0n)return console.warn(`[1inchVenue] Zero output for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const w=jo(g,r),x=[];return y.tx.to&&!d&&x.push({to:n.tokenIn,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"approve",args:[y.tx.to,n.amountIn]})}),x.push({to:y.tx.to,value:BigInt(y.tx.value||"0"),data:y.tx.data}),{venue:"1inch",amountOut:g,amountOutMinimum:w,calls:x}}catch(f){if(f instanceof u.SpiceflowError)throw f;const m=f instanceof Error?f.message:String(f);throw new u.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] Exception for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}: ${m}`,{venue:"1inch",chainId:s,tokenIn:n.tokenIn,tokenOut:n.tokenOut,amountIn:n.amountIn.toString(),cause:m})}}}}const aa=[4114,5115],Oo={name:"Satsuma",swapRouter:"0x565eD3D57fe40f78A46f348C220121AE093c3cF8",quoterV2:"0x428f20dd8926Eabe19653815Ed0BE7D6c36f8425",feeTiers:[3e3]},ia={name:"Uniswap v3",swapRouter:"0x2626664c2603336E57B271c5C0b26F421741e481",quoterV2:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",chainIds:[8453],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},la={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[1],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]},ca={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[42161],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x82aF49447D8a07e3bd95BD0d56f35241523fBab1","0xaf88d065e77c8cC2239327C5EDb3A432268e5831"]},Oc={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[137],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270","0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"]},Dc={name:"Uniswap v3",swapRouter:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",quoterV2:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",chainIds:[56],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c","0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"]},Nc={name:"Uniswap v3",swapRouter:"0xfe31f71c1b106eac32f1a19239c9a9a72ddfb900",quoterV2:"0x661e93cca42afacb172121ef892830ca3b70f08d",chainIds:[143],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A","0x754704Bc059F8C67012fEd69BC8A327a5aafb603"]},da={name:"Uniswap v3",swapRouter:"0xcaf681a66d020601342297493863e78c959e5cb2",quoterV2:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},ua={name:"SushiSwap",swapRouter:"0x1e406484F1F204b23cE84B9901C0171a738fd406",quoterV2:"0x3E290e5E01818002A0b672148BdC7514D861C7B3",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"],routerHasDeadline:!0},pa=T.parseAbi(["function exactInput((bytes path, address recipient, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),fa=T.parseAbi(["function exactInputSingle((address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum, uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountOut)","function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),Pc=T.parseAbi(["function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),Mc=T.parseAbi(["function exactOutput((bytes path, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),Do=1800,ma=[1,50,100,200,2e3],Vs={name:"Aerodrome",swapRouter:"0xcbBb8035cAc7D4B3Ca7aBb74cF7BdF900215Ce0D",quoterV2:"0x3d4C22254F86f64B7eC90ab8F7aeC1FBFD271c6C",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]};function Qs(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??ma;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(S.isNativeToken(o.tokenIn)||S.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??hs,c=[...s.map(x=>T.encodePacked(["address","uint24","address"],[o.tokenIn,x,o.tokenOut])),...Hs(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"in")],d={quoterV2:e.quoterV2},f=await Promise.allSettled(c.map(async x=>({path:x,amountOut:(await ms(r,d,x,o.amountIn,"in")).amount})));let m=null;for(const x of f)x.status==="fulfilled"&&(!m||x.value.amountOut>m.amountOut)&&(m=x.value);if(!m)return console.warn(`[AerodromeVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const h=jo(m.amountOut,l),y=BigInt(Math.floor(Date.now()/1e3)+Do),g=T.encodeFunctionData({abi:Pc,functionName:"exactInput",args:[{path:m.path,recipient:i,deadline:y,amountIn:o.amountIn,amountOutMinimum:h}]}),w=[{to:o.tokenIn,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"approve",args:[e.swapRouter,o.amountIn]})},{to:e.swapRouter,value:0n,data:g}];return{venue:t,amountOut:m.amountOut,amountOutMinimum:h,calls:w}}}}function ha(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??ma;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(S.isNativeToken(o.tokenIn)||S.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??hs,c=[...s.map(w=>T.encodePacked(["address","uint24","address"],[o.tokenOut,w,o.tokenIn])),...Hs(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"out")],d={quoterV2:e.quoterV2},f=await Promise.allSettled(c.map(async w=>({path:w,amountIn:(await ms(r,d,w,o.amountOut,"out")).amount})));let m=null;for(const w of f)w.status==="fulfilled"&&(!m||w.value.amountIn<m.amountIn)&&(m=w.value);if(!m)return console.warn(`[AerodromeExactOutputVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const h=BigInt(Math.round(l*1e4)),y=m.amountIn+m.amountIn*h/10000n,g=BigInt(Math.floor(Date.now()/1e3)+Do);return{venue:t,amountIn:m.amountIn,amountInMax:y,amountOut:o.amountOut,calls:[{to:e.swapRouter,value:0n,data:T.encodeFunctionData({abi:Mc,functionName:"exactOutput",args:[{path:m.path,recipient:i,deadline:g,amountOut:o.amountOut,amountInMaximum:y}]})}]}}}}function gs(e){const t=e.name??"Uniswap v3",n=e.chainIds??aa;return{name:t,chainIds:n,resolve:async(s,o,r,i)=>{if(S.isNativeToken(s.tokenIn)||S.isNativeToken(s.tokenOut))return null;const l=s.maxSlippage??hs;let c;try{let g;if(i){if(i.venue!==t)return null;const w=i.calls.find(b=>b.to.toLowerCase()===e.swapRouter.toLowerCase());if(!w)return null;const x=T.decodeFunctionData({abi:e.routerHasDeadline?fa:[...pa,...S.uniV3SwapRouterAbi],data:w.data});if(x.functionName==="exactInput"){const{path:b}=x.args[0];if(b.slice(0,42).toLowerCase()!==s.tokenIn.toLowerCase()||`0x${b.slice(-40)}`.toLowerCase()!==s.tokenOut.toLowerCase())return null;g={path:b,fee:0}}else if(x.functionName==="exactInputSingle"){const{tokenIn:b,tokenOut:C,fee:v}=x.args[0];if(b.toLowerCase()!==s.tokenIn.toLowerCase()||C.toLowerCase()!==s.tokenOut.toLowerCase())return null;g={fee:v}}else return null}c=g?.path?{...g,amountOut:(await ms(o,e,g.path,s.amountIn,"in")).amount}:await oa({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountIn:s.amountIn,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:g?[g.fee]:e.feeTiers,hubs:g?[]:[...e.hubCurrencies??[],...e.hubPaths??[]]})}catch{return console.warn(`[UniV3Venue] No viable route for ${s.tokenIn} \u2192 ${s.tokenOut} on chain ${o}.`),null}const d=jo(c.amountOut,l),f=e.routerHasDeadline?{deadline:BigInt(Math.floor(Date.now()/1e3)+Do)}:{},m=e.routerHasDeadline?fa:c.path?pa:S.uniV3SwapRouterAbi,h=c.path?T.encodeFunctionData({abi:m,functionName:"exactInput",args:[{path:c.path,recipient:r,...f,amountIn:s.amountIn,amountOutMinimum:d}]}):T.encodeFunctionData({abi:m,functionName:"exactInputSingle",args:[{tokenIn:s.tokenIn,tokenOut:s.tokenOut,fee:c.fee,recipient:r,...f,amountIn:s.amountIn,amountOutMinimum:d,sqrtPriceLimitX96:0n}]}),y=[{to:s.tokenIn,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"approve",args:[e.swapRouter,s.amountIn]})},{to:e.swapRouter,value:0n,data:h}];return{venue:t,amountOut:c.amountOut,amountOutMinimum:d,calls:y}}}}function No(e){const t=e.name??"Uniswap v3",n=e.chainIds??aa;return{name:t,chainIds:n,resolve:async(s,o,r)=>{if(S.isNativeToken(s.tokenIn)||S.isNativeToken(s.tokenOut))return null;const i=s.maxSlippage??hs;let l;try{l=await ra({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountOut:s.amountOut,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:e.feeTiers,hubs:[...e.hubCurrencies??[],...e.hubPaths??[]]})}catch{return null}const c=BigInt(Math.round(i*1e4)),d=l.amountIn+l.amountIn*c/10000n;return{venue:t,amountIn:l.amountIn,amountInMax:d,amountOut:s.amountOut,calls:[sa({config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},routerHasDeadline:e.routerHasDeadline,route:l,tokenIn:s.tokenIn,tokenOut:s.tokenOut,recipient:r,amountOut:s.amountOut,amountInMaximum:d})]}}}}function ga(e){const t=[];e?.customVenues&&t.push(...e.customVenues),e?.satsuma&&t.push(gs(e.satsuma)),e?.aerodrome!==!1&&t.push(Qs(e?.aerodrome??Vs)),t.push(jc(e?.oneInch));const n=t.map(bc);function s(i){return n.find(l=>l.chainIds.includes(i))}async function o(i,l,c,d){const f=n.filter(g=>g.chainIds.includes(l));if(f.length===0)throw new u.SpiceflowError("NO_VENUE_FOR_CHAIN",`No liquidity venue configured for chain ${l}. Cannot resolve swap ${i.tokenIn} \u2192 ${i.tokenOut}.`,{chainId:l,tokenIn:i.tokenIn,tokenOut:i.tokenOut,amountIn:i.amountIn.toString()});const m=await Promise.allSettled(f.map(g=>g.resolve(i,l,c,d)));let h=null;for(const g of m)d&&g.status==="fulfilled"&&g.value&&(g.value.venue!==d.venue||g.value.calls.length!==d.calls.length||g.value.calls.some((w,x)=>w.to.toLowerCase()!==d.calls[x].to.toLowerCase()||w.data.slice(0,10)!==d.calls[x].data.slice(0,10)))||g.status==="fulfilled"&&g.value&&(!h||g.value.amountOut>h.amountOut)&&(h=g.value);if(h)return h;const y=m.find(g=>g.status==="rejected");if(y)throw y.reason;return null}async function r(i,l,c){const d=[],f=[];for(const m of i){if(!Tc(m)){d.push(m);continue}const h=await o(m,l,c);if(!h)throw new u.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${m.tokenIn} \u2192 ${m.tokenOut} on chain ${l}.`,{chainId:l,tokenIn:m.tokenIn,tokenOut:m.tokenOut,amountIn:m.amountIn.toString()});d.push(...h.calls),f.push(h)}return{calls:d,resolvedSwaps:f}}return{resolveSwapIntents:r,resolveSwap:o,getVenueForChain:s,venues:t}}const hn="0x0000000000000000000000000000000000000000",Po=[{fee:100,tickSpacing:1},{fee:500,tickSpacing:10},{fee:3e3,tickSpacing:60},{fee:1e4,tickSpacing:200}],xa=hn,ya=.02,Uc=1800,wa={name:"Uniswap v4",quoter:"0x0d5e0f971ed27fbff6c2837bf31316121532048d",universalRouter:"0x6ff5693b99212da76ad316178a184ab56d299b43",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006",hn,"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},ba={name:"Uniswap v4",quoter:"0x8dc178efb8111bb0973dd9d722ebeff267c98f94",universalRouter:"0x8876789976decbfcbbbe364623c63652db8c0904",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",routerHasHopPrice:!0,chainIds:[4663],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73",hn,"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},va=T.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)"]),Wc=T.parseAbi(["function approve(address token, address spender, uint160 amount, uint48 expiration)"]),Lc=T.parseAbi(["function execute(bytes commands, bytes[] inputs, uint256 deadline) payable"]),Ca="0x10",qc="04",zc="06",Hc="07",Vc="08",Qc="09",Gs="0c",Ks="0e",Gc=[{name:"currency0",type:"address"},{name:"currency1",type:"address"},{name:"fee",type:"uint24"},{name:"tickSpacing",type:"int24"},{name:"hooks",type:"address"}],Kc=[{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 Zs(e){return S.isNativeToken(e)?hn:e}function Zc(e,t){return e.toLowerCase()<t.toLowerCase()?[e,t]:[t,e]}function ka(e,t,n,s,o){const r=[],[i,l]=Zc(e,t);for(const{fee:d,tickSpacing:f}of Po)r.push({kind:"single",poolKey:{currency0:i,currency1:l,fee:d,tickSpacing:f,hooks:xa},zeroForOne:wn(e,i)});const c=(d,f)=>!!o&&(wn(d,hn)&&wn(f,o)||wn(d,o)&&wn(f,hn));for(const d of n)if(!(wn(d,e)||wn(d,t))&&!(c(d,e)||c(d,t)))for(const f of Po)for(const m of Po){const h=(y,g)=>({intermediateCurrency:y,fee:g.fee,tickSpacing:g.tickSpacing,hooks:xa,hookData:"0x"});r.push({kind:"multi",path:s==="in"?[h(d,f),h(t,m)]:[h(e,f),h(d,m)]})}return r}async function Sa(e,t,n,s,o,r){const i=u.getClientForChain(e),l=(await Promise.allSettled(n.map(async c=>{const{result:d}=c.kind==="single"?await i.simulateContract({address:t.quoter,abi:va,functionName:r==="in"?"quoteExactInputSingle":"quoteExactOutputSingle",args:[{poolKey:c.poolKey,zeroForOne:c.zeroForOne,exactAmount:o,hookData:"0x"}]}):await i.simulateContract({address:t.quoter,abi:va,functionName:r==="in"?"quoteExactInput":"quoteExactOutput",args:[{exactCurrency:s,path:c.path,exactAmount:o}]}),f=d[0];if(f<=0n)throw new Error("zero quote");return{candidate:c,amount:f}}))).filter(c=>c.status==="fulfilled").map(c=>c.value);return l.length===0?null:(l.sort((c,d)=>c.amount<d.amount?-1:c.amount>d.amount?1:0),r==="in"?l[l.length-1]:l[0])}function Ia(e){const{candidate:t,direction:n,currencyIn:s,currencyOut:o,recipient:r,exactAmount:i,limitAmount:l,deadline:c,routerHasHopPrice:d,sweepNativeTo:f}=e;let m,h;t.kind==="single"?(m=n==="in"?`0x${zc}${Gs}${Ks}`:`0x${Vc}${Gs}${Ks}`,h=T.encodeAbiParameters([{type:"tuple",components:[{name:"poolKey",type:"tuple",components:Gc},{name:"zeroForOne",type:"bool"},{name:n==="in"?"amountIn":"amountOut",type:"uint128"},{name:n==="in"?"amountOutMinimum":"amountInMaximum",type:"uint128"},...d?[{name:"minHopPriceX36",type:"uint256"}]:[],{name:"hookData",type:"bytes"}]}],[{poolKey:t.poolKey,zeroForOne:t.zeroForOne,[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l,...d?{minHopPriceX36:0n}:{},hookData:"0x"}])):(m=n==="in"?`0x${Hc}${Gs}${Ks}`:`0x${Qc}${Gs}${Ks}`,h=T.encodeAbiParameters([{type:"tuple",components:[{name:n==="in"?"currencyIn":"currencyOut",type:"address"},{name:"path",type:"tuple[]",components:Kc},...d?[{name:"minHopPriceX36",type:"uint256[]"}]:[],{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,...d?{minHopPriceX36:[]}:{},[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l}]));const y=T.encodeAbiParameters([{type:"address"},{type:"uint256"}],[s,n==="in"?i:l]),g=T.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[o,r,0n]),w=T.encodeAbiParameters([{type:"bytes"},{type:"bytes[]"}],[m,[h,y,g]]),x=f?`${Ca}${qc}`:Ca,b=f?[w,T.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[hn,f,0n])]:[w];return T.encodeFunctionData({abi:Lc,functionName:"execute",args:[x,b,c]})}function Aa(){return BigInt(Math.floor(Date.now()/1e3)+Uc)}function Ea(e,t,n,s){return{to:e.permit2,value:0n,data:T.encodeFunctionData({abi:Wc,functionName:"approve",args:[t,e.universalRouter,n,Number(s)]})}}function Fa(e){const t=e.name??"Uniswap v4",n=e.v3?gs({...e.v3,chainIds:e.chainIds}):null;return{name:t,chainIds:e.chainIds,resolve:async(s,o,r)=>{const i=s.maxSlippage??ya,l=Zs(s.tokenIn),c=Zs(s.tokenOut),d=S.isNativeToken(s.tokenIn),f=e.hubCurrencies??[hn];let m=null;if(!wn(l,c)&&s.amountIn>0n){const h=await Sa(o,e,ka(l,c,f,"in",Fo(o)),l,s.amountIn,"in").catch(()=>null);if(h){const y=S.applySlippage(h.amount,i),g=Aa(),w=[];d||(w.push({to:s.tokenIn,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"approve",args:[e.permit2,s.amountIn]})}),w.push(Ea(e,s.tokenIn,s.amountIn,g))),w.push({to:e.universalRouter,value:d?s.amountIn:0n,data:Ia({candidate:h.candidate,direction:"in",currencyIn:l,currencyOut:c,recipient:r,exactAmount:s.amountIn,limitAmount:y,deadline:g,routerHasHopPrice:e.routerHasHopPrice})}),m={venue:t,amountOut:h.amount,amountOutMinimum:y,calls:w}}}return!m&&n?n.resolve(s,o,r):m}}}function Ta(e){const t=e.name??"Uniswap v4";return{name:t,chainIds:e.chainIds,resolve:async(n,s,o)=>{const r=S.isNativeToken(n.tokenIn),i=Zs(n.tokenIn),l=Zs(n.tokenOut);if(wn(i,l)||n.amountOut<=0n)return null;const c=n.maxSlippage??ya,d=e.hubCurrencies??[hn],f=await Sa(s,e,ka(i,l,d,"out",Fo(s)),l,n.amountOut,"out").catch(()=>null);if(!f)return null;const m=BigInt(Math.round(c*1e4)),h=f.amount+f.amount*m/10000n,y=Aa();return{venue:t,amountIn:f.amount,amountInMax:h,amountOut:n.amountOut,calls:[...r?[]:[Ea(e,n.tokenIn,h,y)],{to:e.universalRouter,value:r?h:0n,data:Ia({candidate:f.candidate,direction:"out",currencyIn:i,currencyOut:l,recipient:o,exactAmount:n.amountOut,limitAmount:h,deadline:y,routerHasHopPrice:e.routerHasHopPrice,sweepNativeTo:r?o:void 0})}]}}}}const Mo=[{...Oo,protocol:"uniswap-v3",chainId:4114},{...Oo,protocol:"uniswap-v3",chainId:5115},{...ia,protocol:"uniswap-v3",chainId:8453},{...la,protocol:"uniswap-v3",chainId:1},{...ca,protocol:"uniswap-v3",chainId:42161},{...Oc,protocol:"uniswap-v3",chainId:137},{...Dc,protocol:"uniswap-v3",chainId:56},{...Nc,protocol:"uniswap-v3",chainId:143},{...da,protocol:"uniswap-v3",chainId:4663},{...ua,protocol:"uniswap-v3",chainId:4663},{...wa,protocol:"uniswap-v4",chainId:8453},{...ba,protocol:"uniswap-v4",chainId:4663},{...Vs,protocol:"aerodrome-slipstream",chainId:8453}];function Pn(e){const t=e?.includeDefaults===!1?e.venues??[]:[...Mo,...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(gs(i)),s.push(No(i));break}case"uniswap-v4":{const i={...o,chainIds:r};n.push(Fa(i)),s.push(Ta(i));break}case"aerodrome-slipstream":{const i={...o,chainIds:r};n.push(Qs(i)),s.push(ha(i));break}default:{const i=o;throw new u.SpiceflowError("INVALID_PARAMS",`Unsupported liquidity venue protocol: ${i.protocol}`,{protocol:i.protocol})}}}return{input:n,output:s}}const Uo=new Set(["WBTC","CBTC"]),Ba=new Set(["btc","wbtc","wcbtc","cbtc"]);function Ra(e,t){return!e||!t?!1:e===t?!0:Uo.has(e)&&Uo.has(t)}function gn(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 Ys(e){return(e??"").trim().replace(/^test\s+/i,"").replace(/^spice/i,"").toLowerCase().replace(/[^a-z0-9]/g,"")}function Yc(e){return new Set([e.receiptTokenName,e.displaySymbol,e.symbol,e.displayName,e.name].map(Ys).filter(Boolean))}function Xc(e,t){const n=Yc(e),s=[t.symbol,t.name,t.equivalenceGroup].map(Ys);if(s.some(i=>i&&n.has(i)))return!0;const o=[...n].some(i=>Ba.has(i)),r=s.some(i=>Ba.has(i))||Uo.has(t.equivalenceGroup??"");return o&&r}function ja(e,t,n){const s=new Set(t.map(Ys).filter(Boolean)),o=r=>{if(n&&u.addressesEqual(r.address,n))return 0;const i=[r.symbol,r.name,r.equivalenceGroup].map(Ys).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 Kn(e,t){const n=e.chainTokens?Object.keys(e.chainTokens):[],s=[];for(const o of n){const r=gn(o);if(!r||r.chainId!==t)continue;const i=r.address,l=S.isNativeToken(i)?u.getChainConfig(t)?.nativeCurrency:void 0,c=S.getTokenByAddress(i,t)??(l?{...l}:void 0);c&&(!Wo(e,i,t)&&!(e.isUniversal&&Xc(e,c))||s.some(d=>u.addressesEqual(d,i))||s.push(i))}return ja(s.map(o=>{const r=S.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 Wo(e,t,n){return e.chainId===n&&u.addressesEqual(e.address,t)?!0:xs(e.address,e.chainId,t,n)}async function Jc(e,t){const n=u.getClientForChain(e),s=S.getEscrowContractAddress(e);return S.isNativeToken(t)?n.getBalance({address:s}):await n.readContract({address:t,abi:T.erc20Abi,functionName:"balanceOf",args:[s]})}function Lo(e,t,n){const s=S.getTokensForChain(n),o=s.find(i=>u.addressesEqual(i.address,e));if(o&&(t===n||!S.isNativeToken(e)))return o;const r=S.getTokenByAddress(e,t);if(r)return ja(s.filter(i=>Ra(i.equivalenceGroup,r.equivalenceGroup)),[r.symbol,r.name,r.equivalenceGroup])[0]}function Xs(e){return e.equivalenceGroup==="USDC"&&e.symbol.toUpperCase()!=="USDT"}function Oa(e){const t=S.getEscrowContract(e);if(!t||t===S.ZERO_ADDRESS)return;const n=S.getTokensForChain(e).filter(Xs);return n.find(s=>s.symbol.toUpperCase()==="USDC")??n[0]}function qo(e,t){if(e.chainId===t)return null;const n=S.getEscrowContract(e.chainId),s=S.getEscrowContract(t);if(!n||n===S.ZERO_ADDRESS||!s||s===S.ZERO_ADDRESS)return null;const o=!e.isNative&&!S.isNativeToken(e.address)?S.getTokenByAddress(e.address,e.chainId):void 0,r=o&&Xs(o)?Lo(e.address,e.chainId,t):void 0,i=r?o:Oa(e.chainId),l=r??Oa(t);if(!i||!l)return null;const c=d=>({address:d.address,symbol:d.symbol,decimals:d.decimals,chainId:d.chainId});return{source:c(i),destination:c(l)}}function $c(e,t){return!!qo(e,t)}function sn(e,t){if(e.chainId===t)return e.address;const n=Lo(e.address,e.chainId,t);return n?n.address:null}async function bn(e,t,n,s){const o=S.getTokenByAddress(t,n);return o?o.decimals:e?.chainId===n&&u.addressesEqual(e.address,t)&&!e.isUniversal?e.decimals:s?.chainId===n&&u.addressesEqual(s.address,t)?s.decimals:u.getTokenDecimals(n,t)}async function Da(e,t,n={}){const s=sn(e,t),o=Kn(e,t);if(o.length===0)return s;if(o.length===1)return o[0];const r=n.requiredAmount??0n,i=l=>{const c=o.map(d=>({candidate:d,balance:l.get(S.isNativeToken(d)?"native":d.toLowerCase())??0n})).filter(d=>d.balance>0n).sort((d,f)=>d.balance===f.balance?0:d.balance>f.balance?-1:1);return c.length===0?null:((r>0n?c.find(d=>d.balance>=r):c[0])??c[0]).candidate};try{const l=await Promise.all(o.map(async f=>({key:S.isNativeToken(f)?"native":f.toLowerCase(),value:await Jc(t,f)}))),c=new Map(l.map(({key:f,value:m})=>[f,m])),d=i(c);if(d)return d}catch{}return s}function xs(e,t,n,s){const o=S.getTokenByAddress(e,t),r=S.getTokenByAddress(n,s);return o&&r?Ra(o.equivalenceGroup,r.equivalenceGroup):S.areEquivalent(e,n)}function Js(e,t){return xs(e.address,e.chainId,t.address,t.chainId)}const Na=.01;function Pa(e,t=!1){const n=Number.isFinite(e.balanceUsd)&&e.balanceUsd>0;return e.isDiscovered?n&&e.balanceUsd>=Na:!t||!n||e.balanceUsd>=Na}function $s(e,t=!1){return!!e&&e._source==="wallet"&&(e.location==="external"||e._fundingWallet==="external"||!e.location&&!e._fundingWallet&&t)}function ye(e){return e.positionId??`${e.owner?.toLowerCase()??""}:${e.location??e._source??""}:${e.chainId}:${e.receiptTokenId??S.normalizeNativeTokenAddress(e.address).toLowerCase()}`}function Ma(e,t){if(!t?.length||e.symbol!==void 0&&u.isAssetAllowed({...e,symbol:e.symbol},t))return!0;const n=s=>t.some(o=>u.addressesEqual(S.normalizeNativeTokenAddress(o),S.normalizeNativeTokenAddress(s)));return n(e.address)||Object.keys(e.chainTokens??{}).some(s=>{const o=gn(s);return o?n(o.address):!1})}function En(e,t,n,s,o,r){const i=(w,x=!1)=>({eligible:!1,reason:w,policyExcluded:x}),l=e._source==="wallet"||e.location==="external"||e.location==="embedded",c=t==="spend-source"&&l&&!!s&&e.chainId===s.chainId&&u.addressesEqual(S.normalizeNativeTokenAddress(e.address),S.normalizeNativeTokenAddress(s.address));if(n.isWhitelistGateActive||!c&&!u.isAssetAllowed(e,n.allowedTokens))return i("Asset excluded by client policy",!0);if(t!=="withdraw-destination"&&!c&&!Pa(e))return i("Asset is unpriced or below the minimum value",!0);if(t==="holding")return{eligible:!0,reason:null};if(e.balanceError)return i(e.balanceError);if(!c&&!Ma(e,o))return i("Asset excluded by action policy",!0);const d=new Set(s?[s.chainId]:[]);e._source!=="spice"&&e.location!=="rollup"&&d.add(e.chainId);for(const w of d)if(!u.getRpcUrlForChain(w,n.rpcOverrides)?.trim())return i(`Configure SpiceFlowProvider rpcOverrides[${w}] before using this asset.`);if(r?.requiresEscrow){const w=S.getTokenByAddress(e.address,e.chainId);if(!w||!Xs(w))return i("This asset has no supported escrow mapping")}if(!s)return{eligible:!0,reason:null};const f=n.liquidityVenues?.includeDefaults===!1?n.liquidityVenues.venues??[]:[...Mo,...n.liquidityVenues?.venues??[]],m=w=>f.some(x=>x.chainId===w),h=l&&e.chainId!==s.chainId,y=h?qo(e,s.chainId):null;if(h&&!y)return i("No supported source route");if(y&&!u.addressesEqual(S.normalizeNativeTokenAddress(e.address),S.normalizeNativeTokenAddress(y.source.address))&&!m(e.chainId))return i("No conversion venue configured on the source chain");const g=y?.destination.address??sn(e,s.chainId);return t==="withdraw-destination"?(e.chainTokens||e.receiptTokenId?Kn(e,s.chainId):g?[g]:[]).some(w=>u.addressesEqual(S.normalizeNativeTokenAddress(w),S.normalizeNativeTokenAddress(s.address)))?{eligible:!0,reason:null}:i("No supported withdrawal mapping"):g&&u.addressesEqual(S.normalizeNativeTokenAddress(g),S.normalizeNativeTokenAddress(s.address))?{eligible:!0,reason:null}:!g&&!$c(e,s.chainId)?i("No supported destination route"):m(s.chainId)?{eligible:!0,reason:null}:i("No conversion venue configured on the destination chain")}function _s(){const e=p.useContext(u.SpiceFlowProviderContext),[t]=p.useState(u.createInventoryStore);return e?.inventory??t}function zo(e,t,n,s,o){const r=_s(),i=o??r,l=p.useMemo(()=>i.entry(e),[i,e]),[,c]=p.useState(0);p.useEffect(()=>{if(n)return l.subscribe(()=>c(f=>f+1),t,s)},[l,n,t,s]);const d=p.useCallback(()=>l.refresh(),[l]);return{...n?l.snapshot():u.EMPTY_INVENTORY,refresh:d}}var Ua="data:image/png;base64,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",_c="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=",ed="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=",ys="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 ws=S.getChainMeta(1)?.logo??"",td=S.TOKENS.find(e=>e.symbol==="USDC")?.logo??"",Fn=Object.fromEntries([...S.getMainnetChains(),...S.getTestnetChains()].map(e=>[e.id,e.logo])),bs={metamask:Ua,metaMask:Ua,rabby:_c,phantom:ed},Ho=Object.fromEntries(S.TOKENS.map(e=>[e.symbol.toUpperCase(),e.logo])),nd={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]},sd={btc:["wcbtc","cbtc","wbtc"]};function eo(e){return e.replace(/^test\s*/i,"").replace(/^spice/i,"").trim()}function vn(e){return eo(e).toLowerCase()}function Wa(e){return vn(e??"").replace(/[^a-z0-9]/g,"")}function Vo(e){const t=vn(e);return[t,...sd[t]??[]].filter(Boolean)}function od(e){try{return BigInt(e.balanceAvailable||"0")}catch{return 0n}}function La(e){return Array.isArray(e.chainTokens)?e.chainTokens:Object.keys(e.chainTokens??{})}function qa(e,t){const n=u.getChainConfig(e),s=t.toLowerCase();return s===S.ZERO_ADDRESS.toLowerCase()?n?.nativeCurrency.decimals??18:n?.supportedTokens?.find(o=>o.address.toLowerCase()===s)?.decimals??18}function rd(e,t,n,s=[]){const o=qa(t,n),r=e.filter(l=>za(l,t,n,s));if(r.length===0)return null;const i=r.reduce((l,c)=>Math.min(l,c.decimals??o),o);return{chainDecimals:o,receiptDecimals:i}}function za(e,t,n,s){if(La(e).some(r=>{const i=gn(r);return i&&xs(i.address,i.chainId,n,t)}))return!0;const o=new Set(s.map(Wa).filter(Boolean));return o.size===0?!1:o.has(Wa(e.tokenName||e.receiptToken))}function Qo(e,t,n,s=[]){const o=qa(t,n);return e.reduce((r,i)=>za(i,t,n,s)?r+S.convertAmountBetweenDecimals(od(i),i.decimals??o,o):r,0n)}function Ha(e,t){const n=new Set([...Vo(t),...Vo(eo(t))]);return[...e].sort((s,o)=>{const r=vn(s.symbol),i=vn(o.symbol),l=vn(s.name),c=vn(o.name),d=n.has(r)?0:n.has(l)?1:2,f=n.has(i)?0:n.has(c)?1:2;return d!==f?d-f:s.address.toLowerCase().localeCompare(o.address.toLowerCase())})[0]}function ad(e){const t=e&&e.length>0?e:Object.keys(u.CHAIN_CONFIGS).map(Number).filter(Number.isFinite),n=new Map;for(const s of t){const o=u.getChainConfig(s);if(!o)continue;const r=`${s}:${S.ZERO_ADDRESS.toLowerCase()}`;n.has(r)||n.set(r,{address:S.ZERO_ADDRESS,chainId:s,symbol:o.nativeCurrency.symbol,name:o.nativeCurrency.name,decimals:o.nativeCurrency.decimals,isNative:!0,logoURI:Ho[o.nativeCurrency.symbol.toUpperCase()]??o.logo});for(const i of o.supportedTokens??[]){const l=i.address.toLowerCase(),c=`${s}:${l}`;n.has(c)||n.set(c,{address:l,chainId:s,symbol:i.symbol,name:i.name,decimals:i.decimals,isNative:S.isNativeToken(l),logoURI:i.logo})}}return n}function id(e,t){const n=ad(t),s=eo(e.tokenName),o=vn(e.tokenName),r=Vo(e.tokenName),i=Array.isArray(e.chainTokens)?e.chainTokens.map(g=>[g,void 0]):Object.entries(e.chainTokens??{}),l=i.map(([g])=>gn(g)).filter(g=>g!==null),c=new Map;for(const[g,w]of i){const x=gn(g);if(!x||!Number.isSafeInteger(x.chainId)||x.chainId<0||!/^evm:[0-9]+:(?:0x)?[0-9a-fA-F]{40}$/.test(g)){if(!Array.isArray(e.chainTokens))throw new Error("Invalid chain token metadata identity");continue}if(w!==void 0&&(!w||typeof w!="object"||Array.isArray(w)||w.name!==void 0&&typeof w.name!="string"||w.decimals!==void 0&&(!Number.isInteger(w.decimals)||w.decimals<0||w.decimals>255)))throw new Error("Invalid chain token metadata");const b=`${x.chainId}:${x.address.toLowerCase()}`;if(c.has(b)){const C=c.get(b);if(C?.name!==w?.name||C?.decimals!==w?.decimals)throw new Error("Conflicting chain token metadata")}c.set(b,w)}const d=(g,w)=>{const x=c.get(`${w.chainId}:${w.address.toLowerCase()}`);return{...g,name:typeof x?.name=="string"&&x.name.length>0?x.name:g.name,decimals:typeof x?.decimals=="number"?x.decimals:g.decimals}},f=l.map(g=>{const w=n.get(`${g.chainId}:${g.address.toLowerCase()}`);return w?d(w,g):void 0}).filter(g=>g!==void 0),m=nd[o]??[];if(m.length>0)for(const g of m){const w=f.filter(x=>x.chainId===g);if(w.length>0)return Ha(w,e.tokenName)}if(f.length>0)return Ha(f,e.tokenName);const h=Array.from(n.values()).filter(g=>r.includes(vn(g.symbol))||r.includes(vn(g.name)));if(m.length>0)for(const g of m){const w=h.find(x=>x.chainId===g);if(w)return w}if(h.length>0)return h[0];const y=l[0];if(y){const g=c.get(`${y.chainId}:${y.address.toLowerCase()}`);return{address:y.address,chainId:y.chainId,symbol:s||e.tokenName,name:typeof g?.name=="string"&&g.name.length>0?g.name:s||e.tokenName,decimals:typeof g?.decimals=="number"?g.decimals:e.decimals??18,isNative:S.isNativeToken(y.address),logoURI:void 0}}}function ld(e,t){let n;try{n=BigInt(e.balanceAvailable||"0")}catch{return null}if(n<=0n)return null;if(t?.length){const g=La(e).map(gn).filter(w=>w!==null);if(g.length>0&&!g.some(w=>t.includes(w.chainId)))return null}let s;try{s=id(e,t)}catch{return null}const o=s?.decimals??e.decimals??18,r=e.decimals??o,i=S.convertAmountBetweenDecimals(n,r,o),l=s?.address??S.ZERO_ADDRESS,c=s?.chainId??0,d=eo(e.tokenName),f=s?.symbol??d,m=s?.name??d,h=parseFloat(T.formatUnits(i,o)),y=typeof e.balanceUsd=="number"?e.balanceUsd:typeof e.balanceUsd=="string"&&Number(e.balanceUsd)||0;return{address:l,symbol:f,name:m,decimals:o,chainId:c,balance:i,balanceFormatted:h,balanceUsd:y,isNative:s?.isNative??S.isNativeToken(l),logoURI:s?.logoURI,displaySymbol:d||f,displayName:d||m,displayChainName:"Spicenet",receiptTokenId:e.receiptToken,receiptTokenName:e.tokenName||m,receiptTokenDecimals:r,chainTokens:e.chainTokens&&!Array.isArray(e.chainTokens)?e.chainTokens:void 0,isUniversal:!0}}const Go=6e4,cd=3e5,Va="https://api.g.alchemy.com/prices/v1",Zn=new Map;function Ko(e,t){try{const n=t??u.getClientForChain(e).transport.url;if(typeof n!="string")return null;const{hostname:s,pathname:o}=new URL(n);if(!s.endsWith(".g.alchemy.com"))return null;const r=o.split("/").filter(Boolean).pop();return r?{network:s.slice(0,-14),key:r}:null}catch{return null}}const vs=(e,t)=>`${e.network}:${e.key}:${t.toLowerCase()}`;function Cs(e,t){const n=Zn.get(vs(e,t));if(!n?.price||n.updatedAt===void 0)return;const s=Date.now()-n.updatedAt;if(!(s>=cd))return{price:n.price,stale:s>=Go}}function Qa(e){const t=Number(e.prices?.find(n=>n.currency==="usd")?.value);return Number.isFinite(t)&&t>0?t:0}async function Ga(e,t,n){const s=[],o=new Set,r=Date.now();for(const i of new Set(t.map(l=>l.toLowerCase()))){const l=Zn.get(vs(e,i));l?.pending?o.add(l.pending):(!l||r-l.attemptedAt>=Go&&(l.updatedAt===void 0||r-l.updatedAt>=Go))&&s.push(i)}for(let i=0;i<s.length;i+=25){const l=s.slice(i,i+25),c=Promise.resolve().then(async()=>{try{const d=await n(l);for(const f of l){const m=d.get(f);if(!m)continue;const h=Zn.get(vs(e,f));h.price=m,h.updatedAt=Date.now()}}catch{}finally{for(const d of l)Zn.get(vs(e,d)).pending=void 0}});for(const d of l){const f=vs(e,d);Zn.set(f,{...Zn.get(f),attemptedAt:r,pending:c})}o.add(c)}await Promise.all(o)}async function Zo(e,t){return await Ga(e,t,async n=>{const s=await fetch(`${Va}/${e.key}/tokens/by-address`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({addresses:n.map(i=>({network:e.network,address:i}))}),signal:AbortSignal.timeout(1e4)});if(!s.ok)throw new Error("Provider price request failed");const o=await s.json(),r=new Map;for(const i of o?.data??[]){if(i.network&&i.network!==e.network)continue;const l=String(i.address).toLowerCase();n.includes(l)&&r.set(l,Qa(i))}return r}),new Map(t.map(n=>[n.toLowerCase(),Cs(e,n)?.price??0]))}async function Yo(e,t){const n=`native:${t}`;return await Ga(e,[n],async()=>{const s=await fetch(`${Va}/${e.key}/tokens/by-symbol?symbols=${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(1e4)});if(!s.ok)throw new Error("Provider native price request failed");const o=(await s.json())?.data?.find(r=>r.symbol?.toUpperCase()===t.toUpperCase());return new Map([[n.toLowerCase(),o?Qa(o):0]])}),Cs(e,n)?.price??0}async function dd(e,t){const n=t.supportedChains,s=e.map(o=>{if(Number.isFinite(o.balanceUsd)&&o.balanceUsd>0)return[];const r=Object.keys(o.chainTokens??{}).map(gn).filter(i=>!!i&&T.isAddress(i.address)&&!!n?.includes(i.chainId));return r.sort((i,l)=>{const c=d=>d===t.nativeChainId?-1:n.indexOf(d);return c(i.chainId)-c(l.chainId)||+!u.addressesEqual(i.address,o.address)-+!u.addressesEqual(l.address,o.address)}),r.flatMap(i=>{const l=t.rpcOverrides?.[i.chainId];if(!l)return[];const c=Ko(i.chainId,l);if(!c)return[];const d=S.isNativeToken(i.address)?u.getChainConfig(i.chainId)?.nativeCurrency.symbol:void 0,f=d?`native:${d}`:i.address;return[{rpc:c,token:f,address:i.address,nativeSymbol:d}]})});return(typeof document>"u"||!document.hidden)&&await Promise.all(s.map(async o=>{for(const r of o)if(r.nativeSymbol?await Yo(r.rpc,r.nativeSymbol).catch(()=>0):(await Zo(r.rpc,[r.address]).catch(()=>new Map)).get(r.address.toLowerCase()))break})),e.map((o,r)=>{if(Number.isFinite(o.balanceUsd)&&o.balanceUsd>0)return o;const i=s[r].map(l=>Cs(l.rpc,l.token)).find(Boolean);return{...o,balanceUsd:i?o.balanceFormatted*i.price:0,priceStatus:i?i.stale?"stale":"fresh":"unavailable"}})}function ud(e,t,n){const s=p.useContext(u.SpiceFlowProviderContext),[o,r]=p.useState(()=>typeof document>"u"||!document.hidden);p.useEffect(()=>{const f=()=>r(!document.hidden);return document.addEventListener("visibilitychange",f),()=>document.removeEventListener("visibilitychange",f)},[]);const i={supportedChains:n??s?.supportedChainIds,nativeChainId:s?.nativeChainId,rpcOverrides:s?.rpcOverrides},l=JSON.stringify([e,i],(f,m)=>typeof m=="bigint"?m.toString():m),c=p.useCallback(()=>dd(e,i),[l]),d=zo(`prices:${l}`,c,t&&o&&e.length>0,6e4);return d.updatedAt?d.assets:e}function pd(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 Ka=({address:e,supportedChains:t,enabled:n=!0,refetchInterval:s,priceEnabled:o=!1})=>{const r=p.useContext(u.SpiceFlowProviderContext),i=r?.apiUrl||u.RELAYER_API_URL,l=_s(),c=r?.supportedChainIds??t,d=JSON.stringify([...c??[]].sort((A,E)=>A-E)),f=e?.toLowerCase(),m=p.useCallback(async()=>{const A=await u.relayerFetch(`${i}/wallets/${f}/balance`,{cache:"no-store"});if(!A.ok)throw new Error(`Failed to fetch balance: ${A.status}`);const E=await A.json();if(!Array.isArray(E.balances))throw new Error("Invalid balance response");return E.balances.map(j=>{const R=ld({receiptToken:typeof j.receiptToken=="string"?j.receiptToken:void 0,tokenName:String(j.tokenName??""),balanceAvailable:String(j.balanceAvailable??"0"),chainTokens:pd(j),decimals:typeof j.decimals=="number"?j.decimals:void 0,balanceUsd:typeof j.balanceUsd=="number"||typeof j.balanceUsd=="string"?j.balanceUsd:null},c);return R?{...R,owner:f,location:"rollup",_source:"spice",positionId:`${f}:rollup:${R.receiptTokenId??R.address}`}:null}).filter(j=>j!==null)},[f,i,d,r?.nativeChainId,r?.rpcOverrides]),{assets:h,loading:y,refreshing:g,error:w,updatedAt:x}=zo(`rollup:${f}:${i}:${d}`,m,n&&!!f,s??0,l),b=JSON.stringify(t??[]),C=p.useMemo(()=>w?h.map(A=>({...A,balanceError:w,balanceStatus:"stale"})):h,[h,w]),v=ud(C,n&&o,c),k=p.useMemo(()=>v.filter(A=>!t?.length||t.includes(A.chainId)||Object.keys(A.chainTokens??{}).some(E=>t.some(j=>E.startsWith(`evm:${j}:`)))),[v,b]),I=p.useCallback(A=>k.filter(E=>E.chainId===A),[k]);return{assets:k,loading:y,error:w,hasBalance:k.some(A=>A.balance>0n),refreshing:g,updatedAt:x,refetch:l.invalidate,getAssetsByChain:I}};async function fd(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([un.readContract(e,{address:t,abi:T.erc20Abi,functionName:"decimals"}),un.readContract(e,{address:t,abi:T.erc20Abi,functionName:"symbol"}).catch(()=>"TOKEN"),un.readContract(e,{address:t,abi:T.erc20Abi,functionName:"name"}).catch(()=>"TOKEN")]);if(!Number.isInteger(Number(s))||Number(s)<0||Number(s)>255)throw new Error("Invalid token decimals");return{decimals:Number(s),symbol:o,name:r,logoURI:void 0}}const Za=async(e,t,n)=>{const s=u.getClientForChain(t,n),o=u.getChainConfig(t),r=await un.getBalance(s,{address:e}),i=o.nativeCurrency,l=o.supportedTokens?.find(c=>S.isNativeToken(c.address));return{address:S.ZERO_ADDRESS,name:i.name,symbol:i.symbol,decimals:i.decimals,balance:r,balanceFormatted:Number(T.formatUnits(r,i.decimals)),balanceUsd:0,logoURI:l?.logo||o.logo,isNative:!0,chainId:t}},md=async(e,t,n,s,o,r,i)=>{try{if(!T.isAddress(n))return null;const l=T.getAddress(n),c=T.isAddress(e)?T.getAddress(e):e,d=u.getClientForChain(t,i),f=await un.readContract(d,{address:l,abi:T.erc20Abi,functionName:"balanceOf",args:[c]}),m=Number(T.formatUnits(f,r));return f>0n?{address:l,name:s,symbol:o,decimals:r,balance:f,balanceFormatted:m,balanceUsd:0,logoURI:void 0,isNative:!1,chainId:t}:null}catch(l){throw l}},Ya=(e,t)=>{const n=u.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||[])S.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:S.isNativeToken(r.address),chainId:t});if(!e.find(r=>r.isNative)){const r=n.supportedTokens?.find(i=>S.isNativeToken(i.address));e.push({address:S.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},hd=async(e,t,n)=>{const s=[],o=async l=>{for(const c of l){const d=await md(e,t,c.address,c.name,c.symbol,c.decimals,n);d&&(d.logoURI=c.logo,s.push(d))}},r=await Za(e,t,n);r.balance>0n&&s.push(r);const i=(u.getChainConfig(t)?.supportedTokens||[]).filter(l=>!S.isNativeToken(l.address));if(i.length>0)try{const l=u.getClientForChain(t,n),c=T.getAddress(e),d=i.filter(y=>T.isAddress(y.address)).map(y=>({address:T.getAddress(y.address),abi:T.erc20Abi,functionName:"balanceOf",args:[c]})),f=await l.multicall({contracts:d}),m=i.filter(y=>T.isAddress(y.address)),h=[];f.forEach((y,g)=>{if(y.status==="success"){const w=y.result;if(w&&w>0n){const x=m[g],b=Number(T.formatUnits(w,x.decimals));w>0n&&s.push({address:T.getAddress(x.address),name:x.name,symbol:x.symbol,decimals:x.decimals,balance:w,balanceFormatted:b,balanceUsd:0,logoURI:x.logo,isNative:!1,chainId:t})}}else h.push(m[g])}),await o(h)}catch{await o(i)}return{tokens:Ya(s,t),chainId:t}},gd=async(e,t,n)=>{const s=new Map,o=Ko(e,n?n[e]??"":void 0);if(!o)return s;const r=t.filter(d=>S.isNativeToken(d)),i=t.filter(d=>!S.isNativeToken(d)),[l,c]=await Promise.all([i.length?Zo(o,i).catch(()=>new Map):new Map,r.length?Yo(o,u.getChainConfig(e)?.nativeCurrency?.symbol??"ETH").catch(()=>0):0]);for(const[d,f]of l)f>0&&s.set(d,f);if(c>0)for(const d of r)s.set(d.toLowerCase(),c);return s},xd=async(e,t,n,s=!0,o)=>{const r=u.getClientForChain(t,o),i=T.getAddress(e),l=[];let c;do{const b=await r.request({method:"alchemy_getTokenBalances",params:[i,"erc20",c?{pageKey:c}:{}]});l.push(...b.tokenBalances),c=b.pageKey||void 0}while(c);const d=l.filter(b=>T.isAddress(b.contractAddress)&&!!b.tokenBalance&&BigInt(b.tokenBalance)>0n),f=u.getChainConfig(t)?.supportedTokens||[],m=b=>f.find(C=>C.address.toLowerCase()===b.toLowerCase()),h=[],y=await Za(e,t,o),[g,w,x]=await Promise.all([Promise.all(d.map(async b=>{const C=m(b.contractAddress);return C?{name:C.name,symbol:C.symbol,decimals:C.decimals,logo:C.logo??null}:await r.request({method:"alchemy_getTokenMetadata",params:[b.contractAddress]})})),s?Zo(n,d.map(b=>b.contractAddress)):new Map(d.map(b=>[b.contractAddress.toLowerCase(),Cs(n,b.contractAddress)?.price??0])),s&&y.balanceFormatted>0?Yo(n,y.symbol):Cs(n,`native:${y.symbol}`)?.price??0]);return y.balance>0n&&h.push({...y,balanceUsd:x*y.balanceFormatted}),d.forEach((b,C)=>{const v=g[C];if(!Number.isInteger(v.decimals)||v.decimals===null||v.decimals<0||v.decimals>255)throw new Error(`Invalid token metadata on chain ${t}`);const k=BigInt(b.tokenBalance),I=Number(T.formatUnits(k,v.decimals));if(k<=0n)return;const A=w.get(b.contractAddress.toLowerCase()),E=A?A*I:0;h.push({address:T.getAddress(b.contractAddress),name:v.name||"Unknown",symbol:v.symbol||"UNKNOWN",decimals:v.decimals,balance:k,balanceFormatted:I,balanceUsd:E,isDiscovered:!m(b.contractAddress),logoURI:v.logo||void 0,isNative:!1,chainId:t})}),{tokens:Ya(h,t),chainId:t}},Xa=new Set,yd=async(e,t,n=!0,s)=>{try{const o=Ko(t,s?s[t]??"":void 0);if(o)try{return await xd(e,t,o,n&&(typeof document>"u"||!document.hidden),s)}catch(r){Xa.has(t)||(Xa.add(t),console.warn(`Token discovery unavailable on chain ${t}; listing configured tokens only.`,r))}return await hd(e,t,s)}catch(o){throw o}},Yn=async(e,t,n=[],s)=>{if(!e)throw new Error("Wallet address is required");const o=u.getChainsForAssets(s),r=t?.length?[...new Set(t)]:Object.keys(o).map(Number),i=await Promise.allSettled(r.map(c=>yd(e,c,!0,s))),l={};return i.forEach((c,d)=>{const f=r[d];l[f]=c.status==="fulfilled"?c.value:{chainId:f,tokens:[],error:`Unable to refresh balances on chain ${f}`}}),(await Promise.allSettled(n.map(async c=>{const d=l[c.chainId];if(!d||d.error||d.tokens.some(w=>S.normalizeNativeTokenAddress(w.address).toLowerCase()===S.normalizeNativeTokenAddress(c.address).toLowerCase()))return;const f=u.getClientForChain(c.chainId,s),m=await fd(f,c.address,c.decimals!==void 0&&c.symbol?{decimals:c.decimals,symbol:c.symbol,name:c.name||c.symbol,logo:c.logoURI}:void 0),h=await un.readContract(f,{address:c.address,abi:T.erc20Abi,functionName:"balanceOf",args:[e]}),y=await gd(c.chainId,[c.address],s),g=Number(T.formatUnits(h,m.decimals));d.tokens.push({...m,...c,name:m.name,symbol:m.symbol,decimals:m.decimals,balance:h,balanceFormatted:g,balanceUsd:(y.get(c.address.toLowerCase())||0)*g,isNative:!1})}))).forEach((c,d)=>{if(c.status==="rejected"){const f=l[n[d].chainId];f&&(f.error=`Unable to refresh token balances on chain ${f.chainId}`)}}),l},ks=({address:e,supportedChains:t,fetchBalances:n=Yn,additionalTokens:s=[],enabled:o=!0,refreshInterval:r=0,priceEnabled:i=!0})=>{const l=p.useContext(u.SpiceFlowProviderContext),c=_s(),d=e?.toLowerCase(),f=JSON.stringify([...l?.supportedChainIds??t??[]].sort((C,v)=>C-v)),m=JSON.stringify(s);p.useEffect(()=>c.registerTokens(s),[c,m]);const h=d&&d===l?.embeddedWalletAddress?.toLowerCase()?"embedded":"external",y=`wallet:${JSON.stringify([l?.network,l?.apiUrl,l?.rpcOverrides])}:${d}:${h}:${f}:${c.fetcherId(n)}`,g=p.useCallback(async()=>{let C;try{C=await n(d,JSON.parse(f),c.tokens(),l?.rpcOverrides)}catch(A){const E=A instanceof Error?A.message:"Unable to refresh balances";C=Object.fromEntries(JSON.parse(f).map(j=>[j,{chainId:j,tokens:[],error:E}]))}const v=c.entry(y).snapshot().assets,k=JSON.parse(f).map(A=>C[A]??{chainId:A,tokens:[],error:`Unable to refresh balances on chain ${A}`}),I=k.flatMap(A=>A.error?[A.error]:[]);return{assets:k.flatMap(A=>A.error?v.filter(E=>E.chainId===A.chainId).map(E=>({...E,balanceError:A.error,balanceStatus:"stale"})):A.tokens.map(E=>({...E,owner:d,location:h,_fundingWallet:h,_source:"wallet",positionId:`${d}:${h}:${A.chainId}:${S.normalizeNativeTokenAddress(E.address).toLowerCase()}`}))),error:I.length?I.join("; "):null}},[c,d,f,n,h,y]),w=zo(y,g,o&&!!d,r,c),x=JSON.stringify(t&&[...t].sort((C,v)=>C-v)),b=p.useMemo(()=>t?w.assets.filter(C=>t.includes(C.chainId)):w.assets,[w.assets,x]);return p.useEffect(()=>{i&&o&&d&&w.refresh()},[i]),{...w,assets:b,refreshAssets:c.invalidate,getAssetsByChain:p.useCallback(C=>b.filter(v=>v.chainId===C),[b]),getNativeAssets:p.useCallback(()=>b.filter(C=>C.isNative),[b])}};function Xn(e){const t=p.useContext(u.SpiceFlowProviderContext),n=_s(),s=e.owner??((t?.mode||"7702")!=="7702"?t?.externalWalletAddress:t?.embeddedWalletAddress),o=s?.toLowerCase()!==t?.embeddedWalletAddress?.toLowerCase(),r=e.sourceChains??t?.supportedChainIds??[],i=(e.enabled??!0)&&!t?.isWhitelistGateActive,l=p.useMemo(()=>{const h=[...t?.additionalSourceTokens??[],...e.additionalSourceTokens??[],...e.destination?[e.destination]:[]];for(const y of e.supportedSourceAssets??[])for(const g of r){const w=u.getChainConfig(g)?.supportedTokens?.find(x=>u.isAssetAllowed(x,[y]));w&&h.push({...w,address:w.address,chainId:g,logoURI:w.logo})}return h},[e.destination,JSON.stringify(t?.additionalSourceTokens),JSON.stringify(e.additionalSourceTokens),JSON.stringify(e.supportedSourceAssets),JSON.stringify(r)]),c=ks({address:s,supportedChains:r,fetchBalances:Yn,additionalTokens:l,enabled:i&&e.includeWalletAssets!==!1,refreshInterval:3e4}),d=Ka({address:s,supportedChains:r,enabled:i&&e.includeRollupAssets!==!1&&!!s&&s.toLowerCase()===t?.embeddedWalletAddress?.toLowerCase(),priceEnabled:i,refetchInterval:3e4}),f=p.useMemo(()=>i?[...(e.includeWalletAssets===!1?[]:c.assets).map(h=>({...h,owner:h.owner??s,location:h.location??(o?"external":"embedded"),_source:"wallet"})),...(e.includeRollupAssets===!1||s?.toLowerCase()!==t?.embeddedWalletAddress?.toLowerCase()?[]:d.assets).map(h=>({...h,owner:h.owner??s,location:"rollup",_source:"spice"}))]:[],[i,c.assets,d.assets,e.includeWalletAssets,e.includeRollupAssets,s,o,t?.embeddedWalletAddress]),m=p.useMemo(()=>f.map(h=>({asset:h,...En(h,e.role??"holding",{allowedTokens:t?.allowedTokens,rpcOverrides:t?.rpcOverrides,liquidityVenues:t?.liquidityVenues,isWhitelistGateActive:!!t?.isWhitelistGateActive},e.destination,e.supportedSourceAssets,{requiresEscrow:e.requiresEscrow})})),[f,t?.allowedTokens,t?.rpcOverrides,t?.liquidityVenues,t?.isWhitelistGateActive,e.role,e.destination,e.supportedSourceAssets,e.requiresEscrow]);return{positions:m,assets:p.useMemo(()=>m.filter(h=>h.eligible&&h.asset.balance>0n).map(h=>h.asset),[m]),walletAssets:p.useMemo(()=>f.filter(h=>h._source==="wallet"),[f]),rollupAssets:p.useMemo(()=>f.filter(h=>h._source==="spice"),[f]),loading:c.loading||d.loading,refreshing:c.refreshing||d.refreshing,error:c.error||d.error,refresh:n.invalidate}}function Tn(e){const t=S.normalizeNativeTokenAddress(e.address);if(e.isNative||S.isNativeToken(t))return!1;const n=u.getChainConfig(e.chainId)?.supportedTokens?.some(o=>u.addressesEqual(o.address,t)),s=S.getTokenByAddress(t,e.chainId);return!!n&&!!s&&Xs(s)}const Ja="spiceflow:pendingDeposit",to="spiceflow:pendingDepositChanged";function $a(e,t,n){return`${Ja}:${e.toLowerCase()}:${t}:${n.toLowerCase()}`}function Xo(){try{const e="__spiceflow_storage_test__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch{return!1}}function wd(e){if(!Xo())return;const t=$a(e.embeddedWalletAddress,e.chainId,e.tokenAddress);try{localStorage.setItem(t,JSON.stringify(e)),window.dispatchEvent(new Event(to))}catch(n){console.error("[pendingDeposit] Failed to save:",n)}}function bd(e){if(!Xo())return[];const t=`${Ja}:${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 Jo(e,t,n){if(!Xo())return;const s=$a(e,t,n);localStorage.removeItem(s),window.dispatchEvent(new Event(to))}const vd=new Set(["USDC","SUSD","USD","NUSD","USDT","DAI","ENUSD","USDG"]),_a={ETH:"ethereum",WETH:"ethereum",BTC:"bitcoin",WBTC:"bitcoin",WCBTC:"bitcoin",CBTC:"bitcoin",ECBTC:"bitcoin",ARB:"arbitrum",MATIC:"matic-network",POL:"matic-network"};let no=null;const Cd=6e4;async function ei(e){const t={},n=new Set,s={};for(const r of e){const i=r.toUpperCase();if(vd.has(i))t[i]=1;else if(_a[i]){const l=_a[i];n.add(l),s[i]=l}else t[i]=0}if(n.size===0)return t;const o=Date.now();if(no&&o-no.timestamp<Cd){for(const[r,i]of Object.entries(s))t[r]=no.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(),c={};for(const d of n)c[d]=l[d]?.usd??0;no={prices:c,timestamp:o};for(const[d,f]of Object.entries(s))t[d]=c[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}const kd=new Set(["cbtc","btc","wbtc","wcbtc","tbtc"]),Sd=new Set(["usdc","usdt","dai","usdc.e","usdbc","usdg"]);async function Id(){const e=(await ei(["BTC"])).BTC;if(!e||e<=0)throw new Error("Failed to fetch BTC/USD price");return e}function Ad(e){return kd.has(e.toLowerCase())}function Ed(e){return Sd.has(e.toLowerCase())}function Fd(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 c=e*r/o;return i>0?c=c/l:i<0&&(c=c*l),c}const Td=.01,Bd=5*60*1e3;function Rd(e){const t=Number(T.formatUnits(e.verifiedBalance,e.tokenDecimals));return Number.isFinite(t)?t:0}async function jd(e){const t=ti(e);let n;try{n=await ei(t.map(s=>s.tokenSymbol))}catch{return t}return t.filter(s=>{const o=Rd(s);if(o<=0)return!0;const r=n[s.tokenSymbol.toUpperCase()]??0;return!Number.isFinite(r)||r<=0?!0:o*r>=Td})}function ti(e){const t=new Map;for(const n of e){const s=`${n.chainId}:${n.tokenAddress.toLowerCase()}`;if(!t.get(s)){const o=n.timestamp===0&&n.verifiedBalance>0n;t.set(s,{...n,amount:o?T.formatUnits(n.verifiedBalance,n.tokenDecimals):n.amount,rawAmount:o?n.verifiedBalance.toString():n.rawAmount,hasFullBalance:o?!0:n.hasFullBalance})}}return Array.from(t.values())}function ni(e,t){const[n,s]=p.useState([]),[o,r]=p.useState(!1),i=p.useRef(t);i.current=t;const l=!!t?.enabled,c=p.useRef(0),d=p.useRef([]),f=t?.chainIds?.join(","),m=t?.discoverWalletBalances??!0,h=p.useRef(0),y=p.useCallback(async({forceDiscovery:g=!1}={})=>{if(!e||i.current?.enabled===!1){s([]),r(!1);return}const w=++h.current,x=()=>w!==h.current;r(!0);try{const b=[],C=bd(e),v=new Set(C.map(j=>`${j.chainId}:${j.tokenAddress.toLowerCase()}`)),k=[...C,...d.current.filter(j=>j.timestamp===0&&!v.has(`${j.chainId}:${j.tokenAddress.toLowerCase()}`))];for(const j of k){if(x())return;if(Tn({address:j.tokenAddress,chainId:j.chainId,isNative:j.isNative}))try{const R=u.getClientForChain(j.chainId);let B;if(j.isNative||S.isNativeToken(j.tokenAddress)?B=await un.getBalance(R,{address:e}):B=await un.readContract(R,{address:T.getAddress(j.tokenAddress),abi:T.erc20Abi,functionName:"balanceOf",args:[e]}),x())return;if(B>0n)b.push({...j,verifiedBalance:B,hasFullBalance:B>=BigInt(j.rawAmount)});else{const M=Date.now()-j.timestamp;j.timestamp!==0&&M>15*60*1e3&&Jo(e,j.chainId,j.tokenAddress)}}catch(R){if(x())return;console.warn(`[usePendingDeposit] Failed to verify balance for ${j.tokenSymbol} on chain ${j.chainId}:`,R),b.push({...j,verifiedBalance:0n,hasFullBalance:!1})}}if(x())return;const I=i.current,A=Date.now(),E=(I?.discoverWalletBalances??!0)&&(g||A-c.current>=Bd);if(I?.network&&E){c.current=A;const j=I.chainIds??S.getChainIdsByNetwork(I.network),R=new Set(b.map(M=>`${M.chainId}:${M.tokenAddress.toLowerCase()}`)),B=[];for(const M of j){const D=u.getChainConfig(M);if(D?.supportedTokens)for(const U of D.supportedTokens){if(!Tn({address:U.address,chainId:M,isNative:!1}))continue;const O=`${M}:${U.address.toLowerCase()}`;R.has(O)||B.push((async()=>{try{const F=u.getClientForChain(M),P=await un.readContract(F,{address:T.getAddress(U.address),abi:T.erc20Abi,functionName:"balanceOf",args:[e]});return P>0n?{chainId:M,tokenAddress:U.address,tokenSymbol:U.symbol,tokenDecimals:U.decimals,amount:T.formatUnits(P,U.decimals),rawAmount:P.toString(),embeddedWalletAddress:e,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:P,hasFullBalance:!0}:null}catch{return null}})())}}if(B.length>0){const M=await Promise.allSettled(B);if(x())return;for(const D of M)D.status==="fulfilled"&&D.value&&b.push(D.value)}}if(!x()){const j=await jd(b);if(x())return;d.current=ti(b),s(j)}}catch(b){if(console.error("[usePendingDeposit] Verification error:",b),!x()){const C=d.current.map(v=>({...v,verifiedBalance:0n,hasFullBalance:!1}));d.current=C,s(C)}}finally{x()||r(!1)}},[e]);return p.useEffect(()=>{if(d.current=[],c.current=0,s([]),!l){h.current++,r(!1);return}y({forceDiscovery:!0});const g=i.current?.pollIntervalMs??3e4;if(g<=0||!e)return()=>{h.current++};const w=setInterval(()=>{y({forceDiscovery:!1})},g),x=()=>y({forceDiscovery:!0});return window.addEventListener(to,x),()=>{h.current++,window.removeEventListener(to,x),clearInterval(w)}},[y,e,l,t?.network,f,m]),{pendingDeposits:n,loading:o,refresh:()=>y({forceDiscovery:!0})}}function si(e){const t=p.useContext(u.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{...ni(s,o),embeddedWalletAddress:n}}var $o="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";function _o(e){const t=p.useRef(0),n=p.useRef(null),s=p.useRef(e.run);s.current=e.run;const o=p.useRef(e.onSkip);o.current=e.onSkip;const r=p.useRef(e.onCleanup);r.current=e.onCleanup,p.useEffect(()=>{if(!e.shouldRun){t.current+=1,n.current?.abort(),o.current?.();return}let i=!1,l=!1;const c=async h=>{if(h&&l)return;n.current?.abort();const y=new AbortController;n.current=y;const g=++t.current;l=!0;try{await s.current({isBackground:h,isCurrent:()=>!i&&t.current===g,signal:y.signal})}finally{l=!1}},d=window.setTimeout(()=>void c(!1),e.delayMs??250),f=()=>{document.hidden||c(!0)},m=e.backgroundIntervalMs?window.setInterval(f,e.backgroundIntervalMs):void 0;return m!==void 0&&document.addEventListener("visibilitychange",f),()=>{i=!0,n.current?.abort(),clearTimeout(d),m!==void 0&&(window.clearInterval(m),document.removeEventListener("visibilitychange",f)),r.current?.()}},[e.shouldRun,e.delayMs,e.backgroundIntervalMs,...e.deps])}function oi(e,t){if(e.length!==t.length)return!1;const n=S.hashChainBatches(e),s=S.hashChainBatches(t);return n.every((o,r)=>o.hash===s[r]?.hash)}const pn=e=>new Promise(t=>setTimeout(t,e)),Od="0xa9059cbb";function ri(e){const t=e.findIndex(o=>S.isSpicenetChainId(o.chainId));if(t<=0)return[];const n=new Map,s=(o,r,i)=>{if(i<=0n)return;const l=`${o}:${r.toLowerCase()}`,c=n.get(l);c?c.amount+=i:n.set(l,{chainId:o,token:r,amount:i})};for(const o of e.slice(0,t)){const r=S.getEscrowContract(o.chainId);if(!(!r||r===S.ZERO_ADDRESS)){for(const i of o.calls)if(i.value&&i.value>0n&&u.addressesEqual(i.to,r)&&s(o.chainId,S.ZERO_ADDRESS,i.value),!!i.data?.startsWith(Od))try{const l=T.decodeFunctionData({abi:T.erc20Abi,data:i.data});if(l.functionName!=="transfer")continue;const[c,d]=l.args;u.addressesEqual(c,r)&&s(o.chainId,i.to,d)}catch{}}}return[...n.values()]}function ai(e){const t=S.getTokenByAddress(e.token,e.chainId);return[t?.equivalenceGroup,t?.symbol,t?.name]}function ii(e,t){return Qo(e,t.chainId,t.token,ai(t))}function Dd(e,t){const n=rd(e,t.chainId,t.token,ai(t));return!n||n.receiptDecimals>=n.chainDecimals?t.amount:S.convertAmountBetweenDecimals(S.convertAmountBetweenDecimals(t.amount,n.chainDecimals,n.receiptDecimals),n.receiptDecimals,n.chainDecimals)}async function li(e){const{deposits:t,baseline:n,fetchEntries:s,timeoutMs:o=12e4,intervalMs:r,signal:i,wait:l=pn}=e;if(t.length===0)return!0;const c=new Map(t.map(m=>[m,ii(n,m)])),d=Date.now(),f=d+o;for(;!i?.aborted;){try{const g=await s();if(t.every(w=>ii(g,w)-c.get(w)>=Dd(g,w)))return!0}catch{}const m=Date.now();if(m>=f)return!1;const h=m-d,y=r??(h<5e3?250:h<15e3?1e3:3e3);await l(Math.min(y,f-m))}return!1}function ci(e,t){const n=S.hashChainBatches(e).map(s=>s.hash);return T.keccak256(T.encodeAbiParameters([{type:"string"},{type:"uint256"},{type:"uint256"},{type:"bytes32[]"}],["ecdsa",0n,t,n]))}async function di(e,t,n,s,o){if(s?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");const r={raw:ci(t,n)},i=o?await e.signMessage(r,o):await e.signMessage(r);console.debug("[SpiceFlow:execution]",{phase:"signature-returned",at:Date.now()});const l=typeof i=="string"?i:i.signature;if(!l)throw new u.SpiceflowError("SIGNATURE_FAILED","Failed to sign intent authorization. The wallet returned an empty signature.");return l}function Nd(e){return e.domain==="spicenet"||S.isSpicenetChainId(e.chainId)}async function ui(e){const{chainBatches:t,signingAddress:n,actions:s,cache:o,signal:r,onSignatureRequested:i,beforeSign:l}=e;if(r?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");const c=[...new Set(t.filter(m=>!Nd(m)).map(m=>m.chainId))].map(m=>({chainId:m,client:u.getClientForChain(m),delegateContract:u.getDelegateContractAddress(m)})),[d]=await Promise.all([Promise.all(c.map(async({chainId:m,client:h,delegateContract:y})=>{const g=Number(await S.getAccountNonce(n,h)),w=[n.toLowerCase(),m,y.toLowerCase(),g].join(":");return{chainId:m,delegateContract:y,nonce:g,cacheKey:w,cached:o?.get(w)}})),c.length?s.prepareSigning?.():void 0,l?.()]),f=[];for(const{chainId:m,delegateContract:h,nonce:y,cacheKey:g,cached:w}of d){if(w){f.push(w);continue}if(r?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");const x=await s.signAuthorization({contractAddress:h,chainId:m,nonce:y},i),b={r:x.r,s:x.s,yParity:x.yParity,address:x.address??h,chainId:Number(x.chainId??m),nonce:Number(x.nonce??y)};o?.set(g,b),f.push(b)}return f}const pi=15;function Pd(e){return e.now-e.lastProgressAt>=e.pollTimeoutMs}function fi(e,t){return{intentId:e,steps:t.map(n=>({...n,status:"pending"})),overallStatus:"processing"}}function so(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 Md({checkStepStatus:e,retryStep:t,maxRetries:n=3,pollingInterval:s=2500,pollTimeoutMs:o=3e5}){const[r,i]=p.useState(null),l=p.useRef(null),c=p.useRef(null),d=p.useRef(!1),f=p.useRef(!1),m=p.useRef(0),h=p.useRef({}),y=p.useRef(0),g=p.useCallback(k=>{l.current=k,i(k)},[]),w=p.useCallback(()=>{c.current&&(clearInterval(c.current),c.current=null)},[]),x=p.useCallback(()=>{m.current=0,h.current={},y.current=0,d.current=!0,w(),g(null)},[w,g]),b=p.useCallback((k,I)=>{w(),d.current=!1,g(fi(k,I))},[w,g]),C=p.useCallback((k,I)=>{const A=l.current;A&&g(so(A,k,I))},[g]),v=p.useCallback((k,I)=>{w(),d.current=!1,f.current=!1,m.current=0,h.current={},y.current=Date.now(),g(fi(k,I));const A=async()=>{if(!(d.current||f.current||!e)){f.current=!0;try{if(Pd({now:Date.now(),lastProgressAt:y.current,pollTimeoutMs:o})){const R=l.current;R&&g({...R,steps:R.steps.map(B=>B.status==="success"?B:{...B,status:"failed",error:"Taking longer than expected. It may still complete - check the explorer, then refresh."}),overallStatus:"failed"}),d.current=!0,w();return}const E=l.current;if(!E)return;const j=E.steps.findIndex(R=>R.status!=="success");if(j===-1){d.current=!0,w();return}if(!(j===0||E.steps[j-1].status==="success"))return;try{const R=E.steps[j].stepId,{data:B}=await e(k,R);if(m.current=0,B.status==="success"&&(y.current=Date.now()),B.status==="reverted"){const D=h.current[R]||0;if(t&&D<n){h.current[R]=D+1;try{await t(k,R)}catch(U){console.error(`[intentStatus] retry failed for step ${R}:`,U)}g(so(l.current,j,{status:"executing"}));return}}const M=so(l.current,j,B);g(M),M.overallStatus!=="processing"&&(d.current=!0,w())}catch(R){m.current+=1,console.error(`[intentStatus] poll error (${m.current}/${pi}):`,R),m.current>=pi&&(g(so(l.current,j,{status:"error"})),d.current=!0,w())}}finally{f.current=!1}}};A(),c.current=setInterval(A,s)},[e,t,n,s,o,w,g]);return p.useEffect(()=>()=>w(),[w]),{intentStatus:r,startStatusPolling:v,beginStatusTracking:b,applyStepUpdate:C,stopStatusPolling:w,clearStatus:x}}function Ud(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 Wd=350,Ld=2500;async function mi(e){const{actionId:t,intentIndex:n,intentId:s,stepIndex:o,maxPolls:r=48,maxExecuteAttempts:i=3,pollsBeforeRetry:l=5,maxConsecutiveStatusErrors:c=15,onStatusMessage:d,onStepUpdate:f,signal:m,chainId:h,startWithExecute:y=!0,observeOnly:g=!1,relayer:w=u.relayerService,completeOnExecution:x=!1}=e;if(m?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");let b="pending",C,v,k=0,I=0,A,E;const j=new Promise((B,M)=>{A=B,E=()=>M(new u.SpiceflowError("ABORT","Execution transaction aborted"))}),R=()=>{k++,w.executeStep(t,n,o,{action:"execute"}).then(B=>{B.transactionHash&&(C=B.transactionHash),B.status==="success"&&A({status:B.status,transactionHash:B.transactionHash})}).catch(B=>{const M=B instanceof Error?B.message:String(B);console.warn(`[execution] executeStep ${o} attempt ${k} error (will poll):`,M)})};m?.addEventListener("abort",E,{once:!0});try{y&&!g&&R();for(let B=0;B<r;B++){const M=B===0?Wd:Ld;try{const U=await Promise.race([pn(M).then(()=>{}),j]);if(m?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");const O=U??await Promise.race([w.checkStepStatus(s,o,x).then(P=>P.data),j]);if(m?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");I=0,b=O.status,v=O.error;const F=O.transactionHash;F&&(C=F),x&&/^0x[0-9a-f]{64}$/i.test(F??"")&&(O.executionStatus==="success"||O.executionStatus==="reverted")&&(b=O.executionStatus,v=void 0),f?.({status:b,transactionHash:C,error:v})}catch(U){if(U instanceof Error&&(U.name==="AbortError"||U instanceof u.SpiceflowError&&U.code==="ABORT"))throw U;if(I++,I>=c){if(!g)throw U;d?.("Status is temporarily unavailable. The backend continues this action.",C)}continue}if(!g&&b==="created"&&B>=k*l&&k<i&&R(),b==="reverted"||b==="error")throw new u.SpiceflowError("ON_CHAIN_REVERT",Ud(b,v),{status:b,txHash:C,actionId:t,intentId:s,stepId:o,chainId:h});if(b==="success"||b==="completed")return C;let D="Waiting for solver...";b==="executing"?D="Transaction executing...":b==="submitted"?D="Transaction submitted...":b==="created"&&(D="Waiting for relayer..."),d?.(D,C)}throw new u.SpiceflowError("POLLING_EXHAUSTED",`Transaction is still processing (status: ${b}). 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:b,pollAttempts:r,maxPolls:r,txHash:C})}finally{m?.removeEventListener("abort",E)}}async function qd(e){const{actionId:t,intentIndex:n,intentId:s,totalSteps:o,observeOnly:r,delayBeforeSpicenetStepMs:i=5e3,isSpicenetStep:l,beforeStep:c,maxExecuteAttemptsForStep:d,maxPolls:f=48,onStatusMessage:m,onStepUpdate:h,signal:y}=e;let g;for(let w=0;w<o;w++){if(!r&&w>0&&l?.(w)&&i>0&&await pn(i),await c?.(w),y?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");const x=d?.(w)??3,b=await mi({actionId:t,intentIndex:n,intentId:s,stepIndex:w,observeOnly:r,relayer:e.relayer,maxPolls:f,maxExecuteAttempts:x,maxConsecutiveStatusErrors:x===6?5:15,onStatusMessage:m,onStepUpdate:h?C=>h(w,C):void 0,signal:y,completeOnExecution:w===o-1&&l?.(w)===!1});b&&(g=b)}return g}const zd="0xa9059cbb",Hd=[S.SPICE_COMBINED_FEE_RECIPIENT,S.SPICE_GAS_FEE_RECIPIENT,S.SPICE_PLATFORM_FEE_RECIPIENT];function hi(e){return Hd.some(t=>u.addressesEqual(e,t))}function oo(e,t){return e.map(n=>{if(n.domain==="spicenet"||S.isSpicenetChainId(n.chainId)||n.calls.length===0)return n;const s=new Set((n.tokenTransfers??[]).filter(i=>(i.from==="escrow"||i.from==="solver")&&u.addressesEqual(i.to,t)).map(i=>i.token.toLowerCase()));if(s.size===0)return n;const o=[...s].some(S.isNativeToken);let r=0;for(const i of n.calls){if(o&&i.value>0n&&i.data==="0x"&&hi(i.to)){r+=1;continue}if(!i.data?.startsWith(zd))break;try{const l=T.decodeFunctionData({abi:T.erc20Abi,data:i.data});if(l.functionName!=="transfer")break;const[c]=l.args;if(!hi(c)||!s.has(i.to.toLowerCase()))break;r+=1}catch{break}}return r===0?n:{...n,calls:n.calls.slice(r)}})}async function Vd(e,t){if(!t||!/^0x[0-9a-f]{64}$/i.test(t))throw new Error("The destination receipt is not available yet; reconcile the existing action before retrying.");const n=await e.waitForTransactionReceipt({hash:t,timeout:12e4,pollingInterval:2e3,confirmations:1});if(n.transactionHash?.toLowerCase()!==t.toLowerCase()||n.status!=="success")throw new Error("The destination transaction has not been confirmed successfully. Reconcile the existing action before retrying.");return t}async function ro(e){let t=e.hash,n=!1;const s=Date.now()+12e4,o=i=>i.transactionHash&&i.transactionHash.toLowerCase()!==t.toLowerCase();let r=await e.client.waitForTransactionReceipt({hash:t,timeout:12e4,pollingInterval:2e3,confirmations:1,onReplaced:i=>{const l=i.transaction,c=i.replacedTransaction;if(!(i.reason==="repriced"&&c?.hash?.toLowerCase()===t.toLowerCase()&&c?.to?.toLowerCase()===e.call.to.toLowerCase()&&(c.input??"0x").toLowerCase()===e.call.data.toLowerCase()&&BigInt(c.value??0)===e.call.value&&c?.from&&c.nonce!==void 0&&/^0x[0-9a-f]{64}$/i.test(l?.hash??"")&&l?.to?.toLowerCase()===e.call.to.toLowerCase()&&(l.input??"0x").toLowerCase()===e.call.data.toLowerCase()&&BigInt(l.value??0)===e.call.value&&l.from?.toLowerCase()===c?.from?.toLowerCase()&&l.nonce===c?.nonce)){n=!0,e.onCancelled?.();return}t=l.hash,e.onRepriced?.(t)}});if(n)throw new Error("Transaction was cancelled or replaced with a different action; retry the unfinished action");if((e.confirmations??1)>1&&!o(r)&&r.status==="success"&&(r=await e.client.waitForTransactionReceipt({hash:t,timeout:Math.max(s-Date.now(),1),pollingInterval:2e3,confirmations:e.confirmations})),o(r))throw new Error("Unexpected transaction receipt; recover the submitted transaction before retrying");return{receipt:r,hash:t}}const Qd=10n,Gd=10n,Kd=5;function er(e){return e.map(t=>({...t,calls:[...t.calls],tokenTransfers:t.tokenTransfers?[...t.tokenTransfers]:void 0}))}function ao({token:e,recipient:t,amount:n}){return{to:e,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[t,n]})}}function Zd({chainBatches:e,token:t,amount:n}){const s=er(e),o=s[s.length-1];if(!o)return s;const r=S.getEscrowContractAddress(o.chainId);return o.calls=[...o.calls,ao({token:t,recipient:r,amount:n})],s}function gi({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:o}){const r=er(e),i=r[r.length-1];if(!i)throw new u.SpiceflowError("INVALID_PARAMS","Action-output escrow funding requires at least one chain batch.");const l=u.calculateBpsFee(s,Gd),c=o+l;if(c>=s)throw new u.SpiceflowError("INVALID_PARAMS","Borrow amount is too small after gas and Spicenet fees.",{grossAmount:s.toString(),gasFee:o.toString(),spicenetFee:l.toString()});const d=s-c,f=S.getEscrowContractAddress(i.chainId),m=[];return o>0n&&m.push(ao({token:n,recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:o})),l>0n&&m.push(ao({token:n,recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:l})),i.calls=[...i.calls,...m,ao({token:n,recipient:f,amount:d})],i.tokenTransfers=[...i.tokenTransfers??[],...o>0n?[{from:t,to:S.SPICE_GAS_FEE_RECIPIENT,token:n,amount:o}]:[],...l>0n?[{from:t,to:S.SPICE_PLATFORM_FEE_RECIPIENT,token:n,amount:l}]:[],{from:t,to:f,token:n,amount:d}],{chainBatches:r,gasFee:o,spicenetFee:l,netEscrowAmount:d,outputCredit:{chainId:i.chainId,token:n,amount:s}}}async function xi({chainBatches:e,user:t,token:n,grossAmount:s,chainAuthorizations:o}){let r=0n,i=gi({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r});for(let l=0;l<Kd;l+=1){const c=S.hashChainBatches(i.chainBatches),d=(await u.relayerService.estimateBatchGas({user:t,outputToken:n,chainBatches:i.chainBatches.map((f,m)=>({...f,hash:c[m].hash})),chainAuthorizations:o})).gasFee;if(d===r)return i;r=d,i=gi({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r})}throw new u.SpiceflowError("INVALID_PARAMS","Action-output fee estimate did not converge. Please retry.")}function Cn(e){return S.isSpicenetChainId(e.chainId)}const Yd="0xa9059cbb";function Ss(e,t){return`${e}:${S.normalizeNativeTokenAddress(t).toLowerCase()}`}function yi(e,t){return t===S.ZERO_ADDRESS.toLowerCase()?{symbol:u.getChainName(e),decimals:18}:S.getTokenByAddress(t,e)??{symbol:"tokens",decimals:18}}function Xd(e,t){const n=S.getTokenByAddress(t,e);return[n?.equivalenceGroup,n?.symbol,n?.name]}async function tr(e){return u.getWalletBalanceEntries(e)}async function Jd(e,t,n){const s=new Map,o=n?.walletFundingRequirement,r=o&&Ss(o.chainId,o.token);r&&s.set(r,0n);const i=new Map,l=new Map,c=new Map,d=new Map;for(const m of n?.actionOutputCredits??[]){const h=Ss(m.chainId,m.token);d.set(h,(d.get(h)??0n)+m.amount)}for(const m of e){if(Cn(m))continue;for(const g of m.tokenTransfers??[]){if(g.from!=="escrow"&&g.from!=="solver"||!u.addressesEqual(g.to,t))continue;const w=BigInt(g.amount??0);if(w<=0n)continue;const x=Ss(m.chainId,g.token);i.set(x,(i.get(x)??0n)+w),g.from==="escrow"&&l.set(x,(l.get(x)??0n)+w)}const h=S.getEscrowContract(m.chainId),y=g=>!!h&&h!==S.ZERO_ADDRESS&&u.addressesEqual(g,h);for(const g of m.calls){if(g.value&&g.value>0n){const w=Ss(m.chainId,S.ZERO_ADDRESS);s.set(w,(s.get(w)??0n)+g.value),y(g.to)&&c.set(w,(c.get(w)??0n)+g.value)}if(g.data?.startsWith(Yd))try{const w=T.decodeFunctionData({abi:T.erc20Abi,data:g.data});if(w.functionName!=="transfer")continue;const[x,b]=w.args,C=g.to.toLowerCase(),v=Ss(m.chainId,C);s.set(v,(s.get(v)??0n)+b),y(x)&&c.set(v,(c.get(v)??0n)+b)}catch{}}}let f=null;for(const[m,h]of l){const y=h-(c.get(m)??0n);if(y<=0n)continue;const[g,w]=m.split(":"),x=Number(g),b=yi(x,w);f??(f=await tr(t));const C=Qo(f,x,w,Xd(x,w));if(!(C>=y))throw new u.SpiceflowError("INVALID_PARAMS",`Insufficient Spice ${b.symbol}: needs ${T.formatUnits(y,b.decimals)}, has ${T.formatUnits(C,b.decimals)}.`,{chainId:x,token:w,userAddress:t,requiredAmount:y.toString(),balance:C.toString(),balanceSource:"spice"})}for(const[m,h]of s){const[y,g]=m.split(":"),w=Number(y);let x=h-(i.get(m)??0n)-(d.get(m)??0n);if(o&&m===r&&o.amount>x&&(x=o.amount),x<=0n)continue;const b=u.getClientForChain(w),C=g===S.ZERO_ADDRESS.toLowerCase()?await b.getBalance({address:t}):await b.readContract({address:g,abi:T.erc20Abi,functionName:"balanceOf",args:[t]});if(C>=x)continue;const v=yi(w,g);throw new u.SpiceflowError("INVALID_PARAMS",`Insufficient ${v.symbol} on ${u.getChainName(w)}: needs ${T.formatUnits(x,v.decimals)}, has ${T.formatUnits(C,v.decimals)}.`,{chainId:w,token:g,userAddress:t,requiredAmount:x.toString(),balance:C.toString(),balanceSource:"wallet"})}}function $d({chainBatches:e,tokenAddress:t,tokenTransferAmount:n,useCustomTransfers:s}){if(!(e.some(Cn)||!(s?e.some(o=>Cn(o)?!1:(o.tokenTransfers??[]).some(r=>r.from==="escrow"&&BigInt(r.amount??0)>0n)):n>0n)))throw new u.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 _d(e,t,n,s){t.forEach((o,r)=>{if(!o.to||!o.from||!o.token||o.amount===void 0)throw new u.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 io({user:e,chainBatches:t,tokenAddress:n,tokenTransferAmount:s,exp:o,signature:r,chainAuthorizations:i,useCustomTransfers:l}){const c=t,d=S.hashChainBatches(c),f=c.filter(m=>!Cn(m)).length;if($d({chainBatches:c,tokenAddress:n,tokenTransferAmount:s,useCustomTransfers:l}),!l&&s>0n&&f>1)throw new u.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:d.map((m,h)=>{const y=c[h],g=Cn(y)?[]:l?y.tokenTransfers??[]:s>0n?[{from:"escrow",to:e,token:n,amount:s}]:[];return _d(Number(m.chainId),g,e,l),{hash:m.hash,chainId:Number(m.chainId),tokenTransfers:g,calls:m.calls}})}]}}function wi(e,t){const n=t?.depositToEscrow?.gasFundingSource==="action-output"?t.depositToEscrow:null,s=t?.depositToEscrow&&!n?Zd({chainBatches:e,token:t.depositToEscrow.token,amount:t.depositToEscrow.amount}):er(e);return{actionOutputDeposit:n,batches:s}}let nr=!1;function Is(){const{address:e,isConnected:t,isAuthenticated:n,actions:s}=u.useWallet(),o=p.useRef(null),{intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:c,clearStatus:d}=Md({checkStepStatus:(x,b)=>u.relayerService.checkStepStatus(x,b),retryStep:async(x,b)=>{const[C,v]=x.split("/"),k=parseInt(v||"0",10);await u.relayerService.executeStep(C,k,b,{action:"execute"})}}),f=p.useRef(s),m=p.useRef(new Map);f.current=s;const h=p.useCallback((x,b,C,v,k)=>ui({chainBatches:x,signingAddress:b,actions:f.current,cache:m.current,signal:C,onSignatureRequested:v,beforeSign:k}),[]),y=p.useCallback((x,b,C,v)=>di(f.current,x,b,C,v),[]),g=p.useCallback(async(x,b,C,v,k,I)=>{const A=(E,j,R)=>{v?.({step:E,message:j,...R})};if(nr)throw new u.SpiceflowError("CONCURRENT_EXECUTION","A execution transaction is already in progress. Please wait.");nr=!0;try{if(!e)throw new u.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const E=I?.userOverride||e,j=u.relayerService.getBaseUrl(),R=await u.relayerService.supportsAutomaticContinuation(),{actionOutputDeposit:B,batches:M}=wi(x,I);let D=M,U=[],O=I?.useCustomTransfers,F=ri(D),P=null;const z=async()=>{for(let ee=0;F.length>0&&ee<3;ee++)try{P=await tr(E);break}catch(V){if(k?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");if(ee===2)throw new u.SpiceflowError("RELAYER_ERROR","Unable to read your Spice balance. Please try again before submitting the transaction.",{cause:V});await pn(1e3)}await I?.validateBeforeSubmit?.(D)};A("building","Preparing your wallet and transaction...");const q=await h(D,E,k,()=>A("signing-delegation","Confirm the authorization in your wallet..."),z);if(A("building","Checking transaction fees and balances..."),k?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");const ne=BigInt(Math.floor(Date.now()/1e3)+3600);if(B){const ee=await xi({chainBatches:x,user:E,token:B.token,grossAmount:B.amount,chainAuthorizations:q});D=ee.chainBatches,U=[ee.outputCredit],O=!0}if(!I?.skipPreSubmitFeeEstimate){let ee=!1;if(I?.feeExecutionMode==="user-transfer"&&I.adjustBatchesForEstimate&&u.relayerService.canValidateActionFees()){const V=await u.relayerService.validateActionFees(io({user:E,chainBatches:D,tokenAddress:b,tokenTransferAmount:C,exp:Number(ne),signature:"0x00",chainAuthorizations:q,useCustomTransfers:O}),{signal:k});o.current=V;const me=await I.adjustBatchesForEstimate({feeEstimate:V,chainBatches:D});ee=!me||oi(D,me),me&&(D=me)}for(let V=0;!ee&&V<10;V++){const me=I?.feeExecutionMode==="user-transfer"?oo(D,E):D,he=io({user:E,chainBatches:me,tokenAddress:b,tokenTransferAmount:C,exp:Number(ne),signature:"0x00",chainAuthorizations:q,useCustomTransfers:O}),Re=await u.relayerService.estimateActionFees(he,{signal:k});o.current=Re;const W=await I?.adjustBatchesForEstimate?.({feeEstimate:Re,chainBatches:D}),L=!!W&&oi(D,W);if(!W||L){ee=!0;break}D=W}if(!ee)throw new u.SpiceflowError("INVALID_PARAMS","Fee estimate did not converge. Please retry.")}if(I?.prepareForSigning){const ee=await I.prepareForSigning(D);if(ee.length!==D.length||ee.some((V,me)=>V.chainId!==D[me].chainId||V.domain!==D[me].domain))throw new Error("The funded route changed before signing");D=ee}I?.resolveActionOutputCredits&&(U=await I.resolveActionOutputCredits()),(!I?.skipUserFundingPreflight||I.walletFundingRequirement)&&await Jd(I?.skipUserFundingPreflight?[]:D,E,{actionOutputCredits:U,walletFundingRequirement:I?.walletFundingRequirement}),F=ri(D),F.length&&!P&&(P=await u.getWalletBalanceEntries(E)),await I?.validateBeforeSubmit?.(D),A("building","Preparing the signing request...");const de=await y(D,ne,k,()=>A("signing-intent","Confirm the transaction in your wallet..."));if(k?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");A("submitting","Submitting to relayer...");const ie=io({user:E,chainBatches:D,tokenAddress:b,tokenTransferAmount:C,exp:Number(ne),signature:de,chainAuthorizations:q,useCustomTransfers:O}),Y=Date.now();if(await I?.validateBeforeSubmit?.(D),console.debug("[SpiceFlow:execution]",{phase:"submit-check-complete",at:Date.now(),durationMs:Date.now()-Y}),u.relayerService.getBaseUrl()!==j)throw new Error("The network changed before submission. Review your balances before trying again.");const Q=await u.relayerService.createAction({...ie,...R?{autoContinue:!0}:{}}),[G,fe]=Q.intentIds[0].split("/"),X=parseInt(fe||"0",10),be=`${G}/${X}`;A("executing","Executing on chain..."),A("executing","Executing on chain...",{actionId:G,intentId:be,intentIndex:X,totalSteps:D.length,autoContinue:Q.autoContinue===!0});const we=D.length,N=new u.RelayerService;N.setBaseUrl(j);const J=await qd({actionId:G,intentIndex:X,intentId:be,totalSteps:we,signal:k,observeOnly:Q.autoContinue===!0,relayer:Q.autoContinue?N:u.relayerService,...P?{delayBeforeSpicenetStepMs:0}:{},isSpicenetStep:ee=>Cn(D[ee]),beforeStep:async ee=>{if(Q.autoContinue===!0||!P||!Cn(D[ee]))return;const V=await li({deposits:F,baseline:P,fetchEntries:()=>tr(E),signal:k});if(k?.aborted)throw new u.SpiceflowError("ABORT","Execution transaction aborted");if(!V)throw new u.SpiceflowError("POLLING_EXHAUSTED","Your deposit is still waiting for Spice credit. Check this transaction's status before trying again.",{actionId:G,intentId:be,stepId:ee})},maxExecuteAttemptsForStep:ee=>Cn(D[ee])?6:3,maxPolls:Q.autoContinue?Number.POSITIVE_INFINITY:180,onStatusMessage:(ee,V)=>{A("executing",ee,{txHash:V,actionId:G,intentId:be,intentIndex:X,totalSteps:we,autoContinue:Q.autoContinue===!0})}});if(I?.requireDestinationReceipt){const ee=[...D].reverse().find(V=>!Cn(V));if(!ee)throw new Error("The action has no destination transaction to verify.");await Vd(u.getClientForChain(ee.chainId),J)}return A("success","Transaction successful!",{txHash:J,actionId:G,intentId:be,intentIndex:X,totalSteps:we,autoContinue:Q.autoContinue===!0}),J||G}catch(E){throw console.error("[Execution] Error:",E),A("error",E.message||"Transaction failed",{error:E.message}),E}finally{nr=!1}},[e,n,h,y]),w=p.useCallback(async(x,b,C,v)=>{if(!e)throw new u.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const k=v?.userOverride||e,I=v?.validateFeeCalls===!0&&v.feeExecutionMode==="user-transfer"&&u.relayerService.canValidateActionFees(),{actionOutputDeposit:A,batches:E}=wi(x,v);let j=E;const R=v?.feeExecutionMode==="user-transfer"&&!I?oo(j,k):j,B=v?.signAuthorizationsForEstimate?await h(R,k):void 0;let M=v?.useCustomTransfers;A&&(j=(await xi({chainBatches:x,user:k,token:A.token,grossAmount:A.amount,chainAuthorizations:B})).chainBatches,M=!0);const D=v?.feeExecutionMode==="user-transfer"&&!I?oo(j,k):j,U=io({user:k,chainBatches:D,tokenAddress:b,tokenTransferAmount:C,exp:Math.floor(Date.now()/1e3)+3600,signature:"0x00",chainAuthorizations:B,useCustomTransfers:M}),O=await(I?u.relayerService.validateActionFees(U,{signal:v?.signal}):u.relayerService.estimateActionFees(U,{signal:v?.signal}));return o.current=O,O},[e,h]);return{execute:g,estimate:w,lastFeeEstimate:o.current,hasEmbeddedWallet:t&&n,intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:c,clearStatus:d}}const sr=({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})]}),bi=({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=p.useId(),[c,d]=p.useState(!1),f=p.useRef(null),[m,h]=p.useState(!1),[y,g]=p.useState(null);p.useEffect(()=>{h(!0)},[]),p.useLayoutEffect(()=>{if(!c||!f.current)return;const x=()=>{if(!f.current)return;const b=f.current.getBoundingClientRect(),C=Math.min(220,window.innerWidth-48),v=Math.min(Math.max(b.left+b.width/2,24+C/2),window.innerWidth-24-C/2),k=b.top>84;g({top:k?b.top-10:b.bottom+10,left:v,placement:k?"top":"bottom"})};return x(),window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",x)}},[c]);const w=c&&m&&y?Gn.createPortal(a.jsxs("span",{id:l,role:"tooltip",style:{position:"fixed",left:y.left,top:y.top,transform:y.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:u.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,...y.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:()=>d(!0),onMouseLeave:()=>d(!1),children:a.jsx("button",{type:"button","aria-label":t,"aria-describedby":c?l:void 0,onFocus:()=>d(!0),onBlur:()=>d(!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:c?`0 0 0 2px ${r}26`:"none",transition:"border-color 120ms ease, box-shadow 120ms ease, color 120ms ease"},children:i||a.jsx(sr,{color:r})})}),w]})},As=(e,t,n,s)=>({width:e,height:e,fill:"none",className:t,"aria-hidden":n??!0,style:s}),Jn=({size:e=16,color:t="currentColor",strokeWidth:n=2,direction:s="down",className:o,style:r,"aria-hidden":i})=>a.jsx("svg",{...As(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"})}),eu=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsxs("svg",{...As(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"})]}),tu=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...As(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"})}),nu=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...As(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"})}),vi=({size:e=14,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...As(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"})});function lo(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 or(e,t,n){const s=`${lo(e,t)} ${n}`;return e===0n?s:`-${s}`}const su=({fontFamily:e,textPrimary:t,textSecondary:n,cardBg:s,cardBorder:o,resolvedDark:r,darkCardBorder:i,primaryColor:l,feePreview:c,feeOnlyAction:d=!1,asset:f,isLoading:m,errorText:h,directExecutionFeeNote:y=!1})=>{const g=u.useAssetDisplay(),w=f&&c&&[f.symbol,f.displaySymbol,f.receiptTokenName].includes(c.symbol)?g(f).symbol:c?.symbol,x=r?i??o:"#e5e7eb",b=r?"#111214":"#111827",C=r?"rgba(255,255,255,0.08)":"rgba(17,24,39,0.12)",v="#f87171",k=r?"#d1d5db":"#4b5563",I=r?"#f3f4f6":t,[A,E]=p.useState(!1),j=!!h,R=j?null:c,B=R?[...d?[]:[{label:"Total Required",help:"Total amount required to fund this action.",value:`${lo(R.grossAmount,R.decimals)} ${w}`,tone:"default"}],{label:"Spicenet Fee",help:"Fees paid to Spicenet for intent processing and execution.",value:or(R.spicenetFee,R.decimals,w),tone:"fee"},{label:"Network Fee",help:"Network fee shown in the same token you are using for this action.",value:or(R.gasFee,R.decimals,w),tone:"fee"},...R.bridgeFee&&R.bridgeFee>0n?[{label:"Bridge Fee",help:"Estimated cost to rebalance liquidity for this action.",value:or(R.bridgeFee,R.decimals,w),tone:"fee"}]:[],...d?[]:[{label:"Used in TX",help:"Resulting amount of funds used in the transaction.",value:`${lo(R.netAmount,R.decimals)} ${w}`,tone:"default"}]]:[],M=R?`${lo(d?R.totalFee??R.gasFee+R.spicenetFee+(R.bridgeFee??0n):R.grossAmount,R.decimals)} ${w}`:null;return j?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:k,fontFamily:e,lineHeight:"24px"},children:"Fee"}),a.jsx("div",{style:{color:v,fontSize:"12px",lineHeight:"1.55",fontFamily:e},children:h})]})}):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:()=>E(D=>!D),style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",gap:"12px",marginBottom:A?"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:k,fontFamily:e,lineHeight:"24px"},children:"Fee"}),A&&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:[M&&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:d?"Total fees":"Total required"}),a.jsx("span",{style:{fontSize:"14px",fontWeight:700,color:I,fontFamily:e,whiteSpace:"nowrap"},children:M})]}),m&&!y&&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?x:"rgba(0,0,0,0.06)"}`,whiteSpace:"nowrap"},children:"Recalculating"}),a.jsx(Jn,{color:n,direction:A?"up":"down",style:{flexShrink:0}})]})]}),a.jsx("div",{style:{overflow:"hidden",maxHeight:A?"480px":"0px",opacity:A?1:0,transition:"max-height 0.24s ease, opacity 0.18s ease"},children:y?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 shown and paid in your wallet. No Spicenet fee is charged."}):B.length>0?a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{display:"grid",gap:"10px"},children:B.map((D,U)=>a.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",alignItems:"center",gap:"12px",paddingTop:U===0?0:"10px",borderTop:U===0?"none":`1px solid ${x}`,opacity:m?.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:D.label}),a.jsx(bi,{content:D.help,label:`${D.label} info`,textColor:"#f9fafb",backgroundColor:b,borderColor:C,accentColor:r?"#8f96a3":"#6b7280"})]}),a.jsx("span",{style:{fontSize:"12px",color:D.tone==="fee"?v:I,fontFamily:u.font.mono,textAlign:"right",fontWeight:D.label==="Used in TX"?600:500,letterSpacing:"-0.01em"},children:D.value})]},D.label))}),a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:`1px solid ${x}`,fontSize:"11px",color:n,fontFamily:e,lineHeight:"1.45"},children:R?.gasQuoteSource==="estimated"?"Gas quote uses a live estimate.":R?.gasQuoteSource==="configured_fallback"?"Gas quote uses a configured fallback.":"Gas quote is currently zero."})]}):a.jsx("div",{style:{fontSize:"12px",color:h?v:n,fontFamily:e,opacity:h?1:.8,lineHeight:"1.5"},children:h||"Waiting for fee estimate..."})})]})},rr=p.memo(su),Es=({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 Ci="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 ki=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(","),on=({isOpen:e,onClose:t,title:n,subtitle:s,children:o,overlayContent:r,overlayDimmed:i=!0,styles:l,theme:c,maxWidth:d="522px",dark:f,footerLinkText:m,bannerSrc:h,bannerAlt:y,closeOnBackdropClick:g=!1})=>{const{theme:w,dark:x,dk:b,palette:C}=u.useSpiceBrand(l,f),v=f??x,k=c||w,I=l?.fontFamily||k.typography.fontFamily||u.font.ui,A=l?.primaryColor||k.colors.primary,E=p.useRef(null),j=p.useRef(null),R=p.useRef(null),B=p.useId(),[M,D]=p.useState(!1),[U,O]=p.useState(!1),F=p.useRef(t);if(p.useEffect(()=>{F.current=t},[t]),p.useEffect(()=>{if(!e){O(!1);return}j.current=document.activeElement;const q=document.body.style.overflow;document.body.style.overflow="hidden";const ne=requestAnimationFrame(()=>{const Q=requestAnimationFrame(()=>O(!0));R.current=Q}),de=()=>{const Q=E.current;Q&&(Q.querySelectorAll(ki)[0]??Q).focus({preventScroll:!0})},ie=Q=>{if(Q.key==="Escape"){Q.stopPropagation(),F.current();return}if(Q.key!=="Tab")return;const G=E.current;if(!G)return;const fe=Array.from(G.querySelectorAll(ki)).filter(N=>!N.hasAttribute("aria-hidden"));if(fe.length===0){Q.preventDefault(),G.focus();return}const X=fe[0],be=fe[fe.length-1],we=document.activeElement;Q.shiftKey&&we===X?(Q.preventDefault(),be.focus()):!Q.shiftKey&&we===be&&(Q.preventDefault(),X.focus())},Y=requestAnimationFrame(de);return document.addEventListener("keydown",ie),()=>{cancelAnimationFrame(Y),cancelAnimationFrame(ne),R.current&&cancelAnimationFrame(R.current),document.removeEventListener("keydown",ie),document.body.style.overflow=q;const Q=j.current;Q&&typeof Q.focus=="function"&&Q.focus({preventScroll:!0})}},[e]),!e)return null;const P=!!h&&!M,z=y??"";return a.jsx("div",{onMouseDown:q=>{g&&q.target===q.currentTarget&&F.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:u.z.modal,opacity:U?1:0,transition:`opacity ${u.duration.normal} ${u.easing.out}`},children:a.jsx("div",{ref:E,role:"dialog","aria-modal":"true","aria-labelledby":B,tabIndex:-1,style:{backgroundColor:C.shellBorder,borderRadius:"12px",padding:"5px",width:"100%",maxWidth:d,boxSizing:"border-box",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.4)",outline:"none",transform:U?"scale(1)":"scale(0.96)",transition:`transform ${u.duration.slow} ${u.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"}),P&&a.jsxs("div",{style:{position:"relative",width:"100%"},children:[a.jsx("img",{src:h,style:{width:"100%",height:"auto",display:"block",borderRadius:"6px 6px 0 0"},alt:z,"aria-hidden":z===""?"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(Es,{size:28,strokeWidth:2.5})})]}),a.jsxs("div",{style:{padding:"28px 28px 0 28px",position:"relative"},children:[!P&&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:q=>{q.currentTarget.style.backgroundColor=v?`${A}1a`:"#f3f4f6"},onMouseLeave:q=>{q.currentTarget.style.backgroundColor="transparent"},children:a.jsx(Es,{size:24,strokeWidth:2.4})}),a.jsx("h2",{id:B,style:{fontSize:"22px",fontWeight:"700",color:C.textPrimary,margin:"0",fontFamily:I,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:I,borderBottom:v?`1px solid ${b.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:Ci,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:C.textSecondary,textDecoration:"none",display:"flex",alignItems:"center",gap:"4px",fontFamily:I,lineHeight:"1"},children:a.jsx("span",{style:{color:A,textDecoration:"underline",fontWeight:"500"},children:m??"Learn more \u2192"})})]}),r]})})})},Si=({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})]}),Ii=({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});async function Ai(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 u.ensureWalletOnChain(e,t))}function Ei(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 ar(e){const t=e.provider??await e.wallet?.getEthereumProvider();if(!t)throw new Error("External wallet provider not available");await Ai(t,e.chainId,e.onSwitch);const n=await t.request({method:"eth_accounts"});if(!Array.isArray(n)||!n.some(o=>typeof o=="string"&&o.toLowerCase()===e.account.toLowerCase()))throw new Error("The connected source wallet changed. Reconnect the selected account before funding.");const s=u.getChainConfig(e.chainId)?.viemChain;return{extWc:T.createWalletClient({account:e.account,chain:s,transport:T.custom(t)}),viemChain:s}}async function Fi(e,t,n){const s=Date.now()+1e4;for(;Date.now()<s;){let o;try{o=await Promise.all([t.getBlockNumber({cacheTime:0}),e.request({method:"eth_blockNumber"}).then(BigInt)])}catch{return}if(o.every(r=>r>=n))return;await new Promise(r=>setTimeout(r,250))}}async function ou(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(l){throw Ei(l)&&e.observer?.onRejected?.(n),l}e.observer?.onSubmitted?.(n,o);const r=await ro({client:e.client,hash:o,call:s,onRepriced:l=>e.observer?.onSubmitted?.(n,l),onCancelled:()=>e.observer?.onReverted?.(n,o)});o=r.hash;const i=r.receipt;if(i.status!=="success")throw e.observer?.onReverted?.(n,o),new Error(e.errorMessage);await Fi(e.extWc,e.client,i.blockNumber),e.observer?.onConfirmed?.(n,o),t=o}return t}async function Ti(e){const t=await e.client.estimateFeesPerGas(),n=t.maxFeePerGas??t.gasPrice;if(typeof n!="bigint"||n<=0n)throw new Error("Network gas could not be priced.");let s=0n;for(const o of e.calls){const r=await e.client.estimateGas({account:e.account,...o});s+=(r*n*120n+99n)/100n}return s}function co(e,t,n,s){return n?{to:e,value:s,data:"0x"}:{to:t,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[e,s]})}}async function Bi(e){const t=co(e.recipient,e.token,e.isNative,e.amount),[n,s]=await Promise.all([e.client.estimateGas({account:e.account,...t}),e.client.estimateFeesPerGas()]),o=s.maxFeePerGas??s.gasPrice;if(typeof o!="bigint"||o<=0n)throw new Error("Source transaction gas could not be priced.");return(n*o*120n+99n)/100n}function ir(e,t){return t.isNative?e.sendTransaction({to:t.recipient,value:t.amount,chain:t.viemChain}):e.sendTransaction({to:t.tokenAddr,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[t.recipient,t.amount]}),chain:t.viemChain})}async function ru(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 ir(t,{recipient:s,tokenAddr:o,isNative:r,amount:i,viemChain:e.viemChain})}catch(f){throw Ei(f)&&e.observer?.onRejected?.(0),f}e.observer?.onSubmitted?.(0,l);const c=await ro({client:n,hash:l,call:co(s,o,r,i),onRepriced:f=>e.observer?.onSubmitted?.(0,f),onCancelled:()=>e.observer?.onReverted?.(0,l)});l=c.hash;const d=c.receipt;if(d.status!=="success")throw e.observer?.onReverted?.(0,l),new Error("Embedded wallet funding failed");await Fi(t,n,d.blockNumber),e.observer?.onConfirmed?.(0,l)}function Ri({escrowAddress:e,tokenAddress:t,isNative:n,amount:s,gasFeeAmount:o}){const r=(i,l)=>n?{to:i,value:l,data:"0x"}:{to:t,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[i,l]})};return[r(e,s),...o>0n?[r(S.SPICE_GAS_FEE_RECIPIENT,o)]:[]]}function au({sourceChainId:e,selectedAsset:t,destinationChainId:n,destinationTokenAddress:s,isCrossDenomination:o,convertedUsdAmount:r}){const i=S.normalizeNativeTokenAddress(t.asset.address),l=s;let c,d;if(l&&n)if(c=u.CHAIN_CONFIGS[n]?.supportedTokens?.find(f=>u.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.");d=r}else{const f=T.parseUnits(t.amount,t.asset.decimals);d=S.convertAmountBetweenDecimals(f,t.asset.decimals,c)}return{sourceChainId:e,depositTokenAddress:i,depositAmount:t.amount,depositTokenDecimals:t.asset.decimals,destinationChainId:n,destinationTokenAddress:l,destinationAmount:d,destinationTokenDecimals:c}}async function iu(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 ji(e,t){return!!e&&e.quotedAmount===t.amount&&e.chainId===t.chainId&&u.addressesEqual(e.token,t.token)}async function uo(e,t){const n=await ir(e,{recipient:t.recipient,tokenAddr:t.tokenAddr,isNative:t.isNative,amount:t.amount});t.afterSend?.(n);const s=u.getClientForChain(t.chainId),{receipt:o,hash:r}=await ro({client:s,hash:n,call:co(t.recipient,t.tokenAddr,t.isNative,t.amount),confirmations:2});if(o.status!=="success")throw new Error(t.failureMessage);return t.settle&&await s.getBlockNumber()-o.blockNumber<2n&&await pn(3e3),r}async function lu(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=S.getEscrowContractAddress(o),i=T.parseUnits(n.amount,n.asset.decimals),l=t.length===1&&ji(e.effectiveDepositFee,{amount:i,token:S.normalizeNativeTokenAddress(n.asset.address),chainId:o}),c=!e.isNon7702&&!e.escrowOnly&&!Tn(n.asset);if(!e.isNon7702&&t.length===1&&!c&&!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 f=await ar({provider:e.externalProvider,account:e.sourceAddress,chainId:o});f.viemChain&&(d=f.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 f=u.getChainConfig(o),m=t.map(y=>`${y.amount} ${y.asset.symbol}`).join(", ");e.setConfirmationData({network:f?.displayName||`Chain ${o}`,amount:m,symbol:"",chainId:o}),e.setShowConfirmation(!0);let h=null;e.setDirectDepositStatus("processing"),e.setDirectDepositChainId(o);for(const y of t){const g=T.parseUnits(y.amount,y.asset.decimals),w=S.normalizeNativeTokenAddress(y.asset.address),x=y.asset.isNative||S.isNativeToken(w),b=await uo(d,{chainId:o,recipient:r,tokenAddr:w,isNative:x,amount:g,failureMessage:`Escrow deposit failed for ${y.asset.symbol}`});h=b,e.setDirectDepositTxHash(b)}if(t[0]?.amount){const y=t[0].amount;if(e.onDepositExecute){e.setPostDepositStatus("executing");try{await e.onDepositExecute(y),e.setPostDepositStatus("success")}catch(w){console.error("ctx.onDepositExecute failed:",w),e.setPostDepositStatus("error"),e.setPostDepositError(w?.message||"Post-deposit instruction failed")}}else e.setPostDepositStatus("success");e.setDirectDepositStatus("success"),e.setPostDepositAmount(y),e.setPostDepositSuccess(!0);const g={type:"deposit",status:"success",amount:y,asset:t[0].asset.symbol,sourceChain:f?.displayName||`Chain ${o}`,txHash:h??void 0};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:g})),e.onDepositSuccess?.(g)}e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset)}else{const f=e.destinationChainId||e.nativeChainId;if(!f)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=u.getDelegateContractAddress(o),h=r,y=[];let g=null;for(const w of t){const x=T.parseUnits(w.amount,w.asset.decimals),b=S.normalizeNativeTokenAddress(w.asset.address),C=w.asset.isNative||S.isNativeToken(b),v=await uo(d,{chainId:o,recipient:h,tokenAddr:b,isNative:C,amount:x,failureMessage:`Transfer failed for ${w.asset.symbol}`,settle:!0});g||(g=v),e.depositDataRef.current||(e.depositDataRef.current=[]),e.depositDataRef.current.push({txHash:v,sender:e.sourceAddress,tokenAddress:b,chainId:o,amount:x.toString(),user:e.spiceBalanceUser}),y.push({tokenAddress:b,tokenAmount:x.toString(),sender:e.sourceAddress,receiver:h})}if(!g)throw new Error("No transaction hash generated");if(!e.destinationTokenAddress){const w={type:"deposit",status:"success",amount:t[0]?.amount,asset:t[0]?.asset?.symbol,sourceChain:u.getChainName(o),txHash:g};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:w})),e.onDepositSuccess?.(w),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 w={to:m,value:BigInt(0),data:"0x"},x=await u.getTokenDecimals(f,e.destinationTokenAddress);let b=BigInt(0);for(const B of y){const M=BigInt(B.tokenAmount),D=S.normalizeNativeTokenAddress(B.tokenAddress),U=t.find(F=>{const P=S.normalizeNativeTokenAddress(F.asset.address);return u.addressesEqual(P,D)}),O=U?U.asset.decimals:await u.getTokenDecimals(o,S.ZERO_ADDRESS);b+=S.convertAmountBetweenDecimals(M,O,x)}e.isCrossDenomination&&e.convertedUsdAmount&&(b=e.convertedUsdAmount);const C={chainId:o,tokenTransfers:y.map(B=>({from:B.sender,to:B.receiver,token:B.tokenAddress,amount:BigInt(B.tokenAmount)})),call:w},v=e.isCrossDenomination&&e.convertedUsdAmount?[{from:e.sourceAddress,to:r,token:S.normalizeNativeTokenAddress(t[0].asset.address),amount:T.parseUnits(t[0].amount,t[0].asset.decimals)}]:[],k={chainId:f,tokenTransfers:[...v,{from:"escrow",to:e.sourceAddress,token:e.destinationTokenAddress,amount:b}],call:{to:e.destinationTokenAddress,value:BigInt(0),data:"0x"}},I={mode:"non-7702:on-demand",chainBatches:[C,k]},A={user:e.sourceAddress,intents:[I]},E=await u.relayerService.createAction(A),j=E.actionId,R=E.intentIds[0];if(!g)throw new Error("No transaction hash available");e.startStatusPolling(R,u.createInitialSteps([{chainId:o,calls:[w]},{chainId:f,calls:[k.call]}],B=>u.getChainName(B))),await u.relayerService.executeStep(j,0,0,{action:"execute",hash:g}),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 f=[];let m=0,h;const y=l&&e.effectiveDepositFee?T.formatUnits(e.effectiveDepositFee.net,n.asset.decimals):n?.amount;for(const B of t){const M=T.parseUnits(B.amount,B.asset.decimals),D=l&&B===n,U=D?e.effectiveDepositFee.fee:0n,O=D?e.effectiveDepositFee.net:M,F=e.escrowOnly?M:M+U,P=S.normalizeNativeTokenAddress(B.asset.address),z=B.asset.isNative||S.isNativeToken(P);if(!e.escrowOnly&&!Tn(B.asset)){e.setDirectDepositStatus("processing"),e.setDirectDepositChainId(o);const q=await uo(d,{chainId:o,recipient:e.address,tokenAddr:P,isNative:z,amount:M,failureMessage:`Transfer to embedded wallet failed for ${B.asset.symbol}`});m+=1,B===n&&(h=q);continue}e.escrowOnly||await uo(d,{chainId:o,recipient:e.address,tokenAddr:P,isNative:z,amount:F,failureMessage:`Transfer to embedded wallet failed for ${B.asset.symbol}`,afterSend:()=>wd({chainId:o,tokenAddress:S.normalizeNativeTokenAddress(B.asset.address),tokenSymbol:B.asset.symbol,tokenDecimals:B.asset.decimals,amount:B.amount,rawAmount:M.toString(),embeddedWalletAddress:e.address,externalWalletAddress:e.sourceAddress,timestamp:Date.now(),isNative:z}),settle:!0}),f.push(...Ri({escrowAddress:r,tokenAddress:P,isNative:z,amount:O,gasFeeAmount:U}))}if(f.length===0){e.setDirectDepositTxHash(h??null),e.setDirectDepositStatus("success");const B={type:"deposit",status:"success",amount:n.amount,asset:n.asset.symbol,sourceChain:u.getChainName(o),txHash:h};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:B})),e.onDepositSuccess?.(B),e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(n.asset);return}m>0&&e.setDirectDepositStatus("idle");const g=t.find(B=>e.escrowOnly||Tn(B.asset))??n,w=await u.getClientForChain(o).getBlockNumber(),x=f.map(B=>({...B,to:T.getAddress(B.to)})),b={chainId:o,recentBlock:w,calls:x,tokenTransfers:[]},C=au({sourceChainId:o,selectedAsset:g===n&&y?{...n,amount:y}:g,destinationChainId:e.destinationChainId,destinationTokenAddress:e.destinationTokenAddress,isCrossDenomination:e.isCrossDenomination,convertedUsdAmount:e.convertedUsdAmount}),v=await iu(e.depositBatches,C),k=[b,...v];if(!e.address)throw new Error("Address not available");const I=[];if(e.isCrossDenomination&&e.convertedUsdAmount&&e.destinationTokenAddress){const B=e.selectedDepositAssets[0]?.asset;if(B){const M=T.parseUnits(e.selectedDepositAssets[0].amount,B.decimals);I.push({from:e.address,to:r,token:S.normalizeNativeTokenAddress(B.address),amount:M}),I.push({from:"escrow",to:e.address,token:e.destinationTokenAddress,amount:e.convertedUsdAmount})}}I.length>0&&k[1]&&(k[1].tokenTransfers=I);const A=u.createInitialSteps(k,B=>u.getChainName(B));let E=!1;const j=await e.execution.execute(k,S.ZERO_ADDRESS,0n,B=>{if(B.intentId&&!E){E=!0;for(const M of t)Jo(e.address,o,S.normalizeNativeTokenAddress(M.asset.address));e.startStatusPolling(B.intentId,A)}},void 0,{userOverride:e.address,useCustomTransfers:!0,skipPreSubmitFeeEstimate:!0,skipUserFundingPreflight:!0});if(e.refreshAssets(),e.onDepositExecute&&g.amount)try{e.setPostDepositStatus("executing"),await e.onDepositExecute(y||g.amount),e.setPostDepositStatus("success"),e.setPostDepositAmount(y||g.amount),e.setPostDepositSuccess(!0)}catch(B){console.error("ctx.onDepositExecute failed (7702):",B),e.setPostDepositStatus("error"),e.setPostDepositError(B?.message||"Post-deposit instruction failed");return}const R={type:"deposit",status:"success",amount:g===n&&y||g.amount,asset:g.asset.symbol,sourceChain:u.getChainName(o),txHash:/^0x[0-9a-f]{64}$/i.test(j??"")?j:void 0};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:R})),e.onDepositSuccess?.(R),e.onDepositSelect&&e.onDepositSelect(g.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(u.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 cu(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;if(!r&&!Tn(t))return u.formatRawTokenInput(t.balance,t.decimals);const l=await lr({address:o,depositQuote:{asset:t,amount:t.balance,token:S.normalizeNativeTokenAddress(t.address),chainId:t.chainId},escrowOnly:r}),c=r?t.balance:t.balance>l.fee?t.balance-l.fee:0n;return u.formatRawTokenInput(c,t.decimals)}async function lr(e){const{address:t,depositQuote:n,escrowOnly:s}=e,{asset:o,amount:r,token:i,chainId:l}=n,c=S.getEscrowContractAddress(l),d=o.isNative||S.isNativeToken(i),f=r>1n?1n:0n,m=[d?{to:c,value:r,data:"0x"}:{to:i,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[c,r]})}];f>0n&&m.push(d?{to:S.SPICE_GAS_FEE_RECIPIENT,value:f,data:"0x"}:{to:i,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[S.SPICE_GAS_FEE_RECIPIENT,f]})});const h={chainId:l,tokenTransfers:[],calls:m},y=(await u.relayerService.estimateBatchGas({user:t,outputToken:i,chainBatches:[{...h,hash:S.hashChainBatches([h])[0].hash}],signal:e.signal})).gasFee,g=s&&y<r?r-y:r;return{fee:y,net:g,quotedAmount:r,token:i,chainId:l}}function du(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 Mn=({value:e,element:t="span",placeholder:n,ariaLabel:s,ariaInvalid:o,disabled:r,onChange:i,inputMode:l="decimal",autoComplete:c="off",dataSpiceflowFocus:d,fontFamily:f,fontWeight:m=700,color:h,textAlign:y,lineHeight:g=1,maxFontSize:w=40,minFontSize:x=18,overflow:b="ellipsis",title:C,style:v})=>{const k=p.useRef(null),[I,A]=p.useState(),E=du(e||n||"",w,x),j=e||n||"";p.useEffect(()=>{const M=k.current;if(!M||b!=="ellipsis"){A(void 0);return}let D=!0,U=null;const O=()=>{if(!D)return;const P=getComputedStyle(M),z=M.clientWidth-parseFloat(P.paddingLeft||"0")-parseFloat(P.paddingRight||"0");if(!(z>0))return;if(!U){try{U=document.createElement("canvas").getContext("2d")}catch{return}if(!U)return}U.font=`${P.fontStyle} ${P.fontWeight} ${E}px ${P.fontFamily}`;const q=U.measureText(j),ne=Math.max(q.width,(q.actualBoundingBoxLeft||0)+(q.actualBoundingBoxRight||0))+(parseFloat(P.letterSpacing)||0)*Math.max(0,j.length-1),de=ne>z?E*Math.max(0,z-1)/ne:void 0;A(ie=>ie===de?ie:de)};O();const F=typeof ResizeObserver>"u"?void 0:new ResizeObserver(O);return F?.observe(M),F||window.addEventListener("resize",O),document.fonts?.addEventListener("loadingdone",O),()=>{D=!1,F?.disconnect(),F||window.removeEventListener("resize",O),document.fonts?.removeEventListener("loadingdone",O)}},[j,E,f,m,b,t,v?.fontFamily,v?.fontStyle,v?.fontWeight,v?.letterSpacing,v?.paddingLeft,v?.paddingRight]);const R=b==="wrap"?{overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"}:b==="ellipsis"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:{},B={fontFamily:f,fontSize:`${Math.min(E,I??E)}px`,fontWeight:m,color:h,lineHeight:g,letterSpacing:0,textAlign:y,minWidth:0,maxWidth:"100%",...R,...v};return t==="input"?a.jsx("input",{ref:k,type:"text",inputMode:l,autoComplete:c,"aria-label":s,"aria-invalid":o||void 0,"data-spiceflow-focus":d||void 0,value:e,onChange:i,placeholder:n,disabled:r,title:C,style:{backgroundColor:"transparent",border:"none",outline:"none",padding:0,width:"100%",...B}}):a.jsx(t,{ref:k,title:C,style:B,children:e})},cr=({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})]})},Oi=({chainId:e,name:t,size:n=16})=>{const s=e&&(Fn[e]||S.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},uu={1:"ethereum",56:"binance-smart-chain",137:"polygon-pos",143:"monad",4114:"citrea",4663:"robinhood",8453:"base",42161:"arbitrum-one"},pu=6e4,Fs=new Map;function Di(e,t){return Fs.get(e)?.logos?.get(t.toLowerCase())}function fu(e,t){const n=uu[e];if(!n||S.isNativeToken(t))return;const s=Fs.get(e);if(s?.logos||s?.pending)return s.pending;if(s?.failedAt!==void 0&&Date.now()-s.failedAt<pu)return;const o=Promise.resolve().then(async()=>{try{const r=await fetch(`https://tokens.coingecko.com/${n}/all.json`,{signal:AbortSignal.timeout(1e4)});if(!r.ok)throw new Error("Token list request failed");const i=await r.json(),l=new Map;for(const c of i?.tokens??[])c?.address&&c?.logoURI&&l.set(String(c.address).toLowerCase(),c.logoURI);Fs.set(e,{logos:l})}catch(r){console.warn(`[tokenLogos] Token list unavailable for chain ${e}`,r),Fs.set(e,{failedAt:Date.now()})}});return Fs.set(e,{...s,pending:o}),o}function dr(e,t,n){const[s,o]=p.useState(),r=e||e===null||t===void 0||!n?void 0:`${t}:${n.toLowerCase()}`,i=r?Di(t,n):void 0;return p.useEffect(()=>{if(!r||i||t===void 0||!n)return;let l=!0;const c=()=>{const f=Di(t,n);l&&f&&o({token:r,logo:f})},d=fu(t,n);return d?d.then(c):c(),()=>{l=!1}},[r,i,t,n]),e||i||(s&&s.token===r?s.logo:void 0)}const po=({symbol:e,label:t,logoURI:n,chainId:s,address:o,size:r=20,theme:i})=>{const{theme:l}=u.useSpiceBrand(),c=i||l,[d,f]=p.useState(),m={width:`${r}px`,height:`${r}px`,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",fontSize:`${r*.4}px`,fontWeight:c.typography.fontWeight.bold,flexShrink:0,overflow:"hidden",backgroundColor:"#ffffff"},h=dr(n===null?null:n||Ho[e.toUpperCase()],s,o);if(n===null)return null;if(h&&h!==d)return a.jsx("img",{src:h,alt:t??e,loading:"lazy",decoding:"async",style:{...m,objectFit:"cover"},onError:()=>f(h)});const y=mu(e);return a.jsx("div",{style:{...m,...y.style},children:y.icon})},mu=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,c)=>c.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)}},hu=({selectedAsset:e,assets:t,onAssetSelect:n,showDropdown:s,onToggleDropdown:o,disabled:r=!1,theme:i,onViewAllAssets:l,getAvailableBalance:c})=>{const d=u.useAssetDisplay(),f=F=>{const P=c?c(F):F.balance;return P===void 0?"...":u.formatAssetBalance({balance:P,decimals:F.decimals})},{theme:m}=u.useSpiceBrand(),h=i||m,y=p.useRef(null),g=p.useRef(null),w=p.useRef(null),[x,b]=p.useState(null);p.useEffect(()=>{if(s&&g.current){const F=()=>{if(g.current){const P=g.current.getBoundingClientRect();b({top:P.bottom+6,right:window.innerWidth-P.right})}};return F(),window.addEventListener("scroll",F,!0),window.addEventListener("resize",F),()=>{window.removeEventListener("scroll",F,!0),window.removeEventListener("resize",F)}}else b(null)},[s]),p.useEffect(()=>{const F=P=>{y.current&&!y.current.contains(P.target)&&w.current&&!w.current.contains(P.target)&&s&&o()};return s&&document.addEventListener("mousedown",F),()=>{document.removeEventListener("mousedown",F)}},[s,o]);const[C,v]=p.useState(!1),k=h.mode==="light",I={backgroundColor:"transparent",border:`1px solid ${k?"#aaaaaa":h.colors.border}`,borderRadius:"6px",color:h.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:u.transition.interactive,transform:C?"scale(0.98)":"scale(1)"},A={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"10px",minWidth:0},E={display:"flex",alignItems:"center",gap:"4px",paddingTop:"4px",borderTop:`1px solid ${h.colors.border}`},j=()=>x?{position:"fixed",top:`${x.top}px`,right:`${x.right}px`,backgroundColor:h.colors.secondary,border:`1px solid ${h.colors.border}`,borderRadius:h.borderRadius.md,boxShadow:h.shadows.lg,zIndex:u.z.dropdown,width:"200px",maxHeight:"300px",overflow:"auto"}:{},R={backgroundColor:"transparent",border:"none",color:h.colors.text,cursor:"pointer",padding:h.spacing.sm,width:"100%",display:"flex",alignItems:"center",gap:h.spacing.sm,transition:`background-color ${h.animation.normal}`,":hover":{backgroundColor:h.colors.surfaceHover}},B={display:"flex",flexDirection:"column",alignItems:"flex-start",flex:1},M={fontSize:h.typography.fontSize.sm,fontWeight:h.typography.fontWeight.medium},D={fontSize:h.typography.fontSize.xs,color:h.colors.textMuted},U={backgroundColor:"transparent",border:"none",borderTop:`1px solid ${h.colors.border}`,color:h.colors.primary,cursor:"pointer",padding:"10px 12px",width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontFamily:h.typography.fontFamily,fontSize:h.typography.fontSize.xs,fontWeight:h.typography.fontWeight.medium,textDecoration:"underline",textUnderlineOffset:"2px"},O={transition:`transform ${h.animation.normal}`,transform:s?"rotate(180deg)":"rotate(0deg)",flexShrink:0};return a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"relative"},ref:y,children:a.jsxs("div",{ref:g,style:I,onClick:r?void 0:o,onMouseLeave:()=>{v(!1)},onMouseDown:()=>v(!0),onMouseUp:()=>v(!1),children:[a.jsxs("div",{style:A,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(po,{symbol:e.asset.symbol,label:d(e.asset).symbol,logoURI:d(e.asset).logoURI,chainId:e.asset.chainId,address:e.asset.address,theme:h,size:24}),a.jsx("span",{style:{fontSize:"15px",fontWeight:500,color:h.colors.text,lineHeight:"1.5",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d(e.asset).symbol})]}):a.jsx("span",{style:{fontSize:"14px",color:h.colors.textMuted},children:"Select"})}),a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:k?h.colors.textMuted:"#c7ccd4",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:O,children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]}),e?.asset&&a.jsxs("div",{style:E,children:[!e.asset.displayChainName&&a.jsx(Oi,{chainId:e.asset.chainId,theme:h}),a.jsx("span",{style:{fontSize:"11px",color:h.colors.textMuted},children:u.getAssetDisplayChainName(e.asset)})]})]})}),s&&x&&Gn.createPortal(a.jsxs("div",{ref:w,style:j(),children:[t.length===0&&a.jsx("div",{style:{padding:"10px 12px",color:h.colors.textMuted,fontSize:h.typography.fontSize.xs},children:"No assets available"}),t.map(F=>a.jsxs("button",{style:R,onClick:()=>{n(F),o()},children:[a.jsx(po,{symbol:F.symbol,label:d(F).symbol,logoURI:d(F).logoURI,chainId:F.chainId,address:F.address,theme:h},ye(F)),a.jsxs("div",{style:B,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:h.spacing.xs},children:[a.jsx("span",{style:M,children:d(F).symbol}),!F.displayChainName&&a.jsx(Oi,{chainId:F.chainId,theme:h})]}),a.jsxs("span",{style:D,children:[f(F)," \u2022 ",u.getAssetDisplayChainName(F)]})]})]},ye(F))),l&&a.jsxs("button",{type:"button",style:U,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)]})},gu=({assets:e,selectedAsset:t,onAssetSelect:n,onAmountChange:s,disabled:o=!1,loading:r=!1,label:i="Select Asset",showBalance:l=!0,showMaxButton:c=!0,placeholder:d="0.0",theme:f,styles:m,maxAmount:h,resolveMaxAmount:y,getAvailableBalance:g,hideAmountInput:w=!1,displayAmount:x,dark:b,onViewAllAssets:C})=>{const v=u.useAssetDisplay(),{theme:k,primaryColor:I,dark:A,dk:E}=u.useSpiceBrand(m,b),j=f||k,R=b??A,[B,M]=p.useState(!1),[D,U]=p.useState(null),[O,F]=p.useState(null),[P,z]=p.useState(!1),[q,ne]=p.useState(null),[de,ie]=p.useState(t?.amount||""),Y=p.useRef(0),Q=t?.asset?ye(t.asset):"",G=t?.asset?g?g(t.asset):t.asset.balance:void 0,fe=q??h;p.useLayoutEffect(()=>()=>{Y.current++},[]),p.useLayoutEffect(()=>{Y.current++,ie(t?.amount||""),z(!1)},[Q,t?.amount]),p.useLayoutEffect(()=>{Y.current++,ne(null),z(!1)},[Q,t?.asset.owner,t?.asset.decimals,t?.asset.balance,G,h,y,o,r]);const X=()=>{Y.current++,z(!1)},be=()=>{const W=t?.asset;if(!W||G===void 0)return;if(!fe)return G;const L=T.parseUnits(fe,W.decimals);return L<G?L:G},we=W=>{ie(W),s?.(W)},N=W=>{X();const L=t?.asset,$=u.parseNumericInput(W.startsWith(".")?`0${W}`:W,L?.decimals);if(!L||!$)return we($);const le=T.parseUnits($,L.decimals),se=be();we(se!==void 0&&le>se?T.formatUnits(se,L.decimals):$)},J=async()=>{const W=t?.asset;if(!W||o||r||G===void 0)return;const L=++Y.current,$=()=>Y.current===L,le=y;if(q!==null){const oe=be();oe!==void 0&&we(T.formatUnits(oe,W.decimals));return}if(le){z(!0);try{const oe=await le(W);if(!$())return;if(oe!==null){const Ie=u.parseNumericInput(oe,W.decimals),_=be();if(!Ie||_===void 0)return;const je=T.parseUnits(Ie,W.decimals)>_?T.formatUnits(_,W.decimals):Ie;ne(je),we(je);return}return}catch(oe){$()&&console.warn("[AssetSelector] Failed to resolve max amount:",oe);return}finally{$()&&z(!1)}}const se=be();$()&&se!==void 0&&we(T.formatUnits(se,W.decimals))},ee=async W=>{if(!t||o||G===void 0)return;if(W===100)return J();X();const L=be();L!==void 0&&we(T.formatUnits(L*BigInt(W)/100n,t.asset.decimals))},V=t&&G!==void 0?Number(T.formatUnits(G,t.asset.decimals)):0,me=parseFloat(de)||0,he=V>0?me/V*100:0,Re={backgroundColor:m?.assetSelector?.backgroundColor||m?.secondaryBackground||(R?E.cardBg:"#e9e9e9"),border:R?`0.5px solid ${E.cardBorder}`:"0.5px solid #A8A8A7",borderRadius:m?.assetSelector?.borderRadius||"6px",padding:m?.assetSelector?.padding||"16px",height:"auto",minHeight:w?void 0:"144px",display:"flex",flexDirection:"column",gap:"8px",position:"relative",opacity:o?.6:1};return r?a.jsx("div",{style:Re,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:R?E.hoverBg:"#d1d5db",borderRadius:"4px",height:"16px",width:"60px"}}),a.jsx("div",{style:{backgroundColor:R?E.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:R?E.hoverBg:"#d1d5db",borderRadius:"4px",height:"12px",width:"80px"}}),a.jsx("div",{style:{backgroundColor:R?E.hoverBg:"#d1d5db",borderRadius:"6px",height:"46px",width:"128px"}})]})]})}):a.jsxs("div",{style:Re,children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:m?.fontFamily||j.typography.fontFamily,fontSize:"16px",fontWeight:500,color:R?E.textSecondary:"#7d7c7b",lineHeight:"24px"},children:i}),l&&t?.asset&&a.jsxs("span",{style:{fontFamily:m?.fontFamily||j.typography.fontFamily,fontSize:"12px",fontWeight:500,color:R?E.textSecondary:"#71757a",lineHeight:"16px"},children:["Balance:"," ",G===void 0?"...":u.formatAssetBalance({balance:G,decimals:t.asset.decimals})]})]}),a.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px 12px",justifyContent:w&&!x?"flex-start":"space-between",alignItems:"center",flex:1},children:[!w&&a.jsx(Mn,{element:"input",ariaLabel:t?.asset?`${v(t.asset).symbol} amount`:"Amount",dataSpiceflowFocus:!0,value:de,onChange:W=>N(W.target.value),placeholder:d,disabled:o||!t?.asset,fontFamily:m?.fontFamily||j.typography.fontFamily,color:o?R?"rgba(255, 255, 255, 0.16)":"rgba(14, 13, 11, 0.16)":de?R?"#ffffff":"#0e0d0b":R?"#4a5568":"#d1d5db",lineHeight:"1.08",maxFontSize:40,minFontSize:22,style:{width:"100%",maxWidth:"200px",flex:"1 1 200px",minWidth:"min(200px, 100%)"}}),a.jsx("div",{style:{width:"176px",maxWidth:"100%",position:"relative",flexShrink:0,marginLeft:w&&!x?void 0:"auto"},children:a.jsx(hu,{selectedAsset:t,assets:e,onAssetSelect:W=>{X(),ne(null),n(W)},showDropdown:B,onToggleDropdown:()=>M(!B),disabled:o,theme:j,onViewAllAssets:C,getAvailableBalance:g})}),w&&x&&a.jsx(Mn,{element:"span",value:x,title:x,fontFamily:m?.fontFamily||j.typography.fontFamily,color:R?"#ffffff":"#0e0d0b",lineHeight:"1.08",textAlign:"right",maxFontSize:40,minFontSize:22,style:{flex:"1 1 200px",minWidth:"min(200px, 100%)"}})]}),!w&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px",height:"14px"},children:[0,25,50,75,100].filter(W=>c||W!==100).map((W,L)=>{const $=Math.abs(he-W)<1,le=L===4,se=D===W,oe=O===W;return a.jsx("button",{onClick:()=>ee(W),onMouseEnter:()=>U(W),onMouseLeave:()=>{U(null),F(null)},onMouseDown:()=>F(W),onMouseUp:()=>F(null),disabled:o||!t?.asset||G===void 0||W===100&&P,title:`${W}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:o||!t?.asset||G===void 0||W===100&&P?"not-allowed":"pointer",opacity:$?1:se?.8:.5,transform:oe?"scale(0.85)":se?"scale(1.15)":"scale(1)",transition:u.transition.interactive},children:a.jsx(cr,{pct:W,isMax:le,primaryColor:I,dark:R,fillColor:R?E.textSecondary:"#3C3E42"})},W)})})]})},$n=p.memo(gu),xu=({selectedDepositAssets:e,depositAssets:t,secondAssetOptions:n,loadingAssets:s,allowSecondAsset:o,theme:r,styles:i,dark:l,dk:c,onSelect:d,onAmountChange:f,onAdd:m,onRemove:h,resolveMaxAmount:y,onViewAllAssets:g})=>{const w=p.useMemo(()=>Array.from({length:Math.max(1,e.length)},(x,b)=>y?C=>y(C,b):void 0),[y,e.length]);return a.jsxs(a.Fragment,{children:[e.map((x,b)=>{const C=e.length===1?"Deposit":`Asset ${b+1}`;return a.jsxs("div",{style:{marginBottom:r.spacing.md,position:"relative"},children:[a.jsx($n,{assets:b===0?t:n,selectedAsset:x||void 0,onAssetSelect:v=>d(v,b),onAmountChange:v=>f(v,b),loading:s,label:C,showBalance:!0,theme:r,styles:i,allowSecondAsset:o&&b===0,onAddAsset:m,canAddAsset:e.length===1&&!!e[0]?.asset,resolveMaxAmount:w[b],onViewAllAssets:b===0?g:void 0}),b===1&&a.jsx("button",{onClick:()=>h(b),style:{position:"absolute",top:"-2px",right:"-2px",background:l?`${c.cardBg}ee`:"rgba(255, 255, 255, 0.9)",border:`1px solid ${c.cardBorder}`,borderRadius:"50%",cursor:"pointer",color:r.colors.textMuted,fontSize:"16px",padding:"2px",width:"22px",height:"22px",display:"flex",alignItems:"center",justifyContent:"center",transition:u.transition.interactive,boxShadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},onMouseEnter:v=>{v.currentTarget.style.color=l?c.errorText:"#ef4444",v.currentTarget.style.background=l?c.cardBg:"#fff",v.currentTarget.style.borderColor=l?c.errorBorder:"#fecaca"},onMouseLeave:v=>{v.currentTarget.style.color=r.colors.textMuted,v.currentTarget.style.background=l?`${c.cardBg}ee`:"rgba(255, 255, 255, 0.9)",v.currentTarget.style.borderColor=l?c.cardBorder:"#e5e7eb"},title:"Remove asset",children:"\xD7"})]},`asset-${b}`)}),e.length===0&&a.jsx("div",{style:{marginBottom:r.spacing.md},children:a.jsx($n,{assets:t,selectedAsset:void 0,onAssetSelect:x=>d(x,0),onAmountChange:x=>f(x,0),loading:s,label:"Deposit",showBalance:!0,theme:r,styles:i,allowSecondAsset:o,onAddAsset:m,canAddAsset:!1,resolveMaxAmount:w[0]},"initial-selector")})]})},yu=p.memo(xu);function wu(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 Xt=({variant:e,palette:t,children:n,icon:s,style:o,fontFamily:r,size:i="default"})=>{const l=wu(e,t),c=i==="compact";return a.jsxs("div",{role:e==="error"?"alert":"status",style:{backgroundColor:l.bg,border:`1px solid ${l.border}`,borderRadius:c?"7px":"8px",padding:c?"8px 10px":"12px 16px",color:l.text,fontSize:c?"12px":"13px",lineHeight:c?1.4:1.5,display:"flex",alignItems:"flex-start",gap:c?"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})]})},Ni=u.font.mono,rn=({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:Ni,fontWeight:500,letterSpacing:"0.03em",flexShrink:0,whiteSpace:"nowrap"},children:e}),a.jsx("span",{style:{fontSize:"13px",color:s??n.textPrimary,fontWeight:500,fontFamily:Ni,minWidth:0,textAlign:"right",overflowWrap:"anywhere"},children:t})]}),ur=({onClick:e,label:t="Add Funds",color:n,fontFamily:s,style:o})=>{const[r,i]=p.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"})]})]})},pr=({value:e,onChange:t,ariaLabel:n,placeholder:s,endAdornment:o,size:r="lg",dark:i,styles:l,inputRef:c,autoFocus:d})=>{const{dark:f,dk:m}=u.useSpiceBrand(l,i),h=i??f,y=r==="lg",g=y?"15px":"14px",w=y?"7px":"10px",x=y?u.radius.input:u.radius.sm,b=l?.fontFamily||u.font.ui,C=h?m.inputBg:"#FAFAFA",v=h?m.inputBorder:"#e5e7eb",k=h?m.textPrimary:"#374151",I=h?m.textSecondary:"#9ca3af";return a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",backgroundColor:C,borderRadius:x,boxShadow:h?"0 2px 4px rgba(0, 0, 0, 0.3)":"0 2px 4px rgba(0, 0, 0, 0.1)",padding:`${w} 5px`,border:`1px solid ${v}`},children:[a.jsx(eu,{style:{color:I},size:24}),a.jsx("input",{ref:c,type:"text",role:"searchbox","aria-label":n,autoComplete:"off",spellCheck:!1,autoFocus:d,"data-spiceflow-focus":!0,placeholder:s,value:e,onChange:A=>t(A.target.value),style:{flex:1,backgroundColor:C,outline:"none",border:"none",color:k,fontSize:g,fontWeight:400,fontFamily:b}}),o]})},bu="This deposit didn't confirm in time. It may still have gone through, so check the explorer and refresh your balance before retrying.";function vu(e){return e?.overallStatus!=="failed"?{isFailed:!1,failureMessage:null}:{isFailed:!0,failureMessage:e.steps?.find(t=>t.status==="failed"&&!!t.error)?.error||bu}}const fo=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"})]}),Cu=({isOpen:e,onClose:t,onConfirm:n,data:s,isExecuting:o=!1,error:r=null,theme:i,styles:l,intentStatus:c,postDepositStatus:d="idle",hasPostDepositInstruction:f=!1})=>{const{dark:m,dk:h,theme:y}=u.useSpiceBrand(l),[g,w]=p.useState(!1),[x,b]=p.useState(!0);p.useEffect(()=>{e||w(!1)},[e]);const C=()=>{w(!0),setTimeout(()=>{t()},300)},v=()=>{b(!x)};if(!e||!s)return null;const k=c?.overallStatus==="processing",I=c?.overallStatus==="success",A=!!c,{isFailed:E,failureMessage:j}=vu(c),R=!A&&f,B=R&&d==="executing",M=R&&d==="success",D=I&&f&&(d==="idle"||d==="executing")||B,U=I&&(!f||d==="success"||d==="error")||M||R&&d==="error",O=m?h.cardBg:"#ffffff",F=m?"0 -4px 20px rgba(0, 0, 0, 0.4)":"0 -4px 20px rgba(0, 0, 0, 0.15)",P=h.textSecondary,z=m?h.textPrimary:"#1f2937",q=m?h.textPrimary:"#1f2937",ne=Y=>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:Y})}),de={fontSize:i.typography.fontSize.sm,fontWeight:500,color:P,fontFamily:u.font.mono,letterSpacing:"0.5px"},ie=(Y,Q,G=z)=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:de,children:Y}),a.jsx("span",{style:{fontSize:i.typography.fontSize.sm,fontWeight:500,color:G,fontFamily:u.font.mono},children:Q})]});return a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:g?"slideDown 0.3s ease-in":"slideUp 0.3s ease-out",pointerEvents:"auto"},children:[a.jsxs("div",{style:{backgroundColor:O,borderRadius:"0",width:"100%",maxWidth:"522px",margin:"0 auto",padding:"18px 24px",boxShadow:F},children:[!I&&!M&&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:P,fontFamily:l?.fontFamily||i.typography.fontFamily},children:"Transaction Details"}),a.jsx(Jn,{color:P,direction:x?"up":"down"})]}),a.jsx("button",{onClick:Y=>{Y.stopPropagation(),t()},style:{background:"none",border:"none",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:P,transition:"color 0.2s ease"},onMouseEnter:Y=>{Y.currentTarget.style.color=q},onMouseLeave:Y=>{Y.currentTarget.style.color=P},children:a.jsx(Es,{size:16})})]}),a.jsxs("div",{style:{marginBottom:i.spacing.lg,display:"flex",flexDirection:"column",gap:i.spacing.md,overflow:"hidden",maxHeight:x?"200px":"0px",opacity:x?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease"},children:[ie("NETWORK",s.network),ie("DEPOSITED AMOUNT",s.amount,i.colors.success),s.creditedAmount&&ie("CREDITED AMOUNT",s.creditedAmount),s.spicenetFee&&ie("SPICENET FEE",s.spicenetFee),s.networkFee&&ie("EST. NETWORK FEE",s.networkFee)]})]}),r&&!A&&ne(r),E&&j&&ne(j),a.jsx(u.Button,{onClick:U||E?C:n,variant:"outline",fullWidth:!0,disabled:o||k||D||B,styles:l,theme:y,children:o||k||B||D?"PROCESSING...":U?"CONTINUE \u2192":E?"CLOSE":"CONFIRM DEPOSIT"}),U&&a.jsx("p",{style:{marginTop:i.spacing.md,marginBottom:0,fontSize:"14px",color:P,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:Ci,alt:"Powered by SpiceNet",style:{height:"auto",width:"130px",opacity:1,filter:m?"brightness(0) invert(1) opacity(0.7)":"none"}})})]}),a.jsx("style",{children:`
|
|
3
|
+
"use strict";var ic=Object.create;var $r=Object.defineProperty;var lc=Object.getOwnPropertyDescriptor;var cc=Object.getOwnPropertyNames;var dc=Object.getPrototypeOf,uc=Object.prototype.hasOwnProperty;var pc=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of cc(t))!uc.call(e,o)&&o!==n&&$r(e,o,{get:()=>t[o],enumerable:!(s=lc(t,o))||s.enumerable});return e};var fc=(e,t,n)=>(n=e!=null?ic(dc(e)):{},pc(t||!e||!e.__esModule?$r(n,"default",{value:e,enumerable:!0}):n,e));const a=require("react/jsx-runtime"),p=require("./privy-Df1bsdsz.js"),u=require("react"),S=require("@spicenet-io/spiceflow-core"),Cn=require("wagmi"),B=require("viem"),pn=require("viem/actions"),fs=require("@privy-io/react-auth"),Gn=require("react-dom");require("@tanstack/react-query");const mc="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@100;200;300;400;500;600;700&display=swap",hc="spiceflow-ibm-plex-mono",gc="spiceflow-preconnect-googleapis",xc="spiceflow-preconnect-gstatic";function Fo(e,t){if(document.getElementById(e))return;const n=t();n.id=e,document.head.appendChild(n)}function yc(){typeof document>"u"||(Fo(gc,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.googleapis.com",e}),Fo(xc,()=>{const e=document.createElement("link");return e.rel="preconnect",e.href="https://fonts.gstatic.com",e.crossOrigin="",e}),Fo(hc,()=>{const e=document.createElement("link");return e.rel="stylesheet",e.href=mc,e}))}const wc={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",84532:"0x4200000000000000000000000000000000000006"},_r=B.parseAbi(["function deposit() payable","function withdraw(uint256 wad)"]);function To(e){return p.getChainConfig(e)?.wrappedNativeTokenAddress??wc[e]}const Bo=(e,t)=>({to:e,value:t,data:B.encodeFunctionData({abi:_r,functionName:"deposit"})}),Ro=(e,t)=>({to:e,value:0n,data:B.encodeFunctionData({abi:_r,functionName:"withdraw",args:[t]})});function jo(e,t,n){const s=S.isNativeToken(t),o=S.isNativeToken(n);if(!s&&!o)return null;const r=To(e);return r?{weth:r,wrapIn:s,unwrapOut:o}:null}function ea(e,t,n,s){const o=jo(e,t,n);return!o||s<=0n?null:o.wrapIn&&!o.unwrapOut&&n.toLowerCase()===o.weth.toLowerCase()?[Bo(o.weth,s)]:o.unwrapOut&&!o.wrapIn&&t.toLowerCase()===o.weth.toLowerCase()?[Ro(o.weth,s)]:null}function bc(e){return{...e,resolve:async(t,n,s,o)=>{const r=ea(n,t.tokenIn,t.tokenOut,t.amountIn);if(r)return{venue:"native-wrap",amountOut:t.amountIn,amountOutMinimum:t.amountIn,calls:r};const i=await e.resolve(t,n,s,o);if(i)return i;const l=jo(n,t.tokenIn,t.tokenOut);if(!l)return null;const c=await e.resolve({...t,tokenIn:l.wrapIn?l.weth:t.tokenIn,tokenOut:l.unwrapOut?l.weth:t.tokenOut},n,s,o);return c?{...c,calls:[...l.wrapIn?[Bo(l.weth,t.amountIn)]:[],...c.calls,...l.unwrapOut?[Ro(l.weth,c.amountOutMinimum)]:[]]}:null}}}function vc(e){return{...e,resolve:async(t,n,s)=>{const o=ea(n,t.tokenIn,t.tokenOut,t.amountOut);if(o)return{venue:"native-wrap",amountIn:t.amountOut,amountInMax:t.amountOut,amountOut:t.amountOut,calls:o};const r=await e.resolve(t,n,s);if(r)return r;const i=jo(n,t.tokenIn,t.tokenOut);if(!i)return null;const l=await e.resolve({...t,tokenIn:i.wrapIn?i.weth:t.tokenIn,tokenOut:i.unwrapOut?i.weth:t.tokenOut},n,s);return l?{...l,calls:[...i.wrapIn?[Bo(i.weth,l.amountInMax)]:[],...l.calls,...i.unwrapOut?[Ro(i.weth,l.amountOut)]:[]]}:null}}}const ta=[100,500,3e3,1e4];function Vs(e,t,n,s,o){const r=[];for(const i of n){const l=typeof i=="object"&&!Array.isArray(i)?i:void 0,c=l?l.tokens:Array.isArray(i)?i:[i];if(!c.length||c.length>2)throw new Error("A v3 route must have one or two intermediate tokens");const d=[e,...c,t];if(l&&(l.feeTiers.length!==d.length-1||l.feeTiers.some(m=>!m.length)))throw new Error("A v3 route needs fee tiers for every pool");if(new Set(d.map(m=>m.toLowerCase())).size!==d.length)continue;const f=(m,h)=>{if(m===d.length){r.push(o==="in"?h:na(h));return}for(const w of l?.feeTiers[m-1]??s)f(m+1,B.concatHex([h,B.encodePacked(["uint24","address"],[w,d[m]])]))};f(1,d[0])}return[...new Set(r)]}function na(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 Cc=B.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)"]),kc=B.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)"]),Sc=1800;function sa(e){const{config:t,route:n,tokenIn:s,tokenOut:o,recipient:r,amountOut:i}=e,l=e.amountInMaximum,c=e.routerHasDeadline?kc:Cc,d=e.routerHasDeadline?{deadline:BigInt(Math.floor(Date.now()/1e3)+Sc)}:{},f=n.path?B.encodeFunctionData({abi:c,functionName:"exactOutput",args:[{path:n.path,recipient:r,...d,amountOut:i,amountInMaximum:l}]}):B.encodeFunctionData({abi:c,functionName:"exactOutputSingle",args:[{tokenIn:s,tokenOut:o,fee:n.fee,recipient:r,...d,amountOut:i,amountInMaximum:l,sqrtPriceLimitX96:0n}]});return{to:t.swapRouter,value:0n,data:f}}const Ic=B.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 ms(e,t,n,s,o){const r=p.getClientForChain(e),{result:i}=await r.simulateContract({address:t.quoterV2,abi:Ic,functionName:o==="in"?"quoteExactInput":"quoteExactOutput",args:[n,s]}),[l,,,c]=i;if(l<=0n)throw new Error("No liquidity along this path.");return{amount:l,gasEstimate:c}}async function Ac(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 p.getClientForChain(r).simulateContract({address:i.quoterV2,abi:S.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 oa(e){const t=e.feeTiers??ta,n=Vs(e.tokenIn,e.tokenOut,e.hubs??[],t,"in"),s=await Promise.allSettled([...t.map(async r=>({...await Ac({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await ms(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 Ec=[{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 Fc(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 p.getClientForChain(r).simulateContract({address:i.quoterV2,abi:Ec,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 ra(e){const t=e.feeTiers??ta,n=Vs(e.tokenIn,e.tokenOut,e.hubs??[],t,"out"),s=await Promise.allSettled([...t.map(async r=>({...await Fc({...e,fee:r}),fee:r})),...n.map(async r=>{const i=await ms(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}function Tc(e){return e.type==="swap"}const hs=.02,Bc=[1,8453,42161,10,137,43114,56],Rc="https://api.1inch.dev/swap/v6.0";function Oo(e,t){return S.applySlippage(e,t)}function jc(e){const t=e?.baseUrl??Rc;return{name:"1inch",chainIds:e?.chainIds??Bc,resolve:async(n,s,o)=>{const r=n.maxSlippage??hs,i=r*100,l=S.isNativeToken(n.tokenIn)?S.NATIVE_TOKEN_ADDRESS:n.tokenIn,c=S.isNativeToken(n.tokenOut)?S.NATIVE_TOKEN_ADDRESS:n.tokenOut,d=S.isNativeToken(n.tokenIn);try{const f=new URL(`${t}/${s}/swap`);f.searchParams.set("src",l),f.searchParams.set("dst",c),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 m={Accept:"application/json"};e?.apiKey&&(m.Authorization=`Bearer ${e.apiKey}`);const h=await fetch(f.toString(),{headers:m});if(!h.ok)throw new p.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] API returned ${h.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 ${h.status}`});const w=await h.json();if(!w.dstAmount||!w.tx)return console.warn(`[1inchVenue] No route data for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const g=BigInt(w.dstAmount);if(g<=0n)return console.warn(`[1inchVenue] Zero output for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}`),null;const y=Oo(g,r),x=[];return w.tx.to&&!d&&x.push({to:n.tokenIn,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"approve",args:[w.tx.to,n.amountIn]})}),x.push({to:w.tx.to,value:BigInt(w.tx.value||"0"),data:w.tx.data}),{venue:"1inch",amountOut:g,amountOutMinimum:y,calls:x}}catch(f){if(f instanceof p.SpiceflowError)throw f;const m=f instanceof Error?f.message:String(f);throw new p.SpiceflowError("VENUE_API_ERROR",`[1inchVenue] Exception for ${n.tokenIn} \u2192 ${n.tokenOut} on chain ${s}: ${m}`,{venue:"1inch",chainId:s,tokenIn:n.tokenIn,tokenOut:n.tokenOut,amountIn:n.amountIn.toString(),cause:m})}}}}const aa=[4114,5115],Do={name:"Satsuma",swapRouter:"0x565eD3D57fe40f78A46f348C220121AE093c3cF8",quoterV2:"0x428f20dd8926Eabe19653815Ed0BE7D6c36f8425",feeTiers:[3e3]},ia={name:"Uniswap v3",swapRouter:"0x2626664c2603336E57B271c5C0b26F421741e481",quoterV2:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",chainIds:[8453],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},la={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[1],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]},ca={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[42161],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x82aF49447D8a07e3bd95BD0d56f35241523fBab1","0xaf88d065e77c8cC2239327C5EDb3A432268e5831"]},Oc={name:"Uniswap v3",swapRouter:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",quoterV2:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",chainIds:[137],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270","0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"]},Dc={name:"Uniswap v3",swapRouter:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",quoterV2:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",chainIds:[56],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c","0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"]},Nc={name:"Uniswap v3",swapRouter:"0xfe31f71c1b106eac32f1a19239c9a9a72ddfb900",quoterV2:"0x661e93cca42afacb172121ef892830ca3b70f08d",chainIds:[143],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A","0x754704Bc059F8C67012fEd69BC8A327a5aafb603"]},da={name:"Uniswap v3",swapRouter:"0xcaf681a66d020601342297493863e78c959e5cb2",quoterV2:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},ua={name:"SushiSwap",swapRouter:"0x1e406484F1F204b23cE84B9901C0171a738fd406",quoterV2:"0x3E290e5E01818002A0b672148BdC7514D861C7B3",chainIds:[4663],feeTiers:[100,500,3e3,1e4],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73","0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"],routerHasDeadline:!0},pa=B.parseAbi(["function exactInput((bytes path, address recipient, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),fa=B.parseAbi(["function exactInputSingle((address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum, uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountOut)","function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),Mc=B.parseAbi(["function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]),Pc=B.parseAbi(["function exactOutput((bytes path, address recipient, uint256 deadline, uint256 amountOut, uint256 amountInMaximum) params) payable returns (uint256 amountIn)"]),No=1800,ma=[1,50,100,200,2e3],Qs={name:"Aerodrome",swapRouter:"0xcbBb8035cAc7D4B3Ca7aBb74cF7BdF900215Ce0D",quoterV2:"0x3d4C22254F86f64B7eC90ab8F7aeC1FBFD271c6C",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006","0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]};function Gs(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??ma;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(S.isNativeToken(o.tokenIn)||S.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??hs,c=[...s.map(x=>B.encodePacked(["address","uint24","address"],[o.tokenIn,x,o.tokenOut])),...Vs(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"in")],d={quoterV2:e.quoterV2},f=await Promise.allSettled(c.map(async x=>({path:x,amountOut:(await ms(r,d,x,o.amountIn,"in")).amount})));let m=null;for(const x of f)x.status==="fulfilled"&&(!m||x.value.amountOut>m.amountOut)&&(m=x.value);if(!m)return console.warn(`[AerodromeVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const h=Oo(m.amountOut,l),w=BigInt(Math.floor(Date.now()/1e3)+No),g=B.encodeFunctionData({abi:Mc,functionName:"exactInput",args:[{path:m.path,recipient:i,deadline:w,amountIn:o.amountIn,amountOutMinimum:h}]}),y=[{to:o.tokenIn,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"approve",args:[e.swapRouter,o.amountIn]})},{to:e.swapRouter,value:0n,data:g}];return{venue:t,amountOut:m.amountOut,amountOutMinimum:h,calls:y}}}}function ha(e){const t=e.name??"Aerodrome",n=e.chainIds??[8453],s=e.tickSpacings??ma;return{name:t,chainIds:n,resolve:async(o,r,i)=>{if(S.isNativeToken(o.tokenIn)||S.isNativeToken(o.tokenOut))return null;const l=o.maxSlippage??hs,c=[...s.map(y=>B.encodePacked(["address","uint24","address"],[o.tokenOut,y,o.tokenIn])),...Vs(o.tokenIn,o.tokenOut,e.hubCurrencies??[],s,"out")],d={quoterV2:e.quoterV2},f=await Promise.allSettled(c.map(async y=>({path:y,amountIn:(await ms(r,d,y,o.amountOut,"out")).amount})));let m=null;for(const y of f)y.status==="fulfilled"&&(!m||y.value.amountIn<m.amountIn)&&(m=y.value);if(!m)return console.warn(`[AerodromeExactOutputVenue] No viable route for ${o.tokenIn} \u2192 ${o.tokenOut} on chain ${r}.`),null;const h=BigInt(Math.round(l*1e4)),w=m.amountIn+m.amountIn*h/10000n,g=BigInt(Math.floor(Date.now()/1e3)+No);return{venue:t,amountIn:m.amountIn,amountInMax:w,amountOut:o.amountOut,calls:[{to:e.swapRouter,value:0n,data:B.encodeFunctionData({abi:Pc,functionName:"exactOutput",args:[{path:m.path,recipient:i,deadline:g,amountOut:o.amountOut,amountInMaximum:w}]})}]}}}}function gs(e){const t=e.name??"Uniswap v3",n=e.chainIds??aa;return{name:t,chainIds:n,resolve:async(s,o,r,i)=>{if(S.isNativeToken(s.tokenIn)||S.isNativeToken(s.tokenOut))return null;const l=s.maxSlippage??hs;let c;try{let g;if(i){if(i.venue!==t)return null;const y=i.calls.find(b=>b.to.toLowerCase()===e.swapRouter.toLowerCase());if(!y)return null;const x=B.decodeFunctionData({abi:e.routerHasDeadline?fa:[...pa,...S.uniV3SwapRouterAbi],data:y.data});if(x.functionName==="exactInput"){const{path:b}=x.args[0];if(b.slice(0,42).toLowerCase()!==s.tokenIn.toLowerCase()||`0x${b.slice(-40)}`.toLowerCase()!==s.tokenOut.toLowerCase())return null;g={path:b,fee:0}}else if(x.functionName==="exactInputSingle"){const{tokenIn:b,tokenOut:v,fee:C}=x.args[0];if(b.toLowerCase()!==s.tokenIn.toLowerCase()||v.toLowerCase()!==s.tokenOut.toLowerCase())return null;g={fee:C}}else return null}c=g?.path?{...g,amountOut:(await ms(o,e,g.path,s.amountIn,"in")).amount}:await oa({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountIn:s.amountIn,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:g?[g.fee]:e.feeTiers,hubs:g?[]:[...e.hubCurrencies??[],...e.hubPaths??[]]})}catch{return console.warn(`[UniV3Venue] No viable route for ${s.tokenIn} \u2192 ${s.tokenOut} on chain ${o}.`),null}const d=Oo(c.amountOut,l),f=e.routerHasDeadline?{deadline:BigInt(Math.floor(Date.now()/1e3)+No)}:{},m=e.routerHasDeadline?fa:c.path?pa:S.uniV3SwapRouterAbi,h=c.path?B.encodeFunctionData({abi:m,functionName:"exactInput",args:[{path:c.path,recipient:r,...f,amountIn:s.amountIn,amountOutMinimum:d}]}):B.encodeFunctionData({abi:m,functionName:"exactInputSingle",args:[{tokenIn:s.tokenIn,tokenOut:s.tokenOut,fee:c.fee,recipient:r,...f,amountIn:s.amountIn,amountOutMinimum:d,sqrtPriceLimitX96:0n}]}),w=[{to:s.tokenIn,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"approve",args:[e.swapRouter,s.amountIn]})},{to:e.swapRouter,value:0n,data:h}];return{venue:t,amountOut:c.amountOut,amountOutMinimum:d,calls:w}}}}function Mo(e){const t=e.name??"Uniswap v3",n=e.chainIds??aa;return{name:t,chainIds:n,resolve:async(s,o,r)=>{if(S.isNativeToken(s.tokenIn)||S.isNativeToken(s.tokenOut))return null;const i=s.maxSlippage??hs;let l;try{l=await ra({tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountOut:s.amountOut,chainId:o,config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},feeTiers:e.feeTiers,hubs:[...e.hubCurrencies??[],...e.hubPaths??[]]})}catch{return null}const c=BigInt(Math.round(i*1e4)),d=l.amountIn+l.amountIn*c/10000n;return{venue:t,amountIn:l.amountIn,amountInMax:d,amountOut:s.amountOut,calls:[sa({config:{swapRouter:e.swapRouter,quoterV2:e.quoterV2},routerHasDeadline:e.routerHasDeadline,route:l,tokenIn:s.tokenIn,tokenOut:s.tokenOut,recipient:r,amountOut:s.amountOut,amountInMaximum:d})]}}}}function ga(e){const t=[];e?.customVenues&&t.push(...e.customVenues),e?.satsuma&&t.push(gs(e.satsuma)),e?.aerodrome!==!1&&t.push(Gs(e?.aerodrome??Qs)),t.push(jc(e?.oneInch));const n=t.map(bc);function s(i){return n.find(l=>l.chainIds.includes(i))}async function o(i,l,c,d){const f=n.filter(g=>g.chainIds.includes(l));if(f.length===0)throw new p.SpiceflowError("NO_VENUE_FOR_CHAIN",`No liquidity venue configured for chain ${l}. Cannot resolve swap ${i.tokenIn} \u2192 ${i.tokenOut}.`,{chainId:l,tokenIn:i.tokenIn,tokenOut:i.tokenOut,amountIn:i.amountIn.toString()});const m=await Promise.allSettled(f.map(g=>g.resolve(i,l,c,d)));let h=null;for(const g of m)d&&g.status==="fulfilled"&&g.value&&(g.value.venue!==d.venue||g.value.calls.length!==d.calls.length||g.value.calls.some((y,x)=>y.to.toLowerCase()!==d.calls[x].to.toLowerCase()||y.data.slice(0,10)!==d.calls[x].data.slice(0,10)))||g.status==="fulfilled"&&g.value&&(!h||g.value.amountOut>h.amountOut)&&(h=g.value);if(h)return h;const w=m.find(g=>g.status==="rejected");if(w)throw w.reason;return null}async function r(i,l,c){const d=[],f=[];for(const m of i){if(!Tc(m)){d.push(m);continue}const h=await o(m,l,c);if(!h)throw new p.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${m.tokenIn} \u2192 ${m.tokenOut} on chain ${l}.`,{chainId:l,tokenIn:m.tokenIn,tokenOut:m.tokenOut,amountIn:m.amountIn.toString()});d.push(...h.calls),f.push(h)}return{calls:d,resolvedSwaps:f}}return{resolveSwapIntents:r,resolveSwap:o,getVenueForChain:s,venues:t}}const mn="0x0000000000000000000000000000000000000000",Po=[{fee:100,tickSpacing:1},{fee:500,tickSpacing:10},{fee:3e3,tickSpacing:60},{fee:1e4,tickSpacing:200}],xa=mn,ya=.02,Uc=1800,wa={name:"Uniswap v4",quoter:"0x0d5e0f971ed27fbff6c2837bf31316121532048d",universalRouter:"0x6ff5693b99212da76ad316178a184ab56d299b43",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainIds:[8453],hubCurrencies:["0x4200000000000000000000000000000000000006",mn,"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"]},ba={name:"Uniswap v4",quoter:"0x8dc178efb8111bb0973dd9d722ebeff267c98f94",universalRouter:"0x8876789976decbfcbbbe364623c63652db8c0904",permit2:"0x000000000022d473030f116ddee9f6b43ac78ba3",routerHasHopPrice:!0,chainIds:[4663],hubCurrencies:["0x0bd7d308f8e1639fab988df18a8011f41eacad73",mn,"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"]},va=B.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)"]),Wc=B.parseAbi(["function approve(address token, address spender, uint160 amount, uint48 expiration)"]),Lc=B.parseAbi(["function execute(bytes commands, bytes[] inputs, uint256 deadline) payable"]),Ca="0x10",qc="04",zc="06",Hc="07",Vc="08",Qc="09",Ks="0c",Zs="0e",Gc=[{name:"currency0",type:"address"},{name:"currency1",type:"address"},{name:"fee",type:"uint24"},{name:"tickSpacing",type:"int24"},{name:"hooks",type:"address"}],Kc=[{name:"intermediateCurrency",type:"address"},{name:"fee",type:"uint24"},{name:"tickSpacing",type:"int24"},{name:"hooks",type:"address"},{name:"hookData",type:"bytes"}],kn=(e,t)=>e.toLowerCase()===t.toLowerCase();function Ys(e){return S.isNativeToken(e)?mn:e}function Zc(e,t){return e.toLowerCase()<t.toLowerCase()?[e,t]:[t,e]}function ka(e,t,n,s,o){const r=[],[i,l]=Zc(e,t);for(const{fee:d,tickSpacing:f}of Po)r.push({kind:"single",poolKey:{currency0:i,currency1:l,fee:d,tickSpacing:f,hooks:xa},zeroForOne:kn(e,i)});const c=(d,f)=>!!o&&(kn(d,mn)&&kn(f,o)||kn(d,o)&&kn(f,mn));for(const d of n)if(!(kn(d,e)||kn(d,t))&&!(c(d,e)||c(d,t)))for(const f of Po)for(const m of Po){const h=(w,g)=>({intermediateCurrency:w,fee:g.fee,tickSpacing:g.tickSpacing,hooks:xa,hookData:"0x"});r.push({kind:"multi",path:s==="in"?[h(d,f),h(t,m)]:[h(e,f),h(d,m)]})}return r}async function Sa(e,t,n,s,o,r){const i=p.getClientForChain(e),l=(await Promise.allSettled(n.map(async c=>{const{result:d}=c.kind==="single"?await i.simulateContract({address:t.quoter,abi:va,functionName:r==="in"?"quoteExactInputSingle":"quoteExactOutputSingle",args:[{poolKey:c.poolKey,zeroForOne:c.zeroForOne,exactAmount:o,hookData:"0x"}]}):await i.simulateContract({address:t.quoter,abi:va,functionName:r==="in"?"quoteExactInput":"quoteExactOutput",args:[{exactCurrency:s,path:c.path,exactAmount:o}]}),f=d[0];if(f<=0n)throw new Error("zero quote");return{candidate:c,amount:f}}))).filter(c=>c.status==="fulfilled").map(c=>c.value);return l.length===0?null:(l.sort((c,d)=>c.amount<d.amount?-1:c.amount>d.amount?1:0),r==="in"?l[l.length-1]:l[0])}function Ia(e){const{candidate:t,direction:n,currencyIn:s,currencyOut:o,recipient:r,exactAmount:i,limitAmount:l,deadline:c,routerHasHopPrice:d,sweepNativeTo:f}=e;let m,h;t.kind==="single"?(m=n==="in"?`0x${zc}${Ks}${Zs}`:`0x${Vc}${Ks}${Zs}`,h=B.encodeAbiParameters([{type:"tuple",components:[{name:"poolKey",type:"tuple",components:Gc},{name:"zeroForOne",type:"bool"},{name:n==="in"?"amountIn":"amountOut",type:"uint128"},{name:n==="in"?"amountOutMinimum":"amountInMaximum",type:"uint128"},...d?[{name:"minHopPriceX36",type:"uint256"}]:[],{name:"hookData",type:"bytes"}]}],[{poolKey:t.poolKey,zeroForOne:t.zeroForOne,[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l,...d?{minHopPriceX36:0n}:{},hookData:"0x"}])):(m=n==="in"?`0x${Hc}${Ks}${Zs}`:`0x${Qc}${Ks}${Zs}`,h=B.encodeAbiParameters([{type:"tuple",components:[{name:n==="in"?"currencyIn":"currencyOut",type:"address"},{name:"path",type:"tuple[]",components:Kc},...d?[{name:"minHopPriceX36",type:"uint256[]"}]:[],{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,...d?{minHopPriceX36:[]}:{},[n==="in"?"amountIn":"amountOut"]:i,[n==="in"?"amountOutMinimum":"amountInMaximum"]:l}]));const w=B.encodeAbiParameters([{type:"address"},{type:"uint256"}],[s,n==="in"?i:l]),g=B.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[o,r,0n]),y=B.encodeAbiParameters([{type:"bytes"},{type:"bytes[]"}],[m,[h,w,g]]),x=f?`${Ca}${qc}`:Ca,b=f?[y,B.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"}],[mn,f,0n])]:[y];return B.encodeFunctionData({abi:Lc,functionName:"execute",args:[x,b,c]})}function Aa(){return BigInt(Math.floor(Date.now()/1e3)+Uc)}function Ea(e,t,n,s){return{to:e.permit2,value:0n,data:B.encodeFunctionData({abi:Wc,functionName:"approve",args:[t,e.universalRouter,n,Number(s)]})}}function Fa(e){const t=e.name??"Uniswap v4",n=e.v3?gs({...e.v3,chainIds:e.chainIds}):null;return{name:t,chainIds:e.chainIds,resolve:async(s,o,r)=>{const i=s.maxSlippage??ya,l=Ys(s.tokenIn),c=Ys(s.tokenOut),d=S.isNativeToken(s.tokenIn),f=e.hubCurrencies??[mn];let m=null;if(!kn(l,c)&&s.amountIn>0n){const h=await Sa(o,e,ka(l,c,f,"in",To(o)),l,s.amountIn,"in").catch(()=>null);if(h){const w=S.applySlippage(h.amount,i),g=Aa(),y=[];d||(y.push({to:s.tokenIn,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"approve",args:[e.permit2,s.amountIn]})}),y.push(Ea(e,s.tokenIn,s.amountIn,g))),y.push({to:e.universalRouter,value:d?s.amountIn:0n,data:Ia({candidate:h.candidate,direction:"in",currencyIn:l,currencyOut:c,recipient:r,exactAmount:s.amountIn,limitAmount:w,deadline:g,routerHasHopPrice:e.routerHasHopPrice})}),m={venue:t,amountOut:h.amount,amountOutMinimum:w,calls:y}}}return!m&&n?n.resolve(s,o,r):m}}}function Ta(e){const t=e.name??"Uniswap v4";return{name:t,chainIds:e.chainIds,resolve:async(n,s,o)=>{const r=S.isNativeToken(n.tokenIn),i=Ys(n.tokenIn),l=Ys(n.tokenOut);if(kn(i,l)||n.amountOut<=0n)return null;const c=n.maxSlippage??ya,d=e.hubCurrencies??[mn],f=await Sa(s,e,ka(i,l,d,"out",To(s)),l,n.amountOut,"out").catch(()=>null);if(!f)return null;const m=BigInt(Math.round(c*1e4)),h=f.amount+f.amount*m/10000n,w=Aa();return{venue:t,amountIn:f.amount,amountInMax:h,amountOut:n.amountOut,calls:[...r?[]:[Ea(e,n.tokenIn,h,w)],{to:e.universalRouter,value:r?h:0n,data:Ia({candidate:f.candidate,direction:"out",currencyIn:i,currencyOut:l,recipient:o,exactAmount:n.amountOut,limitAmount:h,deadline:w,routerHasHopPrice:e.routerHasHopPrice,sweepNativeTo:r?o:void 0})}]}}}}const Uo=[{...Do,protocol:"uniswap-v3",chainId:4114},{...Do,protocol:"uniswap-v3",chainId:5115},{...ia,protocol:"uniswap-v3",chainId:8453},{...la,protocol:"uniswap-v3",chainId:1},{...ca,protocol:"uniswap-v3",chainId:42161},{...Oc,protocol:"uniswap-v3",chainId:137},{...Dc,protocol:"uniswap-v3",chainId:56},{...Nc,protocol:"uniswap-v3",chainId:143},{...da,protocol:"uniswap-v3",chainId:4663},{...ua,protocol:"uniswap-v3",chainId:4663},{...wa,protocol:"uniswap-v4",chainId:8453},{...ba,protocol:"uniswap-v4",chainId:4663},{...Qs,protocol:"aerodrome-slipstream",chainId:8453}];function Pn(e){const t=e?.includeDefaults===!1?e.venues??[]:[...Uo,...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(gs(i)),s.push(Mo(i));break}case"uniswap-v4":{const i={...o,chainIds:r};n.push(Fa(i)),s.push(Ta(i));break}case"aerodrome-slipstream":{const i={...o,chainIds:r};n.push(Gs(i)),s.push(ha(i));break}default:{const i=o;throw new p.SpiceflowError("INVALID_PARAMS",`Unsupported liquidity venue protocol: ${i.protocol}`,{protocol:i.protocol})}}}return{input:n,output:s}}const Wo=new Set(["WBTC","CBTC"]),Ba=new Set(["btc","wbtc","wcbtc","cbtc"]);function Ra(e,t){return!e||!t?!1:e===t?!0:Wo.has(e)&&Wo.has(t)}function hn(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 Xs(e){return(e??"").trim().replace(/^test\s+/i,"").replace(/^spice/i,"").toLowerCase().replace(/[^a-z0-9]/g,"")}function Yc(e){return new Set([e.receiptTokenName,e.displaySymbol,e.symbol,e.displayName,e.name].map(Xs).filter(Boolean))}function Xc(e,t){const n=Yc(e),s=[t.symbol,t.name,t.equivalenceGroup].map(Xs);if(s.some(i=>i&&n.has(i)))return!0;const o=[...n].some(i=>Ba.has(i)),r=s.some(i=>Ba.has(i))||Wo.has(t.equivalenceGroup??"");return o&&r}function ja(e,t,n){const s=new Set(t.map(Xs).filter(Boolean)),o=r=>{if(n&&p.addressesEqual(r.address,n))return 0;const i=[r.symbol,r.name,r.equivalenceGroup].map(Xs).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 Kn(e,t){const n=e.chainTokens?Object.keys(e.chainTokens):[],s=[];for(const o of n){const r=hn(o);if(!r||r.chainId!==t)continue;const i=r.address,l=S.isNativeToken(i)?p.getChainConfig(t)?.nativeCurrency:void 0,c=S.getTokenByAddress(i,t)??(l?{...l}:void 0);c&&(!Lo(e,i,t)&&!(e.isUniversal&&Xc(e,c))||s.some(d=>p.addressesEqual(d,i))||s.push(i))}return ja(s.map(o=>{const r=S.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 Lo(e,t,n){return e.chainId===n&&p.addressesEqual(e.address,t)?!0:xs(e.address,e.chainId,t,n)}async function Jc(e,t){const n=p.getClientForChain(e),s=S.getEscrowContractAddress(e);return S.isNativeToken(t)?n.getBalance({address:s}):await n.readContract({address:t,abi:B.erc20Abi,functionName:"balanceOf",args:[s]})}function qo(e,t,n){const s=S.getTokensForChain(n),o=s.find(i=>p.addressesEqual(i.address,e));if(o&&(t===n||!S.isNativeToken(e)))return o;const r=S.getTokenByAddress(e,t);if(r)return ja(s.filter(i=>Ra(i.equivalenceGroup,r.equivalenceGroup)),[r.symbol,r.name,r.equivalenceGroup])[0]}function Js(e){return e.equivalenceGroup==="USDC"&&e.symbol.toUpperCase()!=="USDT"}function Oa(e){const t=S.getEscrowContract(e);if(!t||t===S.ZERO_ADDRESS)return;const n=S.getTokensForChain(e).filter(Js);return n.find(s=>s.symbol.toUpperCase()==="USDC")??n[0]}function zo(e,t){if(e.chainId===t)return null;const n=S.getEscrowContract(e.chainId),s=S.getEscrowContract(t);if(!n||n===S.ZERO_ADDRESS||!s||s===S.ZERO_ADDRESS)return null;const o=!e.isNative&&!S.isNativeToken(e.address)?S.getTokenByAddress(e.address,e.chainId):void 0,r=o&&Js(o)?qo(e.address,e.chainId,t):void 0,i=r?o:Oa(e.chainId),l=r??Oa(t);if(!i||!l)return null;const c=d=>({address:d.address,symbol:d.symbol,decimals:d.decimals,chainId:d.chainId});return{source:c(i),destination:c(l)}}function $c(e,t){return!!zo(e,t)}function rn(e,t){if(e.chainId===t)return e.address;const n=qo(e.address,e.chainId,t);return n?n.address:null}async function Sn(e,t,n,s){const o=S.getTokenByAddress(t,n);return o?o.decimals:e?.chainId===n&&p.addressesEqual(e.address,t)&&!e.isUniversal?e.decimals:s?.chainId===n&&p.addressesEqual(s.address,t)?s.decimals:p.getTokenDecimals(n,t)}async function Da(e,t,n={}){const s=rn(e,t),o=Kn(e,t);if(o.length===0)return s;if(o.length===1)return o[0];const r=n.requiredAmount??0n,i=l=>{const c=o.map(d=>({candidate:d,balance:l.get(S.isNativeToken(d)?"native":d.toLowerCase())??0n})).filter(d=>d.balance>0n).sort((d,f)=>d.balance===f.balance?0:d.balance>f.balance?-1:1);return c.length===0?null:((r>0n?c.find(d=>d.balance>=r):c[0])??c[0]).candidate};try{const l=await Promise.all(o.map(async f=>({key:S.isNativeToken(f)?"native":f.toLowerCase(),value:await Jc(t,f)}))),c=new Map(l.map(({key:f,value:m})=>[f,m])),d=i(c);if(d)return d}catch{}return s}function xs(e,t,n,s){const o=S.getTokenByAddress(e,t),r=S.getTokenByAddress(n,s);return o&&r?Ra(o.equivalenceGroup,r.equivalenceGroup):S.areEquivalent(e,n)}function $s(e,t){return xs(e.address,e.chainId,t.address,t.chainId)}const Na=.01;function Ma(e,t=!1){const n=Number.isFinite(e.balanceUsd)&&e.balanceUsd>0;return e.isDiscovered?n&&e.balanceUsd>=Na:!t||!n||e.balanceUsd>=Na}function _s(e,t=!1){return!!e&&e._source==="wallet"&&(e.location==="external"||e._fundingWallet==="external"||!e.location&&!e._fundingWallet&&t)}function ye(e){return e.positionId??`${e.owner?.toLowerCase()??""}:${e.location??e._source??""}:${e.chainId}:${e.receiptTokenId??S.normalizeNativeTokenAddress(e.address).toLowerCase()}`}function Pa(e,t){if(!t?.length||e.symbol!==void 0&&p.isAssetAllowed({...e,symbol:e.symbol},t))return!0;const n=s=>t.some(o=>p.addressesEqual(S.normalizeNativeTokenAddress(o),S.normalizeNativeTokenAddress(s)));return n(e.address)||Object.keys(e.chainTokens??{}).some(s=>{const o=hn(s);return o?n(o.address):!1})}function Tn(e,t,n,s,o,r){const i=(y,x=!1)=>({eligible:!1,reason:y,policyExcluded:x}),l=e._source==="wallet"||e.location==="external"||e.location==="embedded",c=t==="spend-source"&&l&&!!s&&e.chainId===s.chainId&&p.addressesEqual(S.normalizeNativeTokenAddress(e.address),S.normalizeNativeTokenAddress(s.address));if(n.isWhitelistGateActive||!c&&!p.isAssetAllowed(e,n.allowedTokens))return i("Asset excluded by client policy",!0);if(t!=="withdraw-destination"&&!c&&!Ma(e))return i("Asset is unpriced or below the minimum value",!0);if(t==="holding")return{eligible:!0,reason:null};if(e.balanceError)return i(e.balanceError);if(!c&&!Pa(e,o))return i("Asset excluded by action policy",!0);const d=new Set(s?[s.chainId]:[]);e._source!=="spice"&&e.location!=="rollup"&&d.add(e.chainId);for(const y of d)if(!p.getRpcUrlForChain(y,n.rpcOverrides)?.trim())return i(`Configure SpiceFlowProvider rpcOverrides[${y}] before using this asset.`);if(r?.requiresEscrow){const y=S.getTokenByAddress(e.address,e.chainId);if(!y||!Js(y))return i("This asset has no supported escrow mapping")}if(!s)return{eligible:!0,reason:null};const f=n.liquidityVenues?.includeDefaults===!1?n.liquidityVenues.venues??[]:[...Uo,...n.liquidityVenues?.venues??[]],m=y=>f.some(x=>x.chainId===y),h=l&&e.chainId!==s.chainId,w=h?zo(e,s.chainId):null;if(h&&!w)return i("No supported source route");if(w&&!p.addressesEqual(S.normalizeNativeTokenAddress(e.address),S.normalizeNativeTokenAddress(w.source.address))&&!m(e.chainId))return i("No conversion venue configured on the source chain");const g=w?.destination.address??rn(e,s.chainId);return t==="withdraw-destination"?(e.chainTokens||e.receiptTokenId?Kn(e,s.chainId):g?[g]:[]).some(y=>p.addressesEqual(S.normalizeNativeTokenAddress(y),S.normalizeNativeTokenAddress(s.address)))?{eligible:!0,reason:null}:i("No supported withdrawal mapping"):g&&p.addressesEqual(S.normalizeNativeTokenAddress(g),S.normalizeNativeTokenAddress(s.address))?{eligible:!0,reason:null}:!g&&!$c(e,s.chainId)?i("No supported destination route"):m(s.chainId)?{eligible:!0,reason:null}:i("No conversion venue configured on the destination chain")}function eo(){const e=u.useContext(p.SpiceFlowProviderContext),[t]=u.useState(p.createInventoryStore);return e?.inventory??t}function Ho(e,t,n,s,o){const r=eo(),i=o??r,l=u.useMemo(()=>i.entry(e),[i,e]),[,c]=u.useState(0);u.useEffect(()=>{if(n)return l.subscribe(()=>c(f=>f+1),t,s)},[l,n,t,s]);const d=u.useCallback(()=>l.refresh(),[l]);return{...n?l.snapshot():p.EMPTY_INVENTORY,refresh:d}}var Ua="data:image/png;base64,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",_c="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=",ed="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=",ys="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 ws=S.getChainMeta(1)?.logo??"",td=S.TOKENS.find(e=>e.symbol==="USDC")?.logo??"",Bn=Object.fromEntries([...S.getMainnetChains(),...S.getTestnetChains()].map(e=>[e.id,e.logo])),bs={metamask:Ua,metaMask:Ua,rabby:_c,phantom:ed},Vo=Object.fromEntries(S.TOKENS.map(e=>[e.symbol.toUpperCase(),e.logo])),nd={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]},sd={btc:["wcbtc","cbtc","wbtc"]};function to(e){return e.replace(/^test\s*/i,"").replace(/^spice/i,"").trim()}function In(e){return to(e).toLowerCase()}function Wa(e){return In(e??"").replace(/[^a-z0-9]/g,"")}function Qo(e){const t=In(e);return[t,...sd[t]??[]].filter(Boolean)}function od(e){try{return BigInt(e.balanceAvailable||"0")}catch{return 0n}}function La(e){return Array.isArray(e.chainTokens)?e.chainTokens:Object.keys(e.chainTokens??{})}function qa(e,t){const n=p.getChainConfig(e),s=t.toLowerCase();return s===S.ZERO_ADDRESS.toLowerCase()?n?.nativeCurrency.decimals??18:n?.supportedTokens?.find(o=>o.address.toLowerCase()===s)?.decimals??18}function rd(e,t,n,s=[]){const o=qa(t,n),r=e.filter(l=>za(l,t,n,s));if(r.length===0)return null;const i=r.reduce((l,c)=>Math.min(l,c.decimals??o),o);return{chainDecimals:o,receiptDecimals:i}}function za(e,t,n,s){if(La(e).some(r=>{const i=hn(r);return i&&xs(i.address,i.chainId,n,t)}))return!0;const o=new Set(s.map(Wa).filter(Boolean));return o.size===0?!1:o.has(Wa(e.tokenName||e.receiptToken))}function Go(e,t,n,s=[]){const o=qa(t,n);return e.reduce((r,i)=>za(i,t,n,s)?r+S.convertAmountBetweenDecimals(od(i),i.decimals??o,o):r,0n)}function Ha(e,t){const n=new Set([...Qo(t),...Qo(to(t))]);return[...e].sort((s,o)=>{const r=In(s.symbol),i=In(o.symbol),l=In(s.name),c=In(o.name),d=n.has(r)?0:n.has(l)?1:2,f=n.has(i)?0:n.has(c)?1:2;return d!==f?d-f:s.address.toLowerCase().localeCompare(o.address.toLowerCase())})[0]}function ad(e){const t=e&&e.length>0?e:Object.keys(p.CHAIN_CONFIGS).map(Number).filter(Number.isFinite),n=new Map;for(const s of t){const o=p.getChainConfig(s);if(!o)continue;const r=`${s}:${S.ZERO_ADDRESS.toLowerCase()}`;n.has(r)||n.set(r,{address:S.ZERO_ADDRESS,chainId:s,symbol:o.nativeCurrency.symbol,name:o.nativeCurrency.name,decimals:o.nativeCurrency.decimals,isNative:!0,logoURI:Vo[o.nativeCurrency.symbol.toUpperCase()]??o.logo});for(const i of o.supportedTokens??[]){const l=i.address.toLowerCase(),c=`${s}:${l}`;n.has(c)||n.set(c,{address:l,chainId:s,symbol:i.symbol,name:i.name,decimals:i.decimals,isNative:S.isNativeToken(l),logoURI:i.logo})}}return n}function id(e,t){const n=ad(t),s=to(e.tokenName),o=In(e.tokenName),r=Qo(e.tokenName),i=Array.isArray(e.chainTokens)?e.chainTokens.map(g=>[g,void 0]):Object.entries(e.chainTokens??{}),l=i.map(([g])=>hn(g)).filter(g=>g!==null),c=new Map;for(const[g,y]of i){const x=hn(g);if(!x||!Number.isSafeInteger(x.chainId)||x.chainId<0||!/^evm:[0-9]+:(?:0x)?[0-9a-fA-F]{40}$/.test(g)){if(!Array.isArray(e.chainTokens))throw new Error("Invalid chain token metadata identity");continue}if(y!==void 0&&(!y||typeof y!="object"||Array.isArray(y)||y.name!==void 0&&typeof y.name!="string"||y.decimals!==void 0&&(!Number.isInteger(y.decimals)||y.decimals<0||y.decimals>255)))throw new Error("Invalid chain token metadata");const b=`${x.chainId}:${x.address.toLowerCase()}`;if(c.has(b)){const v=c.get(b);if(v?.name!==y?.name||v?.decimals!==y?.decimals)throw new Error("Conflicting chain token metadata")}c.set(b,y)}const d=(g,y)=>{const x=c.get(`${y.chainId}:${y.address.toLowerCase()}`);return{...g,name:typeof x?.name=="string"&&x.name.length>0?x.name:g.name,decimals:typeof x?.decimals=="number"?x.decimals:g.decimals}},f=l.map(g=>{const y=n.get(`${g.chainId}:${g.address.toLowerCase()}`);return y?d(y,g):void 0}).filter(g=>g!==void 0),m=nd[o]??[];if(m.length>0)for(const g of m){const y=f.filter(x=>x.chainId===g);if(y.length>0)return Ha(y,e.tokenName)}if(f.length>0)return Ha(f,e.tokenName);const h=Array.from(n.values()).filter(g=>r.includes(In(g.symbol))||r.includes(In(g.name)));if(m.length>0)for(const g of m){const y=h.find(x=>x.chainId===g);if(y)return y}if(h.length>0)return h[0];const w=l[0];if(w){const g=c.get(`${w.chainId}:${w.address.toLowerCase()}`);return{address:w.address,chainId:w.chainId,symbol:s||e.tokenName,name:typeof g?.name=="string"&&g.name.length>0?g.name:s||e.tokenName,decimals:typeof g?.decimals=="number"?g.decimals:e.decimals??18,isNative:S.isNativeToken(w.address),logoURI:void 0}}}function ld(e,t){let n;try{n=BigInt(e.balanceAvailable||"0")}catch{return null}if(n<=0n)return null;if(t?.length){const g=La(e).map(hn).filter(y=>y!==null);if(g.length>0&&!g.some(y=>t.includes(y.chainId)))return null}let s;try{s=id(e,t)}catch{return null}const o=s?.decimals??e.decimals??18,r=e.decimals??o,i=S.convertAmountBetweenDecimals(n,r,o),l=s?.address??S.ZERO_ADDRESS,c=s?.chainId??0,d=to(e.tokenName),f=s?.symbol??d,m=s?.name??d,h=parseFloat(B.formatUnits(i,o)),w=typeof e.balanceUsd=="number"?e.balanceUsd:typeof e.balanceUsd=="string"&&Number(e.balanceUsd)||0;return{address:l,symbol:f,name:m,decimals:o,chainId:c,balance:i,balanceFormatted:h,balanceUsd:w,isNative:s?.isNative??S.isNativeToken(l),logoURI:s?.logoURI,displaySymbol:d||f,displayName:d||m,displayChainName:"Spicenet",receiptTokenId:e.receiptToken,receiptTokenName:e.tokenName||m,receiptTokenDecimals:r,chainTokens:e.chainTokens&&!Array.isArray(e.chainTokens)?e.chainTokens:void 0,isUniversal:!0}}const Ko=6e4,cd=3e5,Va="https://api.g.alchemy.com/prices/v1",Zn=new Map;function Zo(e,t){try{const n=t??p.getClientForChain(e).transport.url;if(typeof n!="string")return null;const{hostname:s,pathname:o}=new URL(n);if(!s.endsWith(".g.alchemy.com"))return null;const r=o.split("/").filter(Boolean).pop();return r?{network:s.slice(0,-14),key:r}:null}catch{return null}}const vs=(e,t)=>`${e.network}:${e.key}:${t.toLowerCase()}`;function Cs(e,t){const n=Zn.get(vs(e,t));if(!n?.price||n.updatedAt===void 0)return;const s=Date.now()-n.updatedAt;if(!(s>=cd))return{price:n.price,stale:s>=Ko}}function Qa(e){const t=Number(e.prices?.find(n=>n.currency==="usd")?.value);return Number.isFinite(t)&&t>0?t:0}async function Ga(e,t,n){const s=[],o=new Set,r=Date.now();for(const i of new Set(t.map(l=>l.toLowerCase()))){const l=Zn.get(vs(e,i));l?.pending?o.add(l.pending):(!l||r-l.attemptedAt>=Ko&&(l.updatedAt===void 0||r-l.updatedAt>=Ko))&&s.push(i)}for(let i=0;i<s.length;i+=25){const l=s.slice(i,i+25),c=Promise.resolve().then(async()=>{try{const d=await n(l);for(const f of l){const m=d.get(f);if(!m)continue;const h=Zn.get(vs(e,f));h.price=m,h.updatedAt=Date.now()}}catch{}finally{for(const d of l)Zn.get(vs(e,d)).pending=void 0}});for(const d of l){const f=vs(e,d);Zn.set(f,{...Zn.get(f),attemptedAt:r,pending:c})}o.add(c)}await Promise.all(o)}async function Yo(e,t){return await Ga(e,t,async n=>{const s=await fetch(`${Va}/${e.key}/tokens/by-address`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({addresses:n.map(i=>({network:e.network,address:i}))}),signal:AbortSignal.timeout(1e4)});if(!s.ok)throw new Error("Provider price request failed");const o=await s.json(),r=new Map;for(const i of o?.data??[]){if(i.network&&i.network!==e.network)continue;const l=String(i.address).toLowerCase();n.includes(l)&&r.set(l,Qa(i))}return r}),new Map(t.map(n=>[n.toLowerCase(),Cs(e,n)?.price??0]))}async function Xo(e,t){const n=`native:${t}`;return await Ga(e,[n],async()=>{const s=await fetch(`${Va}/${e.key}/tokens/by-symbol?symbols=${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(1e4)});if(!s.ok)throw new Error("Provider native price request failed");const o=(await s.json())?.data?.find(r=>r.symbol?.toUpperCase()===t.toUpperCase());return new Map([[n.toLowerCase(),o?Qa(o):0]])}),Cs(e,n)?.price??0}async function dd(e,t){const n=t.supportedChains,s=e.map(o=>{if(Number.isFinite(o.balanceUsd)&&o.balanceUsd>0)return[];const r=Object.keys(o.chainTokens??{}).map(hn).filter(i=>!!i&&B.isAddress(i.address)&&!!n?.includes(i.chainId));return r.sort((i,l)=>{const c=d=>d===t.nativeChainId?-1:n.indexOf(d);return c(i.chainId)-c(l.chainId)||+!p.addressesEqual(i.address,o.address)-+!p.addressesEqual(l.address,o.address)}),r.flatMap(i=>{const l=t.rpcOverrides?.[i.chainId];if(!l)return[];const c=Zo(i.chainId,l);if(!c)return[];const d=S.isNativeToken(i.address)?p.getChainConfig(i.chainId)?.nativeCurrency.symbol:void 0,f=d?`native:${d}`:i.address;return[{rpc:c,token:f,address:i.address,nativeSymbol:d}]})});return(typeof document>"u"||!document.hidden)&&await Promise.all(s.map(async o=>{for(const r of o)if(r.nativeSymbol?await Xo(r.rpc,r.nativeSymbol).catch(()=>0):(await Yo(r.rpc,[r.address]).catch(()=>new Map)).get(r.address.toLowerCase()))break})),e.map((o,r)=>{if(Number.isFinite(o.balanceUsd)&&o.balanceUsd>0)return o;const i=s[r].map(l=>Cs(l.rpc,l.token)).find(Boolean);return{...o,balanceUsd:i?o.balanceFormatted*i.price:0,priceStatus:i?i.stale?"stale":"fresh":"unavailable"}})}function ud(e,t,n){const s=u.useContext(p.SpiceFlowProviderContext),[o,r]=u.useState(()=>typeof document>"u"||!document.hidden);u.useEffect(()=>{const f=()=>r(!document.hidden);return document.addEventListener("visibilitychange",f),()=>document.removeEventListener("visibilitychange",f)},[]);const i={supportedChains:n??s?.supportedChainIds,nativeChainId:s?.nativeChainId,rpcOverrides:s?.rpcOverrides},l=JSON.stringify([e,i],(f,m)=>typeof m=="bigint"?m.toString():m),c=u.useCallback(()=>dd(e,i),[l]),d=Ho(`prices:${l}`,c,t&&o&&e.length>0,6e4);return d.updatedAt?d.assets:e}function pd(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 Ka=({address:e,supportedChains:t,enabled:n=!0,refetchInterval:s,priceEnabled:o=!1})=>{const r=u.useContext(p.SpiceFlowProviderContext),i=r?.apiUrl||p.RELAYER_API_URL,l=eo(),c=r?.supportedChainIds??t,d=JSON.stringify([...c??[]].sort((A,F)=>A-F)),f=e?.toLowerCase(),m=u.useCallback(async()=>{const A=await p.relayerFetch(`${i}/wallets/${f}/balance`,{cache:"no-store"});if(!A.ok)throw new Error(`Failed to fetch balance: ${A.status}`);const F=await A.json();if(!Array.isArray(F.balances))throw new Error("Invalid balance response");return F.balances.map(R=>{const j=ld({receiptToken:typeof R.receiptToken=="string"?R.receiptToken:void 0,tokenName:String(R.tokenName??""),balanceAvailable:String(R.balanceAvailable??"0"),chainTokens:pd(R),decimals:typeof R.decimals=="number"?R.decimals:void 0,balanceUsd:typeof R.balanceUsd=="number"||typeof R.balanceUsd=="string"?R.balanceUsd:null},c);return j?{...j,owner:f,location:"rollup",_source:"spice",positionId:`${f}:rollup:${j.receiptTokenId??j.address}`}:null}).filter(R=>R!==null)},[f,i,d,r?.nativeChainId,r?.rpcOverrides]),{assets:h,loading:w,refreshing:g,error:y,updatedAt:x}=Ho(`rollup:${f}:${i}:${d}`,m,n&&!!f,s??0,l),b=JSON.stringify(t??[]),v=u.useMemo(()=>y?h.map(A=>({...A,balanceError:y,balanceStatus:"stale"})):h,[h,y]),C=ud(v,n&&o,c),k=u.useMemo(()=>C.filter(A=>!t?.length||t.includes(A.chainId)||Object.keys(A.chainTokens??{}).some(F=>t.some(R=>F.startsWith(`evm:${R}:`)))),[C,b]),I=u.useCallback(A=>k.filter(F=>F.chainId===A),[k]);return{assets:k,loading:w,error:y,hasBalance:k.some(A=>A.balance>0n),refreshing:g,updatedAt:x,refetch:l.invalidate,getAssetsByChain:I}};async function fd(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([pn.readContract(e,{address:t,abi:B.erc20Abi,functionName:"decimals"}),pn.readContract(e,{address:t,abi:B.erc20Abi,functionName:"symbol"}).catch(()=>"TOKEN"),pn.readContract(e,{address:t,abi:B.erc20Abi,functionName:"name"}).catch(()=>"TOKEN")]);if(!Number.isInteger(Number(s))||Number(s)<0||Number(s)>255)throw new Error("Invalid token decimals");return{decimals:Number(s),symbol:o,name:r,logoURI:void 0}}const Za=async(e,t,n)=>{const s=p.getClientForChain(t,n),o=p.getChainConfig(t),r=await pn.getBalance(s,{address:e}),i=o.nativeCurrency,l=o.supportedTokens?.find(c=>S.isNativeToken(c.address));return{address:S.ZERO_ADDRESS,name:i.name,symbol:i.symbol,decimals:i.decimals,balance:r,balanceFormatted:Number(B.formatUnits(r,i.decimals)),balanceUsd:0,logoURI:l?.logo||o.logo,isNative:!0,chainId:t}},md=async(e,t,n,s,o,r,i)=>{try{if(!B.isAddress(n))return null;const l=B.getAddress(n),c=B.isAddress(e)?B.getAddress(e):e,d=p.getClientForChain(t,i),f=await pn.readContract(d,{address:l,abi:B.erc20Abi,functionName:"balanceOf",args:[c]}),m=Number(B.formatUnits(f,r));return f>0n?{address:l,name:s,symbol:o,decimals:r,balance:f,balanceFormatted:m,balanceUsd:0,logoURI:void 0,isNative:!1,chainId:t}:null}catch(l){throw l}},Ya=(e,t)=>{const n=p.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||[])S.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:S.isNativeToken(r.address),chainId:t});if(!e.find(r=>r.isNative)){const r=n.supportedTokens?.find(i=>S.isNativeToken(i.address));e.push({address:S.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},hd=async(e,t,n)=>{const s=[],o=async l=>{for(const c of l){const d=await md(e,t,c.address,c.name,c.symbol,c.decimals,n);d&&(d.logoURI=c.logo,s.push(d))}},r=await Za(e,t,n);r.balance>0n&&s.push(r);const i=(p.getChainConfig(t)?.supportedTokens||[]).filter(l=>!S.isNativeToken(l.address));if(i.length>0)try{const l=p.getClientForChain(t,n),c=B.getAddress(e),d=i.filter(w=>B.isAddress(w.address)).map(w=>({address:B.getAddress(w.address),abi:B.erc20Abi,functionName:"balanceOf",args:[c]})),f=await l.multicall({contracts:d}),m=i.filter(w=>B.isAddress(w.address)),h=[];f.forEach((w,g)=>{if(w.status==="success"){const y=w.result;if(y&&y>0n){const x=m[g],b=Number(B.formatUnits(y,x.decimals));y>0n&&s.push({address:B.getAddress(x.address),name:x.name,symbol:x.symbol,decimals:x.decimals,balance:y,balanceFormatted:b,balanceUsd:0,logoURI:x.logo,isNative:!1,chainId:t})}}else h.push(m[g])}),await o(h)}catch{await o(i)}return{tokens:Ya(s,t),chainId:t}},gd=async(e,t,n)=>{const s=new Map,o=Zo(e,n?n[e]??"":void 0);if(!o)return s;const r=t.filter(d=>S.isNativeToken(d)),i=t.filter(d=>!S.isNativeToken(d)),[l,c]=await Promise.all([i.length?Yo(o,i).catch(()=>new Map):new Map,r.length?Xo(o,p.getChainConfig(e)?.nativeCurrency?.symbol??"ETH").catch(()=>0):0]);for(const[d,f]of l)f>0&&s.set(d,f);if(c>0)for(const d of r)s.set(d.toLowerCase(),c);return s},xd=async(e,t,n,s=!0,o)=>{const r=p.getClientForChain(t,o),i=B.getAddress(e),l=[];let c;do{const b=await r.request({method:"alchemy_getTokenBalances",params:[i,"erc20",c?{pageKey:c}:{}]});l.push(...b.tokenBalances),c=b.pageKey||void 0}while(c);const d=l.filter(b=>B.isAddress(b.contractAddress)&&!!b.tokenBalance&&BigInt(b.tokenBalance)>0n),f=p.getChainConfig(t)?.supportedTokens||[],m=b=>f.find(v=>v.address.toLowerCase()===b.toLowerCase()),h=[],w=await Za(e,t,o),[g,y,x]=await Promise.all([Promise.all(d.map(async b=>{const v=m(b.contractAddress);return v?{name:v.name,symbol:v.symbol,decimals:v.decimals,logo:v.logo??null}:await r.request({method:"alchemy_getTokenMetadata",params:[b.contractAddress]})})),s?Yo(n,d.map(b=>b.contractAddress)):new Map(d.map(b=>[b.contractAddress.toLowerCase(),Cs(n,b.contractAddress)?.price??0])),s&&w.balanceFormatted>0?Xo(n,w.symbol):Cs(n,`native:${w.symbol}`)?.price??0]);return w.balance>0n&&h.push({...w,balanceUsd:x*w.balanceFormatted}),d.forEach((b,v)=>{const C=g[v];if(!Number.isInteger(C.decimals)||C.decimals===null||C.decimals<0||C.decimals>255)throw new Error(`Invalid token metadata on chain ${t}`);const k=BigInt(b.tokenBalance),I=Number(B.formatUnits(k,C.decimals));if(k<=0n)return;const A=y.get(b.contractAddress.toLowerCase()),F=A?A*I:0;h.push({address:B.getAddress(b.contractAddress),name:C.name||"Unknown",symbol:C.symbol||"UNKNOWN",decimals:C.decimals,balance:k,balanceFormatted:I,balanceUsd:F,isDiscovered:!m(b.contractAddress),logoURI:C.logo||void 0,isNative:!1,chainId:t})}),{tokens:Ya(h,t),chainId:t}},Xa=new Set,yd=async(e,t,n=!0,s)=>{try{const o=Zo(t,s?s[t]??"":void 0);if(o)try{return await xd(e,t,o,n&&(typeof document>"u"||!document.hidden),s)}catch(r){Xa.has(t)||(Xa.add(t),console.warn(`Token discovery unavailable on chain ${t}; listing configured tokens only.`,r))}return await hd(e,t,s)}catch(o){throw o}},Yn=async(e,t,n=[],s)=>{if(!e)throw new Error("Wallet address is required");const o=p.getChainsForAssets(s),r=t?.length?[...new Set(t)]:Object.keys(o).map(Number),i=await Promise.allSettled(r.map(c=>yd(e,c,!0,s))),l={};return i.forEach((c,d)=>{const f=r[d];l[f]=c.status==="fulfilled"?c.value:{chainId:f,tokens:[],error:`Unable to refresh balances on chain ${f}`}}),(await Promise.allSettled(n.map(async c=>{const d=l[c.chainId];if(!d||d.error||d.tokens.some(y=>S.normalizeNativeTokenAddress(y.address).toLowerCase()===S.normalizeNativeTokenAddress(c.address).toLowerCase()))return;const f=p.getClientForChain(c.chainId,s),m=await fd(f,c.address,c.decimals!==void 0&&c.symbol?{decimals:c.decimals,symbol:c.symbol,name:c.name||c.symbol,logo:c.logoURI}:void 0),h=await pn.readContract(f,{address:c.address,abi:B.erc20Abi,functionName:"balanceOf",args:[e]}),w=await gd(c.chainId,[c.address],s),g=Number(B.formatUnits(h,m.decimals));d.tokens.push({...m,...c,name:m.name,symbol:m.symbol,decimals:m.decimals,balance:h,balanceFormatted:g,balanceUsd:(w.get(c.address.toLowerCase())||0)*g,isNative:!1})}))).forEach((c,d)=>{if(c.status==="rejected"){const f=l[n[d].chainId];f&&(f.error=`Unable to refresh token balances on chain ${f.chainId}`)}}),l},ks=({address:e,supportedChains:t,fetchBalances:n=Yn,additionalTokens:s=[],enabled:o=!0,refreshInterval:r=0,priceEnabled:i=!0})=>{const l=u.useContext(p.SpiceFlowProviderContext),c=eo(),d=e?.toLowerCase(),f=JSON.stringify([...l?.supportedChainIds??t??[]].sort((v,C)=>v-C)),m=JSON.stringify(s);u.useEffect(()=>c.registerTokens(s),[c,m]);const h=d&&d===l?.embeddedWalletAddress?.toLowerCase()?"embedded":"external",w=`wallet:${JSON.stringify([l?.network,l?.apiUrl,l?.rpcOverrides])}:${d}:${h}:${f}:${c.fetcherId(n)}`,g=u.useCallback(async()=>{let v;try{v=await n(d,JSON.parse(f),c.tokens(),l?.rpcOverrides)}catch(A){const F=A instanceof Error?A.message:"Unable to refresh balances";v=Object.fromEntries(JSON.parse(f).map(R=>[R,{chainId:R,tokens:[],error:F}]))}const C=c.entry(w).snapshot().assets,k=JSON.parse(f).map(A=>v[A]??{chainId:A,tokens:[],error:`Unable to refresh balances on chain ${A}`}),I=k.flatMap(A=>A.error?[A.error]:[]);return{assets:k.flatMap(A=>A.error?C.filter(F=>F.chainId===A.chainId).map(F=>({...F,balanceError:A.error,balanceStatus:"stale"})):A.tokens.map(F=>({...F,owner:d,location:h,_fundingWallet:h,_source:"wallet",positionId:`${d}:${h}:${A.chainId}:${S.normalizeNativeTokenAddress(F.address).toLowerCase()}`}))),error:I.length?I.join("; "):null}},[c,d,f,n,h,w]),y=Ho(w,g,o&&!!d,r,c),x=JSON.stringify(t&&[...t].sort((v,C)=>v-C)),b=u.useMemo(()=>t?y.assets.filter(v=>t.includes(v.chainId)):y.assets,[y.assets,x]);return u.useEffect(()=>{i&&o&&d&&y.refresh()},[i]),{...y,assets:b,refreshAssets:c.invalidate,getAssetsByChain:u.useCallback(v=>b.filter(C=>C.chainId===v),[b]),getNativeAssets:u.useCallback(()=>b.filter(v=>v.isNative),[b])}};function Xn(e){const t=u.useContext(p.SpiceFlowProviderContext),n=eo(),s=e.owner??((t?.mode||"7702")!=="7702"?t?.externalWalletAddress:t?.embeddedWalletAddress),o=s?.toLowerCase()!==t?.embeddedWalletAddress?.toLowerCase(),r=e.sourceChains??t?.supportedChainIds??[],i=(e.enabled??!0)&&!t?.isWhitelistGateActive,l=u.useMemo(()=>{const h=[...t?.additionalSourceTokens??[],...e.additionalSourceTokens??[],...e.destination?[e.destination]:[]];for(const w of e.supportedSourceAssets??[])for(const g of r){const y=p.getChainConfig(g)?.supportedTokens?.find(x=>p.isAssetAllowed(x,[w]));y&&h.push({...y,address:y.address,chainId:g,logoURI:y.logo})}return h},[e.destination,JSON.stringify(t?.additionalSourceTokens),JSON.stringify(e.additionalSourceTokens),JSON.stringify(e.supportedSourceAssets),JSON.stringify(r)]),c=ks({address:s,supportedChains:r,fetchBalances:Yn,additionalTokens:l,enabled:i&&e.includeWalletAssets!==!1,refreshInterval:3e4}),d=Ka({address:s,supportedChains:r,enabled:i&&e.includeRollupAssets!==!1&&!!s&&s.toLowerCase()===t?.embeddedWalletAddress?.toLowerCase(),priceEnabled:i,refetchInterval:3e4}),f=u.useMemo(()=>i?[...(e.includeWalletAssets===!1?[]:c.assets).map(h=>({...h,owner:h.owner??s,location:h.location??(o?"external":"embedded"),_source:"wallet"})),...(e.includeRollupAssets===!1||s?.toLowerCase()!==t?.embeddedWalletAddress?.toLowerCase()?[]:d.assets).map(h=>({...h,owner:h.owner??s,location:"rollup",_source:"spice"}))]:[],[i,c.assets,d.assets,e.includeWalletAssets,e.includeRollupAssets,s,o,t?.embeddedWalletAddress]),m=u.useMemo(()=>f.map(h=>({asset:h,...Tn(h,e.role??"holding",{allowedTokens:t?.allowedTokens,rpcOverrides:t?.rpcOverrides,liquidityVenues:t?.liquidityVenues,isWhitelistGateActive:!!t?.isWhitelistGateActive},e.destination,e.supportedSourceAssets,{requiresEscrow:e.requiresEscrow})})),[f,t?.allowedTokens,t?.rpcOverrides,t?.liquidityVenues,t?.isWhitelistGateActive,e.role,e.destination,e.supportedSourceAssets,e.requiresEscrow]);return{positions:m,assets:u.useMemo(()=>m.filter(h=>h.eligible&&h.asset.balance>0n).map(h=>h.asset),[m]),walletAssets:u.useMemo(()=>f.filter(h=>h._source==="wallet"),[f]),rollupAssets:u.useMemo(()=>f.filter(h=>h._source==="spice"),[f]),loading:c.loading||d.loading,refreshing:c.refreshing||d.refreshing,error:c.error||d.error,refresh:n.invalidate}}function Rn(e){const t=S.normalizeNativeTokenAddress(e.address);if(e.isNative||S.isNativeToken(t))return!1;const n=p.getChainConfig(e.chainId)?.supportedTokens?.some(o=>p.addressesEqual(o.address,t)),s=S.getTokenByAddress(t,e.chainId);return!!n&&!!s&&Js(s)}const Ja="spiceflow:pendingDeposit",no="spiceflow:pendingDepositChanged";function $a(e,t,n){return`${Ja}:${e.toLowerCase()}:${t}:${n.toLowerCase()}`}function Jo(){try{const e="__spiceflow_storage_test__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch{return!1}}function wd(e){if(!Jo())return;const t=$a(e.embeddedWalletAddress,e.chainId,e.tokenAddress);try{localStorage.setItem(t,JSON.stringify(e)),window.dispatchEvent(new Event(no))}catch(n){console.error("[pendingDeposit] Failed to save:",n)}}function bd(e){if(!Jo())return[];const t=`${Ja}:${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 $o(e,t,n){if(!Jo())return;const s=$a(e,t,n);localStorage.removeItem(s),window.dispatchEvent(new Event(no))}const vd=new Set(["USDC","SUSD","USD","NUSD","USDT","DAI","ENUSD","USDG"]),_a={ETH:"ethereum",WETH:"ethereum",BTC:"bitcoin",WBTC:"bitcoin",WCBTC:"bitcoin",CBTC:"bitcoin",ECBTC:"bitcoin",ARB:"arbitrum",MATIC:"matic-network",POL:"matic-network"};let so=null;const Cd=6e4;async function ei(e){const t={},n=new Set,s={};for(const r of e){const i=r.toUpperCase();if(vd.has(i))t[i]=1;else if(_a[i]){const l=_a[i];n.add(l),s[i]=l}else t[i]=0}if(n.size===0)return t;const o=Date.now();if(so&&o-so.timestamp<Cd){for(const[r,i]of Object.entries(s))t[r]=so.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(),c={};for(const d of n)c[d]=l[d]?.usd??0;so={prices:c,timestamp:o};for(const[d,f]of Object.entries(s))t[d]=c[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}const kd=new Set(["cbtc","btc","wbtc","wcbtc","tbtc"]),Sd=new Set(["usdc","usdt","dai","usdc.e","usdbc","usdg"]);async function Id(){const e=(await ei(["BTC"])).BTC;if(!e||e<=0)throw new Error("Failed to fetch BTC/USD price");return e}function Ad(e){return kd.has(e.toLowerCase())}function Ed(e){return Sd.has(e.toLowerCase())}function Fd(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 c=e*r/o;return i>0?c=c/l:i<0&&(c=c*l),c}const Td=.01,Bd=5*60*1e3;function Rd(e){const t=Number(B.formatUnits(e.verifiedBalance,e.tokenDecimals));return Number.isFinite(t)?t:0}async function jd(e){const t=ti(e);let n;try{n=await ei(t.map(s=>s.tokenSymbol))}catch{return t}return t.filter(s=>{const o=Rd(s);if(o<=0)return!0;const r=n[s.tokenSymbol.toUpperCase()]??0;return!Number.isFinite(r)||r<=0?!0:o*r>=Td})}function ti(e){const t=new Map;for(const n of e){const s=`${n.chainId}:${n.tokenAddress.toLowerCase()}`;if(!t.get(s)){const o=n.timestamp===0&&n.verifiedBalance>0n;t.set(s,{...n,amount:o?B.formatUnits(n.verifiedBalance,n.tokenDecimals):n.amount,rawAmount:o?n.verifiedBalance.toString():n.rawAmount,hasFullBalance:o?!0:n.hasFullBalance})}}return Array.from(t.values())}function ni(e,t){const[n,s]=u.useState([]),[o,r]=u.useState(!1),i=u.useRef(t);i.current=t;const l=!!t?.enabled,c=u.useRef(0),d=u.useRef([]),f=t?.chainIds?.join(","),m=t?.discoverWalletBalances??!0,h=u.useRef(0),w=u.useCallback(async({forceDiscovery:g=!1}={})=>{if(!e||i.current?.enabled===!1){s([]),r(!1);return}const y=++h.current,x=()=>y!==h.current;r(!0);try{const b=[],v=bd(e),C=new Set(v.map(R=>`${R.chainId}:${R.tokenAddress.toLowerCase()}`)),k=[...v,...d.current.filter(R=>R.timestamp===0&&!C.has(`${R.chainId}:${R.tokenAddress.toLowerCase()}`))];for(const R of k){if(x())return;if(Rn({address:R.tokenAddress,chainId:R.chainId,isNative:R.isNative}))try{const j=p.getClientForChain(R.chainId);let T;if(R.isNative||S.isNativeToken(R.tokenAddress)?T=await pn.getBalance(j,{address:e}):T=await pn.readContract(j,{address:B.getAddress(R.tokenAddress),abi:B.erc20Abi,functionName:"balanceOf",args:[e]}),x())return;if(T>0n)b.push({...R,verifiedBalance:T,hasFullBalance:T>=BigInt(R.rawAmount)});else{const P=Date.now()-R.timestamp;R.timestamp!==0&&P>15*60*1e3&&$o(e,R.chainId,R.tokenAddress)}}catch(j){if(x())return;console.warn(`[usePendingDeposit] Failed to verify balance for ${R.tokenSymbol} on chain ${R.chainId}:`,j),b.push({...R,verifiedBalance:0n,hasFullBalance:!1})}}if(x())return;const I=i.current,A=Date.now(),F=(I?.discoverWalletBalances??!0)&&(g||A-c.current>=Bd);if(I?.network&&F){c.current=A;const R=I.chainIds??S.getChainIdsByNetwork(I.network),j=new Set(b.map(P=>`${P.chainId}:${P.tokenAddress.toLowerCase()}`)),T=[];for(const P of R){const O=p.getChainConfig(P);if(O?.supportedTokens)for(const M of O.supportedTokens){if(!Rn({address:M.address,chainId:P,isNative:!1}))continue;const U=`${P}:${M.address.toLowerCase()}`;j.has(U)||T.push((async()=>{try{const E=p.getClientForChain(P),D=await pn.readContract(E,{address:B.getAddress(M.address),abi:B.erc20Abi,functionName:"balanceOf",args:[e]});return D>0n?{chainId:P,tokenAddress:M.address,tokenSymbol:M.symbol,tokenDecimals:M.decimals,amount:B.formatUnits(D,M.decimals),rawAmount:D.toString(),embeddedWalletAddress:e,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:D,hasFullBalance:!0}:null}catch{return null}})())}}if(T.length>0){const P=await Promise.allSettled(T);if(x())return;for(const O of P)O.status==="fulfilled"&&O.value&&b.push(O.value)}}if(!x()){const R=await jd(b);if(x())return;d.current=ti(b),s(R)}}catch(b){if(console.error("[usePendingDeposit] Verification error:",b),!x()){const v=d.current.map(C=>({...C,verifiedBalance:0n,hasFullBalance:!1}));d.current=v,s(v)}}finally{x()||r(!1)}},[e]);return u.useEffect(()=>{if(d.current=[],c.current=0,s([]),!l){h.current++,r(!1);return}w({forceDiscovery:!0});const g=i.current?.pollIntervalMs??3e4;if(g<=0||!e)return()=>{h.current++};const y=setInterval(()=>{w({forceDiscovery:!1})},g),x=()=>w({forceDiscovery:!0});return window.addEventListener(no,x),()=>{h.current++,window.removeEventListener(no,x),clearInterval(y)}},[w,e,l,t?.network,f,m]),{pendingDeposits:n,loading:o,refresh:()=>w({forceDiscovery:!0})}}function si(e){const t=u.useContext(p.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{...ni(s,o),embeddedWalletAddress:n}}var _o="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";function er(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 c=async h=>{if(h&&l)return;n.current?.abort();const w=new AbortController;n.current=w;const g=++t.current;l=!0;try{await s.current({isBackground:h,isCurrent:()=>!i&&t.current===g,signal:w.signal})}finally{l=!1}},d=window.setTimeout(()=>void c(!1),e.delayMs??250),f=()=>{document.hidden||c(!0)},m=e.backgroundIntervalMs?window.setInterval(f,e.backgroundIntervalMs):void 0;return m!==void 0&&document.addEventListener("visibilitychange",f),()=>{i=!0,n.current?.abort(),clearTimeout(d),m!==void 0&&(window.clearInterval(m),document.removeEventListener("visibilitychange",f)),r.current?.()}},[e.shouldRun,e.delayMs,e.backgroundIntervalMs,...e.deps])}function oi(e,t){if(e.length!==t.length)return!1;const n=S.hashChainBatches(e),s=S.hashChainBatches(t);return n.every((o,r)=>o.hash===s[r]?.hash)}const fn=e=>new Promise(t=>setTimeout(t,e)),Od="0xa9059cbb";function ri(e){const t=e.findIndex(o=>S.isSpicenetChainId(o.chainId));if(t<=0)return[];const n=new Map,s=(o,r,i)=>{if(i<=0n)return;const l=`${o}:${r.toLowerCase()}`,c=n.get(l);c?c.amount+=i:n.set(l,{chainId:o,token:r,amount:i})};for(const o of e.slice(0,t)){const r=S.getEscrowContract(o.chainId);if(!(!r||r===S.ZERO_ADDRESS)){for(const i of o.calls)if(i.value&&i.value>0n&&p.addressesEqual(i.to,r)&&s(o.chainId,S.ZERO_ADDRESS,i.value),!!i.data?.startsWith(Od))try{const l=B.decodeFunctionData({abi:B.erc20Abi,data:i.data});if(l.functionName!=="transfer")continue;const[c,d]=l.args;p.addressesEqual(c,r)&&s(o.chainId,i.to,d)}catch{}}}return[...n.values()]}function ai(e){const t=S.getTokenByAddress(e.token,e.chainId);return[t?.equivalenceGroup,t?.symbol,t?.name]}function ii(e,t){return Go(e,t.chainId,t.token,ai(t))}function Dd(e,t){const n=rd(e,t.chainId,t.token,ai(t));return!n||n.receiptDecimals>=n.chainDecimals?t.amount:S.convertAmountBetweenDecimals(S.convertAmountBetweenDecimals(t.amount,n.chainDecimals,n.receiptDecimals),n.receiptDecimals,n.chainDecimals)}async function li(e){const{deposits:t,baseline:n,fetchEntries:s,timeoutMs:o=12e4,intervalMs:r,signal:i,wait:l=fn}=e;if(t.length===0)return!0;const c=new Map(t.map(m=>[m,ii(n,m)])),d=Date.now(),f=d+o;for(;!i?.aborted;){try{const g=await s();if(t.every(y=>ii(g,y)-c.get(y)>=Dd(g,y)))return!0}catch{}const m=Date.now();if(m>=f)return!1;const h=m-d,w=r??(h<5e3?250:h<15e3?1e3:3e3);await l(Math.min(w,f-m))}return!1}function ci(e,t){const n=S.hashChainBatches(e).map(s=>s.hash);return B.keccak256(B.encodeAbiParameters([{type:"string"},{type:"uint256"},{type:"uint256"},{type:"bytes32[]"}],["ecdsa",0n,t,n]))}async function di(e,t,n,s,o){if(s?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");const r={raw:ci(t,n)},i=o?await e.signMessage(r,o):await e.signMessage(r);console.debug("[SpiceFlow:execution]",{phase:"signature-returned",at:Date.now()});const l=typeof i=="string"?i:i.signature;if(!l)throw new p.SpiceflowError("SIGNATURE_FAILED","Failed to sign intent authorization. The wallet returned an empty signature.");return l}function Nd(e){return e.domain==="spicenet"||S.isSpicenetChainId(e.chainId)}async function ui(e){const{chainBatches:t,signingAddress:n,actions:s,cache:o,signal:r,onSignatureRequested:i,beforeSign:l}=e;if(r?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");const c=[...new Set(t.filter(m=>!Nd(m)).map(m=>m.chainId))].map(m=>({chainId:m,client:p.getClientForChain(m),delegateContract:p.getDelegateContractAddress(m)})),[d]=await Promise.all([Promise.all(c.map(async({chainId:m,client:h,delegateContract:w})=>{const g=Number(await S.getAccountNonce(n,h)),y=[n.toLowerCase(),m,w.toLowerCase(),g].join(":");return{chainId:m,delegateContract:w,nonce:g,cacheKey:y,cached:o?.get(y)}})),c.length?s.prepareSigning?.():void 0,l?.()]),f=[];for(const{chainId:m,delegateContract:h,nonce:w,cacheKey:g,cached:y}of d){if(y){f.push(y);continue}if(r?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");const x=await s.signAuthorization({contractAddress:h,chainId:m,nonce:w},i),b={r:x.r,s:x.s,yParity:x.yParity,address:x.address??h,chainId:Number(x.chainId??m),nonce:Number(x.nonce??w)};o?.set(g,b),f.push(b)}return f}const pi=15;function Md(e){return e.now-e.lastProgressAt>=e.pollTimeoutMs}function fi(e,t){return{intentId:e,steps:t.map(n=>({...n,status:"pending"})),overallStatus:"processing"}}function oo(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 Pd({checkStepStatus:e,retryStep:t,maxRetries:n=3,pollingInterval:s=2500,pollTimeoutMs:o=3e5}){const[r,i]=u.useState(null),l=u.useRef(null),c=u.useRef(null),d=u.useRef(!1),f=u.useRef(!1),m=u.useRef(0),h=u.useRef({}),w=u.useRef(0),g=u.useCallback(k=>{l.current=k,i(k)},[]),y=u.useCallback(()=>{c.current&&(clearInterval(c.current),c.current=null)},[]),x=u.useCallback(()=>{m.current=0,h.current={},w.current=0,d.current=!0,y(),g(null)},[y,g]),b=u.useCallback((k,I)=>{y(),d.current=!1,g(fi(k,I))},[y,g]),v=u.useCallback((k,I)=>{const A=l.current;A&&g(oo(A,k,I))},[g]),C=u.useCallback((k,I)=>{y(),d.current=!1,f.current=!1,m.current=0,h.current={},w.current=Date.now(),g(fi(k,I));const A=async()=>{if(!(d.current||f.current||!e)){f.current=!0;try{if(Md({now:Date.now(),lastProgressAt:w.current,pollTimeoutMs:o})){const j=l.current;j&&g({...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"}),d.current=!0,y();return}const F=l.current;if(!F)return;const R=F.steps.findIndex(j=>j.status!=="success");if(R===-1){d.current=!0,y();return}if(!(R===0||F.steps[R-1].status==="success"))return;try{const j=F.steps[R].stepId,{data:T}=await e(k,j);if(m.current=0,T.status==="success"&&(w.current=Date.now()),T.status==="reverted"){const O=h.current[j]||0;if(t&&O<n){h.current[j]=O+1;try{await t(k,j)}catch(M){console.error(`[intentStatus] retry failed for step ${j}:`,M)}g(oo(l.current,R,{status:"executing"}));return}}const P=oo(l.current,R,T);g(P),P.overallStatus!=="processing"&&(d.current=!0,y())}catch(j){m.current+=1,console.error(`[intentStatus] poll error (${m.current}/${pi}):`,j),m.current>=pi&&(g(oo(l.current,R,{status:"error"})),d.current=!0,y())}}finally{f.current=!1}}};A(),c.current=setInterval(A,s)},[e,t,n,s,o,y,g]);return u.useEffect(()=>()=>y(),[y]),{intentStatus:r,startStatusPolling:C,beginStatusTracking:b,applyStepUpdate:v,stopStatusPolling:y,clearStatus:x}}function Ud(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 Wd=350,Ld=2500;async function mi(e){const{actionId:t,intentIndex:n,intentId:s,stepIndex:o,maxPolls:r=48,maxExecuteAttempts:i=3,pollsBeforeRetry:l=5,maxConsecutiveStatusErrors:c=15,onStatusMessage:d,onStepUpdate:f,signal:m,chainId:h,startWithExecute:w=!0,observeOnly:g=!1,relayer:y=p.relayerService,completeOnExecution:x=!1}=e;if(m?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");let b="pending",v,C,k=0,I=0,A,F;const R=new Promise((T,P)=>{A=T,F=()=>P(new p.SpiceflowError("ABORT","Execution transaction aborted"))}),j=()=>{k++,y.executeStep(t,n,o,{action:"execute"}).then(T=>{T.transactionHash&&(v=T.transactionHash),T.status==="success"&&A({status:T.status,transactionHash:T.transactionHash})}).catch(T=>{const P=T instanceof Error?T.message:String(T);console.warn(`[execution] executeStep ${o} attempt ${k} error (will poll):`,P)})};m?.addEventListener("abort",F,{once:!0});try{w&&!g&&j();for(let T=0;T<r;T++){const P=T===0?Wd:Ld;try{const M=await Promise.race([fn(P).then(()=>{}),R]);if(m?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");const U=M??await Promise.race([y.checkStepStatus(s,o,x).then(D=>D.data),R]);if(m?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");I=0,b=U.status,C=U.error;const E=U.transactionHash;E&&(v=E),x&&/^0x[0-9a-f]{64}$/i.test(E??"")&&(U.executionStatus==="success"||U.executionStatus==="reverted")&&(b=U.executionStatus,C=void 0),f?.({status:b,transactionHash:v,error:C})}catch(M){if(M instanceof Error&&(M.name==="AbortError"||M instanceof p.SpiceflowError&&M.code==="ABORT"))throw M;if(I++,I>=c){if(!g)throw M;d?.("Status is temporarily unavailable. The backend continues this action.",v)}continue}if(!g&&b==="created"&&T>=k*l&&k<i&&j(),b==="reverted"||b==="error")throw new p.SpiceflowError("ON_CHAIN_REVERT",Ud(b,C),{status:b,txHash:v,actionId:t,intentId:s,stepId:o,chainId:h});if(b==="success"||b==="completed")return v;let O="Waiting for solver...";b==="executing"?O="Transaction executing...":b==="submitted"?O="Transaction submitted...":b==="created"&&(O="Waiting for relayer..."),d?.(O,v)}throw new p.SpiceflowError("POLLING_EXHAUSTED",`Transaction is still processing (status: ${b}). 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:b,pollAttempts:r,maxPolls:r,txHash:v})}finally{m?.removeEventListener("abort",F)}}async function qd(e){const{actionId:t,intentIndex:n,intentId:s,totalSteps:o,observeOnly:r,delayBeforeSpicenetStepMs:i=5e3,isSpicenetStep:l,beforeStep:c,maxExecuteAttemptsForStep:d,maxPolls:f=48,onStatusMessage:m,onStepUpdate:h,signal:w}=e;let g;for(let y=0;y<o;y++){if(!r&&y>0&&l?.(y)&&i>0&&await fn(i),await c?.(y),w?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");const x=d?.(y)??3,b=await mi({actionId:t,intentIndex:n,intentId:s,stepIndex:y,observeOnly:r,relayer:e.relayer,maxPolls:f,maxExecuteAttempts:x,maxConsecutiveStatusErrors:x===6?5:15,onStatusMessage:m,onStepUpdate:h?v=>h(y,v):void 0,signal:w,completeOnExecution:y===o-1&&l?.(y)===!1});b&&(g=b)}return g}const zd="0xa9059cbb",Hd=[S.SPICE_COMBINED_FEE_RECIPIENT,S.SPICE_GAS_FEE_RECIPIENT,S.SPICE_PLATFORM_FEE_RECIPIENT];function hi(e){return Hd.some(t=>p.addressesEqual(e,t))}function ro(e,t){return e.map(n=>{if(n.domain==="spicenet"||S.isSpicenetChainId(n.chainId)||n.calls.length===0)return n;const s=new Set((n.tokenTransfers??[]).filter(i=>(i.from==="escrow"||i.from==="solver")&&p.addressesEqual(i.to,t)).map(i=>i.token.toLowerCase()));if(s.size===0)return n;const o=[...s].some(S.isNativeToken);let r=0;for(const i of n.calls){if(o&&i.value>0n&&i.data==="0x"&&hi(i.to)){r+=1;continue}if(!i.data?.startsWith(zd))break;try{const l=B.decodeFunctionData({abi:B.erc20Abi,data:i.data});if(l.functionName!=="transfer")break;const[c]=l.args;if(!hi(c)||!s.has(i.to.toLowerCase()))break;r+=1}catch{break}}return r===0?n:{...n,calls:n.calls.slice(r)}})}async function Vd(e,t){if(!t||!/^0x[0-9a-f]{64}$/i.test(t))throw new Error("The destination receipt is not available yet; reconcile the existing action before retrying.");const n=await e.waitForTransactionReceipt({hash:t,timeout:12e4,pollingInterval:2e3,confirmations:1});if(n.transactionHash?.toLowerCase()!==t.toLowerCase()||n.status!=="success")throw new Error("The destination transaction has not been confirmed successfully. Reconcile the existing action before retrying.");return t}async function ao(e){let t=e.hash,n=!1;const s=Date.now()+12e4,o=i=>i.transactionHash&&i.transactionHash.toLowerCase()!==t.toLowerCase();let r=await e.client.waitForTransactionReceipt({hash:t,timeout:12e4,pollingInterval:2e3,confirmations:1,onReplaced:i=>{const l=i.transaction,c=i.replacedTransaction;if(!(i.reason==="repriced"&&c?.hash?.toLowerCase()===t.toLowerCase()&&c?.to?.toLowerCase()===e.call.to.toLowerCase()&&(c.input??"0x").toLowerCase()===e.call.data.toLowerCase()&&BigInt(c.value??0)===e.call.value&&c?.from&&c.nonce!==void 0&&/^0x[0-9a-f]{64}$/i.test(l?.hash??"")&&l?.to?.toLowerCase()===e.call.to.toLowerCase()&&(l.input??"0x").toLowerCase()===e.call.data.toLowerCase()&&BigInt(l.value??0)===e.call.value&&l.from?.toLowerCase()===c?.from?.toLowerCase()&&l.nonce===c?.nonce)){n=!0,e.onCancelled?.();return}t=l.hash,e.onRepriced?.(t)}});if(n)throw new Error("Transaction was cancelled or replaced with a different action; retry the unfinished action");if((e.confirmations??1)>1&&!o(r)&&r.status==="success"&&(r=await e.client.waitForTransactionReceipt({hash:t,timeout:Math.max(s-Date.now(),1),pollingInterval:2e3,confirmations:e.confirmations})),o(r))throw new Error("Unexpected transaction receipt; recover the submitted transaction before retrying");return{receipt:r,hash:t}}const Qd=10n,Gd=10n,Kd=5;function tr(e){return e.map(t=>({...t,calls:[...t.calls],tokenTransfers:t.tokenTransfers?[...t.tokenTransfers]:void 0}))}function io({token:e,recipient:t,amount:n}){return{to:e,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[t,n]})}}function Zd({chainBatches:e,token:t,amount:n}){const s=tr(e),o=s[s.length-1];if(!o)return s;const r=S.getEscrowContractAddress(o.chainId);return o.calls=[...o.calls,io({token:t,recipient:r,amount:n})],s}function gi({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:o}){const r=tr(e),i=r[r.length-1];if(!i)throw new p.SpiceflowError("INVALID_PARAMS","Action-output escrow funding requires at least one chain batch.");const l=p.calculateBpsFee(s,Gd),c=o+l;if(c>=s)throw new p.SpiceflowError("INVALID_PARAMS","Borrow amount is too small after gas and Spicenet fees.",{grossAmount:s.toString(),gasFee:o.toString(),spicenetFee:l.toString()});const d=s-c,f=S.getEscrowContractAddress(i.chainId),m=[];return o>0n&&m.push(io({token:n,recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:o})),l>0n&&m.push(io({token:n,recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:l})),i.calls=[...i.calls,...m,io({token:n,recipient:f,amount:d})],i.tokenTransfers=[...i.tokenTransfers??[],...o>0n?[{from:t,to:S.SPICE_GAS_FEE_RECIPIENT,token:n,amount:o}]:[],...l>0n?[{from:t,to:S.SPICE_PLATFORM_FEE_RECIPIENT,token:n,amount:l}]:[],{from:t,to:f,token:n,amount:d}],{chainBatches:r,gasFee:o,spicenetFee:l,netEscrowAmount:d,outputCredit:{chainId:i.chainId,token:n,amount:s}}}async function xi({chainBatches:e,user:t,token:n,grossAmount:s,chainAuthorizations:o}){let r=0n,i=gi({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r});for(let l=0;l<Kd;l+=1){const c=S.hashChainBatches(i.chainBatches),d=(await p.relayerService.estimateBatchGas({user:t,outputToken:n,chainBatches:i.chainBatches.map((f,m)=>({...f,hash:c[m].hash})),chainAuthorizations:o})).gasFee;if(d===r)return i;r=d,i=gi({chainBatches:e,user:t,token:n,grossAmount:s,gasFee:r})}throw new p.SpiceflowError("INVALID_PARAMS","Action-output fee estimate did not converge. Please retry.")}function An(e){return S.isSpicenetChainId(e.chainId)}const Yd="0xa9059cbb";function Ss(e,t){return`${e}:${S.normalizeNativeTokenAddress(t).toLowerCase()}`}function yi(e,t){return t===S.ZERO_ADDRESS.toLowerCase()?{symbol:p.getChainName(e),decimals:18}:S.getTokenByAddress(t,e)??{symbol:"tokens",decimals:18}}function Xd(e,t){const n=S.getTokenByAddress(t,e);return[n?.equivalenceGroup,n?.symbol,n?.name]}async function nr(e){return p.getWalletBalanceEntries(e)}async function Jd(e,t,n){const s=new Map,o=n?.walletFundingRequirement,r=o&&Ss(o.chainId,o.token);r&&s.set(r,0n);const i=new Map,l=new Map,c=new Map,d=new Map;for(const m of n?.actionOutputCredits??[]){const h=Ss(m.chainId,m.token);d.set(h,(d.get(h)??0n)+m.amount)}for(const m of e){if(An(m))continue;for(const g of m.tokenTransfers??[]){if(g.from!=="escrow"&&g.from!=="solver"||!p.addressesEqual(g.to,t))continue;const y=BigInt(g.amount??0);if(y<=0n)continue;const x=Ss(m.chainId,g.token);i.set(x,(i.get(x)??0n)+y),g.from==="escrow"&&l.set(x,(l.get(x)??0n)+y)}const h=S.getEscrowContract(m.chainId),w=g=>!!h&&h!==S.ZERO_ADDRESS&&p.addressesEqual(g,h);for(const g of m.calls){if(g.value&&g.value>0n){const y=Ss(m.chainId,S.ZERO_ADDRESS);s.set(y,(s.get(y)??0n)+g.value),w(g.to)&&c.set(y,(c.get(y)??0n)+g.value)}if(g.data?.startsWith(Yd))try{const y=B.decodeFunctionData({abi:B.erc20Abi,data:g.data});if(y.functionName!=="transfer")continue;const[x,b]=y.args,v=g.to.toLowerCase(),C=Ss(m.chainId,v);s.set(C,(s.get(C)??0n)+b),w(x)&&c.set(C,(c.get(C)??0n)+b)}catch{}}}let f=null;for(const[m,h]of l){const w=h-(c.get(m)??0n);if(w<=0n)continue;const[g,y]=m.split(":"),x=Number(g),b=yi(x,y);f??(f=await nr(t));const v=Go(f,x,y,Xd(x,y));if(!(v>=w))throw new p.SpiceflowError("INVALID_PARAMS",`Insufficient Spice ${b.symbol}: needs ${B.formatUnits(w,b.decimals)}, has ${B.formatUnits(v,b.decimals)}.`,{chainId:x,token:y,userAddress:t,requiredAmount:w.toString(),balance:v.toString(),balanceSource:"spice"})}for(const[m,h]of s){const[w,g]=m.split(":"),y=Number(w);let x=h-(i.get(m)??0n)-(d.get(m)??0n);if(o&&m===r&&o.amount>x&&(x=o.amount),x<=0n)continue;const b=p.getClientForChain(y),v=g===S.ZERO_ADDRESS.toLowerCase()?await b.getBalance({address:t}):await b.readContract({address:g,abi:B.erc20Abi,functionName:"balanceOf",args:[t]});if(v>=x)continue;const C=yi(y,g);throw new p.SpiceflowError("INVALID_PARAMS",`Insufficient ${C.symbol} on ${p.getChainName(y)}: needs ${B.formatUnits(x,C.decimals)}, has ${B.formatUnits(v,C.decimals)}.`,{chainId:y,token:g,userAddress:t,requiredAmount:x.toString(),balance:v.toString(),balanceSource:"wallet"})}}function $d({chainBatches:e,tokenAddress:t,tokenTransferAmount:n,useCustomTransfers:s}){if(!(e.some(An)||!(s?e.some(o=>An(o)?!1:(o.tokenTransfers??[]).some(r=>r.from==="escrow"&&BigInt(r.amount??0)>0n)):n>0n)))throw new p.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 _d(e,t,n,s){t.forEach((o,r)=>{if(!o.to||!o.from||!o.token||o.amount===void 0)throw new p.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 lo({user:e,chainBatches:t,tokenAddress:n,tokenTransferAmount:s,exp:o,signature:r,chainAuthorizations:i,useCustomTransfers:l}){const c=t,d=S.hashChainBatches(c),f=c.filter(m=>!An(m)).length;if($d({chainBatches:c,tokenAddress:n,tokenTransferAmount:s,useCustomTransfers:l}),!l&&s>0n&&f>1)throw new p.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:d.map((m,h)=>{const w=c[h],g=An(w)?[]:l?w.tokenTransfers??[]:s>0n?[{from:"escrow",to:e,token:n,amount:s}]:[];return _d(Number(m.chainId),g,e,l),{hash:m.hash,chainId:Number(m.chainId),tokenTransfers:g,calls:m.calls}})}]}}function wi(e,t){const n=t?.depositToEscrow?.gasFundingSource==="action-output"?t.depositToEscrow:null,s=t?.depositToEscrow&&!n?Zd({chainBatches:e,token:t.depositToEscrow.token,amount:t.depositToEscrow.amount}):tr(e);return{actionOutputDeposit:n,batches:s}}let sr=!1;function Is(){const{address:e,isConnected:t,isAuthenticated:n,actions:s}=p.useWallet(),o=u.useRef(null),{intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:c,clearStatus:d}=Pd({checkStepStatus:(x,b)=>p.relayerService.checkStepStatus(x,b),retryStep:async(x,b)=>{const[v,C]=x.split("/"),k=parseInt(C||"0",10);await p.relayerService.executeStep(v,k,b,{action:"execute"})}}),f=u.useRef(s),m=u.useRef(new Map);f.current=s;const h=u.useCallback((x,b,v,C,k)=>ui({chainBatches:x,signingAddress:b,actions:f.current,cache:m.current,signal:v,onSignatureRequested:C,beforeSign:k}),[]),w=u.useCallback((x,b,v,C)=>di(f.current,x,b,v,C),[]),g=u.useCallback(async(x,b,v,C,k,I)=>{const A=(F,R,j)=>{C?.({step:F,message:R,...j})};if(sr)throw new p.SpiceflowError("CONCURRENT_EXECUTION","A execution transaction is already in progress. Please wait.");sr=!0;try{if(!e)throw new p.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const F=I?.userOverride||e,R=p.relayerService.getBaseUrl(),j=await p.relayerService.supportsAutomaticContinuation(),{actionOutputDeposit:T,batches:P}=wi(x,I);let O=P,M=[],U=I?.useCustomTransfers,E=ri(O),D=null;const L=async()=>{for(let Y=0;E.length>0&&Y<3;Y++)try{D=await nr(F);break}catch(G){if(k?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");if(Y===2)throw new p.SpiceflowError("RELAYER_ERROR","Unable to read your Spice balance. Please try again before submitting the transaction.",{cause:G});await fn(1e3)}await I?.validateBeforeSubmit?.(O)};A("building","Preparing your wallet and transaction...");const z=await h(O,F,k,()=>A("signing-delegation","Confirm the authorization in your wallet..."),L);if(A("building","Checking transaction fees and balances..."),k?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");const se=BigInt(Math.floor(Date.now()/1e3)+3600);if(T){const Y=await xi({chainBatches:x,user:F,token:T.token,grossAmount:T.amount,chainAuthorizations:z});O=Y.chainBatches,M=[Y.outputCredit],U=!0}if(!I?.skipPreSubmitFeeEstimate){let Y=!1;if(I?.feeExecutionMode==="user-transfer"&&I.adjustBatchesForEstimate&&p.relayerService.canValidateActionFees()){const G=await p.relayerService.validateActionFees(lo({user:F,chainBatches:O,tokenAddress:b,tokenTransferAmount:v,exp:Number(se),signature:"0x00",chainAuthorizations:z,useCustomTransfers:U}),{signal:k});o.current=G;const pe=await I.adjustBatchesForEstimate({feeEstimate:G,chainBatches:O});Y=!pe||oi(O,pe),pe&&(O=pe)}for(let G=0;!Y&&G<10;G++){const pe=I?.feeExecutionMode==="user-transfer"?ro(O,F):O,xe=lo({user:F,chainBatches:pe,tokenAddress:b,tokenTransferAmount:v,exp:Number(se),signature:"0x00",chainAuthorizations:z,useCustomTransfers:U}),ke=await p.relayerService.estimateActionFees(xe,{signal:k});o.current=ke;const q=await I?.adjustBatchesForEstimate?.({feeEstimate:ke,chainBatches:O}),W=!!q&&oi(O,q);if(!q||W){Y=!0;break}O=q}if(!Y)throw new p.SpiceflowError("INVALID_PARAMS","Fee estimate did not converge. Please retry.")}if(I?.prepareForSigning){const Y=await I.prepareForSigning(O);if(Y.length!==O.length||Y.some((G,pe)=>G.chainId!==O[pe].chainId||G.domain!==O[pe].domain))throw new Error("The funded route changed before signing");O=Y}I?.resolveActionOutputCredits&&(M=await I.resolveActionOutputCredits()),(!I?.skipUserFundingPreflight||I.walletFundingRequirement)&&await Jd(I?.skipUserFundingPreflight?[]:O,F,{actionOutputCredits:M,walletFundingRequirement:I?.walletFundingRequirement}),E=ri(O),E.length&&!D&&(D=await p.getWalletBalanceEntries(F)),await I?.validateBeforeSubmit?.(O),A("building","Preparing the signing request...");const de=await w(O,se,k,()=>A("signing-intent","Confirm the transaction in your wallet..."));if(k?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");A("submitting","Submitting to relayer...");const oe=lo({user:F,chainBatches:O,tokenAddress:b,tokenTransferAmount:v,exp:Number(se),signature:de,chainAuthorizations:z,useCustomTransfers:U}),Q=Date.now();if(await I?.validateBeforeSubmit?.(O),console.debug("[SpiceFlow:execution]",{phase:"submit-check-complete",at:Date.now(),durationMs:Date.now()-Q}),p.relayerService.getBaseUrl()!==R)throw new Error("The network changed before submission. Review your balances before trying again.");const J=await p.relayerService.createAction({...oe,...j?{autoContinue:!0}:{}}),[X,ee]=J.intentIds[0].split("/"),K=parseInt(ee||"0",10),we=`${X}/${K}`;A("executing","Executing on chain..."),A("executing","Executing on chain...",{actionId:X,intentId:we,intentIndex:K,totalSteps:O.length,autoContinue:J.autoContinue===!0});const ve=O.length,N=new p.RelayerService;N.setBaseUrl(R);const Z=await qd({actionId:X,intentIndex:K,intentId:we,totalSteps:ve,signal:k,observeOnly:J.autoContinue===!0,relayer:J.autoContinue?N:p.relayerService,...D?{delayBeforeSpicenetStepMs:0}:{},isSpicenetStep:Y=>An(O[Y]),beforeStep:async Y=>{if(J.autoContinue===!0||!D||!An(O[Y]))return;const G=await li({deposits:E,baseline:D,fetchEntries:()=>nr(F),signal:k});if(k?.aborted)throw new p.SpiceflowError("ABORT","Execution transaction aborted");if(!G)throw new p.SpiceflowError("POLLING_EXHAUSTED","Your deposit is still waiting for Spice credit. Check this transaction's status before trying again.",{actionId:X,intentId:we,stepId:Y})},maxExecuteAttemptsForStep:Y=>An(O[Y])?6:3,maxPolls:J.autoContinue?Number.POSITIVE_INFINITY:180,onStatusMessage:(Y,G)=>{A("executing",Y,{txHash:G,actionId:X,intentId:we,intentIndex:K,totalSteps:ve,autoContinue:J.autoContinue===!0})}});if(I?.requireDestinationReceipt){const Y=[...O].reverse().find(G=>!An(G));if(!Y)throw new Error("The action has no destination transaction to verify.");await Vd(p.getClientForChain(Y.chainId),Z)}return A("success","Transaction successful!",{txHash:Z,actionId:X,intentId:we,intentIndex:K,totalSteps:ve,autoContinue:J.autoContinue===!0}),Z||X}catch(F){throw console.error("[Execution] Error:",F),A("error",F.message||"Transaction failed",{error:F.message}),F}finally{sr=!1}},[e,n,h,w]),y=u.useCallback(async(x,b,v,C)=>{if(!e)throw new p.SpiceflowError("WALLET_DISCONNECTED","No wallet connected. Please log in first.");const k=C?.userOverride||e,I=C?.validateFeeCalls===!0&&C.feeExecutionMode==="user-transfer"&&p.relayerService.canValidateActionFees(),{actionOutputDeposit:A,batches:F}=wi(x,C);let R=F;const j=C?.feeExecutionMode==="user-transfer"&&!I?ro(R,k):R,T=C?.signAuthorizationsForEstimate?await h(j,k):void 0;let P=C?.useCustomTransfers;A&&(R=(await xi({chainBatches:x,user:k,token:A.token,grossAmount:A.amount,chainAuthorizations:T})).chainBatches,P=!0);const O=C?.feeExecutionMode==="user-transfer"&&!I?ro(R,k):R,M=lo({user:k,chainBatches:O,tokenAddress:b,tokenTransferAmount:v,exp:Math.floor(Date.now()/1e3)+3600,signature:"0x00",chainAuthorizations:T,useCustomTransfers:P}),U=await(I?p.relayerService.validateActionFees(M,{signal:C?.signal}):p.relayerService.estimateActionFees(M,{signal:C?.signal}));return o.current=U,U},[e,h]);return{execute:g,estimate:y,lastFeeEstimate:o.current,hasEmbeddedWallet:t&&n,intentStatus:r,startStatusPolling:i,beginStatusTracking:l,applyStepUpdate:c,clearStatus:d}}const or=({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})]}),bi=({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(),[c,d]=u.useState(!1),f=u.useRef(null),[m,h]=u.useState(!1),[w,g]=u.useState(null);u.useEffect(()=>{h(!0)},[]),u.useLayoutEffect(()=>{if(!c||!f.current)return;const x=()=>{if(!f.current)return;const b=f.current.getBoundingClientRect(),v=Math.min(220,window.innerWidth-48),C=Math.min(Math.max(b.left+b.width/2,24+v/2),window.innerWidth-24-v/2),k=b.top>84;g({top:k?b.top-10:b.bottom+10,left:C,placement:k?"top":"bottom"})};return x(),window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",x)}},[c]);const y=c&&m&&w?Gn.createPortal(a.jsxs("span",{id:l,role:"tooltip",style:{position:"fixed",left:w.left,top:w.top,transform:w.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:p.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,...w.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:()=>d(!0),onMouseLeave:()=>d(!1),children:a.jsx("button",{type:"button","aria-label":t,"aria-describedby":c?l:void 0,onFocus:()=>d(!0),onBlur:()=>d(!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:c?`0 0 0 2px ${r}26`:"none",transition:"border-color 120ms ease, box-shadow 120ms ease, color 120ms ease"},children:i||a.jsx(or,{color:r})})}),y]})},As=(e,t,n,s)=>({width:e,height:e,fill:"none",className:t,"aria-hidden":n??!0,style:s}),Jn=({size:e=16,color:t="currentColor",strokeWidth:n=2,direction:s="down",className:o,style:r,"aria-hidden":i})=>a.jsx("svg",{...As(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"})}),eu=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsxs("svg",{...As(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"})]}),tu=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...As(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"})}),nu=({size:e=24,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...As(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"})}),vi=({size:e=14,color:t="currentColor",strokeWidth:n=2,className:s,style:o,"aria-hidden":r})=>a.jsx("svg",{...As(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"})});function co(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 rr(e,t,n){const s=`${co(e,t)} ${n}`;return e===0n?s:`-${s}`}const su=({fontFamily:e,textPrimary:t,textSecondary:n,cardBg:s,cardBorder:o,resolvedDark:r,darkCardBorder:i,primaryColor:l,feePreview:c,feeOnlyAction:d=!1,asset:f,isLoading:m,errorText:h,directExecutionFeeNote:w=!1})=>{const g=p.useAssetDisplay(),y=f&&c&&[f.symbol,f.displaySymbol,f.receiptTokenName].includes(c.symbol)?g(f).symbol:c?.symbol,x=r?i??o:"#e5e7eb",b=r?"#111214":"#111827",v=r?"rgba(255,255,255,0.08)":"rgba(17,24,39,0.12)",C="#f87171",k=r?"#d1d5db":"#4b5563",I=r?"#f3f4f6":t,[A,F]=u.useState(!1),R=!!h,j=R?null:c,T=j?[...d?[]:[{label:"Total Required",help:"Total amount required to fund this action.",value:`${co(j.grossAmount,j.decimals)} ${y}`,tone:"default"}],{label:"Spicenet Fee",help:"Fees paid to Spicenet for intent processing and execution.",value:rr(j.spicenetFee,j.decimals,y),tone:"fee"},{label:"Network Fee",help:"Network fee shown in the same token you are using for this action.",value:rr(j.gasFee,j.decimals,y),tone:"fee"},...j.bridgeFee&&j.bridgeFee>0n?[{label:"Bridge Fee",help:"Estimated cost to rebalance liquidity for this action.",value:rr(j.bridgeFee,j.decimals,y),tone:"fee"}]:[],...d?[]:[{label:"Used in TX",help:"Resulting amount of funds used in the transaction.",value:`${co(j.netAmount,j.decimals)} ${y}`,tone:"default"}]]:[],P=j?`${co(d?j.totalFee??j.gasFee+j.spicenetFee+(j.bridgeFee??0n):j.grossAmount,j.decimals)} ${y}`:null;return R?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:k,fontFamily:e,lineHeight:"24px"},children:"Fee"}),a.jsx("div",{style:{color:C,fontSize:"12px",lineHeight:"1.55",fontFamily:e},children:h})]})}):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:()=>F(O=>!O),style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",gap:"12px",marginBottom:A?"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:k,fontFamily:e,lineHeight:"24px"},children:"Fee"}),A&&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:[P&&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:d?"Total fees":"Total required"}),a.jsx("span",{style:{fontSize:"14px",fontWeight:700,color:I,fontFamily:e,whiteSpace:"nowrap"},children:P})]}),m&&!w&&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?x:"rgba(0,0,0,0.06)"}`,whiteSpace:"nowrap"},children:"Recalculating"}),a.jsx(Jn,{color:n,direction:A?"up":"down",style:{flexShrink:0}})]})]}),a.jsx("div",{style:{overflow:"hidden",maxHeight:A?"480px":"0px",opacity:A?1:0,transition:"max-height 0.24s ease, opacity 0.18s ease"},children:w?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 shown and paid in your wallet. No Spicenet fee is charged."}):T.length>0?a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{display:"grid",gap:"10px"},children:T.map((O,M)=>a.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",alignItems:"center",gap:"12px",paddingTop:M===0?0:"10px",borderTop:M===0?"none":`1px solid ${x}`,opacity:m?.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:O.label}),a.jsx(bi,{content:O.help,label:`${O.label} info`,textColor:"#f9fafb",backgroundColor:b,borderColor:v,accentColor:r?"#8f96a3":"#6b7280"})]}),a.jsx("span",{style:{fontSize:"12px",color:O.tone==="fee"?C:I,fontFamily:p.font.mono,textAlign:"right",fontWeight:O.label==="Used in TX"?600:500,letterSpacing:"-0.01em"},children:O.value})]},O.label))}),a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:`1px solid ${x}`,fontSize:"11px",color:n,fontFamily:e,lineHeight:"1.45"},children:j?.gasQuoteSource==="estimated"?"Gas quote uses a live estimate.":j?.gasQuoteSource==="configured_fallback"?"Gas quote uses a configured fallback.":"Gas quote is currently zero."})]}):a.jsx("div",{style:{fontSize:"12px",color:h?C:n,fontFamily:e,opacity:h?1:.8,lineHeight:"1.5"},children:h||"Waiting for fee estimate..."})})]})},ar=u.memo(su),Es=({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 Ci="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 ki=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(","),an=({isOpen:e,onClose:t,title:n,subtitle:s,children:o,overlayContent:r,overlayDimmed:i=!0,styles:l,theme:c,maxWidth:d="522px",dark:f,footerLinkText:m,bannerSrc:h,bannerAlt:w,closeOnBackdropClick:g=!1})=>{const{theme:y,dark:x,dk:b,palette:v}=p.useSpiceBrand(l,f),C=f??x,k=c||y,I=l?.fontFamily||k.typography.fontFamily||p.font.ui,A=l?.primaryColor||k.colors.primary,F=u.useRef(null),R=u.useRef(null),j=u.useRef(null),T=u.useId(),[P,O]=u.useState(!1),[M,U]=u.useState(!1),E=u.useRef(t);if(u.useEffect(()=>{E.current=t},[t]),u.useEffect(()=>{if(!e){U(!1);return}R.current=document.activeElement;const z=document.body.style.overflow;document.body.style.overflow="hidden";const se=requestAnimationFrame(()=>{const J=requestAnimationFrame(()=>U(!0));j.current=J}),de=()=>{const J=F.current;J&&(J.querySelectorAll(ki)[0]??J).focus({preventScroll:!0})},oe=J=>{if(J.key==="Escape"){J.stopPropagation(),E.current();return}if(J.key!=="Tab")return;const X=F.current;if(!X)return;const ee=Array.from(X.querySelectorAll(ki)).filter(N=>!N.hasAttribute("aria-hidden"));if(ee.length===0){J.preventDefault(),X.focus();return}const K=ee[0],we=ee[ee.length-1],ve=document.activeElement;J.shiftKey&&ve===K?(J.preventDefault(),we.focus()):!J.shiftKey&&ve===we&&(J.preventDefault(),K.focus())},Q=requestAnimationFrame(de);return document.addEventListener("keydown",oe),()=>{cancelAnimationFrame(Q),cancelAnimationFrame(se),j.current&&cancelAnimationFrame(j.current),document.removeEventListener("keydown",oe),document.body.style.overflow=z;const J=R.current;J&&typeof J.focus=="function"&&J.focus({preventScroll:!0})}},[e]),!e)return null;const D=!!h&&!P,L=w??"";return a.jsx("div",{onMouseDown:z=>{g&&z.target===z.currentTarget&&E.current()},style:{position:"fixed",inset:0,backgroundColor:C?"rgba(0,0,0,0.72)":"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",padding:"clamp(16px, 4vw, 48px)",zIndex:p.z.modal,opacity:M?1:0,transition:`opacity ${p.duration.normal} ${p.easing.out}`},children:a.jsx("div",{ref:F,role:"dialog","aria-modal":"true","aria-labelledby":T,tabIndex:-1,style:{backgroundColor:v.shellBorder,borderRadius:"12px",padding:"5px",width:"100%",maxWidth:d,boxSizing:"border-box",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.4)",outline:"none",transform:M?"scale(1)":"scale(0.96)",transition:`transform ${p.duration.slow} ${p.easing.out}`,display:"flex",flexDirection:"column",maxHeight:"100%"},children:a.jsxs("div",{style:{backgroundColor:v.shell,border:`1px solid ${v.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"}),D&&a.jsxs("div",{style:{position:"relative",width:"100%"},children:[a.jsx("img",{src:h,style:{width:"100%",height:"auto",display:"block",borderRadius:"6px 6px 0 0"},alt:L,"aria-hidden":L===""?"true":void 0,onError:()=>O(!0)}),a.jsx("button",{type:"button",onClick:t,"aria-label":"Close dialog",style:{position:"absolute",top:"8px",right:"8px",minWidth:"44px",minHeight:"44px",color:v.textPrimary,padding:"8px",backgroundColor:"transparent",borderRadius:"9999px",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1},children:a.jsx(Es,{size:28,strokeWidth:2.5})})]}),a.jsxs("div",{style:{padding:"28px 28px 0 28px",position:"relative"},children:[!D&&a.jsx("button",{type:"button",onClick:t,"aria-label":"Close dialog",style:{position:"absolute",top:"10px",right:"10px",minWidth:"44px",minHeight:"44px",color:v.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:z=>{z.currentTarget.style.backgroundColor=C?`${A}1a`:"#f3f4f6"},onMouseLeave:z=>{z.currentTarget.style.backgroundColor="transparent"},children:a.jsx(Es,{size:24,strokeWidth:2.4})}),a.jsx("h2",{id:T,style:{fontSize:"22px",fontWeight:"700",color:v.textPrimary,margin:"0",fontFamily:I,lineHeight:"1.12"},children:n})]}),s&&a.jsx("div",{style:{padding:"11px 28px 13px 28px",fontSize:"12px",color:v.textSecondary,margin:"0",lineHeight:"1.35",fontFamily:I,borderBottom:C?`1px solid ${b.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:Ci,alt:"","aria-hidden":"true",width:108,height:22,decoding:"async",style:{width:"108px",height:"22px",opacity:C?.85:1,filter:C?"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:v.textSecondary,textDecoration:"none",display:"flex",alignItems:"center",gap:"4px",fontFamily:I,lineHeight:"1"},children:a.jsx("span",{style:{color:A,textDecoration:"underline",fontWeight:"500"},children:m??"Learn more \u2192"})})]}),r]})})})},Si=({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})]}),Ii=({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});async function Ai(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 p.ensureWalletOnChain(e,t))}function Ei(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 ir(e){const t=e.provider??await e.wallet?.getEthereumProvider();if(!t)throw new Error("External wallet provider not available");await Ai(t,e.chainId,e.onSwitch);const n=await t.request({method:"eth_accounts"});if(!Array.isArray(n)||!n.some(o=>typeof o=="string"&&o.toLowerCase()===e.account.toLowerCase()))throw new Error("The connected source wallet changed. Reconnect the selected account before funding.");const s=p.getChainConfig(e.chainId)?.viemChain;return{extWc:B.createWalletClient({account:e.account,chain:s,transport:B.custom(t)}),viemChain:s}}async function Fi(e,t,n){const s=Date.now()+1e4;for(;Date.now()<s;){let o;try{o=await Promise.all([t.getBlockNumber({cacheTime:0}),e.request({method:"eth_blockNumber"}).then(BigInt)])}catch{return}if(o.every(r=>r>=n))return;await new Promise(r=>setTimeout(r,250))}}async function ou(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(l){throw Ei(l)&&e.observer?.onRejected?.(n),l}e.observer?.onSubmitted?.(n,o);const r=await ao({client:e.client,hash:o,call:s,onRepriced:l=>e.observer?.onSubmitted?.(n,l),onCancelled:()=>e.observer?.onReverted?.(n,o)});o=r.hash;const i=r.receipt;if(i.status!=="success")throw e.observer?.onReverted?.(n,o),new Error(e.errorMessage);await Fi(e.extWc,e.client,i.blockNumber),e.observer?.onConfirmed?.(n,o),t=o}return t}async function Ti(e){const t=await e.client.estimateFeesPerGas(),n=t.maxFeePerGas??t.gasPrice;if(typeof n!="bigint"||n<=0n)throw new Error("Network gas could not be priced.");let s=0n;for(const o of e.calls){const r=await e.client.estimateGas({account:e.account,...o});s+=(r*n*120n+99n)/100n}return s}function uo(e,t,n,s){return n?{to:e,value:s,data:"0x"}:{to:t,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[e,s]})}}async function Bi(e){const t=uo(e.recipient,e.token,e.isNative,e.amount),[n,s]=await Promise.all([e.client.estimateGas({account:e.account,...t}),e.client.estimateFeesPerGas()]),o=s.maxFeePerGas??s.gasPrice;if(typeof o!="bigint"||o<=0n)throw new Error("Source transaction gas could not be priced.");return(n*o*120n+99n)/100n}function lr(e,t){return t.isNative?e.sendTransaction({to:t.recipient,value:t.amount,chain:t.viemChain}):e.sendTransaction({to:t.tokenAddr,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[t.recipient,t.amount]}),chain:t.viemChain})}async function ru(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 lr(t,{recipient:s,tokenAddr:o,isNative:r,amount:i,viemChain:e.viemChain})}catch(f){throw Ei(f)&&e.observer?.onRejected?.(0),f}e.observer?.onSubmitted?.(0,l);const c=await ao({client:n,hash:l,call:uo(s,o,r,i),onRepriced:f=>e.observer?.onSubmitted?.(0,f),onCancelled:()=>e.observer?.onReverted?.(0,l)});l=c.hash;const d=c.receipt;if(d.status!=="success")throw e.observer?.onReverted?.(0,l),new Error("Embedded wallet funding failed");await Fi(t,n,d.blockNumber),e.observer?.onConfirmed?.(0,l)}function Ri({escrowAddress:e,tokenAddress:t,isNative:n,amount:s,gasFeeAmount:o}){const r=(i,l)=>n?{to:i,value:l,data:"0x"}:{to:t,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[i,l]})};return[r(e,s),...o>0n?[r(S.SPICE_GAS_FEE_RECIPIENT,o)]:[]]}function au({sourceChainId:e,selectedAsset:t,destinationChainId:n,destinationTokenAddress:s,isCrossDenomination:o,convertedUsdAmount:r}){const i=S.normalizeNativeTokenAddress(t.asset.address),l=s;let c,d;if(l&&n)if(c=p.CHAIN_CONFIGS[n]?.supportedTokens?.find(f=>p.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.");d=r}else{const f=B.parseUnits(t.amount,t.asset.decimals);d=S.convertAmountBetweenDecimals(f,t.asset.decimals,c)}return{sourceChainId:e,depositTokenAddress:i,depositAmount:t.amount,depositTokenDecimals:t.asset.decimals,destinationChainId:n,destinationTokenAddress:l,destinationAmount:d,destinationTokenDecimals:c}}async function iu(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 ji(e,t){return!!e&&e.quotedAmount===t.amount&&e.chainId===t.chainId&&p.addressesEqual(e.token,t.token)}async function po(e,t){const n=await lr(e,{recipient:t.recipient,tokenAddr:t.tokenAddr,isNative:t.isNative,amount:t.amount});t.afterSend?.(n);const s=p.getClientForChain(t.chainId),{receipt:o,hash:r}=await ao({client:s,hash:n,call:uo(t.recipient,t.tokenAddr,t.isNative,t.amount),confirmations:2});if(o.status!=="success")throw new Error(t.failureMessage);return t.settle&&await s.getBlockNumber()-o.blockNumber<2n&&await fn(3e3),r}async function lu(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=S.getEscrowContractAddress(o),i=B.parseUnits(n.amount,n.asset.decimals),l=t.length===1&&ji(e.effectiveDepositFee,{amount:i,token:S.normalizeNativeTokenAddress(n.asset.address),chainId:o}),c=!e.isNon7702&&!e.escrowOnly&&!Rn(n.asset);if(!e.isNon7702&&t.length===1&&!c&&!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 f=await ir({provider:e.externalProvider,account:e.sourceAddress,chainId:o});f.viemChain&&(d=f.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 f=p.getChainConfig(o),m=t.map(w=>`${w.amount} ${w.asset.symbol}`).join(", ");e.setConfirmationData({network:f?.displayName||`Chain ${o}`,amount:m,symbol:"",chainId:o}),e.setShowConfirmation(!0);let h=null;e.setDirectDepositStatus("processing"),e.setDirectDepositChainId(o);for(const w of t){const g=B.parseUnits(w.amount,w.asset.decimals),y=S.normalizeNativeTokenAddress(w.asset.address),x=w.asset.isNative||S.isNativeToken(y),b=await po(d,{chainId:o,recipient:r,tokenAddr:y,isNative:x,amount:g,failureMessage:`Escrow deposit failed for ${w.asset.symbol}`});h=b,e.setDirectDepositTxHash(b)}if(t[0]?.amount){const w=t[0].amount;if(e.onDepositExecute){e.setPostDepositStatus("executing");try{await e.onDepositExecute(w),e.setPostDepositStatus("success")}catch(y){console.error("ctx.onDepositExecute failed:",y),e.setPostDepositStatus("error"),e.setPostDepositError(y?.message||"Post-deposit instruction failed")}}else e.setPostDepositStatus("success");e.setDirectDepositStatus("success"),e.setPostDepositAmount(w),e.setPostDepositSuccess(!0);const g={type:"deposit",status:"success",amount:w,asset:t[0].asset.symbol,sourceChain:f?.displayName||`Chain ${o}`,txHash:h??void 0};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:g})),e.onDepositSuccess?.(g)}e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(t[0].asset)}else{const f=e.destinationChainId||e.nativeChainId;if(!f)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=p.getDelegateContractAddress(o),h=r,w=[];let g=null;for(const y of t){const x=B.parseUnits(y.amount,y.asset.decimals),b=S.normalizeNativeTokenAddress(y.asset.address),v=y.asset.isNative||S.isNativeToken(b),C=await po(d,{chainId:o,recipient:h,tokenAddr:b,isNative:v,amount:x,failureMessage:`Transfer failed for ${y.asset.symbol}`,settle:!0});g||(g=C),e.depositDataRef.current||(e.depositDataRef.current=[]),e.depositDataRef.current.push({txHash:C,sender:e.sourceAddress,tokenAddress:b,chainId:o,amount:x.toString(),user:e.spiceBalanceUser}),w.push({tokenAddress:b,tokenAmount:x.toString(),sender:e.sourceAddress,receiver:h})}if(!g)throw new Error("No transaction hash generated");if(!e.destinationTokenAddress){const y={type:"deposit",status:"success",amount:t[0]?.amount,asset:t[0]?.asset?.symbol,sourceChain:p.getChainName(o),txHash:g};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:y})),e.onDepositSuccess?.(y),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 y={to:m,value:BigInt(0),data:"0x"},x=await p.getTokenDecimals(f,e.destinationTokenAddress);let b=BigInt(0);for(const T of w){const P=BigInt(T.tokenAmount),O=S.normalizeNativeTokenAddress(T.tokenAddress),M=t.find(E=>{const D=S.normalizeNativeTokenAddress(E.asset.address);return p.addressesEqual(D,O)}),U=M?M.asset.decimals:await p.getTokenDecimals(o,S.ZERO_ADDRESS);b+=S.convertAmountBetweenDecimals(P,U,x)}e.isCrossDenomination&&e.convertedUsdAmount&&(b=e.convertedUsdAmount);const v={chainId:o,tokenTransfers:w.map(T=>({from:T.sender,to:T.receiver,token:T.tokenAddress,amount:BigInt(T.tokenAmount)})),call:y},C=e.isCrossDenomination&&e.convertedUsdAmount?[{from:e.sourceAddress,to:r,token:S.normalizeNativeTokenAddress(t[0].asset.address),amount:B.parseUnits(t[0].amount,t[0].asset.decimals)}]:[],k={chainId:f,tokenTransfers:[...C,{from:"escrow",to:e.sourceAddress,token:e.destinationTokenAddress,amount:b}],call:{to:e.destinationTokenAddress,value:BigInt(0),data:"0x"}},I={mode:"non-7702:on-demand",chainBatches:[v,k]},A={user:e.sourceAddress,intents:[I]},F=await p.relayerService.createAction(A),R=F.actionId,j=F.intentIds[0];if(!g)throw new Error("No transaction hash available");e.startStatusPolling(j,p.createInitialSteps([{chainId:o,calls:[y]},{chainId:f,calls:[k.call]}],T=>p.getChainName(T))),await p.relayerService.executeStep(R,0,0,{action:"execute",hash:g}),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 f=[];let m=0,h;const w=l&&e.effectiveDepositFee?B.formatUnits(e.effectiveDepositFee.net,n.asset.decimals):n?.amount;for(const T of t){const P=B.parseUnits(T.amount,T.asset.decimals),O=l&&T===n,M=O?e.effectiveDepositFee.fee:0n,U=O?e.effectiveDepositFee.net:P,E=e.escrowOnly?P:P+M,D=S.normalizeNativeTokenAddress(T.asset.address),L=T.asset.isNative||S.isNativeToken(D);if(!e.escrowOnly&&!Rn(T.asset)){e.setDirectDepositStatus("processing"),e.setDirectDepositChainId(o);const z=await po(d,{chainId:o,recipient:e.address,tokenAddr:D,isNative:L,amount:P,failureMessage:`Transfer to embedded wallet failed for ${T.asset.symbol}`});m+=1,T===n&&(h=z);continue}e.escrowOnly||await po(d,{chainId:o,recipient:e.address,tokenAddr:D,isNative:L,amount:E,failureMessage:`Transfer to embedded wallet failed for ${T.asset.symbol}`,afterSend:()=>wd({chainId:o,tokenAddress:S.normalizeNativeTokenAddress(T.asset.address),tokenSymbol:T.asset.symbol,tokenDecimals:T.asset.decimals,amount:T.amount,rawAmount:P.toString(),embeddedWalletAddress:e.address,externalWalletAddress:e.sourceAddress,timestamp:Date.now(),isNative:L}),settle:!0}),f.push(...Ri({escrowAddress:r,tokenAddress:D,isNative:L,amount:U,gasFeeAmount:M}))}if(f.length===0){e.setDirectDepositTxHash(h??null),e.setDirectDepositStatus("success");const T={type:"deposit",status:"success",amount:n.amount,asset:n.asset.symbol,sourceChain:p.getChainName(o),txHash:h};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:T})),e.onDepositSuccess?.(T),e.refreshAssets(),e.onDepositSelect&&e.onDepositSelect(n.asset);return}m>0&&e.setDirectDepositStatus("idle");const g=t.find(T=>e.escrowOnly||Rn(T.asset))??n,y=await p.getClientForChain(o).getBlockNumber(),x=f.map(T=>({...T,to:B.getAddress(T.to)})),b={chainId:o,recentBlock:y,calls:x,tokenTransfers:[]},v=au({sourceChainId:o,selectedAsset:g===n&&w?{...n,amount:w}:g,destinationChainId:e.destinationChainId,destinationTokenAddress:e.destinationTokenAddress,isCrossDenomination:e.isCrossDenomination,convertedUsdAmount:e.convertedUsdAmount}),C=await iu(e.depositBatches,v),k=[b,...C];if(!e.address)throw new Error("Address not available");const I=[];if(e.isCrossDenomination&&e.convertedUsdAmount&&e.destinationTokenAddress){const T=e.selectedDepositAssets[0]?.asset;if(T){const P=B.parseUnits(e.selectedDepositAssets[0].amount,T.decimals);I.push({from:e.address,to:r,token:S.normalizeNativeTokenAddress(T.address),amount:P}),I.push({from:"escrow",to:e.address,token:e.destinationTokenAddress,amount:e.convertedUsdAmount})}}I.length>0&&k[1]&&(k[1].tokenTransfers=I);const A=p.createInitialSteps(k,T=>p.getChainName(T));let F=!1;const R=await e.execution.execute(k,S.ZERO_ADDRESS,0n,T=>{if(T.intentId&&!F){F=!0;for(const P of t)$o(e.address,o,S.normalizeNativeTokenAddress(P.asset.address));e.startStatusPolling(T.intentId,A)}},void 0,{userOverride:e.address,useCustomTransfers:!0,skipPreSubmitFeeEstimate:!0,skipUserFundingPreflight:!0});if(e.refreshAssets(),e.onDepositExecute&&g.amount)try{e.setPostDepositStatus("executing"),await e.onDepositExecute(w||g.amount),e.setPostDepositStatus("success"),e.setPostDepositAmount(w||g.amount),e.setPostDepositSuccess(!0)}catch(T){console.error("ctx.onDepositExecute failed (7702):",T),e.setPostDepositStatus("error"),e.setPostDepositError(T?.message||"Post-deposit instruction failed");return}const j={type:"deposit",status:"success",amount:g===n&&w||g.amount,asset:g.asset.symbol,sourceChain:p.getChainName(o),txHash:/^0x[0-9a-f]{64}$/i.test(R??"")?R:void 0};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:j})),e.onDepositSuccess?.(j),e.onDepositSelect&&e.onDepositSelect(g.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(p.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 cu(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;if(!r&&!Rn(t))return p.formatRawTokenInput(t.balance,t.decimals);const l=await cr({address:o,depositQuote:{asset:t,amount:t.balance,token:S.normalizeNativeTokenAddress(t.address),chainId:t.chainId},escrowOnly:r}),c=r?t.balance:t.balance>l.fee?t.balance-l.fee:0n;return p.formatRawTokenInput(c,t.decimals)}async function cr(e){const{address:t,depositQuote:n,escrowOnly:s}=e,{asset:o,amount:r,token:i,chainId:l}=n,c=S.getEscrowContractAddress(l),d=o.isNative||S.isNativeToken(i),f=r>1n?1n:0n,m=[d?{to:c,value:r,data:"0x"}:{to:i,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[c,r]})}];f>0n&&m.push(d?{to:S.SPICE_GAS_FEE_RECIPIENT,value:f,data:"0x"}:{to:i,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[S.SPICE_GAS_FEE_RECIPIENT,f]})});const h={chainId:l,tokenTransfers:[],calls:m},w=(await p.relayerService.estimateBatchGas({user:t,outputToken:i,chainBatches:[{...h,hash:S.hashChainBatches([h])[0].hash}],signal:e.signal})).gasFee,g=s&&w<r?r-w:r;return{fee:w,net:g,quotedAmount:r,token:i,chainId:l}}function du(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 Un=({value:e,element:t="span",placeholder:n,ariaLabel:s,ariaInvalid:o,disabled:r,onChange:i,inputMode:l="decimal",autoComplete:c="off",dataSpiceflowFocus:d,fontFamily:f,fontWeight:m=700,color:h,textAlign:w,lineHeight:g=1,maxFontSize:y=40,minFontSize:x=18,overflow:b="ellipsis",title:v,style:C})=>{const k=u.useRef(null),[I,A]=u.useState(),F=du(e||n||"",y,x),R=e||n||"";u.useEffect(()=>{const P=k.current;if(!P||b!=="ellipsis"){A(void 0);return}let O=!0,M=null;const U=()=>{if(!O)return;const D=getComputedStyle(P),L=P.clientWidth-parseFloat(D.paddingLeft||"0")-parseFloat(D.paddingRight||"0");if(!(L>0))return;if(!M){try{M=document.createElement("canvas").getContext("2d")}catch{return}if(!M)return}M.font=`${D.fontStyle} ${D.fontWeight} ${F}px ${D.fontFamily}`;const z=M.measureText(R),se=Math.max(z.width,(z.actualBoundingBoxLeft||0)+(z.actualBoundingBoxRight||0))+(parseFloat(D.letterSpacing)||0)*Math.max(0,R.length-1),de=se>L?F*Math.max(0,L-1)/se:void 0;A(oe=>oe===de?oe:de)};U();const E=typeof ResizeObserver>"u"?void 0:new ResizeObserver(U);return E?.observe(P),E||window.addEventListener("resize",U),document.fonts?.addEventListener("loadingdone",U),()=>{O=!1,E?.disconnect(),E||window.removeEventListener("resize",U),document.fonts?.removeEventListener("loadingdone",U)}},[R,F,f,m,b,t,C?.fontFamily,C?.fontStyle,C?.fontWeight,C?.letterSpacing,C?.paddingLeft,C?.paddingRight]);const j=b==="wrap"?{overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"}:b==="ellipsis"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:{},T={fontFamily:f,fontSize:`${Math.min(F,I??F)}px`,fontWeight:m,color:h,lineHeight:g,letterSpacing:0,textAlign:w,minWidth:0,maxWidth:"100%",...j,...C};return t==="input"?a.jsx("input",{ref:k,type:"text",inputMode:l,autoComplete:c,"aria-label":s,"aria-invalid":o||void 0,"data-spiceflow-focus":d||void 0,value:e,onChange:i,placeholder:n,disabled:r,title:v,style:{backgroundColor:"transparent",border:"none",outline:"none",padding:0,width:"100%",...T}}):a.jsx(t,{ref:k,title:v,style:T,children:e})},dr=({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})]})},Oi=({chainId:e,name:t,size:n=16})=>{const s=e&&(Bn[e]||S.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},uu={1:"ethereum",56:"binance-smart-chain",137:"polygon-pos",143:"monad",4114:"citrea",4663:"robinhood",8453:"base",42161:"arbitrum-one"},pu=6e4,Fs=new Map;function Di(e,t){return Fs.get(e)?.logos?.get(t.toLowerCase())}function fu(e,t){const n=uu[e];if(!n||S.isNativeToken(t))return;const s=Fs.get(e);if(s?.logos||s?.pending)return s.pending;if(s?.failedAt!==void 0&&Date.now()-s.failedAt<pu)return;const o=Promise.resolve().then(async()=>{try{const r=await fetch(`https://tokens.coingecko.com/${n}/all.json`,{signal:AbortSignal.timeout(1e4)});if(!r.ok)throw new Error("Token list request failed");const i=await r.json(),l=new Map;for(const c of i?.tokens??[])c?.address&&c?.logoURI&&l.set(String(c.address).toLowerCase(),c.logoURI);Fs.set(e,{logos:l})}catch(r){console.warn(`[tokenLogos] Token list unavailable for chain ${e}`,r),Fs.set(e,{failedAt:Date.now()})}});return Fs.set(e,{...s,pending:o}),o}function ur(e,t,n){const[s,o]=u.useState(),r=e||e===null||t===void 0||!n?void 0:`${t}:${n.toLowerCase()}`,i=r?Di(t,n):void 0;return u.useEffect(()=>{if(!r||i||t===void 0||!n)return;let l=!0;const c=()=>{const f=Di(t,n);l&&f&&o({token:r,logo:f})},d=fu(t,n);return d?d.then(c):c(),()=>{l=!1}},[r,i,t,n]),e||i||(s&&s.token===r?s.logo:void 0)}const fo=({symbol:e,label:t,logoURI:n,chainId:s,address:o,size:r=20,theme:i})=>{const{theme:l}=p.useSpiceBrand(),c=i||l,[d,f]=u.useState(),m={width:`${r}px`,height:`${r}px`,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",fontSize:`${r*.4}px`,fontWeight:c.typography.fontWeight.bold,flexShrink:0,overflow:"hidden",backgroundColor:"#ffffff"},h=ur(n===null?null:n||Vo[e.toUpperCase()],s,o);if(n===null)return null;if(h&&h!==d)return a.jsx("img",{src:h,alt:t??e,loading:"lazy",decoding:"async",style:{...m,objectFit:"cover"},onError:()=>f(h)});const w=mu(e);return a.jsx("div",{style:{...m,...w.style},children:w.icon})},mu=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,c)=>c.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)}},hu=({selectedAsset:e,assets:t,onAssetSelect:n,showDropdown:s,onToggleDropdown:o,disabled:r=!1,theme:i,onViewAllAssets:l,getAvailableBalance:c})=>{const d=p.useAssetDisplay(),f=E=>{const D=c?c(E):E.balance;return D===void 0?"...":p.formatAssetBalance({balance:D,decimals:E.decimals})},{theme:m}=p.useSpiceBrand(),h=i||m,w=u.useRef(null),g=u.useRef(null),y=u.useRef(null),[x,b]=u.useState(null);u.useEffect(()=>{if(s&&g.current){const E=()=>{if(g.current){const D=g.current.getBoundingClientRect();b({top:D.bottom+6,right:window.innerWidth-D.right})}};return E(),window.addEventListener("scroll",E,!0),window.addEventListener("resize",E),()=>{window.removeEventListener("scroll",E,!0),window.removeEventListener("resize",E)}}else b(null)},[s]),u.useEffect(()=>{const E=D=>{w.current&&!w.current.contains(D.target)&&y.current&&!y.current.contains(D.target)&&s&&o()};return s&&document.addEventListener("mousedown",E),()=>{document.removeEventListener("mousedown",E)}},[s,o]);const[v,C]=u.useState(!1),k=h.mode==="light",I={backgroundColor:"transparent",border:`1px solid ${k?"#aaaaaa":h.colors.border}`,borderRadius:"6px",color:h.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:p.transition.interactive,transform:v?"scale(0.98)":"scale(1)"},A={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"10px",minWidth:0},F={display:"flex",alignItems:"center",gap:"4px",paddingTop:"4px",borderTop:`1px solid ${h.colors.border}`},R=()=>x?{position:"fixed",top:`${x.top}px`,right:`${x.right}px`,backgroundColor:h.colors.secondary,border:`1px solid ${h.colors.border}`,borderRadius:h.borderRadius.md,boxShadow:h.shadows.lg,zIndex:p.z.dropdown,width:"200px",maxHeight:"300px",overflow:"auto"}:{},j={backgroundColor:"transparent",border:"none",color:h.colors.text,cursor:"pointer",padding:h.spacing.sm,width:"100%",display:"flex",alignItems:"center",gap:h.spacing.sm,transition:`background-color ${h.animation.normal}`,":hover":{backgroundColor:h.colors.surfaceHover}},T={display:"flex",flexDirection:"column",alignItems:"flex-start",flex:1},P={fontSize:h.typography.fontSize.sm,fontWeight:h.typography.fontWeight.medium},O={fontSize:h.typography.fontSize.xs,color:h.colors.textMuted},M={backgroundColor:"transparent",border:"none",borderTop:`1px solid ${h.colors.border}`,color:h.colors.primary,cursor:"pointer",padding:"10px 12px",width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontFamily:h.typography.fontFamily,fontSize:h.typography.fontSize.xs,fontWeight:h.typography.fontWeight.medium,textDecoration:"underline",textUnderlineOffset:"2px"},U={transition:`transform ${h.animation.normal}`,transform:s?"rotate(180deg)":"rotate(0deg)",flexShrink:0};return a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"relative"},ref:w,children:a.jsxs("div",{ref:g,style:I,onClick:r?void 0:o,onMouseLeave:()=>{C(!1)},onMouseDown:()=>C(!0),onMouseUp:()=>C(!1),children:[a.jsxs("div",{style:A,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(fo,{symbol:e.asset.symbol,label:d(e.asset).symbol,logoURI:d(e.asset).logoURI,chainId:e.asset.chainId,address:e.asset.address,theme:h,size:24}),a.jsx("span",{style:{fontSize:"15px",fontWeight:500,color:h.colors.text,lineHeight:"1.5",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d(e.asset).symbol})]}):a.jsx("span",{style:{fontSize:"14px",color:h.colors.textMuted},children:"Select"})}),a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:k?h.colors.textMuted:"#c7ccd4",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:U,children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]}),e?.asset&&a.jsxs("div",{style:F,children:[!e.asset.displayChainName&&a.jsx(Oi,{chainId:e.asset.chainId,theme:h}),a.jsx("span",{style:{fontSize:"11px",color:h.colors.textMuted},children:p.getAssetDisplayChainName(e.asset)})]})]})}),s&&x&&Gn.createPortal(a.jsxs("div",{ref:y,style:R(),children:[t.length===0&&a.jsx("div",{style:{padding:"10px 12px",color:h.colors.textMuted,fontSize:h.typography.fontSize.xs},children:"No assets available"}),t.map(E=>a.jsxs("button",{style:j,onClick:()=>{n(E),o()},children:[a.jsx(fo,{symbol:E.symbol,label:d(E).symbol,logoURI:d(E).logoURI,chainId:E.chainId,address:E.address,theme:h},ye(E)),a.jsxs("div",{style:T,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:h.spacing.xs},children:[a.jsx("span",{style:P,children:d(E).symbol}),!E.displayChainName&&a.jsx(Oi,{chainId:E.chainId,theme:h})]}),a.jsxs("span",{style:O,children:[f(E)," \u2022 ",p.getAssetDisplayChainName(E)]})]})]},ye(E))),l&&a.jsxs("button",{type:"button",style:M,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)]})},gu=({assets:e,selectedAsset:t,onAssetSelect:n,onAmountChange:s,disabled:o=!1,loading:r=!1,label:i="Select Asset",showBalance:l=!0,showMaxButton:c=!0,placeholder:d="0.0",theme:f,styles:m,maxAmount:h,resolveMaxAmount:w,getAvailableBalance:g,hideAmountInput:y=!1,displayAmount:x,dark:b,onViewAllAssets:v})=>{const C=p.useAssetDisplay(),{theme:k,primaryColor:I,dark:A,dk:F}=p.useSpiceBrand(m,b),R=f||k,j=b??A,[T,P]=u.useState(!1),[O,M]=u.useState(null),[U,E]=u.useState(null),[D,L]=u.useState(!1),[z,se]=u.useState(null),[de,oe]=u.useState(t?.amount||""),Q=u.useRef(0),J=t?.asset?ye(t.asset):"",X=t?.asset?g?g(t.asset):t.asset.balance:void 0,ee=z??h;u.useLayoutEffect(()=>()=>{Q.current++},[]),u.useLayoutEffect(()=>{Q.current++,oe(t?.amount||""),L(!1)},[J,t?.amount]),u.useLayoutEffect(()=>{Q.current++,se(null),L(!1)},[J,t?.asset.owner,t?.asset.decimals,t?.asset.balance,X,h,w,o,r]);const K=()=>{Q.current++,L(!1)},we=()=>{const q=t?.asset;if(!q||X===void 0)return;if(!ee)return X;const W=B.parseUnits(ee,q.decimals);return W<X?W:X},ve=q=>{oe(q),s?.(q)},N=q=>{K();const W=t?.asset,_=p.parseNumericInput(q.startsWith(".")?`0${q}`:q,W?.decimals);if(!W||!_)return ve(_);const ce=B.parseUnits(_,W.decimals),$=we();ve($!==void 0&&ce>$?B.formatUnits($,W.decimals):_)},Z=async()=>{const q=t?.asset;if(!q||o||r||X===void 0)return;const W=++Q.current,_=()=>Q.current===W,ce=w;if(z!==null){const te=we();te!==void 0&&ve(B.formatUnits(te,q.decimals));return}if(ce){L(!0);try{const te=await ce(q);if(!_())return;if(te!==null){const Ie=p.parseNumericInput(te,q.decimals),he=we();if(!Ie||he===void 0)return;const fe=B.parseUnits(Ie,q.decimals)>he?B.formatUnits(he,q.decimals):Ie;se(fe),ve(fe);return}return}catch(te){_()&&console.warn("[AssetSelector] Failed to resolve max amount:",te);return}finally{_()&&L(!1)}}const $=we();_()&&$!==void 0&&ve(B.formatUnits($,q.decimals))},Y=async q=>{if(!t||o||X===void 0)return;if(q===100)return Z();K();const W=we();W!==void 0&&ve(B.formatUnits(W*BigInt(q)/100n,t.asset.decimals))},G=t&&X!==void 0?Number(B.formatUnits(X,t.asset.decimals)):0,pe=parseFloat(de)||0,xe=G>0?pe/G*100:0,ke={backgroundColor:m?.assetSelector?.backgroundColor||m?.secondaryBackground||(j?F.cardBg:"#e9e9e9"),border:j?`0.5px solid ${F.cardBorder}`:"0.5px solid #A8A8A7",borderRadius:m?.assetSelector?.borderRadius||"6px",padding:m?.assetSelector?.padding||"16px",height:"auto",minHeight:y?void 0:"144px",display:"flex",flexDirection:"column",gap:"8px",position:"relative",opacity:o?.6:1};return r?a.jsx("div",{style:ke,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:j?F.hoverBg:"#d1d5db",borderRadius:"4px",height:"16px",width:"60px"}}),a.jsx("div",{style:{backgroundColor:j?F.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:j?F.hoverBg:"#d1d5db",borderRadius:"4px",height:"12px",width:"80px"}}),a.jsx("div",{style:{backgroundColor:j?F.hoverBg:"#d1d5db",borderRadius:"6px",height:"46px",width:"128px"}})]})]})}):a.jsxs("div",{style:ke,children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:m?.fontFamily||R.typography.fontFamily,fontSize:"16px",fontWeight:500,color:j?F.textSecondary:"#7d7c7b",lineHeight:"24px"},children:i}),l&&t?.asset&&a.jsxs("span",{style:{fontFamily:m?.fontFamily||R.typography.fontFamily,fontSize:"12px",fontWeight:500,color:j?F.textSecondary:"#71757a",lineHeight:"16px"},children:["Balance:"," ",X===void 0?"...":p.formatAssetBalance({balance:X,decimals:t.asset.decimals})]})]}),a.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px 12px",justifyContent:y&&!x?"flex-start":"space-between",alignItems:"center",flex:1},children:[!y&&a.jsx(Un,{element:"input",ariaLabel:t?.asset?`${C(t.asset).symbol} amount`:"Amount",dataSpiceflowFocus:!0,value:de,onChange:q=>N(q.target.value),placeholder:d,disabled:o||!t?.asset,fontFamily:m?.fontFamily||R.typography.fontFamily,color:o?j?"rgba(255, 255, 255, 0.16)":"rgba(14, 13, 11, 0.16)":de?j?"#ffffff":"#0e0d0b":j?"#4a5568":"#d1d5db",lineHeight:"1.08",maxFontSize:40,minFontSize:22,style:{width:"100%",maxWidth:"200px",flex:"1 1 200px",minWidth:"min(200px, 100%)"}}),a.jsx("div",{style:{width:"176px",maxWidth:"100%",position:"relative",flexShrink:0,marginLeft:y&&!x?void 0:"auto"},children:a.jsx(hu,{selectedAsset:t,assets:e,onAssetSelect:q=>{K(),se(null),n(q)},showDropdown:T,onToggleDropdown:()=>P(!T),disabled:o,theme:R,onViewAllAssets:v,getAvailableBalance:g})}),y&&x&&a.jsx(Un,{element:"span",value:x,title:x,fontFamily:m?.fontFamily||R.typography.fontFamily,color:j?"#ffffff":"#0e0d0b",lineHeight:"1.08",textAlign:"right",maxFontSize:40,minFontSize:22,style:{flex:"1 1 200px",minWidth:"min(200px, 100%)"}})]}),!y&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px",height:"14px"},children:[0,25,50,75,100].filter(q=>c||q!==100).map((q,W)=>{const _=Math.abs(xe-q)<1,ce=W===4,$=O===q,te=U===q;return a.jsx("button",{onClick:()=>Y(q),onMouseEnter:()=>M(q),onMouseLeave:()=>{M(null),E(null)},onMouseDown:()=>E(q),onMouseUp:()=>E(null),disabled:o||!t?.asset||X===void 0||q===100&&D,title:`${q}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:o||!t?.asset||X===void 0||q===100&&D?"not-allowed":"pointer",opacity:_?1:$?.8:.5,transform:te?"scale(0.85)":$?"scale(1.15)":"scale(1)",transition:p.transition.interactive},children:a.jsx(dr,{pct:q,isMax:ce,primaryColor:I,dark:j,fillColor:j?F.textSecondary:"#3C3E42"})},q)})})]})},$n=u.memo(gu),xu=({selectedDepositAssets:e,depositAssets:t,secondAssetOptions:n,loadingAssets:s,allowSecondAsset:o,theme:r,styles:i,dark:l,dk:c,onSelect:d,onAmountChange:f,onAdd:m,onRemove:h,resolveMaxAmount:w,onViewAllAssets:g})=>{const y=u.useMemo(()=>Array.from({length:Math.max(1,e.length)},(x,b)=>w?v=>w(v,b):void 0),[w,e.length]);return a.jsxs(a.Fragment,{children:[e.map((x,b)=>{const v=e.length===1?"Deposit":`Asset ${b+1}`;return a.jsxs("div",{style:{marginBottom:r.spacing.md,position:"relative"},children:[a.jsx($n,{assets:b===0?t:n,selectedAsset:x||void 0,onAssetSelect:C=>d(C,b),onAmountChange:C=>f(C,b),loading:s,label:v,showBalance:!0,theme:r,styles:i,allowSecondAsset:o&&b===0,onAddAsset:m,canAddAsset:e.length===1&&!!e[0]?.asset,resolveMaxAmount:y[b],onViewAllAssets:b===0?g:void 0}),b===1&&a.jsx("button",{onClick:()=>h(b),style:{position:"absolute",top:"-2px",right:"-2px",background:l?`${c.cardBg}ee`:"rgba(255, 255, 255, 0.9)",border:`1px solid ${c.cardBorder}`,borderRadius:"50%",cursor:"pointer",color:r.colors.textMuted,fontSize:"16px",padding:"2px",width:"22px",height:"22px",display:"flex",alignItems:"center",justifyContent:"center",transition:p.transition.interactive,boxShadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},onMouseEnter:C=>{C.currentTarget.style.color=l?c.errorText:"#ef4444",C.currentTarget.style.background=l?c.cardBg:"#fff",C.currentTarget.style.borderColor=l?c.errorBorder:"#fecaca"},onMouseLeave:C=>{C.currentTarget.style.color=r.colors.textMuted,C.currentTarget.style.background=l?`${c.cardBg}ee`:"rgba(255, 255, 255, 0.9)",C.currentTarget.style.borderColor=l?c.cardBorder:"#e5e7eb"},title:"Remove asset",children:"\xD7"})]},`asset-${b}`)}),e.length===0&&a.jsx("div",{style:{marginBottom:r.spacing.md},children:a.jsx($n,{assets:t,selectedAsset:void 0,onAssetSelect:x=>d(x,0),onAmountChange:x=>f(x,0),loading:s,label:"Deposit",showBalance:!0,theme:r,styles:i,allowSecondAsset:o,onAddAsset:m,canAddAsset:!1,resolveMaxAmount:y[0]},"initial-selector")})]})},yu=u.memo(xu);function wu(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 Jt=({variant:e,palette:t,children:n,icon:s,style:o,fontFamily:r,size:i="default"})=>{const l=wu(e,t),c=i==="compact";return a.jsxs("div",{role:e==="error"?"alert":"status",style:{backgroundColor:l.bg,border:`1px solid ${l.border}`,borderRadius:c?"7px":"8px",padding:c?"8px 10px":"12px 16px",color:l.text,fontSize:c?"12px":"13px",lineHeight:c?1.4:1.5,display:"flex",alignItems:"flex-start",gap:c?"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})]})},Ni=p.font.mono,ln=({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:Ni,fontWeight:500,letterSpacing:"0.03em",flexShrink:0,whiteSpace:"nowrap"},children:e}),a.jsx("span",{style:{fontSize:"13px",color:s??n.textPrimary,fontWeight:500,fontFamily:Ni,minWidth:0,textAlign:"right",overflowWrap:"anywhere"},children:t})]}),pr=({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"})]})]})},fr=({value:e,onChange:t,ariaLabel:n,placeholder:s,endAdornment:o,size:r="lg",dark:i,styles:l,inputRef:c,autoFocus:d})=>{const{dark:f,dk:m}=p.useSpiceBrand(l,i),h=i??f,w=r==="lg",g=w?"15px":"14px",y=w?"7px":"10px",x=w?p.radius.input:p.radius.sm,b=l?.fontFamily||p.font.ui,v=h?m.inputBg:"#FAFAFA",C=h?m.inputBorder:"#e5e7eb",k=h?m.textPrimary:"#374151",I=h?m.textSecondary:"#9ca3af";return a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",backgroundColor:v,borderRadius:x,boxShadow:h?"0 2px 4px rgba(0, 0, 0, 0.3)":"0 2px 4px rgba(0, 0, 0, 0.1)",padding:`${y} 5px`,border:`1px solid ${C}`},children:[a.jsx(eu,{style:{color:I},size:24}),a.jsx("input",{ref:c,type:"text",role:"searchbox","aria-label":n,autoComplete:"off",spellCheck:!1,autoFocus:d,"data-spiceflow-focus":!0,placeholder:s,value:e,onChange:A=>t(A.target.value),style:{flex:1,backgroundColor:v,outline:"none",border:"none",color:k,fontSize:g,fontWeight:400,fontFamily:b}}),o]})},bu="This deposit didn't confirm in time. It may still have gone through, so check the explorer and refresh your balance before retrying.";function vu(e){return e?.overallStatus!=="failed"?{isFailed:!1,failureMessage:null}:{isFailed:!0,failureMessage:e.steps?.find(t=>t.status==="failed"&&!!t.error)?.error||bu}}const mo=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"})]}),Cu=({isOpen:e,onClose:t,onConfirm:n,data:s,isExecuting:o=!1,error:r=null,theme:i,styles:l,intentStatus:c,postDepositStatus:d="idle",hasPostDepositInstruction:f=!1})=>{const{dark:m,dk:h,theme:w}=p.useSpiceBrand(l),[g,y]=u.useState(!1),[x,b]=u.useState(!0);u.useEffect(()=>{e||y(!1)},[e]);const v=()=>{y(!0),setTimeout(()=>{t()},300)},C=()=>{b(!x)};if(!e||!s)return null;const k=c?.overallStatus==="processing",I=c?.overallStatus==="success",A=!!c,{isFailed:F,failureMessage:R}=vu(c),j=!A&&f,T=j&&d==="executing",P=j&&d==="success",O=I&&f&&(d==="idle"||d==="executing")||T,M=I&&(!f||d==="success"||d==="error")||P||j&&d==="error",U=m?h.cardBg:"#ffffff",E=m?"0 -4px 20px rgba(0, 0, 0, 0.4)":"0 -4px 20px rgba(0, 0, 0, 0.15)",D=h.textSecondary,L=m?h.textPrimary:"#1f2937",z=m?h.textPrimary:"#1f2937",se=Q=>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:Q})}),de={fontSize:i.typography.fontSize.sm,fontWeight:500,color:D,fontFamily:p.font.mono,letterSpacing:"0.5px"},oe=(Q,J,X=L)=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:de,children:Q}),a.jsx("span",{style:{fontSize:i.typography.fontSize.sm,fontWeight:500,color:X,fontFamily:p.font.mono},children:J})]});return a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:g?"slideDown 0.3s ease-in":"slideUp 0.3s ease-out",pointerEvents:"auto"},children:[a.jsxs("div",{style:{backgroundColor:U,borderRadius:"0",width:"100%",maxWidth:"522px",margin:"0 auto",padding:"18px 24px",boxShadow:E},children:[!I&&!P&&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:C,children:[a.jsx("span",{style:{fontSize:"13px",fontWeight:i.typography.fontWeight.medium,color:D,fontFamily:l?.fontFamily||i.typography.fontFamily},children:"Transaction Details"}),a.jsx(Jn,{color:D,direction:x?"up":"down"})]}),a.jsx("button",{onClick:Q=>{Q.stopPropagation(),t()},style:{background:"none",border:"none",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:D,transition:"color 0.2s ease"},onMouseEnter:Q=>{Q.currentTarget.style.color=z},onMouseLeave:Q=>{Q.currentTarget.style.color=D},children:a.jsx(Es,{size:16})})]}),a.jsxs("div",{style:{marginBottom:i.spacing.lg,display:"flex",flexDirection:"column",gap:i.spacing.md,overflow:"hidden",maxHeight:x?"200px":"0px",opacity:x?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease"},children:[oe("NETWORK",s.network),oe("DEPOSITED AMOUNT",s.amount,i.colors.success),s.creditedAmount&&oe("CREDITED AMOUNT",s.creditedAmount),s.spicenetFee&&oe("SPICENET FEE",s.spicenetFee),s.networkFee&&oe("EST. NETWORK FEE",s.networkFee)]})]}),r&&!A&&se(r),F&&R&&se(R),a.jsx(p.Button,{onClick:M||F?v:n,variant:"outline",fullWidth:!0,disabled:o||k||O||T,styles:l,theme:w,children:o||k||T||O?"PROCESSING...":M?"CONTINUE \u2192":F?"CLOSE":"CONFIRM DEPOSIT"}),M&&a.jsx("p",{style:{marginTop:i.spacing.md,marginBottom:0,fontSize:"14px",color:D,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:Ci,alt:"Powered by SpiceNet",style:{height:"auto",width:"130px",opacity:1,filter:m?"brightness(0) invert(1) opacity(0.7)":"none"}})})]}),a.jsx("style",{children:`
|
|
4
4
|
@keyframes slideUp {
|
|
5
5
|
from {
|
|
6
6
|
transform: translateY(100%);
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
transform: translateY(100%);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
`})]})},ku=({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:c=null,styles:d})=>{const{dark:f,dk:m}=
|
|
20
|
+
`})]})},ku=({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:c=null,styles:d})=>{const{dark:f,dk:m}=p.useSpiceBrand(d),[h,w]=u.useState([]),g=u.useRef(null),y=f?m.cardBg:"#ffffff",x=f?m.textPrimary:"#374151",b=f?`${m.cardBorder}`:"rgba(255, 255, 255, 0.2)",v=m.textSecondary,C=f?m.successBg||"#064e3b":"#d1fae5",k=f?m.successText||"#6ee7b7":"#065f46",I=f?m.successBorder||"#065f4633":"#75FFD036",A=f?m.errorBg||"#7f1d1d":"#fecaca",F=f?m.errorText||"#fca5a5":"#991b1b",R=f?m.errorBorder||"#991b1b33":"#FCA5A536",j=e?.overallStatus==="processing",T=e?.overallStatus==="success",P=T&&s!=="idle",O=o;return u.useEffect(()=>((i==="success"&&!j&&!T||t&&!j)&&(g.current=setTimeout(()=>{w([])},6e3)),()=>{g.current&&clearTimeout(g.current)}),[i,t,j,T]),u.useEffect(()=>{const M=[];if(i==="processing"&&M.push({id:"direct-processing",type:"direct-processing",content:"PROCESSING DEPOSIT...",borderColor:b,backgroundColor:y,textColor:x,icon:a.jsx(p.Spinner,{size:20,borderWidth:3,color:v})}),i==="success"){const U=l&&c?p.getExplorerUrl(c,l):void 0;M.push({id:"direct-success",type:"direct-success",content:"DEPOSIT CONFIRMED",borderColor:I,backgroundColor:C,textColor:k,explorerUrl:U!=="#"?U:void 0,icon:mo})}if(j&&M.push({id:"processing",type:"processing",content:"VERIFYING TRANSACTION SIGNATURE",borderColor:b,backgroundColor:y,textColor:x,icon:a.jsx(p.Spinner,{size:20,borderWidth:3,color:v})}),T&&(M.push({id:"submitted",type:"submitted",content:"SUBMITTED TRANSACTION TO BLOCKCHAIN",borderColor:I,backgroundColor:C,textColor:k,icon:mo}),M.push({id:"deposit-success",type:"deposit-success",content:`DEPOSIT TO ${r.toUpperCase()} SUCCESSFUL`,borderColor:I,backgroundColor:C,textColor:k,icon:mo})),P){const U=s==="success"?I:s==="error"?R:b,E=s==="success"?C:s==="error"?A:y,D=s==="success"?k:s==="error"?F:x;let L="";s==="executing"?L=`EXECUTING ${O.toUpperCase()}...`:s==="success"?L=`${O.toUpperCase()} CONFIRMED`:s==="error"&&(L=`${O.toUpperCase()} FAILED`);let z;s==="executing"?z=a.jsx(p.Spinner,{size:20,borderWidth:3,color:v}):s==="success"?z=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"&&(z=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:L,status:s,borderColor:U,backgroundColor:E,textColor:D,icon:z})}t&&n&&M.push({id:"post-deposit-success",type:"post-deposit-success",content:`SUCCESSFULLY DEPOSITED ${n}`,borderColor:I,backgroundColor:C,textColor:k,icon:mo}),w(U=>{const E=new Set(M.map(z=>z.id)),D=[],L=new Set;for(const z of U)if(E.has(z.id)){const se=M.find(de=>de.id===z.id);D.push(se),L.add(z.id)}for(const z of M)L.has(z.id)||D.push(z);if(D.length>3){const z=[],se=[];for(const Q of D)Q.type==="processing"||Q.type==="post-deposit"&&Q.status==="executing"?z.push(Q):se.push(Q);const de=[...z],oe=3-de.length;return oe>0&&se.length>0&&de.push(...se.slice(-oe)),de}return D})},[j,T,P,s,t,n,O,r,i,l,c,f]),h.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:[h.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:p.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:`
|
|
21
21
|
@keyframes fadeInSlide {
|
|
22
22
|
from {
|
|
23
23
|
opacity: 0;
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
transform: translateY(0);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
`})]})},Pi=p.memo(({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onDepositSelect:s,depositBatches:o,supportedChains:r,title:i,styles:l,onDepositAssetChange:c,assetInputHook:d,externalWalletAddress:f,onDepositAmountChange:m,allowSecondAsset:h=!1,destinationChainId:y,destinationTokenAddress:g,onDepositExecute:w,depositActionLabel:x,nativeChainId:b,sponsorGas:C=!1,preSelectedAsset:v,escrowOnly:k=!1,escrowTokenAddress:I,escrowAmount:A,escrowTokenDecimals:E,escrowTokenSymbol:j,onSubmit:R,onDepositSuccess:B,onDepositError:M,embeddedWalletAddress:D,onViewAllAssets:U})=>{const O=p.useContext(u.SpiceFlowProviderContext),F=O?.mode||"7702",P=O?.allowedTokens,z=!!O?.isWhitelistGateActive,q=!k&&!!O?.isWhitelistConfigured&&O?.isUserWhitelisted!==!0,ne=d?.assetAmount||"",{theme:de,dark:ie,appName:Y,primaryColor:Q,dk:G}=u.useSpiceBrand(l),fe=u.useWallet(),{isReady:X,isAuthenticated:be}=fe,{externalWallet:we}=u.useProviderWallets(),N=O?.embeddedWalletAddress||D,J=F!="7702",ee=J?!!f:X&&be&&!!N,V=N,me=f,he=V??me,Re=u.useAssetDisplay(),{data:W}=yn.useWalletClient(),[L,$]=p.useState(W),le=p.useRef(null),se=p.useRef(we);se.current=we;const oe=we?.address;p.useEffect(()=>{const Z=se.current;if(!Z||!me){le.current=null,$(W);return}if(Z.address?.toLowerCase()!==me?.toLowerCase()){le.current=null,$(W);return}Z.getEthereumProvider().then(async ge=>{le.current=ge;const xe=await ge.request({method:"eth_chainId"}),Ce=parseInt(xe,16),bt=u.getChainConfig(Ce),dt=await Z.getWalletClient(Ce);$(bt?T.createWalletClient({account:me,chain:bt.viemChain,transport:T.custom(ge)}):dt)}).catch(()=>{le.current=null,$(W)})},[oe,me,W]);const Ie=p.useRef(null),[_,je]=p.useState([]),{assets:Fe,loading:st,error:ve,refreshAssets:Ve}=ks({address:k?V:me||V,supportedChains:r,fetchBalances:Yn,enabled:e,refreshInterval:e?5e3:0}),Ne=p.useMemo(()=>Fe.filter(Z=>Z.balance>0n&&En(Z,"deposit-source",{allowedTokens:P,rpcOverrides:O?.rpcOverrides,liquidityVenues:O?.liquidityVenues,isWhitelistGateActive:z},void 0,void 0,{requiresEscrow:J||k}).eligible).sort((Z,ge)=>ge.balanceUsd-Z.balanceUsd),[Fe,P,O?.rpcOverrides,z,J,k]),ot=p.useMemo(()=>{if(!_[0]?.asset)return[];const Z=_[0].asset.chainId;return Ne.filter(ge=>ge.chainId===Z)},[Ne,_]),[Pe,ht]=p.useState(!1),[Je,gt]=p.useState(null),Qe=p.useRef(M);Qe.current=M;const lt=p.useCallback(Z=>{gt(Z),typeof Z=="string"&&Z&&Qe.current?.(Z,u.getRelayerErrorDetail(Z))},[]),[Ae,xt]=p.useState("idle"),qe=p.useCallback(Z=>{typeof Z=="string"&&Z&&Qe.current?.(Z,u.getRelayerErrorDetail(Z))},[]),[ut,wt]=p.useState(!1),[$e,at]=p.useState(null),[Ue,rt]=p.useState("idle"),[We,ae]=p.useState(null),[ue,Te]=p.useState(null),[Be,ce]=p.useState(null),[ze,Oe]=p.useState(null),[H,Ze]=p.useState(null),{intentStatus:Se,startStatusPolling:ct,clearStatus:jt,execute:Et}=Is(),De=p.useCallback((Z,ge)=>{const xe=u.CHAIN_CONFIGS[ge];return xe?xe.supportedTokens?.find(Ce=>u.addressesEqual(Ce.address,Z))?.symbol??null:null},[]),et=p.useMemo(()=>{const Z=_[0]?.asset;if(!Z||!g||!y)return!1;const ge=De(g,y);return Ad(Z.symbol)&&!!ge&&Ed(ge)},[_,g,y,De]);p.useEffect(()=>{_.length>0&&ne!==_[0]?.amount&&je(Z=>{if(Z.length===0)return Z;const ge=[...Z];return ge[0]={...ge[0],amount:ne||""},ge})},[ne]),p.useEffect(()=>{_.length!==0&&je(Z=>{let ge=!1;const xe=Z.map(Ce=>{if(!Ce.asset)return Ce;const bt=Ne.find(dt=>dt.chainId===Ce.asset.chainId&&u.addressesEqual(dt.address,Ce.asset.address));return bt?bt===Ce.asset||bt.balance===Ce.asset.balance?Ce:(ge=!0,{...Ce,asset:bt,amount:Ce.amount}):Ce});return ge?xe:Z})},[Ne,_.length]),p.useEffect(()=>{if(!v||_.length>0||Ne.length===0)return;const Z=Ne.find(ge=>ge.chainId===v.chainId&&u.addressesEqual(ge.address,v.address));Z&&(je([{asset:Z,amount:""}]),c?.(Z))},[v,Ne,_.length]);const yt=p.useRef(null);p.useEffect(()=>{if(J&&Se?.overallStatus==="success"&&w&&Ae==="idle"){const Z=yt.current,ge=Ie.current;Z&&(async()=>{try{xt("executing"),await w(Z),xt("success"),at(Z),wt(!0);const xe=Array.isArray(ge)?ge[0]:void 0,Ce={type:"deposit",status:"success",amount:Z,asset:xe?.tokenAddress,sourceChain:xe?String(xe.chainId):void 0,txHash:xe?.txHash};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:Ce})),B?.(Ce)}catch(xe){console.error("onDepositExecute failed:",xe),xt("error"),qe(u.sanitizeError(xe,"Post-deposit instruction failed"))}finally{yt.current=null,Ie.current=null}})()}},[Se?.overallStatus,J,Ae]);const Ct=p.useCallback(()=>{lt(null)},[]);p.useEffect(()=>{e||(wt(!1),at(null),rt("idle"),ae(null),Te(null))},[e]);const it=p.useCallback((Z,ge)=>{je(xe=>{const Ce=[...xe];return Ce[ge]={asset:Z,amount:Ce[ge]?.amount||""},Ce}),ge===0&&c?.(Z),Ct()},[c,Ct]),Ot=p.useCallback(async(Z,ge)=>{if(je(xe=>{const Ce=[...xe];return Ce[ge]&&(Ce[ge]={...Ce[ge],amount:Z}),Ce}),Ct(),ge===0)if(d?.setAssetAmount(Z),et&&Z&&parseFloat(Z)>0)try{const xe=Be??await Id();Be||ce(xe);const Ce=_[0]?.asset;if(!Ce)return;const bt=T.parseUnits(Z,Ce.decimals),dt=g?De(g,y):null,mn=u.CHAIN_CONFIGS[y]?.supportedTokens?.find(Dn=>u.addressesEqual(Dn.address,g))?.decimals??6,qn=Fd(bt,Ce.decimals,mn,xe);Oe(qn);const zn=T.formatUnits(qn,mn),cn=xe.toLocaleString("en-US",{maximumFractionDigits:0});Ze(`${Z} ${Ce.symbol} \u2248 $${parseFloat(zn).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})} ${dt??"USD"} (rate: $${cn}/BTC)`),m?.(zn)}catch(xe){console.error("Failed to fetch BTC/USD price:",xe),Ze(null),Oe(null),m?.(Z)}else Ze(null),Oe(null),m?.(Z)},[Ct,d,m,et,Be,_,g,y,De]),On=p.useCallback(()=>{_.length<2&&je(Z=>[...Z,{asset:null,amount:""}])},[_.length]),pt=p.useCallback(Z=>{je(ge=>ge.filter((xe,Ce)=>Ce!==Z)),Ct()},[Ct]),an=p.useRef(!1),Ft=p.useRef(!1);p.useEffect(()=>{e||(an.current=!1,Ft.current=!1,Gt(null),Ee(null))},[e]);const[Lt,kt]=p.useState(!1),[Qt,Mt]=p.useState(null),[Ut,Gt]=p.useState(null),[ft,Ee]=p.useState(null),[St,qt]=p.useState(!1),[Kt,Dt]=p.useState(null),Me=p.useMemo(()=>{const Z=_[0];if(_.length!==1||!Z?.asset||!Z.amount||parseFloat(Z.amount)<=0)return null;try{return{asset:Z.asset,amount:T.parseUnits(Z.amount,Z.asset.decimals),token:S.normalizeNativeTokenAddress(Z.asset.address),chainId:Z.asset.chainId}}catch{return null}},[_]),Jt=!J&&!k&&!!Me&&!Tn(Me.asset),zt=p.useMemo(()=>Me?[Me.chainId,Me.token.toLowerCase(),Me.amount.toString(),k?"escrow":"normal"].join("|"):null,[Me,k]),Nt=p.useCallback(async(Z,ge)=>V?lr({address:V,depositQuote:Z,escrowOnly:k,signal:ge}):null,[V,k]),$t=p.useCallback(async Z=>Me?Nt(Me,Z):null,[Me,Nt]),ln=p.useRef($t);ln.current=$t,_o({shouldRun:e&&!J&&!Jt&&!!zt&&!Lt&&!Pe,deps:[e,J,Jt,zt,Lt,Pe],delayMs:500,backgroundIntervalMs:3e4,onSkip:()=>{Gt(null),Dt(null),qt(!1)},onCleanup:()=>qt(!1),run:async({isBackground:Z,isCurrent:ge,signal:xe})=>{Z||(Dt(null),qt(!0));try{const Ce=await ln.current(xe);ge()&&Gt(Ce)}catch(Ce){if(!ge())return;Gt(null),Dt(Ce instanceof Error?Ce.message:"Failed to estimate gas fee")}finally{ge()&&qt(!1)}}}),p.useEffect(()=>{Lt||Pe||Ee(null)},[Lt,Pe,zt]);const Sn=async()=>{if(_.length===0||!_[0]?.asset)return;const Z=_.filter(dt=>dt.asset&&dt.amount&&parseFloat(dt.amount)>0);if(Z.length===0)return;const ge=Z[0],xe=u.getChainConfig(ge.asset.chainId),Ce=Z.map(dt=>{const mn=parseFloat(dt.amount);return`${isNaN(mn)?dt.amount:mn.toPrecision(6).replace(/\.?0+$/,"")} ${dt.asset.symbol}`}).join(", "),bt={network:xe?.displayName||`Chain ${ge.asset.chainId}`,amount:Ce,symbol:"",chainId:ge.asset.chainId};if(!J&&Z.length===1&&Ut){Ee(Ut);const dt=Z[0];bt.creditedAmount=`${T.formatUnits(Ut.net,dt.asset.decimals)} ${Tn(dt.asset)?Re({...dt.asset,location:"rollup",_source:"spice",receiptTokenName:"spiceUSDC"}).symbol:dt.asset.symbol}`,bt.networkFee=`${T.formatUnits(Ut.fee,dt.asset.decimals)} ${dt.asset.symbol}`}Mt(bt),kt(!0)},In=p.useRef(Se);In.current=Se;const fn=p.useRef(Ae);fn.current=Ae;const Ht=async()=>{await lu({selectedDepositAssets:_,escrowOnly:k,sourceAddress:me,isNon7702:J,address:V,embeddedWalletAddress:N,isReady:X,isAuthenticated:be,zeroCreditError:Tt,depositBalanceError:Ye,externalWalletClient:L,externalProvider:le.current,effectiveDepositFee:te,depositBatches:o,destinationChainId:y,destinationTokenAddress:g,isCrossDenomination:et,convertedUsdAmount:ze,mode:F,sponsorGas:C,nativeChainId:b,spiceBalanceUser:he,depositDataRef:Ie,bridgedAmountRef:yt,setIsExecuting:ht,setError:lt,setConfirmationData:Mt,setShowConfirmation:kt,setDirectDepositStatus:rt,setDirectDepositChainId:Te,setDirectDepositTxHash:ae,setPostDepositStatus:xt,setPostDepositError:qe,setPostDepositAmount:at,setPostDepositSuccess:wt,startStatusPolling:ct,clearStatus:jt,refreshAssets:Ve,onDepositExecute:w,onDepositSelect:s,onDepositSuccess:B,execution:{execute:Et},getCurrentIntentStatus:()=>In.current,getCurrentPostDepositStatus:()=>fn.current})},Tt=p.useMemo(()=>{for(const Z of _)if(!(!Z?.asset||!Z.amount||parseFloat(Z.amount)<=0))try{const ge=Z.asset.decimals,xe=T.parseUnits(Z.amount,ge);if(xe<=0n)continue;const Ce=S.normalizeNativeTokenAddress(Z.asset.address),bt=S.isNativeToken(Ce)?S.getTokenByAddress(Ce,Z.asset.chainId)?.equivalenceGroup:S.getEquivalenceGroup(Ce),dt=Z.asset.receiptTokenDecimals??(bt==="ETH"||bt==="ARB"?18:bt==="USDC"||bt==="SUSD"||bt==="WBTC"||bt==="CBTC"?6:void 0);if(dt===void 0||ge<=dt||S.convertAmountBetweenDecimals(xe,ge,dt)>0n)continue;return`Amount too small. Minimum deposit for this asset is ${T.formatUnits(10n**BigInt(ge-dt),ge)} ${Z.asset.symbol}.`}catch{continue}return null},[_]),re=!J&&!!Me&&!Jt,te=ft??Ut,ke=!!Me&&ji(te,Me),Ye=p.useMemo(()=>{if(!Me)return null;if(Jt)return Me.asset.balance>=Me.amount?null:`Insufficient ${Me.asset.symbol}. Need ${T.formatUnits(Me.amount,Me.asset.decimals)} ${Me.asset.symbol}.`;if(!re||!ke)return null;const Z=k?Me.amount:Me.amount+te.fee;return Me.asset.balance>=Z?null:`Insufficient ${Me.asset.symbol}. Need ${T.formatUnits(Z,Me.asset.decimals)} ${Me.asset.symbol} including gas.`},[re,Jt,Me,ke,te,k]),[tt,Xe]=p.useState(!1),Le=_[0]?.asset?.chainId,Wt=Fe.find(Z=>Z.isNative&&Z.chainId===Le)?.balance??0n;p.useEffect(()=>{if(!e||!Le){Xe(!1);return}let Z=!1;return(async()=>{try{const ge=await u.getClientForChain(Le).getGasPrice()*150000n;Z||Xe(Wt<ge)}catch{Z||Xe(!1)}})(),()=>{Z=!0}},[e,Le,Wt]);const Bt=!re||ke&&!St&&!Kt&&!Ye,Zt=p.useCallback((Z,ge)=>cu({asset:Z,assetIndex:ge,selectedAssetCount:_.length,address:V,escrowOnly:k,isNon7702:J}),[J,_.length,V,k]),nn=p.useMemo(()=>{if(!Me||!te||!ke)return null;const Z=k?Me.amount:Me.amount+te.fee;return{symbol:Me.asset.symbol,decimals:Me.asset.decimals,grossAmount:Z,netAmount:te.net,totalFee:te.fee,gasFee:te.fee,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"estimated"}},[Me,te,ke,k]),At=parseFloat(_[0]?.amount||"")||0,An=_.length>0&&_[0]?.asset&&_[0]?.amount&&At>0&&ee&&!Pe&&!Tt&&!Ye&&Bt&&!q;p.useEffect(()=>{if(!k||!I||!A||an.current||!ee)return;const Z=r[0];if(!Z)return;const ge=u.getAllAssetsForChain(Z,[]).find(Ce=>u.addressesEqual(Ce.address,I));let xe;if(ge)xe=ge;else if(E!==void 0&&j)xe={address:I,symbol:j,name:j,decimals:E,chainId:Z,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,isNative:S.isNativeToken(I)};else{console.warn("[DepositModal] escrowOnly: no matching asset and missing escrowTokenDecimals/escrowTokenSymbol for",I);return}an.current=!0,je([{asset:xe,amount:A}])},[k,I,A,E,j,ee,r]),p.useEffect(()=>{!k||!An||Ft.current||Pe||(Ft.current=!0,Ht())},[k,An,Pe]);const Pt=ve||Je||Tt||Ye,Ln=()=>{if(Pe)return"Executing Deposit...";if(!ee)return"Wallet Not Connected";if(F==="7702"){if(!X)return"Loading...";if(!be)return"Authentication Required"}return _[0]?.asset?_[0]?.amount?Tt?"AMOUNT TOO SMALL":Ye?"INSUFFICIENT BALANCE":re&&!Bt?Kt?"GAS UNAVAILABLE":"ESTIMATING GAS":"DEPOSIT":"ENTER AMOUNT":"SELECT TOKEN"};return e?a.jsx(on,{isOpen:e,onClose:t,closeOnBackdropClick:n,title:i||`Deposit to your ${Y} account`,subtitle:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:$o,alt:"","aria-hidden":"true",style:{width:"13px",height:"13px",flexShrink:0,...ie?{filter:"invert(0.6)"}:{}}}),a.jsx("p",{style:{fontSize:"12px",color:G.textSecondary,margin:"0",lineHeight:"1.4",fontFamily:u.font.ui},children:`Deposit collateral to your ${Y} Account from any supported network.`})]}),dark:ie,overlayContent:Lt||Se||Ae!=="idle"&&w?a.jsx("div",{}):void 0,styles:l,theme:de,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px"},children:[a.jsx(yu,{selectedDepositAssets:_,depositAssets:Ne,secondAssetOptions:ot,loadingAssets:st,allowSecondAsset:h,theme:de,styles:l,dark:ie,dk:G,onSelect:it,onAmountChange:Ot,onAdd:On,onRemove:pt,resolveMaxAmount:Zt,onViewAllAssets:U}),re&&Me&&a.jsx(rr,{fontFamily:l?.fontFamily||de.typography.fontFamily,textPrimary:G.textPrimary,textSecondary:G.textSecondary,cardBg:ie?G.inputBg:"#ffffff",cardBorder:G.cardBorder,resolvedDark:ie,darkCardBorder:G.cardBorder,primaryColor:Q,feePreview:nn,isLoading:St||re&&!ke,errorText:Kt}),a.jsx(ku,{intentStatus:Se,postDepositSuccess:ut,postDepositAmount:$e,postDepositStatus:Ae,depositActionLabel:x,sourceChainName:_[0]?.asset?.chainId?u.getChainName(_[0].asset.chainId):"Destination Chain",directDepositStatus:Ue,directDepositTxHash:We,directDepositChainId:ue,styles:l}),a.jsx(Cu,{isOpen:Lt||!!Se||Ae!=="idle"&&!!w,onClose:()=>{kt(!1),Se&&jt();const Z=Ae==="success"&&!Se,ge=Se?.overallStatus==="success"&&(w?Ae==="success":!0);(Z||ge)&&t()},onConfirm:()=>{if(!Pe)return R?.(),Ht()},data:Qt,isExecuting:Pe,error:Je,theme:de,styles:l,intentStatus:Se,postDepositStatus:Ae,hasPostDepositInstruction:!!w}),H&&a.jsxs(Ii,{dk:G,dark:ie,borderRadius:de.borderRadius.md,children:["\u26A1 ",H]}),tt&&a.jsx(Ii,{dk:G,dark:ie,borderRadius:de.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:[Pt?a.jsx("div",{style:{marginBottom:"10px",fontSize:"12px",lineHeight:"1.45",color:G.errorText,fontFamily:l?.fontFamily||de.typography.fontFamily},children:Pt}):null,a.jsx(u.Button,{variant:"outline",fullWidth:!0,onClick:Sn,disabled:!An||!ee||Pe,theme:de,dark:ie,styles:l,children:Ln()})]})]})}):null});function fr(e,t=!0){const n=u.relayerService.getBaseUrl(),s=`${n}:${e?.toLowerCase()??""}`,[o,r]=p.useState({scope:s,actions:[],error:null}),[i,l]=p.useState(0),c=p.useCallback(()=>l(d=>d+1),[]);return p.useEffect(()=>{if(!t||!e)return;const d=new AbortController,f=new u.RelayerService;f.setBaseUrl(n);let m;const h=async()=>{try{const y=await f.getWalletActions(e,d.signal);d.signal.aborted||r({scope:s,actions:y,error:null})}catch(y){if(d.signal.aborted)return;if(y instanceof u.SpiceflowError&&y.context.httpStatus===404){r({scope:s,actions:[],error:null});return}r(g=>({scope:s,actions:g.scope===s?g.actions:[],error:"Activity is temporarily unavailable. Refresh to check again."}))}d.signal.aborted||(m=setTimeout(h,5e3))};return h(),window.addEventListener("online",c),()=>{d.abort(),clearTimeout(m),window.removeEventListener("online",c)}},[n,e,t,s,i,c]),{actions:t&&o.scope===s?o.actions:[],error:o.scope===s?o.error:null,refresh:c}}function tn(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}function Vt(e,t){if(!Number.isInteger(t)||t<0||t>255)throw new Error("Invalid token decimals");if(!/^\d+(?:\.\d*)?$/.test(e))throw new Error("Enter a valid amount.");if((e.split(".")[1]?.replace(/0+$/,"")??"").length>t)throw new Error(`Use at most ${t} decimal places for this source.`);return T.parseUnits(e,t)}function _n(e,t,n){const s=tn(e,t,n,"floor");if(tn(s,n,t,"floor")!==e)throw new Error(`Use at most ${n} decimal places for this delivered token.`);return s}function Su(e){return`0x77${e.slice(4)}`}function Ts({userAddress:e,destinationChainId:t,deliveryToken:n,deliveryAmount:s,withdrawalAmount:o,deliveryRecipient:r,deliveryTransfers:i,requestTimestampMs:l,expiresAt:c,metadata:d,requestNonce:f}){if(c!==void 0&&(!Number.isSafeInteger(c)||c<=0))throw new Error("Withdrawal expiry must be a positive Unix timestamp in seconds");const m=i?.length?i:[{token:n,recipient:r,amount:o??s}],h=m.reduce((b,C)=>b+C.amount,0n);if(h<=0n)return null;const y=l??Date.now(),g=BigInt(Math.floor(y/1e3)),w=e??r,x=Su(T.keccak256(T.encodeAbiParameters([{type:"address"},{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"},...f?[{type:"bytes32"}]:[]],[w,n,r,h,BigInt(t),BigInt(y),...f?[f]:[]])));return{chainId:S.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:[{to:S.ZERO_ADDRESS,value:0n,data:T.encodeFunctionData({abi:S.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${t}`,idempotenceKey:x,nbf:0n,exp:c===void 0?g+3600n:BigInt(c),metadata:d??"{}",transfers:m.map(b=>({token:T.getAddress(b.token).toLowerCase(),to:T.getAddress(b.recipient).toLowerCase(),amount:b.amount}))}]})}]}}const mr=e=>{const[t,n]=p.useState(!1),s=p.useContext(u.SpiceFlowProviderContext),{dark:o,dk:r}=u.useSpiceBrand();if(p.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(u.PrivyLogin,{...e})},Mi=({isSuccess:e,type:t,chainName:n,explorerUrl:s,txHash:o,dark:r=!1,successBg:i="#d1fae5",successBorder:l="#6ee7b7",successText:c="#065f46",errorBg:d="#fee2e2",errorBorder:f="#fca5a5",errorText:m="#dc2626",textSecondary:h="#6b7280"})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px",borderRadius:"8px",backgroundColor:e?i:d,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:u.font.mono,letterSpacing:"0.5px",color:e?c:m},children:e?`${t.toUpperCase()} CONFIRMED`:`${t.toUpperCase()} FAILED`}),a.jsxs("p",{style:{margin:"2px 0 0 0",fontSize:"12px",color:h},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:h,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"})]})]})]}),Ui=`
|
|
31
|
+
`})]})},Mi=u.memo(({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onDepositSelect:s,depositBatches:o,supportedChains:r,title:i,styles:l,onDepositAssetChange:c,assetInputHook:d,externalWalletAddress:f,onDepositAmountChange:m,allowSecondAsset:h=!1,destinationChainId:w,destinationTokenAddress:g,onDepositExecute:y,depositActionLabel:x,nativeChainId:b,sponsorGas:v=!1,preSelectedAsset:C,escrowOnly:k=!1,escrowTokenAddress:I,escrowAmount:A,escrowTokenDecimals:F,escrowTokenSymbol:R,onSubmit:j,directSubmit:T=!1,onDepositSuccess:P,onDepositError:O,embeddedWalletAddress:M,onViewAllAssets:U})=>{const E=u.useContext(p.SpiceFlowProviderContext),D=E?.mode||"7702",L=E?.allowedTokens,z=!!E?.isWhitelistGateActive,se=!k&&!!E?.isWhitelistConfigured&&E?.isUserWhitelisted!==!0,de=d?.assetAmount||"",{theme:oe,dark:Q,appName:J,primaryColor:X,dk:ee}=p.useSpiceBrand(l),K=p.useWallet(),{isReady:we,isAuthenticated:ve}=K,{externalWallet:N}=p.useProviderWallets(),Z=E?.embeddedWalletAddress||M,Y=D!="7702",G=Y?!!f:we&&ve&&!!Z,pe=Z,xe=f,ke=pe??xe,q=p.useAssetDisplay(),{data:W}=Cn.useWalletClient(),[_,ce]=u.useState(W),$=u.useRef(null),te=u.useRef(N);te.current=N;const Ie=N?.address;u.useEffect(()=>{const H=te.current;if(!H||!xe){$.current=null,ce(W);return}if(H.address?.toLowerCase()!==xe?.toLowerCase()){$.current=null,ce(W);return}H.getEthereumProvider().then(async be=>{$.current=be;const $e=await be.request({method:"eth_chainId"}),Ee=parseInt($e,16),Ct=p.getChainConfig(Ee),gt=await H.getWalletClient(Ee);ce(Ct?B.createWalletClient({account:xe,chain:Ct.viemChain,transport:B.custom(be)}):gt)}).catch(()=>{$.current=null,ce(W)})},[Ie,xe,W]);const he=u.useRef(null),[fe,Ae]=u.useState([]),{assets:We,loading:Ce,error:ze,refreshAssets:He}=ks({address:k?pe:xe||pe,supportedChains:r,fetchBalances:Yn,enabled:e,refreshInterval:e?5e3:0}),tt=u.useMemo(()=>We.filter(H=>H.balance>0n&&Tn(H,"deposit-source",{allowedTokens:L,rpcOverrides:E?.rpcOverrides,liquidityVenues:E?.liquidityVenues,isWhitelistGateActive:z},void 0,void 0,{requiresEscrow:Y||k}).eligible).sort((H,be)=>be.balanceUsd-H.balanceUsd),[We,L,E?.rpcOverrides,z,Y,k]),_e=u.useMemo(()=>{if(!fe[0]?.asset)return[];const H=fe[0].asset.chainId;return tt.filter(be=>be.chainId===H)},[tt,fe]),[st,ut]=u.useState(!1),[pt,Ye]=u.useState(null),it=u.useRef(O);it.current=O;const Pe=u.useCallback(H=>{Ye(H),typeof H=="string"&&H&&it.current?.(H,p.getRelayerErrorDetail(H))},[]),[lt,nt]=u.useState("idle"),ot=u.useCallback(H=>{typeof H=="string"&&H&&it.current?.(H,p.getRelayerErrorDetail(H))},[]),[kt,Xe]=u.useState(!1),[ht,je]=u.useState(null),[ct,De]=u.useState("idle"),[ae,ue]=u.useState(null),[Fe,Te]=u.useState(null),[le,Le]=u.useState(null),[Ve,re]=u.useState(null),[ge,Oe]=u.useState(null),{intentStatus:Re,startStatusPolling:jt,clearStatus:Ft,execute:Ne}=Is(),ft=u.useCallback((H,be)=>{const $e=p.CHAIN_CONFIGS[be];return $e?$e.supportedTokens?.find(Ee=>p.addressesEqual(Ee.address,H))?.symbol??null:null},[]),wt=u.useMemo(()=>{const H=fe[0]?.asset;if(!H||!g||!w)return!1;const be=ft(g,w);return Ad(H.symbol)&&!!be&&Ed(be)},[fe,g,w,ft]);u.useEffect(()=>{fe.length>0&&de!==fe[0]?.amount&&Ae(H=>{if(H.length===0)return H;const be=[...H];return be[0]={...be[0],amount:de||""},be})},[de]),u.useEffect(()=>{fe.length!==0&&Ae(H=>{let be=!1;const $e=H.map(Ee=>{if(!Ee.asset)return Ee;const Ct=tt.find(gt=>gt.chainId===Ee.asset.chainId&&p.addressesEqual(gt.address,Ee.asset.address));return Ct?Ct===Ee.asset||Ct.balance===Ee.asset.balance?Ee:(be=!0,{...Ee,asset:Ct,amount:Ee.amount}):Ee});return be?$e:H})},[tt,fe.length]),u.useEffect(()=>{if(!C||fe.length>0||tt.length===0)return;const H=tt.find(be=>be.chainId===C.chainId&&p.addressesEqual(be.address,C.address));H&&(Ae([{asset:H,amount:""}]),c?.(H))},[C,tt,fe.length]);const vt=u.useRef(null);u.useEffect(()=>{if(Y&&Re?.overallStatus==="success"&&y&<==="idle"){const H=vt.current,be=he.current;H&&(async()=>{try{nt("executing"),await y(H),nt("success"),je(H),Xe(!0);const $e=Array.isArray(be)?be[0]:void 0,Ee={type:"deposit",status:"success",amount:H,asset:$e?.tokenAddress,sourceChain:$e?String($e.chainId):void 0,txHash:$e?.txHash};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:Ee})),P?.(Ee)}catch($e){console.error("onDepositExecute failed:",$e),nt("error"),ot(p.sanitizeError($e,"Post-deposit instruction failed"))}finally{vt.current=null,he.current=null}})()}},[Re?.overallStatus,Y,lt]);const Je=u.useCallback(()=>{Pe(null)},[]);u.useEffect(()=>{e||(Xe(!1),je(null),De("idle"),ue(null),Te(null))},[e]);const Tt=u.useCallback((H,be)=>{Ae($e=>{const Ee=[...$e];return Ee[be]={asset:H,amount:Ee[be]?.amount||""},Ee}),be===0&&c?.(H),Je()},[c,Je]),Nn=u.useCallback(async(H,be)=>{if(Ae($e=>{const Ee=[...$e];return Ee[be]&&(Ee[be]={...Ee[be],amount:H}),Ee}),Je(),be===0)if(d?.setAssetAmount(H),wt&&H&&parseFloat(H)>0)try{const $e=le??await Id();le||Le($e);const Ee=fe[0]?.asset;if(!Ee)return;const Ct=B.parseUnits(H,Ee.decimals),gt=g?ft(g,w):null,Yt=p.CHAIN_CONFIGS[w]?.supportedTokens?.find(Ht=>p.addressesEqual(Ht.address,g))?.decimals??6,Fn=Fd(Ct,Ee.decimals,Yt,$e);re(Fn);const zt=B.formatUnits(Fn,Yt),Ps=$e.toLocaleString("en-US",{maximumFractionDigits:0});Oe(`${H} ${Ee.symbol} \u2248 $${parseFloat(zt).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})} ${gt??"USD"} (rate: $${Ps}/BTC)`),m?.(zt)}catch($e){console.error("Failed to fetch BTC/USD price:",$e),Oe(null),re(null),m?.(H)}else Oe(null),re(null),m?.(H)},[Je,d,m,wt,le,fe,g,w,ft]),xt=u.useCallback(()=>{fe.length<2&&Ae(H=>[...H,{asset:null,amount:""}])},[fe.length]),gn=u.useCallback(H=>{Ae(be=>be.filter(($e,Ee)=>Ee!==H)),Je()},[Je]),Bt=u.useRef(!1),on=u.useRef(!1);u.useEffect(()=>{e||(Bt.current=!1,on.current=!1,mt(null),St(null))},[e]);const[bt,Ut]=u.useState(!1),[Vt,$t]=u.useState(null),[Qt,mt]=u.useState(null),[Be,St]=u.useState(null),[_t,Gt]=u.useState(!1),[Nt,Wt]=u.useState(null),Qe=u.useMemo(()=>{const H=fe[0];if(fe.length!==1||!H?.asset||!H.amount||parseFloat(H.amount)<=0)return null;try{return{asset:H.asset,amount:B.parseUnits(H.amount,H.asset.decimals),token:S.normalizeNativeTokenAddress(H.asset.address),chainId:H.asset.chainId}}catch{return null}},[fe]),Mt=!Y&&!k&&!!Qe&&!Rn(Qe.asset),Ot=u.useMemo(()=>Qe?[Qe.chainId,Qe.token.toLowerCase(),Qe.amount.toString(),k?"escrow":"normal"].join("|"):null,[Qe,k]),en=u.useCallback(async(H,be)=>pe?cr({address:pe,depositQuote:H,escrowOnly:k,signal:be}):null,[pe,k]),cn=u.useCallback(async H=>Qe?en(Qe,H):null,[Qe,en]),xn=u.useRef(cn);xn.current=cn,er({shouldRun:e&&!Y&&!Mt&&!!Ot&&!bt&&!st,deps:[e,Y,Mt,Ot,bt,st],delayMs:500,backgroundIntervalMs:3e4,onSkip:()=>{mt(null),Wt(null),Gt(!1)},onCleanup:()=>Gt(!1),run:async({isBackground:H,isCurrent:be,signal:$e})=>{H||(Wt(null),Gt(!0));try{const Ee=await xn.current($e);be()&&mt(Ee)}catch(Ee){if(!be())return;mt(null),Wt(Ee instanceof Error?Ee.message:"Failed to estimate gas fee")}finally{be()&&Gt(!1)}}}),u.useEffect(()=>{bt||st||St(null)},[bt,st,Ot]);const yn=u.useRef(!1),wn=async()=>{if(fe.length===0||!fe[0]?.asset)return;const H=fe.filter(gt=>gt.asset&>.amount&&parseFloat(gt.amount)>0);if(H.length===0)return;const be=H[0],$e=p.getChainConfig(be.asset.chainId),Ee=H.map(gt=>{const Yt=parseFloat(gt.amount);return`${isNaN(Yt)?gt.amount:Yt.toPrecision(6).replace(/\.?0+$/,"")} ${gt.asset.symbol}`}).join(", "),Ct={network:$e?.displayName||`Chain ${be.asset.chainId}`,amount:Ee,symbol:"",chainId:be.asset.chainId};if(!Y&&H.length===1&&Qt){St(Qt);const gt=H[0];Ct.creditedAmount=`${B.formatUnits(Qt.net,gt.asset.decimals)} ${Rn(gt.asset)?q({...gt.asset,location:"rollup",_source:"spice",receiptTokenName:"spiceUSDC"}).symbol:gt.asset.symbol}`,Ct.networkFee=`${B.formatUnits(Qt.fee,gt.asset.decimals)} ${gt.asset.symbol}`}$t(Ct),T?await ne():Ut(!0)},Kt=u.useRef(Re);Kt.current=Re;const Lt=u.useRef(lt);Lt.current=lt;const ie=async()=>{await lu({selectedDepositAssets:fe,escrowOnly:k,sourceAddress:xe,isNon7702:Y,address:pe,embeddedWalletAddress:Z,isReady:we,isAuthenticated:ve,zeroCreditError:Se,depositBalanceError:Me,externalWalletClient:_,externalProvider:$.current,effectiveDepositFee:Ue,depositBatches:o,destinationChainId:w,destinationTokenAddress:g,isCrossDenomination:wt,convertedUsdAmount:Ve,mode:D,sponsorGas:v,nativeChainId:b,spiceBalanceUser:ke,depositDataRef:he,bridgedAmountRef:vt,setIsExecuting:ut,setError:Pe,setConfirmationData:$t,setShowConfirmation:Ut,setDirectDepositStatus:De,setDirectDepositChainId:Te,setDirectDepositTxHash:ue,setPostDepositStatus:nt,setPostDepositError:ot,setPostDepositAmount:je,setPostDepositSuccess:Xe,startStatusPolling:jt,clearStatus:Ft,refreshAssets:He,onDepositExecute:y,onDepositSelect:s,onDepositSuccess:P,execution:{execute:Ne},getCurrentIntentStatus:()=>Kt.current,getCurrentPostDepositStatus:()=>Lt.current})},ne=async()=>{if(!(yn.current||st)){yn.current=!0;try{j?.(),await ie()}finally{yn.current=!1}}},Se=u.useMemo(()=>{for(const H of fe)if(!(!H?.asset||!H.amount||parseFloat(H.amount)<=0))try{const be=H.asset.decimals,$e=B.parseUnits(H.amount,be);if($e<=0n)continue;const Ee=S.normalizeNativeTokenAddress(H.asset.address),Ct=S.isNativeToken(Ee)?S.getTokenByAddress(Ee,H.asset.chainId)?.equivalenceGroup:S.getEquivalenceGroup(Ee),gt=H.asset.receiptTokenDecimals??(Ct==="ETH"||Ct==="ARB"?18:Ct==="USDC"||Ct==="SUSD"||Ct==="WBTC"||Ct==="CBTC"?6:void 0);if(gt===void 0||be<=gt||S.convertAmountBetweenDecimals($e,be,gt)>0n)continue;return`Amount too small. Minimum deposit for this asset is ${B.formatUnits(10n**BigInt(be-gt),be)} ${H.asset.symbol}.`}catch{continue}return null},[fe]),et=!Y&&!!Qe&&!Mt,Ue=Be??Qt,Ge=!!Qe&&ji(Ue,Qe),Me=u.useMemo(()=>{if(!Qe)return null;if(Mt)return Qe.asset.balance>=Qe.amount?null:`Insufficient ${Qe.asset.symbol}. Need ${B.formatUnits(Qe.amount,Qe.asset.decimals)} ${Qe.asset.symbol}.`;if(!et||!Ge)return null;const H=k?Qe.amount:Qe.amount+Ue.fee;return Qe.asset.balance>=H?null:`Insufficient ${Qe.asset.symbol}. Need ${B.formatUnits(H,Qe.asset.decimals)} ${Qe.asset.symbol} including gas.`},[et,Mt,Qe,Ge,Ue,k]),[Zt,Rt]=u.useState(!1),Pt=fe[0]?.asset?.chainId,tn=We.find(H=>H.isNative&&H.chainId===Pt)?.balance??0n;u.useEffect(()=>{if(!e||!Pt){Rt(!1);return}let H=!1;return(async()=>{try{const be=await p.getClientForChain(Pt).getGasPrice()*150000n;H||Rt(tn<be)}catch{H||Rt(!1)}})(),()=>{H=!0}},[e,Pt,tn]);const At=!et||Ge&&!_t&&!Nt&&!Me,qn=u.useCallback((H,be)=>cu({asset:H,assetIndex:be,selectedAssetCount:fe.length,address:pe,escrowOnly:k,isNon7702:Y}),[Y,fe.length,pe,k]),qt=u.useMemo(()=>{if(!Qe||!Ue||!Ge)return null;const H=k?Qe.amount:Qe.amount+Ue.fee;return{symbol:Qe.asset.symbol,decimals:Qe.asset.decimals,grossAmount:H,netAmount:Ue.net,totalFee:Ue.fee,gasFee:Ue.fee,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"estimated"}},[Qe,Ue,Ge,k]),zn=parseFloat(fe[0]?.amount||"")||0,dn=fe.length>0&&fe[0]?.asset&&fe[0]?.amount&&zn>0&&G&&!st&&!Se&&!Me&&At&&!se;u.useEffect(()=>{if(!k||!I||!A||Bt.current||!G)return;const H=r[0];if(!H)return;const be=p.getAllAssetsForChain(H,[]).find(Ee=>p.addressesEqual(Ee.address,I));let $e;if(be)$e=be;else if(F!==void 0&&R)$e={address:I,symbol:R,name:R,decimals:F,chainId:H,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,isNative:S.isNativeToken(I)};else{console.warn("[DepositModal] escrowOnly: no matching asset and missing escrowTokenDecimals/escrowTokenSymbol for",I);return}Bt.current=!0,Ae([{asset:$e,amount:A}])},[k,I,A,F,R,G,r]),u.useEffect(()=>{!k||!dn||on.current||st||(on.current=!0,ie())},[k,dn,st]);const bn=ze||pt||Se||Me,dt=()=>{if(st)return"Executing Deposit...";if(!G)return"Wallet Not Connected";if(D==="7702"){if(!we)return"Loading...";if(!ve)return"Authentication Required"}return fe[0]?.asset?fe[0]?.amount?Se?"AMOUNT TOO SMALL":Me?"INSUFFICIENT BALANCE":et&&!At?Nt?"GAS UNAVAILABLE":"ESTIMATING GAS":"DEPOSIT":"ENTER AMOUNT":"SELECT TOKEN"};return e?a.jsx(an,{isOpen:e,onClose:t,closeOnBackdropClick:n,title:i||`Deposit to your ${J} account`,subtitle:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:_o,alt:"","aria-hidden":"true",style:{width:"13px",height:"13px",flexShrink:0,...Q?{filter:"invert(0.6)"}:{}}}),a.jsx("p",{style:{fontSize:"12px",color:ee.textSecondary,margin:"0",lineHeight:"1.4",fontFamily:p.font.ui},children:`Deposit collateral to your ${J} Account from any supported network.`})]}),dark:Q,overlayContent:bt||Re||lt!=="idle"&&y?a.jsx("div",{}):void 0,styles:l,theme:oe,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px"},children:[a.jsx(yu,{selectedDepositAssets:fe,depositAssets:tt,secondAssetOptions:_e,loadingAssets:Ce,allowSecondAsset:h,theme:oe,styles:l,dark:Q,dk:ee,onSelect:Tt,onAmountChange:Nn,onAdd:xt,onRemove:gn,resolveMaxAmount:qn,onViewAllAssets:U}),et&&Qe&&a.jsx(ar,{fontFamily:l?.fontFamily||oe.typography.fontFamily,textPrimary:ee.textPrimary,textSecondary:ee.textSecondary,cardBg:Q?ee.inputBg:"#ffffff",cardBorder:ee.cardBorder,resolvedDark:Q,darkCardBorder:ee.cardBorder,primaryColor:X,feePreview:qt,isLoading:_t||et&&!Ge,errorText:Nt}),a.jsx(ku,{intentStatus:Re,postDepositSuccess:kt,postDepositAmount:ht,postDepositStatus:lt,depositActionLabel:x,sourceChainName:fe[0]?.asset?.chainId?p.getChainName(fe[0].asset.chainId):"Destination Chain",directDepositStatus:ct,directDepositTxHash:ae,directDepositChainId:Fe,styles:l}),a.jsx(Cu,{isOpen:bt||!!Re||lt!=="idle"&&!!y,onClose:()=>{Ut(!1),Re&&Ft();const H=lt==="success"&&!Re,be=Re?.overallStatus==="success"&&(y?lt==="success":!0);(H||be)&&t()},onConfirm:ne,data:Vt,isExecuting:st,error:pt,theme:oe,styles:l,intentStatus:Re,postDepositStatus:lt,hasPostDepositInstruction:!!y}),ge&&a.jsxs(Ii,{dk:ee,dark:Q,borderRadius:oe.borderRadius.md,children:["\u26A1 ",ge]}),Zt&&a.jsx(Ii,{dk:ee,dark:Q,borderRadius:oe.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:[bn?a.jsx("div",{style:{marginBottom:"10px",fontSize:"12px",lineHeight:"1.45",color:ee.errorText,fontFamily:l?.fontFamily||oe.typography.fontFamily},children:bn}):null,a.jsx(p.Button,{variant:"outline",fullWidth:!0,onClick:wn,disabled:!dn||!G||st,theme:oe,dark:Q,styles:l,children:dt()})]})]})}):null});function mr(e,t=!0){const n=p.relayerService.getBaseUrl(),s=`${n}:${e?.toLowerCase()??""}`,[o,r]=u.useState({scope:s,actions:[],error:null}),[i,l]=u.useState(0),c=u.useCallback(()=>l(d=>d+1),[]);return u.useEffect(()=>{if(!t||!e)return;const d=new AbortController,f=new p.RelayerService;f.setBaseUrl(n);let m;const h=async()=>{try{const w=await f.getWalletActions(e,d.signal);d.signal.aborted||r({scope:s,actions:w,error:null})}catch(w){if(d.signal.aborted)return;if(w instanceof p.SpiceflowError&&w.context.httpStatus===404){r({scope:s,actions:[],error:null});return}r(g=>({scope:s,actions:g.scope===s?g.actions:[],error:"Activity is temporarily unavailable. Refresh to check again."}))}d.signal.aborted||(m=setTimeout(h,5e3))};return h(),window.addEventListener("online",c),()=>{d.abort(),clearTimeout(m),window.removeEventListener("online",c)}},[n,e,t,s,i,c]),{actions:t&&o.scope===s?o.actions:[],error:o.scope===s?o.error:null,refresh:c}}function sn(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}function Xt(e,t){if(!Number.isInteger(t)||t<0||t>255)throw new Error("Invalid token decimals");if(!/^\d+(?:\.\d*)?$/.test(e))throw new Error("Enter a valid amount.");if((e.split(".")[1]?.replace(/0+$/,"")??"").length>t)throw new Error(`Use at most ${t} decimal places for this source.`);return B.parseUnits(e,t)}function _n(e,t,n){const s=sn(e,t,n,"floor");if(sn(s,n,t,"floor")!==e)throw new Error(`Use at most ${n} decimal places for this delivered token.`);return s}function Su(e){return`0x77${e.slice(4)}`}function Ts({userAddress:e,destinationChainId:t,deliveryToken:n,deliveryAmount:s,withdrawalAmount:o,deliveryRecipient:r,deliveryTransfers:i,requestTimestampMs:l,expiresAt:c,metadata:d,requestNonce:f}){if(c!==void 0&&(!Number.isSafeInteger(c)||c<=0))throw new Error("Withdrawal expiry must be a positive Unix timestamp in seconds");const m=i?.length?i:[{token:n,recipient:r,amount:o??s}],h=m.reduce((b,v)=>b+v.amount,0n);if(h<=0n)return null;const w=l??Date.now(),g=BigInt(Math.floor(w/1e3)),y=e??r,x=Su(B.keccak256(B.encodeAbiParameters([{type:"address"},{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"},...f?[{type:"bytes32"}]:[]],[y,n,r,h,BigInt(t),BigInt(w),...f?[f]:[]])));return{chainId:S.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:[{to:S.ZERO_ADDRESS,value:0n,data:B.encodeFunctionData({abi:S.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${t}`,idempotenceKey:x,nbf:0n,exp:c===void 0?g+3600n:BigInt(c),metadata:d??"{}",transfers:m.map(b=>({token:B.getAddress(b.token).toLowerCase(),to:B.getAddress(b.recipient).toLowerCase(),amount:b.amount}))}]})}]}}const hr=e=>{const[t,n]=u.useState(!1),s=u.useContext(p.SpiceFlowProviderContext),{dark:o,dk:r}=p.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(p.PrivyLogin,{...e})},Pi=({isSuccess:e,type:t,chainName:n,explorerUrl:s,txHash:o,dark:r=!1,successBg:i="#d1fae5",successBorder:l="#6ee7b7",successText:c="#065f46",errorBg:d="#fee2e2",errorBorder:f="#fca5a5",errorText:m="#dc2626",textSecondary:h="#6b7280"})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 16px",borderRadius:"8px",backgroundColor:e?i:d,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:p.font.mono,letterSpacing:"0.5px",color:e?c:m},children:e?`${t.toUpperCase()} CONFIRMED`:`${t.toUpperCase()} FAILED`}),a.jsxs("p",{style:{margin:"2px 0 0 0",fontSize:"12px",color:h},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:h,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"})]})]})]}),Ui=`
|
|
32
32
|
@keyframes slideUp {
|
|
33
33
|
from { transform: translateY(100%); }
|
|
34
34
|
to { transform: translateY(0); }
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
from { opacity: 0; transform: translateY(4px); }
|
|
42
42
|
to { opacity: 1; transform: translateY(0); }
|
|
43
43
|
}
|
|
44
|
-
`,Wi=({title:e,showChevron:t,expanded:n,onToggleDetails:s,showClose:o,onClose:r,fontFamily:i,labelColor:l,textPrimary:c,closeHoverBg:d,closePressedBg:f})=>{const[m,h]=p.useState(!1),[y,g]=p.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(Jn,{color:l,direction:n?"up":"down"})]}),o&&a.jsx("button",{onClick:r,onMouseEnter:()=>h(!0),onMouseLeave:()=>{h(!1),g(!1)},onMouseDown:()=>g(!0),onMouseUp:()=>g(!1),style:{background:y?f:m?d:"none",border:"none",borderRadius:"4px",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:m||y?c:l,transform:y?"scale(0.9)":m?"scale(1.1)":"scale(1)",transition:u.transition.interactive},children:a.jsx(Es,{size:16})})]})},Li=({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(u.Spinner,{size:24,borderWidth:3,color:r}),a.jsxs("div",{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontWeight:600,fontFamily:u.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]})]})]}),qi=({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:c,theme:d,styles:f,dark:m,intentStatus:h,onRetry:y,onNewTx:g,onRetryTx:w,asOverlay:x=!0,isProcessing:b=!1,showStepBreakdown:C=!0})=>{const{theme:v,primaryColor:k,dark:I,dk:A}=u.useSpiceBrand(f,m),E=d||v,[j,R]=p.useState(!1),B=l??(i?u.getChainName(i):"Network"),M=c??(i&&u.getExplorerUrl(i,"").replace(/\/tx\/.*$/,"")||void 0),D=I?A.cardBg:"#ffffff",U=I?"0 4px 20px rgba(0, 0, 0, 0.4)":"0 4px 20px rgba(0, 0, 0, 0.1)",O=I?"0 -4px 8px -2px rgba(0, 0, 0, 0.4)":"0 -4px 8px -2px rgba(0, 0, 0, 0.15)",F=A.textSecondary,P=I?A.textPrimary:"#374151",z=I?A.inputBg:"#f9fafb",q=I?A.inputBorder:"#e5e7eb",ne=I?A.inputBg:"#f3f4f6",de=I?A.inputBorder:"#e5e7eb",[ie,Y]=p.useState(!0),Q=I?A.inputBg:"#f9fafb",G=I?A.hoverBg:"#f3f4f6",fe=I?{successBg:A.successBg,successBorder:A.successBorder,successText:A.successText,errorBg:A.errorBg,errorBorder:A.errorBorder,errorText:A.errorText}:{},X=h?.steps.find(V=>V.status==="failed")?.error;p.useEffect(()=>{!e&&!h&&R(!1)},[e,h]);const be=()=>{R(!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)},we=()=>{Y(!ie)};if(h){const{steps:V,overallStatus:me}=h,he=me==="processing",Re=me==="success",W=me==="failed",L=V.filter(oe=>oe.transactionHash)[0],$=V.length>1?V.map(oe=>oe.chainName).filter(Boolean).join(" and "):B!=="Network"?B:V[0]?.chainName||B,le=M||(L?u.getExplorerUrl(L.chainId,L.transactionHash||"").replace(/\/tx\/.*$/,""):void 0),se=a.jsxs(a.Fragment,{children:[a.jsx(Wi,{title:he?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:C,expanded:ie,onToggleDetails:we,showClose:!he,onClose:t,fontFamily:f?.fontFamily||E.typography.fontFamily,labelColor:F,textPrimary:P,closeHoverBg:Q,closePressedBg:G}),a.jsx("div",{style:{marginBottom:"16px"},children:he?a.jsx(Li,{chainName:$,bg:ne,border:de,textPrimary:P,labelColor:F,primaryColor:k}):a.jsx(Mi,{isSuccess:Re,type:o,chainName:$,explorerUrl:le,txHash:L?.transactionHash,dark:I,...fe,textSecondary:F})}),C&&a.jsx("div",{style:{overflow:"hidden",maxHeight:ie?"300px":"0px",opacity:ie?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:ie?"16px":"0"},children:a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:V.map((oe,Ie)=>{const _=oe.transactionHash?u.getExplorerUrl(oe.chainId,oe.transactionHash):null;return a.jsx(qi,{bg:z,border:q,left:a.jsx("span",{style:{fontSize:"13px",color:P},children:oe.chainName?`On ${oe.chainName}`:oe.description||`Step ${Ie+1}`}),right:a.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:oe.status==="success"?"#10b981":oe.status==="failed"?"#ef4444":F,fontWeight:500},children:[_&&a.jsx("a",{href:_,target:"_blank",rel:"noopener noreferrer",style:{color:I?A.infoText:"#2563eb",textDecoration:"none"},onClick:je=>je.stopPropagation(),children:"View"}),oe.status==="success"?"\u2713":oe.status==="failed"?"\u2717":"\u25CB"]})},Ie)})})}),!he&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[W&&y&&a.jsx(u.Button,{variant:"outline",fullWidth:!0,onClick:y,theme:E,styles:f,dark:I,children:"TRY AGAIN"}),g&&a.jsxs(u.Button,{variant:"outline",fullWidth:!0,onClick:g,theme:E,styles:f,dark:I,children:["NEW ",o.toUpperCase()," \u2192"]})]})]});return x?a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:j?"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:O},children:se}),a.jsx("style",{children:Ui})]}):a.jsx("div",{style:{backgroundColor:D,borderRadius:"12px",padding:"24px",width:"100%",boxShadow:U},children:se})}if(!e&&!b||!b&&(!r||r.length===0))return null;const N=r?r.every(V=>V.success):!1,J=r?.[0],ee=[...r??[]].reverse().find(V=>V.txHash)?.txHash||J?.txHash;return a.jsxs("div",{style:{position:x?"absolute":"relative",bottom:x?0:void 0,left:x?0:void 0,right:x?0:void 0,zIndex:x?10:void 0,animation:x?j?"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:x?"12px 12px 0 0":"12px",width:"100%",padding:"18px 0 24px",boxShadow:x?O:U},children:a.jsxs("div",{style:{width:"100%",boxSizing:"border-box",padding:"0 24px"},children:[a.jsx(Wi,{title:b?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:!b&&C,expanded:ie,onToggleDetails:b?void 0:we,showClose:!b,onClose:t,fontFamily:f?.fontFamily||E.typography.fontFamily,labelColor:F,textPrimary:P,closeHoverBg:Q,closePressedBg:G}),a.jsx("div",{style:{marginBottom:"16px",animation:"statusFadeIn 220ms cubic-bezier(0.22, 1, 0.36, 1) both"},children:b?a.jsx(Li,{chainName:B,bg:ne,border:de,textPrimary:P,labelColor:F,primaryColor:k}):a.jsx(Mi,{isSuccess:N,type:o,chainName:B,explorerUrl:M,txHash:ee,dark:I,...fe,textSecondary:F})},b?"processing":N?"success":"error"),!b&&C&&r&&r.length>1&&a.jsx("div",{style:{overflow:"hidden",maxHeight:ie?"200px":"0px",opacity:ie?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:ie?"16px":"0"},children:a.jsx("div",{style:{maxHeight:"180px",overflowY:"auto",display:"flex",flexDirection:"column",gap:"8px"},children:r.map((V,me)=>a.jsx(qi,{bg:z,border:q,left:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{fontWeight:600,fontSize:"13px",color:A.textPrimary,fontFamily:u.font.mono},children:V.asset.symbol}),V.amount&&a.jsx("span",{style:{fontSize:"12px",color:F},children:V.amount})]}),right:a.jsx("span",{style:{fontSize:"12px",color:V.success?"#10b981":"#ef4444",fontWeight:500},children:V.success?"\u2713":"\u2717"})},me))})}),!b&&!N&&r&&a.jsx("div",{style:{padding:"12px",backgroundColor:A.errorBg,border:`1px solid ${A.errorBorder}`,borderRadius:"8px",marginBottom:"16px"},children:a.jsx("p",{style:{fontSize:"13px",color:A.errorText,margin:0,lineHeight:1.5},children:X||r.find(V=>!V.success)?.error||`${o.charAt(0).toUpperCase()+o.slice(1)} failed. Please try again.`})}),!b&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[!N&&w&&a.jsxs(u.Button,{variant:"outline",fullWidth:!0,onClick:w,theme:E,styles:f,dark:I,children:["TRY AGAIN ",o.toUpperCase()]}),N&&a.jsx(u.Button,{variant:"outline",fullWidth:!0,onClick:be,theme:E,styles:f,dark:I,children:"DONE"})]})]})}),a.jsx("style",{children:Ui})]})};function mo({activity:e,palette:t,onRefresh:n}){return a.jsxs(a.Fragment,{children:[e.actions.length>0&&a.jsx(Xt,{variant:"info",palette:t,style:{marginTop:12,marginBottom:12},children:a.jsxs("details",{children:[a.jsx("summary",{children:"Recent wallet activity"}),e.actions.map(s=>{const o=s.intents.flatMap(l=>l.steps),r=o.filter(l=>["success","completed"].includes(l.status)).length,i=o.some(l=>["error","reverted"].includes(l.status));return a.jsxs("p",{children:[s.actionId,": ",r,"/",o.length," steps completed.",i?" Remaining work stopped; completed transfers are retained.":r<o.length?" Awaiting backend confirmation.":" Completed."]},s.actionId)}),a.jsx("button",{type:"button",onClick:()=>{e.refresh(),n?.()},children:n?"Refresh activity and balances":"Refresh activity"})]})}),e.error&&a.jsx(Xt,{variant:"warning",palette:t,children:e.error})]})}function zi(e){const t=new Set(S.getEquivalentAddresses(e).map(n=>n.toLowerCase()));return t.add(e.toLowerCase()),t}const Iu=["USDC","USDT","WETH","WBTC"];function Hi(e,t){const n=u.getChainConfig(t);if(!n)return;if(n.nativeCurrency.symbol.toUpperCase()===e.toUpperCase())return{address:S.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 kn(e,t,n){const s=u.getChainConfig(t);if(!s)return;if(n!==void 0){if(S.isNativeToken(e)&&!S.getTokenByAddress(e,n))return;const i=Lo(e,n,t);return i?{address:i.address.toLowerCase(),symbol:i.symbol,decimals:i.decimals,chainId:t}:void 0}if(S.isNativeToken(e))return;const o=zi(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 Au(e){const{sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,intermediaryCandidates:r=Iu}=e;if(Js(t,n))return{strategy:"direct",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} fronted directly`};if(s===o&&(S.isNativeToken(t.address)||!S.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(kn(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(kn(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=Hi(i,s);if(!l||Js(t,l)||Js(n,l))continue;const c=Hi(i,o);if(c&&Js(l,c))return{strategy:"intermediary",sourceAsset:t,outputAsset:n,intermediaryAsset:c,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${i} on source, fronted, then ${i} \u2192 ${n.symbol} on destination`}}throw new u.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 Eu(e){const{route:t,sourceAmount:n,userAddress:s,registry:o,actionCalls:r,slippage:i}=e;async function l(c,d,f,m){const h=await o.resolveSwap({type:"swap",tokenIn:d,tokenOut:f,amountIn:m,maxSlippage:i},c,s);if(!h)throw new u.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${d} \u2192 ${f} on chain ${c}. No liquidity available for this pair.`,{chainId:c,tokenIn:d,tokenOut:f,amountIn:m.toString()});return h}switch(t.strategy){case"direct-swap":{const c=await l(t.destinationChainId,t.sourceAsset.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...c.calls,...r]}],solverFrontToken:t.outputAsset,solverFrontAmount:0n,resolvedSwaps:{sourceSwap:c}}}case"direct":{const c=kn(t.sourceAsset.address,t.destinationChainId,t.sourceChainId)||t.sourceAsset;if(zi(c.address).has(t.outputAsset.address.toLowerCase()))return{chainBatches:[{chainId:t.destinationChainId,calls:r}],solverFrontToken:c,solverFrontAmount:n,resolvedSwaps:{}};const d=await l(t.destinationChainId,c.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...d.calls,...r]}],solverFrontToken:c,solverFrontAmount:n,resolvedSwaps:{destinationSwap:d}}}case"source-swap":{const c=kn(t.outputAsset.address,t.sourceChainId,t.destinationChainId);if(!c)throw new u.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 d=kn(t.outputAsset.address,t.destinationChainId,t.destinationChainId);if(!d)throw new u.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,c.address,n);return{chainBatches:[{chainId:t.sourceChainId,calls:f.calls},{chainId:t.destinationChainId,calls:r}],solverFrontToken:d,solverFrontAmount:f.amountOutMinimum,resolvedSwaps:{sourceSwap:f}}}case"intermediary":{if(!t.intermediaryAsset)throw new u.SpiceflowError("ROUTE_STRATEGY_ERROR","Intermediary strategy requires an intermediary asset but none was provided in the route plan.",{strategy:t.strategy});const c=kn(t.intermediaryAsset.address,t.sourceChainId,t.destinationChainId);if(!c)throw new u.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 d=await l(t.sourceChainId,t.sourceAsset.address,c.address,n),f=await l(t.destinationChainId,t.intermediaryAsset.address,t.outputAsset.address,d.amountOutMinimum);return{chainBatches:[{chainId:t.sourceChainId,calls:d.calls},{chainId:t.destinationChainId,calls:[...f.calls,...r]}],solverFrontToken:t.intermediaryAsset,solverFrontAmount:d.amountOutMinimum,resolvedSwaps:{sourceSwap:d,destinationSwap:f}}}default:throw new u.SpiceflowError("ROUTE_STRATEGY_ERROR",`Unknown route strategy: ${t.strategy}`,{strategy:t.strategy})}}function Fu(e,t,n){if(!e||!t)return null;if(e._source==="wallet"){if(t===e.chainId)return{address:e.address,symbol:e.symbol,name:e.name||e.symbol,decimals:e.decimals,logoURI:e.logoURI};const m=S.getTokensForChain(t).find(h=>h.equivalenceGroup==="USDC"&&h.symbol.toUpperCase()==="USDC");return!m||n.length>0&&!n.some(h=>u.addressesEqual(h.address,m.address))?null:{address:m.address,symbol:"USDC",name:m.name||"USD Coin",decimals:m.decimals,logoURI:m.logo}}const s=Kn(e,t),o=Object.entries(e.chainTokens??{}).flatMap(([m,h])=>{const y=gn(m);return y?.chainId===t?[{parsed:y,detail:h}]:[]}),r=m=>n.find(h=>u.addressesEqual(h.address,m))??null,i=m=>{const h=o.find(({parsed:w})=>u.addressesEqual(w.address,m));if(!h)return null;const y=u.getChainConfig(t);if(S.isNativeToken(m))return y?{address:S.ZERO_ADDRESS,symbol:y.nativeCurrency.symbol,name:y.nativeCurrency.name,decimals:y.nativeCurrency.decimals,logoURI:e.logoURI}:null;const g=y?.supportedTokens?.find(w=>u.addressesEqual(w.address,m));return!g||!Wo(e,m,t)?null:{address:h.parsed.address,symbol:g.symbol,name:g.name||h.detail?.name||e.displayName||e.name||e.symbol,decimals:g.decimals,logoURI:g.logo||e.logoURI}},l=o.map(({parsed:m})=>m.address).filter(S.isNativeToken);for(const m of[...s,...l]){if(S.isNativeToken(m)){const g=i(m);if(g)return g}const h=r(m);if(h)return h;const y=i(m);if(y)return y}if(e.chainTokens||e.receiptTokenId)return null;const c=sn(e,t);if(c){const m=r(c);if(m)return m}const d=kn(e.address,t,e.chainId);return d?r(d.address)||(n.length>0?null:{address:d.address,symbol:d.symbol||e.symbol,name:e.displayName||e.name||e.symbol,decimals:d.decimals??e.decimals,logoURI:e.logoURI}):null}function Tu(e){const t=e.find(n=>S.isSpicenetChainId(n.chainId))?.calls?.[0]?.data;if(!t)return null;try{const n=T.decodeFunctionData({abi:S.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 Bu(e,t){if(!e||e.length!==t.length)return!1;const n=s=>s.reduce((o,r)=>o+r.amount,0n);return n(e)!==n(t)?!1:e.every((s,o)=>{const r=t[o];return s.token.toLowerCase()!==r.token.toLowerCase()||s.recipient.toLowerCase()!==r.recipient.toLowerCase()?!1:s.recipient.toLowerCase()===S.SPICE_GAS_FEE_RECIPIENT.toLowerCase()?u.amountsWithinBps(s.amount,r.amount,100n):s.recipient.toLowerCase()!==S.SPICE_PLATFORM_FEE_RECIPIENT.toLowerCase()||s.amount===r.amount})}function Ru(e,t){const n=e.intents.flatMap(r=>r.batches).filter(r=>{const i=u.getBatchFees(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 ju(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 Vi(e,t){if(!e.token||!e.recipient||e.chainId===null)return null;const n=Ru(t,e.chainId);if(!n)return null;const{gasFee:s,bridgeFee:o,spicenetFee:r}=u.getBatchFees(n),i=s+o,l=e.grossAmountRaw-i-r;if(l<=0n)throw new Error("Withdrawal amount does not cover the network fee.");const c=[{token:e.token.address,recipient:e.recipient,amount:l}];return i>0n&&c.push({token:e.token.address,recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:i}),r>0n&&c.push({token:e.token.address,recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:r}),ju(c)}function Ou(e,t,n){const s=Vi(e,t);return!s||Bu(Tu(n),s)?null:e.buildWithdrawBatches(s)}async function Qi(e){if(e.executionContextRef.current){await Gi(e);return}if(!e.batches.length||!e.walletAddress||!e.recipient)return;const t=u.relayerService.getBaseUrl();e.ui.setIsExecuting(!0),e.ui.setExecutionError(null),e.ui.setExecutionProgress(null),e.executionContextRef.current=null,e.ui.setLockedGasFee(e.gasFee);try{let n=e.batches;if(e.isNon7702&&e.onWithdrawExecute)await e.onWithdrawExecute(e.amount);else{if(!e.isNon7702&&!n.some(r=>S.isSpicenetChainId(r.chainId)))throw new Error("Spice withdrawals must include a Spicenet funding batch before the destination chain batch.");const s=e.token?.address||"",o={useCustomTransfers:!0};if(e.buildSpicenetBatch){const r=e.feeEstimate??await e.execution.estimate(n,s,0n,o),i=Vi(e,r);i&&(n=e.buildWithdrawBatches(i));const l=r.intents[0]?.batches.find(c=>c.chainId===e.chainId)??r.intents[0]?.batches[0]??null;l&&e.ui.setLockedGasFee(u.getBatchFees(l).totalFee)}else{const r=(e.feeEstimate??await e.execution.estimate(n,s,0n,o)).intents[0]?.batches[0]??null;r&&e.ui.setLockedGasFee(u.getBatchFees(r).totalFee)}await e.execution.execute(n,s,0n,r=>{r.actionId&&r.intentId&&typeof r.intentIndex=="number"&&typeof r.totalSteps=="number"&&(e.executionContextRef.current={actionId:r.actionId,intentId:r.intentId,intentIndex:r.intentIndex,totalSteps:r.totalSteps,autoContinue:r.autoContinue,apiUrl:t,finish:()=>gr(e)}),e.ui.setExecutionProgress(r)},void 0,e.buildSpicenetBatch?{...o,adjustBatchesForEstimate:({feeEstimate:r,chainBatches:i})=>Ou(e,r,i)}:{...o,skipPreSubmitFeeEstimate:!0})}await gr(e)}catch(n){const s=n instanceof Error?n.message:"Withdraw failed";e.ui.setExecutionError(s)}finally{e.ui.setIsExecuting(!1)}}async function gr(e){window.dispatchEvent(new CustomEvent("withdraw-completed")),await e.onWithdrawSuccess?.({token:e.token?.symbol||"",amount:e.amount,chainId:e.chainId})}async function Gi(e){const t=e.executionContextRef.current;if(!t){if(e.isNon7702&&e.onWithdrawExecute){await Qi(e);return}e.ui.setExecutionError("The previous withdrawal action is unavailable. Reconcile it before starting another.");return}const n=t.apiUrl?new u.RelayerService:u.relayerService;t.apiUrl&&n.setBaseUrl(t.apiUrl),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 s=t.totalSteps;for(let o=0;o<t.totalSteps;o++)if((await n.checkStepStatus(t.intentId,o)).data.status!=="success"){s=o;break}if(s>=t.totalSteps)e.ui.setExecutionProgress(o=>({...o||{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 o=s;o<t.totalSteps;o++){const r=await mi({actionId:t.actionId,intentIndex:t.intentIndex,intentId:t.intentId,stepIndex:o,chainId:e.chainId??void 0,observeOnly:t.autoContinue,maxPolls:t.autoContinue?Number.POSITIVE_INFINITY:void 0,relayer:n,completeOnExecution:!e.isNon7702&&o===t.totalSteps-1,onStatusMessage:(i,l)=>{e.isMountedRef.current&&e.ui.setExecutionProgress({step:"executing",message:i,txHash:l,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}});if(!e.isMountedRef.current)return;e.ui.setExecutionProgress({step:o===t.totalSteps-1?"success":"executing",message:o===t.totalSteps-1?"Transaction successful!":"Executing remaining steps...",txHash:r,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}await(t.finish?.()??gr(e))}catch(s){const o=s instanceof Error?s.message:"Withdraw failed";e.ui.setExecutionError(o)}finally{e.ui.setIsExecuting(!1)}}async function Du(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=>u.getBatchFees(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:u.getBatchFees(s).totalFee,feeEstimate:t}}function xr(e,t){return T.formatUnits(e,t).replace(/(\.\d*?[1-9])0+$|\.0+$/,"$1")}function Nu(e,t,n){return tn(e,t,n,"floor")}function Ki(e,t,n=!1){if(e<=0)return"$0";if(!t||!Number.isFinite(t)||t<=0)return"\u2014";const s=e*t;return`$${s>=1?s.toFixed(3).replace(/0+$/,"").replace(/\.$/,""):s.toFixed(4).replace(/0+$/,"").replace(/\.$/,"")}${n?" (stale)":""}`}function Pu(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}const Mu=36;function es(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=Mu}function Bs(e){return!e.balanceError&&e.balanceStatus!=="stale"&&e.balance>=0n&&es(e.decimals)&&!e.isNative&&!S.isNativeToken(e.address)}function yr(e,t){if(!e.chainTokens||Array.isArray(e.chainTokens))return null;let n;for(const[s,o]of Object.entries(e.chainTokens)){const r=gn(s);if(!(!r||r.chainId!==t)){if(n)return null;n={address:r.address,decimals:o?.decimals}}}return n??null}function wr(e,t,n){if(e<0n)return null;const s=S.convertAmountBetweenDecimals(e,t,n);return S.convertAmountBetweenDecimals(s,n,t)===e?s:null}function Bn(e,t){return es(e.receiptTokenDecimals)&&wr(t,e.decimals,e.receiptTokenDecimals)!==null}function Uu(e,t){if(!es(e.receiptTokenDecimals))return-1n;const n=S.convertAmountBetweenDecimals(t,e.decimals,e.receiptTokenDecimals),s=S.convertAmountBetweenDecimals(n,e.receiptTokenDecimals,e.decimals);return s<=t?s:-1n}function ho(e,t){return e.owner?.toLowerCase()===t.toLowerCase()}function Wu(e,t,n,s,o){if(!e)return[];const r=[];for(const i of Array.isArray(e)?e:[e]){if(i.amount<0n||!ho(i.asset,s)||i.asset.chainId!==o)return null;const l=ye(i.asset);if(l!==ye(t)&&l!==ye(n))return null;const c=r.find(d=>d.positionId===l);c?c.amount+=i.amount:r.push({positionId:l,amount:i.amount})}return r}function Zi(e,t,n,s,o,r){if(!n||!/^0x[0-9a-f]{40}$/i.test(n)||!ho(e,n)||e.chainId!==s||!Bs(e))return;let i,l,c;if(e.location==="embedded"&&e._source!=="spice"){i=e,c=e.address;const v=t.filter(k=>{const I=yr(k,s);return k.location==="rollup"&&k._source!=="wallet"&&ho(k,n)&&k.chainId===s&&Bs(k)&&!!k.receiptTokenId&&!!I&&u.addressesEqual(I.address,c)});if(v.length!==1)return;[l]=v}else if(e.location==="rollup"&&e._source!=="wallet"&&e.receiptTokenId){l=e;const v=yr(e,s);if(!v)return;c=v.address;const k=t.filter(I=>I.location==="embedded"&&I._source!=="spice"&&ho(I,n)&&I.chainId===s&&Bs(I)&&u.addressesEqual(I.address,c));if(k.length!==1)return;[i]=k}else return;if(!i||!l||!c||!Bs(i)||!Bs(l)||i.location!=="embedded"||l.location!=="rollup"||!l.receiptTokenId||!es(i.decimals)||i.decimals!==l.decimals||!es(l.receiptTokenDecimals))return;const d=yr(l,s);if(!d||!u.addressesEqual(d.address,c)||d.decimals!==void 0&&d.decimals!==i.decimals)return;const f=ye(i),m=ye(l);if(f===m||t.filter(v=>ye(v)===f).length!==1||t.filter(v=>ye(v)===m).length!==1)return;let h=i.balance,y=o??l.balance;if(y<0n||y>l.balance)return;const g=Wu(r,i,l,n,s);if(g===null)return;for(const v of g)if(v.positionId===f){if(v.amount>h)return;h-=v.amount}else{if(v.amount>y||!Bn(l,v.amount))return;y-=v.amount}const w=ye(e),x=e.decimals;if(!es(x))return;const b=wr(h,i.decimals,x),C=wr(y,l.decimals,x);if(!(b===null||C===null))return{wallet:i,escrow:l,owner:n,chainId:s,token:c,decimals:i.decimals,representativePositionId:w,representativeDecimals:x,walletAvailable:h,escrowAvailable:y,availableBalance:b+C,...g.length===1?{reserve:g[0]}:{},reserves:g}}function Yi(e,t,n,s){const o=ye(e);return{positionId:o,asset:e,amount:t,reservedAmount:n.find(r=>r.positionId===o)?.amount??0n,availableAmount:s}}function br(e,t,n,s){if(t<=0n)throw new RangeError("Enter an amount within the available balance.");const o=s?.quoteOnly===!0;if(!o&&t>e.availableBalance)throw new RangeError("Enter an amount within the available balance.");let r,i,l=0n,c=0n,d=0n;if(n==="escrow"){const f=t<e.escrowAvailable?t:e.escrowAvailable;if(i=Uu(e.escrow,f),i<0n)throw new RangeError("Enter an amount within the available balance.");if(l=t-i,r=l,c=t,!o&&l>e.walletAvailable||!Bn(e.escrow,l)||!Bn(e.escrow,c))throw new RangeError("Enter an amount within the available balance.")}else if(r=t<e.walletAvailable?t:e.walletAvailable,d=r,c=t-r,i=c,!o&&c>e.escrowAvailable||!Bn(e.escrow,c))throw new RangeError("Enter an amount within the available balance.");return{owner:e.owner,chainId:e.chainId,token:e.token,decimals:e.decimals,representativePositionId:e.representativePositionId,representativeDecimals:e.representativeDecimals,route:n,grossAmount:t,insufficient:r>e.walletAvailable||i>e.escrowAvailable,positions:[Yi(e.wallet,r,e.reserves,e.walletAvailable),Yi(e.escrow,i,e.reserves,e.escrowAvailable)],walletDeposit:l,escrowWithdrawal:c,walletInPlace:d}}function vr(e,t,n,s,o){if(!e.positions.find(f=>f.positionId===e.representativePositionId))throw new Error("The source balance changed. Review the available amount before continuing.");const r=t.filter(f=>ye(f)===e.representativePositionId);if(r.length!==1)throw new Error("The source balance changed. Review the available amount before continuing.");if(e.insufficient)throw new Error("The source balance changed. Review the available amount before continuing.");const i=e.positions.filter(f=>f.reservedAmount>0n).map(f=>({asset:f.asset,amount:f.reservedAmount})),l=Zi(r[0],t,n,s,o,i);if(!l||l.representativePositionId!==e.representativePositionId||l.representativeDecimals!==e.representativeDecimals||l.owner.toLowerCase()!==e.owner.toLowerCase()||l.chainId!==e.chainId||!u.addressesEqual(l.token,e.token)||l.decimals!==e.decimals)throw new Error("The source balance changed. Review the available amount before continuing.");if(e.grossAmount<=0n||e.positions.length!==2)throw new Error("The source balance changed. Review the available amount before continuing.");const c=e.positions.find(f=>f.positionId===ye(l.wallet)),d=e.positions.find(f=>f.positionId===ye(l.escrow));if(!c||!d||c.positionId===d.positionId||c.amount<0n||d.amount<0n||c.reservedAmount<0n||d.reservedAmount<0n)throw new Error("The source balance changed. Review the available amount before continuing.");if(e.route==="escrow"){if(e.walletDeposit!==c.amount||e.walletInPlace!==0n||e.escrowWithdrawal!==e.grossAmount||c.amount+d.amount!==e.grossAmount||!Bn(l.escrow,d.amount)||!Bn(l.escrow,c.amount)||!Bn(l.escrow,e.escrowWithdrawal))throw new Error("The source balance changed. Review the available amount before continuing.")}else if(e.walletDeposit!==0n||e.walletInPlace!==c.amount||e.escrowWithdrawal!==d.amount||c.amount+d.amount!==e.grossAmount||!Bn(l.escrow,d.amount))throw new Error("The source balance changed. Review the available amount before continuing.");if(c.amount>l.walletAvailable||d.amount>l.escrowAvailable)throw new Error("The source balance changed. Review the available amount before continuing.");for(const f of e.positions){const m=t.find(h=>ye(h)===f.positionId);if(!m||m.decimals!==f.asset.decimals||m.receiptTokenDecimals!==f.asset.receiptTokenDecimals||m.receiptTokenId!==f.asset.receiptTokenId)throw new Error("The source balance changed. Review the available amount before continuing.")}}function go(e,t,n){const s=n.filter(o=>o.amount>0n);return{chainId:e,domain:"evm",tokenTransfers:[],calls:S.isNativeToken(t)?s.map(o=>({to:o.recipient,value:o.amount,data:"0x"})):s.map(o=>({to:t,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[o.recipient,o.amount]})}))}}new Set([S.SPICE_GAS_FEE_RECIPIENT,S.SPICE_PLATFORM_FEE_RECIPIENT].map(e=>e.toLowerCase()));function Lu(e){const t=new Map;for(const n of e){if(n.amount<=0n)continue;const s=T.getAddress(n.token),o=T.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 qu(e,t){return`0x${t}${e.slice(4)}`}function Xi(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 m=o?.find(E=>E.chainId===f.chainId);if(!m)return f;const h=u.getBatchFees(m),y=h.totalFee;if(y<=0n)return f;const g=(f.tokenTransfers??[]).filter(E=>r(E)&&T.getAddress(E.to).toLowerCase()===t.toLowerCase()),w=g.find(E=>!S.isNativeToken(T.getAddress(E.token)))??g[0];if(!w)return f;const x=T.getAddress(w.token),b=S.isNativeToken(x);let C=!1;const v=(f.tokenTransfers??[]).map(E=>C||!r(E)||T.getAddress(E.to).toLowerCase()!==t.toLowerCase()||T.getAddress(E.token).toLowerCase()!==x.toLowerCase()?E:(C=!0,{...E,amount:s?.payoutAlreadyGross?BigInt(E.amount):BigInt(E.amount)+y}));if(!C)return f;const k=(E,j)=>b?{to:E,value:j,data:"0x"}:{to:x,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[E,j]})},I=[];h.spicenetFee>0n&&I.push(k(S.SPICE_PLATFORM_FEE_RECIPIENT,h.spicenetFee));const A=h.gasFee+h.bridgeFee;return A>0n&&I.push(k(S.SPICE_GAS_FEE_RECIPIENT,A)),{...f,tokenTransfers:v,calls:[...I,...f.calls]}}),l=i.flatMap(f=>(f.tokenTransfers??[]).filter(r).map(m=>{const h=T.getAddress(m.token),y=T.getAddress(m.to),g=[{token:h,to:y,amount:BigInt(m.amount)}];return{chainId:f.chainId,transfers:Lu(g)}}));if(l.length===0)return e;const c=s?.requestTimestampMs??Date.now(),d=BigInt(Math.floor(c/1e3))+3600n;return[{chainId:S.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:l.map((f,m)=>{const h=T.keccak256(T.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"}],[t,f.transfers[0].token,f.transfers.reduce((g,w)=>g+w.amount,0n),BigInt(f.chainId),BigInt(c+m)])),y=qu(h,"77");return{to:"0x0000000000000000000000000000000000000000",value:0n,data:T.encodeFunctionData({abi:S.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${f.chainId}`,idempotenceKey:y,nbf:0n,exp:d,metadata:"{}",transfers:f.transfers.map(g=>({token:g.token.toLowerCase(),to:g.to,amount:g.amount}))}]})}})},...i]}function Rn(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)),...Xi(o.filter(r),t,n,s)]}class ts extends Error{constructor(t,n){super("The selected balance cannot cover the fee funding amount"),this.requiredAmount=t,this.balance=n,this.name="InsufficientFeeFundingBalanceError"}}function Cr(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:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:o},{to:S.SPICE_GAS_FEE_RECIPIENT,amount:s}].filter(l=>l.amount>0n);return e.map(l=>l===r?{...l,calls:[...l.calls,...i.map(c=>({to:n,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[c.to,c.amount]})}))],tokenTransfers:[...l.tokenTransfers??[],...i.map(c=>({from:t,to:c.to,token:n,amount:c.amount}))]}:l)}async function Ji(e,t,n,s,o){const r=S.hashChainBatches(e),i=await u.relayerService.estimateBatchGas({user:t,outputToken:n,signal:s,requireSimulation:!0,includePlatformFee:o!==void 0,chainBatches:e.map((l,c)=>({...l,hash:r[c].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 $i(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?.preview)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,c=t<l?t:l,d=l-c;if(d>0n&&e.fundShortfall===!1)throw new ts(l,t);const f=d>0n?(d*110n+99n)/100n+2n:0n;let m=f,h;const y=Rn(await e.buildBatches(f,{actionAmountOverride:e.actionAmountFor?.(l),onSourceSpend:x=>{m=x},onActionCalls:x=>{h=x}}),e.owner),g=Cr(y,e.owner,e.token,s+r,o),w=await Ji(g,e.owner,e.token,e.signal);if(w<=s&&(s-w)*100n<=w*15n)return{preview:{...n.preview,grossAmount:f,netAmount:0n,gasFee:s,totalFee:l,gasQuoteSource:"estimated"},feeEstimate:n.feeEstimate,grossFundingAmount:f,proceedsAvailable:t,proceedsUsed:c,fundingBatches:g,sourceSpendCap:m,destinationAmount:0n,actionDefinition:h};s=w}throw new Error("Action proceeds fee estimate did not converge")}function _i(e,t){let n,s;if(S.isNativeToken(t)){if(e.data!=="0x")return null;n=e.to,s=e.value}else{if(!u.addressesEqual(e.to,t))return null;try{const o=T.decodeFunctionData({abi:T.erc20Abi,data:e.data});if(o.functionName!=="transfer")return null;[n,s]=o.args}catch{return null}}return u.addressesEqual(n,S.SPICE_GAS_FEE_RECIPIENT)?{gas:s,platform:0n}:u.addressesEqual(n,S.SPICE_PLATFORM_FEE_RECIPIENT)?{gas:0n,platform:s}:null}async function zu(e,t,n){const s=u.getClientForChain(e);return S.isNativeToken(n)?s.getBalance({address:t}):s.readContract({address:n,abi:T.erc20Abi,functionName:"balanceOf",args:[t]})}function ns(e,t,n){return e.map(s=>s.chainId===t?{...s,calls:s.calls.filter(o=>!_i(o,n))}:s)}function el(e,t,n){if(!e.feeOnlyAction)return{};const s=e.embeddedWalletAddress??e.providerEmbeddedAddress,o=e.feeQuote?.fundingSource,r=o&&o.kind!=="proceeds"?void 0:e.actionProceeds,i=o&&(o.kind==="input"||o.kind==="balance"&&o.asset?._source==="wallet")?o:void 0;if(r||e.feeQuote?.fundingConversion||i){const f=e.feeQuote?.fundingConversion,m=r??{token:t,resolve:async()=>0n},h=e.feeQuote?.preview,y=e.feeQuote?.proceedsUsed,g=f?.fromProceeds?f.tokenIn:t;if(!h||y===void 0||!i&&m.token.toLowerCase()!==g.toLowerCase())throw new Error("Refresh the action proceeds quote");const w=h.gasFee+(h.bridgeFee??0n),x=h.spicenetFee,b=i?async()=>{e.validateFeeQuote?.();const v=await zu(e.resolvedChainId,s,i.token);e.validateFeeQuote?.();const k=i.kind==="input"?i.amount:(f?.amountInMax??y)+(i.reservedAmount??0n);if(e.signal?.aborted||v<k||f&&f.amountOut<w+x)throw new Error("The fee funding balance changed; refresh before retrying");return f?[{chainId:e.resolvedChainId,token:t,amount:f.amountOut}]:[]}:async()=>{e.validateFeeQuote?.();const v=await m.resolve(e.signal);if(e.validateFeeQuote?.(),e.signal?.aborted||(f?.fromProceeds?v<f.amountInMax||f.amountOut<w+x:v<y||v+(f?.amountOut??n)<w+x))throw new Error("Action proceeds changed; refresh before retrying");return f?.fromProceeds?[{chainId:e.resolvedChainId,token:f.tokenIn,amount:f.amountInMax},{chainId:e.resolvedChainId,token:t,amount:f.amountOut}]:[{chainId:e.resolvedChainId,token:t,amount:y+(f?.amountOut??0n)}]},C=async v=>{await b();const k=await Ji(v,s,t,e.signal,f?x:void 0);if(await b(),(k>h.gasFee?k-h.gasFee:h.gasFee-k)*100n>k*15n)throw new Error("Action gas quote changed; refresh before retrying")};return{resolveActionOutputCredits:b,prepareForSigning:async v=>{if(e.feeQuote?.sourceAllocation||e.feeQuote?.feeSourceAllocation)return await C(v),v;const k=ns(v,e.resolvedChainId,t).map(A=>({...A,tokenTransfers:A.tokenTransfers?.filter(E=>!(typeof E.from=="string"&&u.addressesEqual(E.from,s)&&(u.addressesEqual(E.to,S.SPICE_GAS_FEE_RECIPIENT)||u.addressesEqual(E.to,S.SPICE_PLATFORM_FEE_RECIPIENT))))})),I=Cr(k,s,t,w,x);return await C(I),I},validateBeforeSubmit:C}}const l=S.getTokenByAddress(t,e.resolvedChainId),c={chainId:e.resolvedChainId,tokenAddress:t,symbol:l?.symbol??e.destinationToken.symbol,decimals:e.executionTokenDecimals??l?.decimals??e.destinationToken.decimals},d=async f=>{e.validateFeeQuote?.();const m=ns(f,e.resolvedChainId,t),h=await e.execution.estimate(m,t,n,{userOverride:s,useCustomTransfers:!0,feeExecutionMode:"backend-transfer"});e.validateFeeQuote?.();const y=u.getSupplyFeePreview(h,c);if(!y||y.chainId!==e.resolvedChainId)throw new Error("The fee service did not return the destination action's fee quote");if(y.gasFee+y.spicenetFee+(y.bridgeFee??0n)+2n>n)throw new Error("Fees exceed the displayed maximum funding; refresh the quote before retrying");return{raw:m,feeEstimate:h,fees:y}};return{prepareForSigning:async f=>{const{raw:m,feeEstimate:h}=await d(f);return e.feeQuote?.sourceAllocation||e.feeQuote?.feeSourceAllocation?f:Rn(m,s,h,{payoutAlreadyGross:!0})},validateBeforeSubmit:async f=>{const{fees:m}=await d(f);let h=0n,y=0n;for(const w of f)if(w.chainId===e.resolvedChainId)for(const x of w.calls){const b=_i(x,t);b&&(h+=b.gas,y+=b.platform)}if(h+y+2n>n)throw new Error("Signed fees exceed the displayed maximum funding");const g=m.gasFee+(m.bridgeFee??0n);if((h>g?h-g:g-h)*100n>g*15n||y!==m.spicenetFee)throw new Error("The signed gas quote changed materially; refresh before retrying")}}}const Hu="0xa9059cbb";function Rs(e,t,n){return S.isNativeToken(e)?{to:n,value:t,data:"0x"}:{to:e,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[n,t]})}}function kr(e,t,n){return{chainId:n,calls:[Rs(e,t,S.getEscrowContractAddress(n))]}}function Vu(e,t,n,s){const o=t.source.chainId;return{chainId:o,calls:[...e.calls,Rs(t.source.address,n,S.getEscrowContractAddress(o)),...s>0n?[Rs(t.source.address,s,S.SPICE_GAS_FEE_RECIPIENT)]:[]]}}function tl(e,t){const n=e.amountOutMinimum-t;if(n<=0n)throw new Error("Amount is too small to cover fees. Increase the amount and retry.");return n}function nl(e,t,n){return e?.asset?._source==="wallet"&&e?.asset.chainId===n}function sl(e){return e.isNative||S.isNativeToken(e.address)?!0:!S.getTokenByAddress(e.address,e.chainId)}function ol(e,t,n,s){return t!=="user-transfer"||!n||e.length===0||e[0]?.to.toLowerCase()!==s.toLowerCase()||!e[0]?.data.startsWith(Hu)?{feeCall:null,remainingCalls:e}:{feeCall:e[0],remainingCalls:e.slice(1)}}async function ss(e,t,n,s){const o=await(t??Ts)({...n,requestTimestampMs:s});return o?[o,e]:[e]}function Qu(e){return e.filter(t=>t.domain!=="spicenet")}function os(e,t){const n=(e.tokenTransfers??[]).filter(s=>s.from==="escrow").map(s=>({token:S.normalizeNativeTokenAddress(s.token),recipient:s.to,amount:BigInt(s.amount)})).filter(s=>s.amount>0n);return t!==void 0&&n.length===1&&(n[0]={...n[0],amount:t}),n.length>0?n:void 0}function rs(e,t,n){return tn(e,t,n,"ceil")}function rl(e){const t=e.selectedAsset?.asset;return e.isPayMode&&!!t&&t._source==="wallet"&&t.chainId!==e.resolvedChainId&&!!e.pivot}function Sr(e){const t=e.selectedAsset?.asset;return!e.isPayMode&&!!t&&t._source==="wallet"&&t.chainId!==e.resolvedChainId&&!!e.sourceSwap&&!!e.pivot}function js(e,t){if(t?.sourceSpendCap!==void 0&&e>t.sourceSpendCap)throw new Error("The source amount increased. Review the updated quote before submitting.");t?.onSourceSpend?.(e)}async function al(e,t,n){let s;const o=await e({...t,buildActionCalls:async(r,i)=>{s=r;const l=await t.buildActionCalls(r,i);return n?.onActionCalls?.({amount:r,context:i,calls:l}),l}},n);if(s!==void 0){if(n?.minimumDestinationAmount!==void 0&&s<n.minimumDestinationAmount)throw new Error("The destination amount decreased. Review the refreshed quote before submitting.");n?.onDestinationAmount?.(s)}return o}const xo=(e,t)=>al(Gu,e,t),yo=async(e,t)=>{const n=await al(Ku,e,t),s=t?.actionContextOverride?.feeBreakdown,o=n[n.length-1];if(e.feeExecutionMode!=="user-transfer"||!s||!o)return n;const r=e.needsSwap&&e.resolvedTokenIn?e.resolvedTokenIn:e.destinationToken.address,[i]=ns([o],e.resolvedChainId,r),l=go(e.resolvedChainId,r,[{recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:s.spicenetFee},{recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:s.gasFee+(s.bridgeFee??0n)}]).calls,c=o.calls.filter(d=>!i.calls.includes(d));return c.length===l.length&&l.every(d=>c.some(f=>f.to.toLowerCase()===d.to.toLowerCase()&&f.value===d.value&&f.data===d.data))?n:[...n.slice(0,-1),{...i,calls:[...l,...i.calls]}]};async function Gu(e,t){const{currentPaymentAmount:n,destinationToken:s,embeddedWalletAddress:o,providerEmbeddedAddress:r,address:i,isNon7702:l,resolvedChainId:c,buildActionCalls:d,feeExecutionMode:f,buildSpicenetBatch:m,needsSwap:h,exactOutputSwap:y,resolvedTokenIn:g,requestTimestampMs:w}=e,x=t?.sourceAssetOverride?{asset:t.sourceAssetOverride}:e.selectedAsset,b=t?.fundingTokenOverride??g,C=Vt(n,s.decimals),v=t?.actionAmountOverride??(e.feeOnlyAction?0n:C),k=!!e.feeOnlyAction&&(t?.fundingAmountOverride??0n)>0n,I=o||r||i;if(!I)throw new Error("Embedded wallet address is not available. Please sign in and try again.");const A={userAddress:e.recipient??I,executorAddress:I,beneficiary:e.recipient??I,outputRecipient:h?I:void 0,chainId:c,destinationToken:s.address,grossAmount:t?.fundingAmountOverride??C,netAmount:v,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:f,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},E=await d(v,A),j={chainId:c,calls:E},R=!!x&&x.asset._source!=="wallet",B=nl(x??null,l,c),M=R||B&&!!x&&!sl(x.asset),D=(F,P)=>({token:S.normalizeNativeTokenAddress(F),from:"escrow",to:I,amount:P}),U=(F,P,z)=>B?[kr(F,P,c),...z]:z;if(C===0n&&!k)return[j];const O=t?.combinedSourceGroupOverride===null?void 0:t?.combinedSourceGroupOverride??e.combinedSourceGroup;if(O&&(!h||b?.toLowerCase()===O.token.toLowerCase())){if(h&&!y)throw new Error("The action quote is unavailable.");const F=h?{...j,calls:[...y.calls,...E]}:j,P=t?.fundingAmountOverride??(h?y?.amountInMax??0n:C),z=br(O,P,"in-place",{quoteOnly:!0});if(t?.onSourceAllocation?.(z),js(_n(P,O.decimals,O.representativeDecimals),t),z.escrowWithdrawal===0n)return[F];const q={...F,tokenTransfers:[D(O.token,z.escrowWithdrawal)]};return ss(q,m,{userAddress:I,destinationChainId:c,deliveryToken:O.token,deliveryAmount:z.escrowWithdrawal,deliveryRecipient:I,deliveryTransfers:os(q),sourceAsset:O.escrow},w)}if(x?.asset._source==="wallet"&&x.asset.chainId!==c&&!e.pivot)throw new Error("A current source-to-destination funding route is required");if(e.feeOnlyAction&&t?.fundingTokenOverride&&B)return js(t.fundingAmountOverride??0n,t),[j];if(rl(e)){if(h&&!y)throw new Error("Swap quote not available yet");const F=t?.fundingAmountOverride??(y?y.amountInMax:C),P=t?.sourceGasSkimOverride??0n,z=tn(F,e.pivot.destination.decimals,e.pivot.source.decimals,"ceil"),q=z+P,ne=e.sourceExactOutputSwap,de=ne&&(t?.reuseQuotedSourceSwap||ne.amountOut>=q)?ne:e.resolveSourceExactOutputSwap?await e.resolveSourceExactOutputSwap(q):null;if(!de)throw new Error("Swap quote not available yet");js(de.amountInMax,t);const ie=x.asset;if(de.amountInMax>ie.balance)throw new Error(`Insufficient ${ie.symbol} for this payment. Required ${T.formatUnits(de.amountInMax,ie.decimals)} ${ie.symbol}; available ${T.formatUnits(ie.balance,ie.decimals)} ${ie.symbol}.`);const Y=de.amountOut>=q?z:de.amountOut-P;if(Y<=0n)throw new Error("Amount is too small to cover fees. Increase the amount and retry.");const Q={chainId:e.pivot.source.chainId,calls:[...de.calls,Rs(e.pivot.source.address,Y,S.getEscrowContractAddress(e.pivot.source.chainId)),...P>0n?[Rs(e.pivot.source.address,P,S.SPICE_GAS_FEE_RECIPIENT)]:[]]},G={chainId:c,calls:[...y?.calls??[],...E],tokenTransfers:[D(e.pivot.destination.address,F),...j.tokenTransfers??[]]},fe=await ss(G,m,{userAddress:I,destinationChainId:c,deliveryToken:e.pivot.destination.address,deliveryAmount:F,deliveryRecipient:I,deliveryTransfers:os(G),sourceAsset:x.asset},w);return[Q,...fe]}if(x){const F=t?.fundingAmountOverride??y?.amountInMax??C;js(rs(F,await bn(x.asset,b??x.asset.address,c,s),x.asset.decimals),t)}if(h&&y){const F=b??sn(x.asset,c)??x.asset.address,P=t?.fundingAmountOverride??y.amountInMax,z=M?[D(F,P)]:[],q={chainId:c,calls:[...y.calls,...E],tokenTransfers:[...z,...j.tokenTransfers??[]]};if(!M)return[q];const ne=await ss(q,m,{userAddress:I,destinationChainId:c,deliveryToken:F,deliveryAmount:P,deliveryRecipient:I,deliveryTransfers:os(q),sourceAsset:x.asset},w);return U(F,P,ne)}if(M){const F=b??sn(x.asset,c)??s.address;if(B&&!e.feeOnlyAction&&F.toLowerCase()===s.address.toLowerCase())return[j];const P=t?.fundingAmountOverride??C,z={...j,tokenTransfers:[D(F,P),...j.tokenTransfers??[]]},q=await ss(z,m,{userAddress:I,destinationChainId:c,deliveryToken:F,deliveryAmount:P,deliveryRecipient:I,deliveryTransfers:os(z),sourceAsset:x.asset},w);return U(F,P,q)}return[j]}async function Ku(e,t){const{selectedAsset:n,embeddedWalletAddress:s,recipient:o,resolvedChainId:r,destinationToken:i,buildActionCalls:l,feeExecutionMode:c,buildSpicenetBatch:d,isPayMode:f,isNon7702:m,needsSwap:h,resolvedSwap:y,quoteAmountOut:g,resolvedTokenIn:w,requestTimestampMs:x}=e;if(!n?.asset||!s)return[];const b=o??s;if(!b)return[];const C=Sr(e);let v=e.sourceSwap,k=Vt(n.amount,n.asset.decimals),I=C?e.sourceSwap.amountOutMinimum:null;if(C&&e.isFeeInclusiveInput&&(I=tl(e.sourceSwap,t?.sourceGasSkimOverride??0n)),C&&!e.isFeeInclusiveInput&&(t?.fundingAmountOverride!==void 0||(t?.sourceGasSkimOverride??0n)>0n)){I=t?.fundingAmountOverride!==void 0?rs(t.fundingAmountOverride,e.pivot.destination.decimals,e.pivot.source.decimals):e.sourceSwap.amountOutMinimum;const we=I+(t?.sourceGasSkimOverride??0n);if(!e.resolveSourceExactOutputSwap)throw new Error("The source quote cannot include fees yet.");const N=await e.resolveSourceExactOutputSwap(we);if(N.amountOut<we)throw new Error("The source quote does not cover the accepted funding amount.");k=N.amountInMax,v={...N,amountOutMinimum:N.amountOut}}const A=C?e.pivot.destination.address:w??sn(n.asset,r)??i.address,E=C?e.pivot.destination.decimals:await bn(n.asset,A,r,i),j=t?.fundingAmountOverride??t?.actionAmountOverride??(C?tn(I,e.pivot.source.decimals,E,"floor"):_n(Vt(n.amount,n.asset.decimals),n.asset.decimals,E)),R=t?.fundingAmountOverride??j,B=t?.combinedSourceGroupOverride===null?void 0:t?.combinedSourceGroupOverride??e.combinedSourceGroup,M=B&&!C?br(B,R,"escrow",{quoteOnly:!0}):void 0;M&&t?.onSourceAllocation?.(M);const D=M?.walletDeposit??t?.sourceFundingAmountOverride??rs(j,E,n.asset.decimals);js(M&&B?_n(R,B.decimals,B.representativeDecimals):C?k:D,t);const U=t?.deliveryAmountOverride??(c==="user-transfer"?R:t?.actionContextOverride?.netAmount??R),O=t?.withdrawalAmountOverride??U,F=t?.actionAmountOverride??t?.actionContextOverride?.netAmount??j;let P=y;if(h&&!f&&(t?.actionContextOverride?.netAmount!==void 0||C&&(t?.sourceGasSkimOverride??0n)>0n&&!t?.reuseQuotedSourceSwap)){if(!e.resolveInputSwap)throw new Error("Swap quote cannot be refreshed for the amount after fees.");const we=t?.actionContextOverride?.netAmount??F;(!P||e.swapInputAmount!==we)&&(P=await e.resolveInputSwap(we,y??void 0))}P&&t?.onSwap?.(P,t?.actionContextOverride?.netAmount??e.swapInputAmount??F);const z=P?.amountOutMinimum??g,q={userAddress:b,executorAddress:s,beneficiary:b,outputRecipient:h?s:void 0,chainId:r,destinationToken:i.address,feeToken:c==="user-transfer"&&h&&w?w:i.address,grossAmount:R,netAmount:F,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:c,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},ne=()=>l(F,q),de=n.asset?._source==="wallet";if(!f&&de&&n.asset.chainId===r&&sl(n.asset)){if(h){if(!w)throw new Error("Swap input token could not be resolved");if(!P||z===null)throw new Error("Swap quote not available yet")}if(h&&P&&z){const we=await l(t?.actionAmountOverride??z,{...q,netAmount:t?.actionAmountOverride??z}),{feeCall:N,remainingCalls:J}=ol(we,c,h,q.feeToken);return[{chainId:r,calls:[...N?[N]:[],...P.calls,...J]}]}return[{chainId:r,calls:await ne()}]}if(!f&&de&&n.asset.chainId!==r&&!C)throw new Error("A current source-to-destination funding route is required");const ie=n.asset._source!=="wallet",Y=nl(n,m,r);if(!(ie||Y||C))return[{chainId:r,calls:await ne()}];const Q=C?Vu(v,e.pivot,I,t?.sourceGasSkimOverride??0n):M&&B?M.walletDeposit>0n?kr(B.token,M.walletDeposit,r):null:Y?kr(w??S.normalizeNativeTokenAddress(n.asset.address),D,r):null,G=(we,N)=>({token:S.normalizeNativeTokenAddress(we),from:"escrow",to:s,amount:N});if(h){if(!w)throw new Error("Swap input token could not be resolved");if(!P||z===null)throw new Error("Swap quote not available yet")}if(h&&P&&z&&w){const we=await l(t?.actionAmountOverride??z,{...q,netAmount:t?.actionAmountOverride??z}),{feeCall:N,remainingCalls:J}=ol(we,c,h,q.feeToken),ee={chainId:r,calls:[...N?[N]:[],...P.calls,...J],tokenTransfers:[G(w,U)]},V=await ss(ee,d,{userAddress:s,destinationChainId:r,deliveryToken:w,deliveryAmount:U,withdrawalAmount:O,deliveryRecipient:s,deliveryTransfers:os(ee,O),sourceAsset:n.asset},x);return Q?[Q,...V]:V}const fe=w??sn(n.asset,r)??i.address,X={chainId:r,calls:await ne(),tokenTransfers:[G(fe,U)]},be=await ss(X,d,{userAddress:s,destinationChainId:r,deliveryToken:fe,deliveryAmount:U,withdrawalAmount:O,deliveryRecipient:s,deliveryTransfers:os(X,O),sourceAsset:n.asset},x);return Q?[Q,...be]:be}async function Zu(e,t,n,s,o){let r=e;for(let i=0;i<4;i++){const l=await t(r),c=await s(l,n,r,o),d=u.getSingleNetOutput(c);if(d===null||d>=e)return r;const f=r-d,m=e+f;if(m<=r)return r;r=m}return r}function Yu(e){return{...e,resolve:async(t,n,s)=>{const o=await e.resolve(t,n,s),r=o?.calls[0]?.to;return!o||!r||S.isNativeToken(t.tokenIn)?o:{...o,calls:[{to:t.tokenIn,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"approve",args:[r,o.amountInMax]})},...o.calls]}}}}function Os(e){const t=(e?.customVenues??[]).map(s=>vc(Yu(s)));async function n(s,o,r){const i=t.filter(d=>d.chainIds.includes(o));if(i.length===0)throw new u.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 d=>({venue:d,quote:await d.resolve(s,o,r)})))).filter(d=>d.status==="fulfilled").map(d=>d.value).filter(d=>d.quote!==null);if(l.length===0)throw new u.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 c=l.find(d=>d.venue.preferred);return c?c.quote:(l.sort((d,f)=>d.quote.amountIn<f.quote.amountIn?-1:d.quote.amountIn>f.quote.amountIn?1:0),l[0].quote)}return{getQuote:n,venues:t}}function il(e,t,n){if(e._source==="wallet")return e.chainId===t?e.address:null;const s=Kn(e,t);return s.find(o=>o.toLowerCase()===n.toLowerCase())??s[0]??null}async function ll(e,t,n,s){const o=S.hashChainBatches(s),r=await u.relayerService.estimateBatchGas({user:t,outputToken:n,requireSimulation:!0,includePlatformFee:!0,signal:e.signal,chainBatches:s.map((i,l)=>({...i,hash:o[l].hash}))});if(!r.simulationVerified||r.gasQuoteSource!=="estimated"||r.platformFee===void 0||r.gasFee<=0n)throw new Error("Fee funding requires verified gas and platform pricing");return r}async function Ds(e,t){const n=e.selectedAsset?.asset,s=!t&&!!e.actionProceeds&&e.actionProceeds.token.toLowerCase()!==e.destinationToken.address.toLowerCase(),o=!!t||s,r=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!r||!o&&(!n||n._source!=="spice"&&!(n._source==="wallet"&&n.chainId===e.resolvedChainId)))throw new Error("A local embedded or Spice balance is required for fee conversion");const i=t?t.token:s?e.actionProceeds.token:il(n,e.resolvedChainId,e.destinationToken.address);if(!i)throw new Error("This receipt has no registered destination withdrawal token");const l=S.getTokenByAddress(i,e.resolvedChainId)?.decimals??(S.isNativeToken(i)?18:o?await u.getClientForChain(e.resolvedChainId).readContract({address:i,abi:T.erc20Abi,functionName:"decimals"}):n?._source==="wallet"?n.decimals:void 0);if(l===void 0)throw new Error("Fee funding token metadata is unavailable");const c=e.destinationToken.address;if(e.actionProceeds&&!s&&e.actionProceeds.token.toLowerCase()!==c.toLowerCase())throw new Error("Action proceeds must use the destination fee token");const d=t?t.amount:e.actionProceeds?await e.actionProceeds.resolve(e.signal):0n;if(d<0n||e.signal?.aborted)throw new Error("Action proceeds quote was cancelled or invalid");const f=Os({customVenues:[...e.resolveExactOutputSwap?[{name:"consumer-exact-output",chainIds:[e.resolvedChainId],preferred:!0,resolve:e.resolveExactOutputSwap}]:[],...Pn(e.liquidityVenues).output]}),m=y=>ll(e,r,c,y);let h=await m(await e.buildPayChainBatches({fundingAmountOverride:0n}));for(let y=0;y<8;y++){const g=h.gasFee+h.platformFee,w=o?0n:d<g?d:g,x=g-w,b=x>0n?(x*110n+99n)/100n+2n:0n,C=b>0n?await f.getQuote({tokenIn:i,tokenOut:c,amountOut:b,maxSlippage:e.maxSlippage},e.resolvedChainId,r):null;if(e.signal?.aborted)throw new Error("Fee conversion quote was cancelled");if(C&&(C.amountOut!==b||C.amountInMax<=0n||C.amountInMax<C.amountIn||!C.calls.length))throw new Error("Invalid exact-output fee conversion quote");const v=C?.amountInMax??0n,k=o?0n:rs(v,l,n.decimals);if(o&&v>d)throw new ts(v,d);if(!o&&k>n.balance)throw new ts(k,n.balance);let I,A=Rn(await e.buildPayChainBatches({fundingAmountOverride:o?0n:v,...o?{}:{fundingTokenOverride:i},...t?{actionAmountOverride:t.amount-v}:{},onActionCalls:j=>{I=j}}),r);if(C){const j=A.length-1;A=A.map((R,B)=>B===j?{...R,calls:[...R.calls,...C.calls]}:R)}A=Cr(A,r,c,h.gasFee,h.platformFee);const E=await m(A);if(E.gasFee<=h.gasFee&&(h.gasFee-E.gasFee)*100n<=E.gasFee*15n&&E.platformFee===h.platformFee){const j={tokenIn:i,tokenOut:c,amountInMax:v,amountOut:b,sourceAmountMax:k,...s?{fromProceeds:!0}:{},...t?{fromInput:!0}:{}};return{feeEstimate:null,preview:{symbol:e.destinationToken.symbol,decimals:e.destinationToken.decimals,grossAmount:o?0n:b,netAmount:0n,gasFee:h.gasFee,spicenetFee:h.platformFee,totalFee:g,gasQuoteSource:"estimated"},grossFundingAmount:o?0n:v,proceedsAvailable:d,proceedsUsed:o?g:w,fundingConversion:j,fundingBatches:A,sourceSpendCap:k,destinationAmount:0n,actionDefinition:I}}h=E}throw new Error("Fee conversion pricing did not converge")}const wo=["input","proceeds","balance"];function Xu(e){if(e.reserve&&e.reserve.amount<0n)throw new Error("Fee funding reserve cannot be negative");if(e.reserves?.some(l=>l.amount<0n))throw new Error("Fee funding reserve cannot be negative");const t=l=>u.addressesEqual(l,e.feeToken),n=(l,c)=>Number(l.swap)-Number(c.swap),s={input:[],proceeds:[],balance:[]};for(const l of e.inputs??[])l.amount>0n&&s.input.push({kind:"input",...l,swap:!t(l.token)});s.input.sort(n),e.proceeds&&e.proceeds.amount>0n&&s.proceeds.push({kind:"proceeds",...e.proceeds,swap:!t(e.proceeds.token)});const o=e.balances.filter(l=>l._source==="wallet"&&l.chainId===e.chainId&&l.location!=="external"),r=e.balances.filter(l=>l._source==="spice"),i=l=>{const c=[];for(const d of l){const f=[...e.reserves??[],...e.reserve?[e.reserve]:[]].filter(g=>ye(d)===ye(g.asset)).reduce((g,w)=>w.amount>g?w.amount:g,0n),m=d.balance-f;if(m<=0n)continue;const h=f>0n?{...d,balance:m,balanceFormatted:Number(T.formatUnits(m,d.decimals)),balanceUsd:d.balanceUsd*Number(m)/Number(d.balance)}:d,y=il(h,e.chainId,e.feeToken);y&&(e.inputs?.some(g=>u.addressesEqual(g.token,y)&&![...e.reserves??[],...e.reserve?[e.reserve]:[]].some(w=>u.addressesEqual(w.asset.address,g.token)))||c.push({kind:"balance",token:y,amount:h.balance,asset:h,...f>0n?{reservedAmount:f}:{},swap:!t(y)}))}return c.sort((d,f)=>n(d,f)||f.asset.balanceUsd-d.asset.balanceUsd)};return s.balance=[...i(o),...i(r)],(e.order??wo).flatMap(l=>s[l])}function Ju(e){return e instanceof ts||e instanceof u.SpiceflowError&&e.code==="NO_SWAP_ROUTE"}async function cl(e,t){const n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!n||!e.ready||!e.authenticated)return null;const s=e.destinationToken.address;let o;const r=()=>o??(o=(async()=>{const d=await ll(e,n,s,await e.buildPayChainBatches({fundingAmountOverride:0n}));return{feeEstimate:null,preview:{symbol:e.destinationToken.symbol,decimals:e.destinationToken.decimals,gasFee:d.gasFee,spicenetFee:d.platformFee,bridgeFee:0n,totalFee:d.gasFee+d.platformFee,grossAmount:0n,netAmount:0n,gasQuoteSource:"estimated"}}})()),i=(d,f)=>e.buildPayChainBatches({...f,fundingAmountOverride:d}),l=(d,f)=>$i({proceeds:{token:s,resolve:async()=>d},owner:n,token:s,signal:e.signal,baseline:r,buildBatches:i,fundShortfall:!1,actionAmountFor:f}),c=async d=>{if(d.kind==="input")return d.swap?Ds({...e,actionProceeds:void 0},d):l(d.amount,g=>d.amount-g);if(d.kind==="proceeds"){const g={...e.actionProceeds,resolve:async()=>d.amount};return d.swap?Ds({...e,actionProceeds:g}):l(d.amount)}const f=d.asset;if(f._source==="wallet"&&!d.swap)return l(f.balance);let m=!d.swap&&f._source==="spice"?e.getCombinedSourceGroup?.(f):void 0;if(m){const g=[ye(m.wallet),ye(m.escrow)],w=[...e.feeFundingReserves??[],...e.feeFundingReserve?[e.feeFundingReserve]:[]].filter(x=>g.includes(ye(x.asset)));w.length&&(m=e.getCombinedSourceGroup?.(f,w))}const h={...e,selectedAsset:{asset:f,amount:"0"},combinedSourceGroup:m,resolvedTokenIn:d.token,actionInput:void 0,actionProceeds:void 0,buildPayChainBatches:g=>e.buildPayChainBatches({...g,sourceAssetOverride:f,combinedSourceGroupOverride:m??null,fundingTokenOverride:g?.fundingTokenOverride??d.token})};if(d.swap)return Ds(h);const y=await t(h);if(y&&(y.sourceSpendCap??0n)>(m?.availableBalance??f.balance))throw new ts(y.sourceSpendCap,m?.availableBalance??f.balance);return y};for(const d of e.feeFunding??wo){const f=d==="proceeds"&&e.actionProceeds?{token:e.actionProceeds.token,amount:await e.actionProceeds.resolve(e.signal)}:void 0;if(e.signal?.aborted)throw new Error("Fee funding quote was cancelled");if(f&&f.amount<0n)throw new Error("Action proceeds cannot be negative");const m=Xu({feeToken:s,chainId:e.resolvedChainId,inputs:e.actionInput,proceeds:f,balances:e.feeFundingBalances??[],order:[d],reserve:e.feeFundingReserve,reserves:e.feeFundingReserves});for(const h of m)try{const y=await c(h);if(!y)continue;const{swap:g,...w}=h;return{...y,fundingSource:w}}catch(y){if(e.signal?.aborted||!Ju(y))throw y}}throw new Error(`No available balance can cover this action's ${e.destinationToken.symbol} execution cost`)}async function $u(e,t,n,s=!1){const o=e.selectedAsset,r=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!o||!r||!e.ready||!e.authenticated||e.isQuoting)return null;if(!e.combinedSourceGroup&&o.asset._source!=="wallet"||o.asset.chainId!==e.resolvedChainId||!$s(o.asset)&&o.asset.owner&&!u.addressesEqual(o.asset.owner,r))throw new Error("Funded fee hierarchy requires principal on the action chain in the executing wallet.");if(s&&(e.isPayMode||!e.isFeeInclusiveInput||t.recipient&&!u.addressesEqual(t.recipient,r)))throw new Error("Output-funded actions require an input-inclusive amount left in the executing wallet.");if(e.isPayMode&&e.needsSwap&&!e.exactOutputSwap)return null;const i=e.isPayMode?Vt(e.currentPaymentAmount,e.destinationToken.decimals):void 0;if(e.isPayMode&&e.needsSwap&&e.exactOutputSwap.amountOut!==i)throw new Error("Wait for the payment quote for the current amount.");const l=S.getTokensForChain(e.resolvedChainId).find(k=>k.equivalenceGroup==="USDC");if(!l)throw new Error("Configure the execution fee token for this chain.");const c={...l,address:l.address,chainId:e.resolvedChainId},d=i!==void 0?e.needsSwap?e.exactOutputSwap.amountInMax:i:Vt(o.amount,o.asset.decimals);if(d<=0n||d>(e.combinedSourceGroup?.availableBalance??o.asset.balance))throw new Error("Enter an amount within the available balance.");if(!e.isPayMode&&e.needsSwap&&t.swapInputAmount!=null&&t.swapInputAmount!==d)throw new Error("Wait for the action quote for the current amount.");const f=i??(e.needsSwap?t.resolvedSwap?.amountOutMinimum??0n:d);let m=t.resolvedSwap??void 0,h=d,y=f;const g=e.combinedSourceGroup?br(e.combinedSourceGroup,d,"in-place"):void 0,w={...e,feeOnlyAction:!0,selectedAsset:null,isPayMode:!0,isFeeInclusiveInput:!1,parsedAmount:0,currentPaymentAmount:"0",destinationToken:c,resolvedTokenIn:c.address,executionTokenAddress:c.address,needsSwap:!1,resolvedSwap:null,isDirect:!0,actionInput:!e.isPayMode&&e.isFeeInclusiveInput?[{token:o.asset.address,amount:d}]:void 0,actionProceeds:s?{token:e.destinationToken.address,resolve:async()=>f>0n?f-1n:0n}:e.actionProceeds,feeFundingBalances:e.feeFundingBalances?.filter(k=>!k.balanceError&&!(e.feeFundingReserve&&ye(e.feeFundingReserve.asset)!==ye(o.asset)&&ye(k)===ye(e.feeFundingReserve.asset))&&!$s(k)&&(!k.owner||u.addressesEqual(k.owner,r))),feeFundingReserves:g?.positions.map(k=>({asset:k.asset,amount:k.amount})),feeFundingReserve:g?void 0:{asset:o.asset,amount:e.feeFundingReserve&&ye(e.feeFundingReserve.asset)===ye(o.asset)&&e.feeFundingReserve.amount>d?e.feeFundingReserve.amount:d},buildPayChainBatches:async k=>{const I=k?.actionAmountOverride??d;if(I<=0n)throw new ts(d+1n,d);const A=!e.isPayMode&&e.needsSwap?I===d?t.resolvedSwap:await t.resolveInputSwap?.(I,t.resolvedSwap??void 0):null,E=e.needsSwap?e.isPayMode?e.exactOutputSwap:A:null;if(e.needsSwap&&!E)throw new Error("The action quote is unavailable.");m=A??void 0,h=I,y=i??m?.amountOutMinimum??I;const j={userAddress:t.recipient??r,executorAddress:r,beneficiary:t.recipient??r,outputRecipient:r,chainId:e.resolvedChainId,destinationToken:e.destinationToken.address,grossAmount:f,netAmount:y,feeToken:c.address,feeExecutionMode:"backend-transfer"},R=await t.buildActionCalls(y,j),B={amount:y,context:j,calls:R},M=[...E?.calls??[],...R];let D=await xo({...t,selectedAsset:null,combinedSourceGroup:void 0,feeOnlyAction:!0,isPayMode:!0,isFeeInclusiveInput:!1,currentPaymentAmount:"0",destinationToken:c,resolvedTokenIn:c.address,needsSwap:!1,resolvedSwap:null,exactOutputSwap:null,quoteAmountOut:null,feeExecutionMode:"backend-transfer",buildActionCalls:()=>M},{...k,onActionCalls:()=>k?.onActionCalls?.(B)});if(g?.escrowWithdrawal){const U=[...D].reverse().findIndex(F=>F.domain!=="spicenet"&&F.chainId===e.resolvedChainId),O=U<0?-1:D.length-U-1;if(O<0)throw new Error("The action quote is unavailable.");D[O]={...D[O],tokenTransfers:[...D[O].tokenTransfers??[],{token:g.token,from:"escrow",to:r,amount:g.escrowWithdrawal}]},D=Rn(D,r,void 0,{payoutAlreadyGross:!0,requestTimestampMs:t.requestTimestampMs})}return D}},x=await cl(w,n);if(!x)return null;if(s&&x.fundingSource?.kind==="proceeds"&&(y-=x.fundingConversion?.amountInMax??x.proceedsUsed??0n),y<=0n)throw new Error("Not enough action output remains after execution costs.");let b=g;const C=b&&x.sourceAllocation&&b.positions.every(k=>x.sourceAllocation.positions.some(I=>I.positionId===k.positionId)),v=x.sourceAllocation&&!C?x.sourceAllocation:void 0;if(b){const k=x.sourceAllocation?.positions??[],I=x.fundingSource?.kind==="balance"&&x.fundingSource.asset&&ye(x.fundingSource.asset)===ye(e.combinedSourceGroup.wallet)?x.fundingConversion?.amountInMax??x.proceedsUsed??0n:0n,A=k.find(j=>j.positionId===ye(e.combinedSourceGroup.wallet))?.amount??I,E=k.find(j=>j.positionId===ye(e.combinedSourceGroup.escrow))?.amount??(x.fundingSource?.kind==="balance"&&x.fundingSource.asset&&ye(x.fundingSource.asset)===ye(e.combinedSourceGroup.escrow)?x.sourceSpendCap??0n:0n);b={...b,grossAmount:d+A+E,walletInPlace:b.walletInPlace+A,escrowWithdrawal:b.escrowWithdrawal+E,positions:b.positions.map(j=>({...j,amount:j.amount+(j.asset.location==="embedded"?A:E),reservedAmount:0n}))}}return{...x,fundedFeeToken:c,batches:x.fundingBatches??x.batches,destinationSwap:m,swapInputAmount:h,destinationAmount:y,sourceAllocation:b,feeSourceAllocation:v,sourceSpendCap:b?.grossAmount??d+(x.fundingSource?.kind==="balance"&&x.fundingSource.asset&&ye(x.fundingSource.asset)===ye(o.asset)?x.fundingConversion?.amountInMax??x.proceedsUsed??0n:0n)}}async function _u(e,t){const n=e.externalGasRecipient,s=e.embeddedWalletAddress||e.providerEmbeddedAddress,o=e.resolvedChainId,r=t.batches,i=r.map(b=>b.chainId).lastIndexOf(o);if(i<0)throw new Error("Destination gas quote is unavailable.");const[l,c]=await Promise.all([u.relayerService.estimateBatchGas({user:s,outputToken:S.ZERO_ADDRESS,chainBatches:r,stepIndex:i,signal:e.signal}),u.getClientForChain(o).getBalance({address:n})]);if(e.signal?.aborted)throw new Error("Fee estimation cancelled");if(l.gasQuoteSource!=="estimated"||l.gasFee<=0n)throw new Error("A native gas quote is required for the external wallet.");const d=r[i].calls.reduce((b,C)=>u.addressesEqual(C.to,n)&&C.data==="0x"?b+C.value:b,0n),f=l.gasFee,m=c+d<f?await e.externalGasCalls?.(t)??[]:[],h=m.reduce((b,C)=>b+C.value,0n),y=(3n+BigInt(m.length))*f+h,g=c+d<f?y-c-d:0n,w={chainId:o,recipient:n,balance:c,incoming:d,transactionGas:f,nativeAmount:g,currentTransactions:m.length,currentValue:h,feeAmount:0n,calls:[]};if(g===0n)return w;const x=e.executionTokenAddress;if(S.isNativeToken(x))w.feeAmount=g;else{const b=await Os({customVenues:[...e.resolveExactOutputSwap?[{name:"consumer-exact-output",chainIds:[o],preferred:!0,resolve:e.resolveExactOutputSwap}]:[],...Pn(e.liquidityVenues).output]}).getQuote({tokenIn:x,tokenOut:S.ZERO_ADDRESS,amountOut:g,maxSlippage:e.maxSlippage},o,s);if(b.amountOut!==g||b.amountInMax<=0n||!b.calls.length)throw new Error("The external gas purchase could not be quoted.");if(e.signal?.aborted)throw new Error("Fee estimation cancelled");w.feeAmount=b.amountInMax,w.calls=b.calls}return w.calls=[...w.calls,{to:n,value:g,data:"0x"}],w}function bo(e,t){if(!t?.nativeAmount)return e;const n=e.map(s=>s.chainId).lastIndexOf(t.chainId);if(n<0)throw new Error("The gas reserve destination changed.");return e.map((s,o)=>o===n?{...s,calls:[...s.calls,...t.calls]}:s)}function dl(e,t){if(e&&e.nativeAmount>0n){const n=t.filter(o=>o.chainId===e.chainId).slice(-1)[0],s=n?.calls.slice(-e.calls.length);if(!s||s.length!==e.calls.length||s.some((o,r)=>{const i=e.calls[r];return!u.addressesEqual(o.to,i.to)||o.value!==i.value||o.data!==i.data}))throw new Error("The external gas purchase changed. Refresh the quote before submitting.");if(n.calls.slice(0,-e.calls.length).reduce((o,r)=>u.addressesEqual(r.to,e.recipient)&&r.data==="0x"?o+r.value:o,0n)<e.incoming)throw new Error("The native result changed. Refresh the gas reserve quote before submitting.")}}async function ul(e,t){if(!e)return;t&&dl(e,t);const n=await u.getClientForChain(e.chainId).getBalance({address:e.recipient});if(e.nativeAmount>0n?n!==e.balance:n+e.incoming<e.transactionGas)throw new Error("The external wallet gas balance changed. Refresh the quote before submitting.")}async function ep(e){const t=e.selectedAsset.asset;if(t.chainId!==e.destinationToken.chainId||!u.addressesEqual(S.normalizeNativeTokenAddress(t.address),S.normalizeNativeTokenAddress(e.destinationToken.address)))throw new Error("Direct execution requires the destination token on its own chain.");if(t.decimals!==e.destinationToken.decimals)throw new Error("Source and destination token decimals do not match.");const n=Vt(e.paymentAmount??e.selectedAsset.amount,t.decimals);if(n<=0n)throw new Error("Enter a positive action amount.");const s={userAddress:e.beneficiary??e.account,executorAddress:e.account,beneficiary:e.beneficiary??e.account,chainId:e.destinationToken.chainId,destinationToken:e.destinationToken.address,feeToken:t.address,grossAmount:n,netAmount:n,combinedFeeAmount:0n,feeExecutionMode:e.feeExecutionMode,feeBreakdown:{spicenetFee:0n,gasFee:0n,bridgeFee:0n}},o=await e.buildActionCalls(n,s);if(!o.length)throw new Error("No action calls configured.");if(S.isNativeToken(t.address)&&o.reduce((r,i)=>r+i.value,0n)>n)throw new Error("The native action exceeds the accepted source amount.");return{actionDefinition:{amount:n,context:s,calls:o},actionContext:s,batches:[{chainId:s.chainId,calls:o}],fundingAmount:n,sourceSpendCap:n,destinationAmount:n,feeEstimate:null,preview:{symbol:t.symbol,decimals:t.decimals,grossAmount:n,netAmount:n,totalFee:0n,gasFee:0n,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"static_zero"}}}async function pl(e){const[t]=await e.buildSupplyChainBatches({sourceGasSkimOverride:1n,reuseQuotedSourceSwap:!0});if(!t)throw new Error("Swap quote not available yet");const{gasFee:n}=await u.relayerService.estimateBatchGas({user:e.user,outputToken:e.pivot.source.address,stepIndex:0,chainBatches:[t],signal:e.signal});return n}const Ir=(e,t)=>(e+t-1n)/t;function vo(e,t,n=0n){return e.intents.length===0?t:{...e,intents:e.intents.map(s=>({...s,batches:s.batches.map(o=>{const r=t.intents.find(c=>c.intentIndex===s.intentIndex)?.batches.find(c=>c.chainId===o.chainId);if(!r&&n===0n)return o;const i={...o.feeBreakdown};let l=0n;for(const c of["gasFee","bridgeFee"]){const d=BigInt(i[c]??"0"),f=BigInt(r?.feeBreakdown[c]??"0"),m=d>f?d+Ir(d*n,10000n):f;m>d&&(i[c]=m.toString(),l+=m-d)}return{...o,feeBreakdown:i,totalDebit:(BigInt(o.totalDebit)+l).toString()}})}))}}async function fl(e){if(e.options.signal?.aborted)throw new Error("Fee estimation cancelled");if(!u.relayerService.canValidateActionFees())throw new Error("This withdrawal requires signed fee validation. Refresh the quote before submitting.");const[t,n]=await Promise.all([e.signedEstimate??e.estimate(e.batches,e.tokenAddress,e.fundingAmount,{...e.options,feeExecutionMode:"user-transfer",validateFeeCalls:!0}),e.estimate(e.pricingBatches,e.tokenAddress,e.fundingAmount,{...e.options,feeExecutionMode:"backend-transfer",validateFeeCalls:!1})]);if(e.options.signal?.aborted)throw new Error("Fee estimation cancelled");const s=o=>o.intents.flatMap(r=>r.batches.map(i=>`${r.intentIndex}:${i.chainId}`)).sort().join(",");if(!s(n)||s(n)!==s(t))throw new Error("Unable to validate the signed withdrawal fees.");return{intents:n.intents.map(o=>({...o,batches:o.batches.map(r=>{const i=t.intents.find(d=>d.intentIndex===o.intentIndex)?.batches.find(d=>d.chainId===r.chainId);if(!i)throw new Error("Unable to validate the signed withdrawal fees.");const l={...r.feeBreakdown};let c=0n;for(const d of["gasFee","bridgeFee"]){const f=BigInt(l[d]??"0"),m=BigInt(i.feeBreakdown[d]??"0");m>f&&(l[d]=m.toString(),c+=m-f)}return{...r,feeBreakdown:l,totalDebit:(BigInt(r.totalDebit)+c).toString()}})}))}}function tp(e,t){const n=e.spicenetFee+(e.bridgeFee??0n);return e.grossAmount<=n?t+e.gasFee+n:Ir((t+e.gasFee)*e.grossAmount,e.grossAmount-n)+2n}async function ml(e){const{requiredNetFunding:t}=e;if(e.feeOnlyAction){const d=e.executionOptions?.userOverride;if(!d||t!==0n)throw new Error("Fee-only estimates require a zero action amount and its embedded executor");let f=1n,m;for(let h=0;h<8;h++){const y=Rn(await e.buildBatches(f),d,m,{payoutAlreadyGross:!0}),g=await e.estimate(ns(y,e.tokenDescriptor.chainId,e.fundingToken),e.fundingToken,f,{...e.executionOptions,feeExecutionMode:"backend-transfer"}),w=u.getSupplyFeePreview(g,e.tokenDescriptor);if(!w)throw new Error("The fee service did not return a fee quote for this action");const x=w.gasFee+w.spicenetFee+(w.bridgeFee??0n);if(m&&x+2n<=f)return{preview:{...w,grossAmount:f,netAmount:0n},feeEstimate:g,grossFundingAmount:f};f=(x*110n+99n)/100n+2n,m=g}throw new Error("Fee-only funding did not converge; refresh the fee quote before retrying")}const n=await e.buildBatches(t),s=await e.estimate(n,e.fundingToken,t,e.executionOptions),o=u.getSupplyFeePreview(s,e.tokenDescriptor);if(!o)return{preview:u.getEscrowFreeFeePreview(n,e.tokenDescriptor,t),feeEstimate:s,grossFundingAmount:t};const r=tp(o,t),i=d=>o.grossAmount>0n?Ir(d*r,o.grossAmount):d,l=i(o.spicenetFee),c=i(o.bridgeFee??0n);return{preview:{...o,grossAmount:r,netAmount:t,spicenetFee:l,bridgeFee:c,totalFee:o.gasFee+l+c},feeEstimate:s,grossFundingAmount:r}}async function hl(e){if(e.balance<=0n)throw new Error("No spendable balance remains after source gas.");let t=e.balance;for(let n=0;n<8;n++){const s=await e.planForAmount(t);if(!s||s.sourceSpendCap===void 0||s.sourceSpendCap<=0n)throw new Error("Max requires a current route and fee estimate.");if(s.sourceSpendCap<=e.balance)return u.formatRawTokenInput(t,e.decimals);const o=t*e.balance/s.sourceSpendCap;if(o<=0n||o>=t)throw new Error("The balance cannot cover this action and its fees.");t=o}throw new Error("Max fees did not converge. Refresh the quote before retrying.")}async function np(e){if(e.isPayMode||e.needsSwap||e.isQuoting||e.pivot||!e.embeddedWalletAddress)return null;const t=e.asset,n=S.getTokenByAddress(e.executionTokenAddress,t.chainId);return!n||t.balance<=0n?null:hl({balance:t.balance,decimals:t.decimals,planForAmount:s=>Un({selectedAsset:{asset:t,amount:u.formatRawTokenInput(s,t.decimals)},isPayMode:!1,isNon7702:!1,isFeeInclusiveInput:!1,parsedAmount:Number(u.formatRawTokenInput(s,t.decimals)),currentPaymentAmount:"0",destinationToken:{...n,address:e.executionTokenAddress,chainId:t.chainId},resolvedChainId:t.chainId,resolvedTokenIn:e.executionTokenAddress,executionTokenAddress:e.executionTokenAddress,embeddedWalletAddress:e.embeddedWalletAddress,providerEmbeddedAddress:e.embeddedWalletAddress,address:e.embeddedWalletAddress,isConnected:!0,ready:!0,authenticated:!0,isDirect:!0,isSourceDestToken:!0,needsSwap:!1,isQuoting:!1,resolvedSwap:null,exactOutputSwap:null,buildPayChainBatches:async()=>[],buildSupplyChainBatches:o=>e.buildSupplyChainBatches({...o,actionAmountOverride:s}),estimate:e.estimate,feeExecutionMode:e.feeExecutionMode})})}async function Un(e){const t=await gl(e);if(!e.externalGasRecipient||!t?.batches?.length)return t;const n=await _u(e,t);if(!n.nativeAmount)return{...t,externalGasReserve:n};const s=await gl({...e,externalGasReserve:n,initialFeeEstimate:void 0,buildPayChainBatches:async o=>bo(await e.buildPayChainBatches(o),n),buildSupplyChainBatches:async o=>bo(await e.buildSupplyChainBatches({...o,...e.feeExecutionMode!=="user-transfer"&&o?.actionContextOverride?.netAmount!==void 0?{deliveryAmountOverride:o.actionContextOverride.netAmount+n.feeAmount}:{}}),n)});return s?(dl(n,s.batches??[]),{...s,externalGasReserve:n,preview:{...s.preview,gasFee:s.preview.gasFee+n.feeAmount,totalFee:(s.preview.totalFee??0n)+(e.isPayMode?n.feeAmount:0n),...e.isPayMode?{netAmount:s.preview.netAmount-n.feeAmount}:{}}}):null}async function gl(e){const{signal:t,selectedAsset:n,isPayMode:s,isFeeInclusiveInput:o=!1,parsedAmount:r,needsSwap:i,exactOutputSwap:l,isNon7702:c,currentPaymentAmount:d,destinationToken:f,feeExecutionMode:m,resolvedTokenIn:h,embeddedWalletAddress:y,providerEmbeddedAddress:g,resolvedChainId:w,isConnected:x,address:b,ready:C,authenticated:v,isDirect:k,resolvedSwap:I,sourceSwap:A,pivot:E,isQuoting:j,executionTokenAddress:R,buildPayChainBatches:B,buildSupplyChainBatches:M,estimate:D}=e;if(e.feeOnlyAction&&!n&&e.feeFunding?.length!==0)return cl(e,Un);if(e.feeOnlyAction&&e.actionProceeds&&e.actionProceeds.token.toLowerCase()!==f.address.toLowerCase()||e.feeOnlyAction&&n&&(n.asset._source==="spice"||n.asset._source==="wallet"&&n.asset.chainId===w)&&(h?h.toLowerCase()!==f.address.toLowerCase():n.asset.receiptTokenId||n.asset.chainTokens))return Ds(e);if(e.actionProceeds&&e.feeOnlyAction){const G=y||g;if(!G||!C||!v)return null;if(h&&h.toLowerCase()!==f.address.toLowerCase())throw new Error("Action proceeds require a matching fee-token source");return $i({proceeds:e.actionProceeds,owner:G,token:f.address,signal:t,buildBatches:(fe,X)=>B({...X,fundingAmountOverride:fe}),baseline:()=>Un({...e,actionProceeds:void 0,selectedAsset:n??{amount:"0",asset:{...f,name:f.symbol,balance:0n,balanceFormatted:0,balanceUsd:0,isNative:!1,_source:"spice"}}})})}if(!n?.asset)return null;if(s){if(!y&&!g||r<=0&&!e.feeOnlyAction||i&&!l&&!e.feeOnlyAction)return null;const G=Vt(d,f.decimals),fe=h||sn(n.asset,w)||n.asset.address||f.address,X={chainId:w,tokenAddress:fe,symbol:S.getTokenByAddress(fe,w)?.symbol??n.asset.symbol,decimals:await bn(n.asset,fe,w,f)};if(!x||!b||!C||!v)return null;const be=y||g||b,we=(i?l?.amountInMax??0n:G)+(e.externalGasReserve?.feeAmount??0n);if(we===0n&&!e.feeOnlyAction)return null;const N=E?await pl({user:be,pivot:E,buildSupplyChainBatches:$=>B({...$,sourceGasSkimOverride:1n}),signal:t}):0n,J=Date.now();let ee=await ml({requiredNetFunding:we,feeOnlyAction:e.feeOnlyAction,buildBatches:$=>B({fundingAmountOverride:$,sourceGasSkimOverride:N}).then(le=>Xi(Qu(le),be,void 0,{requestTimestampMs:J})),fundingToken:fe,estimate:D,executionOptions:{userOverride:be,useCustomTransfers:!0,feeExecutionMode:m,signal:t},tokenDescriptor:X});if(!ee.preview)return null;let V=0n,me,he,Re=[],W=!1;for(let $=0;$<8;$++){if(t?.aborted)throw new Error("Fee estimation cancelled");if(Re=Rn(await B({fundingAmountOverride:ee.grossFundingAmount,sourceGasSkimOverride:N,onSourceSpend:st=>{V=st},onSourceAllocation:st=>{me=st},onActionCalls:st=>{he=st}}),be,ee.feeEstimate,{payoutAlreadyGross:!0,requestTimestampMs:J}),me){const st=u.getSupplyFeePreview(ee.feeEstimate,X);if(!st)throw new Error("The action quote is unavailable.");const ve=go(w,fe,[{recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:st.gasFee+(st.bridgeFee??0n)},{recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:st.spicenetFee}]).calls;Re=ns(Re,w,fe);const Ve=[...Re].reverse().findIndex(ot=>ot.domain!=="spicenet"&&ot.chainId===w),Ne=Ve<0?-1:Re.length-Ve-1;if(Ne<0)throw new Error("The action quote is unavailable.");Re[Ne]={...Re[Ne],calls:[...ve,...Re[Ne].calls]}}if(e.feeOnlyAction){W=!0;break}const le=await D(Re,fe,ee.grossFundingAmount,{userOverride:be,useCustomTransfers:!0,feeExecutionMode:m,signal:t}),se=m==="user-transfer"?vo(le,ee.feeEstimate):le,oe=u.getSupplyFeePreview(se,X)??u.getEscrowFreeFeePreview(Re,X,we);if(!oe)return null;const Ie=we+oe.gasFee+oe.spicenetFee+(oe.bridgeFee??0n),_=u.getSupplyFeePreview(ee.feeEstimate,X),je=(_?.gasFee??0n)===oe.gasFee&&(_?.spicenetFee??0n)===oe.spicenetFee&&(_?.bridgeFee??0n)===(oe.bridgeFee??0n),Fe=ee.grossFundingAmount===Ie&&je;if(ee={feeEstimate:se,grossFundingAmount:Ie,preview:{...oe,grossAmount:Ie,netAmount:we}},Fe){W=!0;break}}if(!W)throw new Error("Payment fees did not converge. Refresh the quote before submitting.");if(!ee.preview)return null;const L=E?tn(N,E.source.decimals,E.destination.decimals,"ceil"):0n;return{...ee,batches:Re,sourceSpendCap:V,sourceAllocation:me,actionDefinition:he,destinationAmount:G,preview:{...ee.preview,grossAmount:ee.preview.grossAmount+L,gasFee:ee.preview.gasFee+L,totalFee:(ee.preview.totalFee??0n)+L},...E?{sourceGasSkim:N}:{}}}if(r<=0||!y)return null;const U=y||g;if(E&&!A)return null;const O=Sr({isPayMode:s,selectedAsset:n,resolvedChainId:w,sourceSwap:A,pivot:E});if(!(!s&&!c&&n.asset?._source==="wallet"&&n.asset.chainId!==w)&&!k&&!I&&!j||j)return null;let F=await M();if(F.length===0)return null;const P={chainId:w,tokenAddress:R,symbol:S.getTokenByAddress(R,w)?.symbol??(n.asset.chainId===w&&u.addressesEqual(n.asset.address,R)?n.asset.symbol:f.symbol),decimals:await bn(n.asset,R,w,f)},z=O&&e.initialFeeEstimate!==void 0&&e.initialSourceGasSkim!==void 0,q=O?z?e.initialSourceGasSkim:await pl({user:U,pivot:E,buildSupplyChainBatches:M,signal:t}):0n;O&&q>0n&&(F=await M({sourceGasSkimOverride:q}));const ne=O?tn(o?tl(A,q):A.amountOutMinimum,E.source.decimals,E.destination.decimals,"floor"):tn(Vt(n.amount,n.asset.decimals),n.asset.decimals,P.decimals,"floor"),de=e.quotedInclusivePlatformFee&&m==="user-transfer",ie={userOverride:U,useCustomTransfers:!0,feeExecutionMode:m,signal:t,...O?{skipUserFundingPreflight:!0}:{}};let Y=ne,Q=e.initialFeeEstimate??await D(F,R,Y,de?{...ie,feeExecutionMode:"backend-transfer"}:ie);de&&!e.initialFeeEstimate&&(Q=vo(Q,{intents:[]},100n));for(let G=0;G<8;G++){if(t?.aborted)throw new Error("Fee estimation cancelled");const fe=u.getSupplyFeePreview(Q,P)??u.getEscrowFreeFeePreview(F,P,Y);if(!fe)return null;const X=Er(fe,ne,o,m,e.externalGasReserve?.feeAmount,e.quotedInclusivePlatformFee);Y=X.grossAmount;let be,we,N,J,ee,V;const me=await M({fundingAmountOverride:Y,sourceGasSkimOverride:q,actionContextOverride:X,onDestinationAmount:se=>{be=se},onSourceSpend:se=>{we=se},onSourceAllocation:se=>{N=se},onSwap:(se,oe)=>{J=se,ee=oe},onActionCalls:se=>{V=se}}),he=de?ns(await M({fundingAmountOverride:Y,sourceGasSkimOverride:q,actionContextOverride:X,deliveryAmountOverride:X.netAmount,withdrawalAmountOverride:X.netAmount}).then(se=>{if(se.length!==me.length)throw new Error("The withdrawal fee route changed. Refresh the quote before submitting.");return se.map((oe,Ie)=>{const _=me[Ie];if(!_||_.chainId!==oe.chainId||_.domain!==oe.domain)throw new Error("The withdrawal fee route changed. Refresh the quote before submitting.");return oe.domain==="spicenet"?oe:{...oe,calls:_.calls}})}),w,R):void 0,[Re,W]=await Promise.all([he?fl({estimate:D,batches:me,pricingBatches:he,tokenAddress:R,fundingAmount:Y,options:ie}):D(me,R,Y,{...ie,validateFeeCalls:e.initialFeeEstimate!==void 0}),z?u.relayerService.estimateBatchGas({user:U,outputToken:E.source.address,stepIndex:0,chainBatches:[me[0]],signal:t}):void 0]);if(W&&!(de?W.gasFee<=q:m==="user-transfer"?u.feeAmountsWithinTolerance(q,W.gasFee,e.feeToleranceBps):W.gasFee===q))throw new Error("Source gas changed. Prepare a fresh fee quote.");const L=m==="user-transfer"?vo(Re,Q,de?100n:0n):Re,$=u.getSupplyFeePreview(L,P)??u.getEscrowFreeFeePreview(me,P,Y);if(!$)return null;const le=Er($,ne,o,m,e.externalGasReserve?.feeAmount,e.quotedInclusivePlatformFee);if(JSON.stringify(X,(se,oe)=>typeof oe=="bigint"?oe.toString():oe)===JSON.stringify(le,(se,oe)=>typeof oe=="bigint"?oe.toString():oe)||!de&&m==="user-transfer"&&u.feeBreakdownsWithinTolerance(X.feeBreakdown,le.feeBreakdown,e.feeToleranceBps)){const se=m==="user-transfer"?fe:$,oe=O?tn(q,E.source.decimals,E.destination.decimals,"ceil"):0n;return{batches:me,feePricingBatches:he,fundingAmount:Y,actionContext:X,sourceSpendCap:we,sourceAllocation:N,destinationAmount:be,destinationSwap:J,swapInputAmount:ee,actionDefinition:V,feeEstimate:m==="user-transfer"?Q:L,sourceGasSkim:q,preview:{...se,grossAmount:Y+oe,netAmount:X.netAmount,gasFee:se.gasFee+oe,spicenetFee:X.feeBreakdown.spicenetFee,totalFee:X.combinedFeeAmount+oe}}}Q=L,F=me}throw new Error("Fees did not converge. Refresh the quote before submitting.")}class Ar extends Error{constructor(t){super("Amount is too small to cover fees. Increase the amount and retry."),this.preview=t,this.name="FeeShortfallError"}}function Er(e,t,n,s,o=0n,r=!1){const i=e.gasFee+(e.bridgeFee??0n)+o;if(e.gasQuoteSource==="static_zero"&&o===0n)return{grossAmount:t,netAmount:t,combinedFeeAmount:0n,feeExecutionMode:s??"backend-transfer",feeBreakdown:{gasFee:0n,bridgeFee:0n,spicenetFee:0n}};if(n&&r){const d=i+e.spicenetFee;if(t<=d)throw new Ar({...e,grossAmount:t,netAmount:0n,totalFee:d});return{grossAmount:t,netAmount:t-d,combinedFeeAmount:d,feeExecutionMode:s??"backend-transfer",feeBreakdown:{gasFee:e.gasFee,bridgeFee:e.bridgeFee??0n,spicenetFee:e.spicenetFee}}}const l=n?u.splitFeeInclusiveAmount(t,i,10n):null;if(l&&!l.coversFees)throw new Ar({...e,grossAmount:t,netAmount:0n,spicenetFee:0n,totalFee:i});const c=l?.spicenetFee??(s==="user-transfer"?u.calculateBpsFee(t,10n):e.spicenetFee);return{grossAmount:l?.grossAmount??t+c+i,netAmount:l?.netAmount??t,combinedFeeAmount:c+i,feeExecutionMode:s??"backend-transfer",feeBreakdown:{gasFee:e.gasFee,bridgeFee:e.bridgeFee??0n,spicenetFee:c}}}async function sp(e,t){if(e.feeQuote?.sourceAllocation){e.validateFeeQuote?.();const c=e.feeQuote.sourceAllocation;vr(c,c.positions.map(d=>d.asset),e.embeddedWalletAddress??e.providerEmbeddedAddress??void 0,e.resolvedChainId);return}const n=e.selectedAsset?.asset;if(!n||n?._source!=="wallet")return;const s=sn(n,e.resolvedChainId);if(!s||!u.addressesEqual(s,e.executionTokenAddress))return;const o=await bn(n,e.executionTokenAddress,e.resolvedChainId,e.destinationToken),r=rs(t,o,n.decimals);if(r<=n.balance)return;const i=T.formatUnits(r,n.decimals),l=T.formatUnits(n.balance,n.decimals);throw new Error(`Insufficient ${n.symbol} for this total amount. Required ${i} ${n.symbol}; available ${l} ${n.symbol}.`)}function op(e){const t=S.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:e.executionTokenAddress,symbol:t?.symbol??e.destinationToken.symbol,decimals:t?.decimals??e.destinationToken.decimals}}function rp(e){const t=e.selectedAsset.asset,n=Vt(e.selectedAsset.amount,t.decimals);if(n<=t.balance)return n;throw new Error(`Insufficient ${t.symbol} for this total amount. Required ${T.formatUnits(n,t.decimals)} ${t.symbol}; available ${T.formatUnits(t.balance,t.decimals)} ${t.symbol}.`)}function xl(e,t,n,s){const o=op(t),r=u.getSupplyFeePreview(e,o)??u.getEscrowFreeFeePreview(s,o,n);if(r)return Er(r,n,!!t.isFeeInclusiveInput,t.feeExecutionMode,0n,t.quotedInclusivePlatformFee)}function yl(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(l.to.toLowerCase()===r)try{const c=T.decodeFunctionData({abi:T.erc20Abi,data:l.data});if(c.functionName!=="transfer")continue;const d=c.args[0].toLowerCase(),f=c.args[1];d===S.SPICE_PLATFORM_FEE_RECIPIENT.toLowerCase()?s+=f:d===S.SPICE_GAS_FEE_RECIPIENT.toLowerCase()&&(o+=f)}catch{continue}}return{spicenetFee:s,gasFee:o}}function ap(e,t,n,s){const o=t.feeExecutionMode==="user-transfer"&&t.needsSwap&&t.resolvedTokenIn?t.resolvedTokenIn:t.executionTokenAddress,r=yl(e,t.resolvedChainId,o);return r.spicenetFee===0n&&n.feeBreakdown.spicenetFee>0n||r.gasFee===0n&&n.feeBreakdown.gasFee>0n?!1:u.feeAmountsWithinTolerance(r.spicenetFee,n.feeBreakdown.spicenetFee,t.feeToleranceBps)&&u.feeAmountsWithinTolerance(r.gasFee,n.feeBreakdown.gasFee,t.feeToleranceBps)&&u.feeAmountsWithinTolerance(s.feeBreakdown.bridgeFee,n.feeBreakdown.bridgeFee,t.feeToleranceBps)}function ip(e,t,n){return e?u.amountsWithinBps(e.grossAmount,t.grossAmount,100n)&&u.feeBreakdownsWithinTolerance(e.feeBreakdown,t.feeBreakdown,n):!1}function lp(e,t){const n=S.getTokenByAddress(t,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:t,symbol:n?.symbol??e.selectedAsset?.asset.symbol??"",decimals:n?.decimals??e.selectedAsset?.asset.decimals??e.destinationToken.decimals}}async function cp(e,t){const n=e.feeQuote;return n?.feeEstimate&&n.grossFundingAmount!==void 0?{grossFundingAmount:n.grossFundingAmount,feeEstimate:n.feeEstimate}:ml({...t,feeOnlyAction:e.feeOnlyAction,estimate:e.execution.estimate,tokenDescriptor:lp(e,t.fundingToken)})}function wl(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 bl(e,t){const n=u.sanitizeError(t,"Payment failed. Please try again.");e.ui.setError(n),e.ui.setPaymentResult({status:"failed",error:n})}async function vl(e){e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setStep("executing"),e.ui.setStatusMsg("Confirm the transaction in your external wallet..."),e.ui.setTxHash(null),e.isPayMode&&(e.ui.setShowStatusPanel(!0),e.ui.setPaymentResult({status:"processing"}));try{if(e.validateFeeQuote?.(),!e.feeQuote?.batches||!e.feeQuote.actionDefinition)throw new Error("Review the direct action plan before submitting.");const t=await e.execution.execute(e.feeQuote.batches,e.destinationToken.address,0n,e.execution.onProgress);e.ui.setTxHash(t),e.ui.setStep("success"),e.ui.setStatusMsg("Transaction confirmed"),e.isPayMode&&e.ui.setPaymentResult({status:"success",txHash:t})}catch(t){e.isPayMode?bl(e,t):wl(e,t,!1)}finally{e.ui.setIsExecuting(!1)}}async function Cl(e,t,n){e.validateFeeQuote?.();const s=e.feeQuote;if(!s.batches||s.sourceSpendCap===void 0||!s.fundingSource)throw new Error("Refresh the action before submitting.");const o=s.fundedFeeToken,r=s.grossFundingAmount??0n,i=el({...e,signal:n,feeOnlyAction:!0,destinationToken:o,actionProceeds:e.actionProceeds??{token:s.fundingSource.token,resolve:async()=>s.proceedsAvailable??0n}},o.address,r);return e.execution.execute(s.batches,s.fundingConversion?.tokenIn??s.fundingSource.token,r,t,n,{...i,userOverride:e.embeddedWalletAddress||e.providerEmbeddedAddress,useCustomTransfers:!0,feeExecutionMode:"backend-transfer",skipPreSubmitFeeEstimate:!0})}async function kl(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");return}if(e.directExternalAction)return vl(e);if(!e.embeddedWalletAddress){e.ui.setError("Wallet not ready");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setStep("signing-delegation"),e.ui.setStatusMsg("Building transaction..."),e.ui.setTxHash(null),e.refs.spiceDepositSubmittedRef.current=!1;const t=new AbortController;e.refs.abortControllerRef.current=t;try{const n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(e.feeQuote?.fundedFeeToken){const y=await Cl(e,e.execution.onProgress,t.signal);e.ui.setTxHash(y),e.ui.setStep("success"),e.ui.setStatusMsg("Transaction confirmed");return}const s=Sr(e);s&&rp(e);const o=e.feeQuote?.batches?e.feeQuote:await Un({...e,feeExecutionMode:e.feeExecutionMode,isDirect:!e.needsSwap,isQuoting:!1,resolvedSwap:null,buildPayChainBatches:e.execution.buildPayChainBatches,buildSupplyChainBatches:e.execution.buildSupplyChainBatches,estimate:e.execution.estimate});if(!o?.batches||o.fundingAmount===void 0||!o.actionContext)throw new Error("A current action plan is required. Refresh the quote before submitting.");const r=e.isFeeInclusiveInput?o.actionContext.grossAmount:o.actionContext.netAmount;let i=o.batches;const l=i.some(y=>y.tokenTransfers?.length),c={userOverride:n,useCustomTransfers:l,feeExecutionMode:e.feeExecutionMode,...s?{skipUserFundingPreflight:!0}:{}},d=o.fundingAmount,f=o.actionContext;await sp(e,d);const m=f,h=await e.execution.execute(i,e.executionTokenAddress,l?d:0n,e.execution.onProgress,t.signal,e.feeExecutionMode==="user-transfer"?{...c,skipUserFundingPreflight:!0,adjustBatchesForEstimate:async({feeEstimate:y,chainBatches:g})=>{if(o.feePricingBatches){e.validateFeeQuote?.();const C=await fl({estimate:e.execution.estimate,batches:g,pricingBatches:o.feePricingBatches,tokenAddress:e.executionTokenAddress,fundingAmount:d,options:{...c,signal:t.signal},signedEstimate:y});e.validateFeeQuote?.();const v=xl(C,e,r,g),k=m.feeBreakdown,I=yl(g,e.resolvedChainId,e.executionTokenAddress);if(!v||v.feeBreakdown.spicenetFee!==k.spicenetFee||v.feeBreakdown.gasFee>k.gasFee||v.feeBreakdown.bridgeFee>k.bridgeFee||I.spicenetFee!==k.spicenetFee||I.gasFee!==k.gasFee+k.bridgeFee)throw new Error("Transaction fees changed. Refresh the quote before submitting.");return null}const w=xl(o.feeEstimate?vo(y,o.feeEstimate):y,e,r,g);if(!w)throw new Error("Unable to validate the accepted fees. Refresh the quote before submitting.");const x=ip(m,w,e.feeToleranceBps),b=ap(g,e,w,m);if(x||b)return null;throw new Error("Transaction fees changed. Refresh the quote before submitting.")}}:{...c,skipPreSubmitFeeEstimate:!0});e.ui.setTxHash(h),e.ui.setStep("success"),e.ui.setStatusMsg("Deposit confirmed")}catch(n){wl(e,n,t.signal.aborted)}finally{e.ui.setIsExecuting(!1)}}async function Sl(e){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.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.directExternalAction)return vl(e);const n=rl(e)&&!t,s=n?e.feeQuote?.sourceGasSkim??0n:0n,o=r=>e.execution.buildPayChainBatches(n?{...r,sourceGasSkimOverride:s}:r);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{if(e.feeQuote?.fundedFeeToken){const v=await Cl(e,k=>{k.txHash&&(e.ui.setTxHash(k.txHash),e.ui.setPaymentResult({status:"processing",txHash:k.txHash}))});e.ui.setPaymentResult(k=>({status:"success",txHash:k?.txHash||v}));return}const r=Vt(e.currentPaymentAmount,e.destinationToken.decimals),i={useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode,...n?{skipUserFundingPreflight:!0}:{}};if(t&&!e.feeOnlyAction){const v=await o(),k=await e.execution.execute(v,e.executionTokenAddress,0n,I=>{I.txHash&&(e.ui.setPaymentResult(A=>({...A??{status:"processing"},txHash:I.txHash})),e.ui.setTxHash(I.txHash))},void 0,i);e.ui.setPaymentResult(I=>({status:"success",txHash:I?.txHash||k}));return}const l=e.selectedAsset?.asset,c=e.feeQuote?.fundingSource;if(!l&&!e.actionProceeds&&!c)throw new Error("Select a payment source");const d=e.feeQuote?.fundingConversion?.tokenIn||c?.token||e.resolvedTokenIn||l?.address||e.destinationToken.address,f=e.needsSwap?e.exactOutputSwap?.amountInMax??0n:r,m=e.embeddedWalletAddress||e.providerEmbeddedAddress||e.address,h=!!e.feeQuote?.fundingConversion||!!c&&(c.kind!=="balance"||c.asset?._source==="wallet"),{grossFundingAmount:y,feeEstimate:g}=h?{grossFundingAmount:e.feeQuote.grossFundingAmount??0n,feeEstimate:void 0}:await cp(e,{requiredNetFunding:f,buildBatches:v=>e.execution.buildPayChainBatches({fundingAmountOverride:v}).then(k=>Rn(k,m)),fundingToken:d,executionOptions:i});let w=e.feeQuote?.fundingBatches??e.feeQuote?.batches??Rn(await o({fundingAmountOverride:y}),m,e.actionProceeds?void 0:g,{payoutAlreadyGross:!0});const x=el(e,e.feeQuote?.fundingConversion?.tokenOut??d,y);x.prepareForSigning&&(w=await x.prepareForSigning(w));const b=w.some(v=>v.tokenTransfers?.length),C=await e.execution.execute(w,d,b?y:0n,v=>{v.txHash&&(e.ui.setPaymentResult(k=>({...k,txHash:v.txHash})),e.ui.setTxHash(v.txHash))},void 0,{...i,...x,skipPreSubmitFeeEstimate:!0});e.ui.setPaymentResult(v=>({status:"success",txHash:v?.txHash||C}))}catch(r){bl(e,r)}finally{e.ui.setIsExecuting(!1)}}async function Il(e){const{quote:t,recipient:n,chainId:s,token:o}=e,r=t.batches?Al(t.batches,o,s,n):0n;if(r<=0n)throw new Error("The route does not deliver the action amount to the external wallet.");const i={userAddress:n,executorAddress:n,beneficiary:e.beneficiary??n,chainId:s,destinationToken:o,feeToken:o,grossAmount:r,netAmount:r,combinedFeeAmount:0n,feeExecutionMode:e.feeExecutionMode,feeBreakdown:{spicenetFee:0n,gasFee:0n,bridgeFee:0n}},l=await e.buildCalls(r,i);if(!l.length)throw new Error("No action calls configured.");return{amount:r,context:i,calls:l.map(c=>({...c}))}}function dp(e,t,n){const s=[],o=(r,i,l)=>{l>0n&&s.push(S.isNativeToken(r)?{to:i,value:l,data:"0x"}:{to:r,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"transfer",args:[i,l]})})};return t.feeExecutionMode==="user-transfer"&&t.feeBreakdown&&(o(t.feeToken??t.destinationToken,S.SPICE_PLATFORM_FEE_RECIPIENT,t.feeBreakdown.spicenetFee),o(t.feeToken??t.destinationToken,S.SPICE_GAS_FEE_RECIPIENT,t.feeBreakdown.gasFee+t.feeBreakdown.bridgeFee)),o(t.destinationToken,n,e),s}function Al(e,t,n,s){let o=0n;for(const r of e)if(r.chainId===n){for(const i of r.calls)if(u.addressesEqual(i.to,t))try{const l=T.decodeFunctionData({abi:T.erc20Abi,data:i.data});l.functionName==="transfer"&&u.addressesEqual(l.args[0],s)&&(o+=l.args[1])}catch{}}return o}async function up(e){if(!/^0x[0-9a-f]{64}$/i.test(e.hash))throw new Error("The external delivery receipt is unavailable.");const t=u.getClientForChain(e.chainId),n=await t.getTransactionReceipt({hash:e.hash});if(n.status!=="success"||!u.addressesEqual(n.transactionHash,e.hash))throw new Error("The external delivery receipt was not successful.");let s=0n;for(const o of n.logs)if(u.addressesEqual(o.address,e.token))try{const r=T.decodeEventLog({abi:T.erc20Abi,eventName:"Transfer",data:o.data,topics:o.topics});u.addressesEqual(r.args.to,e.recipient)&&u.addressesEqual(r.args.from,e.sender)&&(s+=r.args.value)}catch{}if(s!==e.amount)throw new Error("The received external amount does not match the accepted action.");if(await t.readContract({address:e.token,abi:T.erc20Abi,functionName:"balanceOf",args:[e.recipient]})<e.amount)throw new Error("The external wallet no longer holds the delivered action amount.")}async function El(e){const{definition:t,account:n,chainId:s}=e,{calls:o}=t;if(!u.addressesEqual(t.context.executorAddress,n)||t.context.chainId!==s||!o.length)throw new Error("The direct action no longer matches its wallet or chain.");const r=u.getClientForChain(s);let i;for(const l of o){await e.assertCurrent();const[c,d]=await Promise.all([Ti({client:r,account:n,calls:[l]}),r.getBalance({address:n})]);if(d<l.value+c)throw new Error("The external wallet has insufficient native balance for this transaction and network gas.");await e.assertCurrent();const{extWc:f,viemChain:m}=await ar({wallet:e.wallet,account:n,chainId:s});await e.assertCurrent(),i=await ou({extWc:f,viemChain:m,client:r,calls:[l],errorMessage:"The external transaction reverted. Retry the unfinished action when ready."})}if(!i)throw new Error("The direct action has no confirmed receipt.");return i}async function Fl(e){const{asset:t,embedded:n,external:s,amount:o}=e;if(!s||!e.externalWallet)throw new Error("Connect the source wallet before funding.");if(o<=0n)return;const r=u.getClientForChain(t.chainId),i=t.isNative||S.isNativeToken(t.address),[l,c]=await Promise.all([Bi({client:r,account:s,recipient:n,token:t.address,isNative:i,amount:o}),r.getBalance({address:s})]);if(c<l+(i?o:0n))throw new Error("The source wallet has insufficient native balance for funding and gas.");const{extWc:d,viemChain:f}=await ar({wallet:e.externalWallet,account:s,chainId:t.chainId});await ru({extWc:d,sourceClient:r,recipient:n,tokenAddr:t.address,isNative:i,amount:o,viemChain:f,observer:{onSending:()=>e.assertCurrent()}})}function Tl(e){const t=p.useContext(u.SpiceFlowProviderContext),n=u.getChainConfig(e.chainId),s=e.address??n?.supportedTokens?.find(g=>g.symbol.toLowerCase()===e.symbol?.toLowerCase())?.address,o=e.symbol??(s&&S.isNativeToken(s)?n?.nativeCurrency?.symbol:n?.supportedTokens?.find(g=>!!s&&u.addressesEqual(g.address,s))?.symbol),r=u.getRpcUrlForChain(e.chainId,t?.rpcOverrides),[i,l]=p.useState(0),c=`${e.chainId}:${s?.toLowerCase()}:${r}:${e.decimals??""}:${o??""}:${i}`,[d,f]=p.useState(null);p.useEffect(()=>{let g=!1;if(!(!e.enabled||!s||!r?.trim()))return Promise.all([e.decimals??u.getTokenDecimals(e.chainId,s,t?.rpcOverrides),o??un.readContract(u.getClientForChain(e.chainId,t?.rpcOverrides),{address:s,abi:T.erc20Abi,functionName:"symbol"}).catch(()=>{})]).then(([w,x])=>{if(!Number.isInteger(w)||w<0||w>255)throw new Error("Invalid destination token decimals");g||f({key:c,decimals:w,symbol:x})}).catch(w=>{g||f({key:c,error:w.message})}),()=>{g=!0}},[e.enabled,c]);const m=d?.key===c?d:null,h=p.useMemo(()=>({address:s??S.ZERO_ADDRESS,chainId:e.chainId,decimals:m?.decimals??0,symbol:o??m?.symbol??(s?u.truncateAddress(s):""),logoURI:e.logoURI}),[s,e.chainId,m?.decimals,m?.symbol,o,e.logoURI]),y=e.enabled?s?r?.trim()?m?.error??null:`Configure SpiceFlowProvider rpcOverrides[${e.chainId}] before continuing.`:"Configure the destination token address before continuing.":null;return{token:h,error:y,ready:e.enabled&&!!s&&!!r?.trim()&&m?.decimals!==void 0,refresh:p.useCallback(()=>l(g=>g+1),[])}}function Bl(e,t){const n=!!e&&e.symbol!==void 0&&e.decimals!==void 0,s=Tl({enabled:t&&!!e&&!n,chainId:e?.chainId??0,address:e?.address,decimals:e?.decimals,symbol:e?.symbol,logoURI:e?.logoURI});return{token:e?n?e:s.ready?s.token:void 0:void 0,error:s.error}}const Fr={address:S.ZERO_ADDRESS,symbol:"",decimals:18,chainId:0};function Rl(e,t,n){return u.addressesEqual(e.address,t)&&e.chainId===n?e._source==="wallet"?0:1:2}function pp(e,t,n,s){const o=Rl(e,n,s)-Rl(t,n,s);return o!==0?o:(t.balanceUsd||0)-(e.balanceUsd||0)}const fp=Ma;function jl(e){const t=p.useContext(u.SpiceFlowProviderContext),n=u.useProviderWallets(),s=t?.embeddedWalletAddress||n.embeddedAddress,o=t?.externalWalletAddress||n.externalAddress,r=(t?.mode||"7702")!=="7702",i=e.destinationToken??Fr,l=e.enabled&&!!e.destinationToken,c=Xn({...e,owner:s,enabled:l&&!!s&&(!r||e.includeCrossChainEmbeddedAssets!==!1),role:"spend-source",destination:e.destinationToken}),d=Xn({...e,owner:o,enabled:l&&!!o&&(r||e.includeExternalWalletAssets!==!1),role:"spend-source",destination:e.destinationToken});return{displayAssets:p.useMemo(()=>[...c.assets,...d.assets].sort((f,m)=>pp(f,m,i.address,i.chainId)),[c.assets,d.assets,i.address,i.chainId]),filteredSpiceAssets:c.rollupAssets,walletAssets:[...c.walletAssets,...d.walletAssets],embeddedWalletAddress:s,externalAddress:o,isNon7702:r,refreshSpiceAssets:c.refresh,refreshWalletAssets:c.refresh,loading:c.loading||d.loading,refreshing:c.refreshing||d.refreshing,error:c.error||d.error}}function mp(e,t){return!e||e._source!=="wallet"?null:qo(e,t)}function Tr(e){return ga({aerodrome:!1,oneInch:{chainIds:[]},customVenues:e})}const Br=Pn(),hp=Tr(Br.input);function Ol(e){return{venue:"mapped-transfer",amountOut:e,amountOutMinimum:e,calls:[]}}function Dl(e){return{venue:"mapped-transfer",amountIn:e,amountInMax:e,amountOut:e,calls:[]}}async function Rr(e){if(u.addressesEqual(e.tokenIn,e.tokenOut))return Ol(e.amountIn);if(e.resolveInputSwap){const n=await e.resolveInputSwap({type:"swap",tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountIn:e.amountIn,maxSlippage:e.maxSlippage},e.chainId,e.recipient);if(n)return n}const t=await(e.liquidityVenues?Tr(Pn(e.liquidityVenues).input):hp).resolveSwap({type:"swap",tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountIn:e.amountIn,maxSlippage:e.maxSlippage},e.chainId,e.recipient,e.selectedSwap);if(!t)throw new Error("No liquidity for this pair.");return t}async function gp(e){return u.addressesEqual(e.tokenIn,e.tokenOut)?Dl(e.amountOut):Os({customVenues:e.liquidityVenues?Pn(e.liquidityVenues).output:Br.output}).getQuote({tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountOut:e.amountOut,maxSlippage:e.maxSlippage},e.chainId,e.recipient)}function Nl(e){const{enabled:t=!0,direction:n,selectedAsset:s,destinationToken:o,chainId:r=o.chainId,recipient:i,paymentAmount:l,maxSlippage:c,refreshIntervalMs:d,resolveInputSwap:f,resolveExactOutputSwap:m}=e,h=p.useContext(u.SpiceFlowProviderContext),y=h?.liquidityVenues,g=JSON.stringify([h?.network,h?.apiUrl,h?.rpcOverrides]),[w,x]=p.useState(!1),[b,C]=p.useState(null),[v,k]=p.useState(null),[I,A]=p.useState(null),[E,j]=p.useState(null),[R,B]=p.useState(null),[M,D]=p.useState(null),[U,O]=p.useState(null),[F,P]=p.useState(null),[z,q]=p.useState(null),[ne,de]=p.useState(null),[ie,Y]=p.useState(null),[Q,G]=p.useState(null),[fe,X]=p.useState(null),[be,we]=p.useState(0),[N,J]=p.useState(null),[ee,V]=p.useState(null),me=p.useRef(null),he=p.useRef(null),Re=p.useRef(0),W=p.useRef(new Map),L=p.useCallback(()=>{Re.current++,W.current.clear(),V(null),we(Ae=>Ae+1)},[]),$=d&&d>0?d:null,le=y?JSON.stringify(y):"",se=p.useMemo(()=>y?Pn(y):Br,[le]),oe=p.useMemo(()=>Tr(se.input),[se]),Ie=p.useMemo(()=>Os({customVenues:[...m?[{name:"consumer-exact-output",chainIds:[r],preferred:!0,resolve:m}]:[],...se.output]}),[m,r,se]);p.useEffect(()=>{W.current.clear()},[Ie]);const _=p.useMemo(()=>t?mp(s?.asset,r):null,[t,s?.asset,r]),je=p.useMemo(()=>{if(!t||!s?.asset)return null;if(_)return _.destination.address;const Ae=sn(s.asset,r);if(Ae)return Ae;const xt=kn(s.asset.address,r,s.asset.chainId);return xt?xt.address:null},[t,s?.asset,r,_]),Fe=p.useMemo(()=>t&&s?.asset?Kn(s.asset,r):[],[t,s?.asset,r]),st=p.useMemo(()=>Fe.map(Ae=>Ae.toLowerCase()).join(","),[Fe]),ve=JSON.stringify([t,g,s?.asset.owner,s?.asset.location,s?.asset.receiptTokenId,s?.asset.address,s?.asset.chainId,s?.asset.decimals,s?.amount,r,st,n,l]);p.useEffect(()=>{let Ae=!1;if(he.current&&(clearTimeout(he.current),he.current=null),!t||!s?.asset||_||Fe.length<=1){G(null),X(null);return}return he.current=setTimeout(async()=>{const xt=n==="input"?s.amount:l||"0";let qe=0n;try{qe=n==="input"?Vt(xt,s.asset.decimals):0n}catch{qe=0n}try{const ut=await Da(s.asset,r,{requiredAmount:qe});Ae||(G(ut),X(ve))}catch{Ae||G(null)}},400),()=>{Ae=!0,he.current&&(clearTimeout(he.current),he.current=null)}},[ve]);const Ve=p.useMemo(()=>(fe===ve?Q:null)??je,[Q,fe,ve,je]),Ne=p.useMemo(()=>!s?.asset||!Ve?[]:[Ve,...Fe.filter(Ae=>Ae.toLowerCase()!==Ve.toLowerCase())],[s?.asset,Ve,Fe]),ot=p.useMemo(()=>!s?.asset||!xs(s.asset.address,s.asset.chainId,o.address,o.chainId)||!Ve?!1:u.addressesEqual(Ve,o.address),[s,o.address,o.chainId,Ve]),Pe=Ve?u.addressesEqual(Ve,o.address):!1,ht=n==="output"&&parseFloat(l||"0")===0,Je=t&&!!s?.asset&&!ot&&!Pe&&!ht,gt=JSON.stringify([t,le,n,Je,g,s?.asset.owner,s?.asset.location,s?.asset.receiptTokenId,s?.asset.address,s?.asset.chainId,s?.asset.decimals,n==="input"?s?.amount:l,Ne.map(Ae=>Ae.toLowerCase()),r,o.address.toLowerCase(),o.chainId,o.decimals,i?.toLowerCase(),c,$,_?.source.address.toLowerCase()??""]),Qe=p.useMemo(()=>({}),[gt,oe,Ie,f,be]),lt=ee?.request===Qe&&(!$||ee.expiresAt>Date.now());return p.useEffect(()=>{if(!$||ee?.request!==Qe)return;const Ae=setTimeout(L,Math.max(0,ee.expiresAt-Date.now()));return()=>clearTimeout(Ae)},[$,ee,Qe,L]),p.useEffect(()=>{me.current&&clearTimeout(me.current),J(Qe),V(null),C(null);const Ae=n==="input"?s?.amount:l,xt=parseFloat(Ae||"0");if(!t||!Number.isFinite(xt)||xt<=0||!s?.asset||!i||Ne.length===0){Re.current++,k(null),A(null),j(null),B(null),D(null),O(null),P(null),Y(null),C(null),x(!1);return}const qe=s.asset.decimals;let ut;try{ut=n==="input"?Vt(s.amount,qe):Vt(l||"0",o.decimals)}catch(We){Re.current++,C(We instanceof Error?We.message:"Invalid amount or token precision"),x(!1);return}const wt=++Re.current,$e=()=>wt!==Re.current;x(!0);const at=n==="output"?150:100,Ue=async(We,ae,ue,Te={chainId:r,tokenOut:o.address,amountIn:ut},Be=Ne)=>{for(const ce of Be){const ze=`${g}:${le}:${n}:${Te.chainId}:${ce.toLowerCase()}:${Te.tokenOut.toLowerCase()}:${Te.amountIn.toString()}:${i.toLowerCase()}:${c??"default"}:${$??"default"}`,Oe=W.current.get(ze),H=Oe&&Oe.expiresAt>Date.now()?We(Oe):void 0;if(H)return{quote:H,tokenIn:ce,expiresAt:Oe.expiresAt};const Ze=await ue(ce);if($e())return"stale";if(!Ze)continue;const Se=Date.now()+Math.min($??3e4,3e4);return W.current.set(ze,{expiresAt:Se,direction:n,...ae(Ze)}),{quote:Ze,tokenIn:ce,expiresAt:Se}}return null},rt=We=>Ue(ae=>ae.resolvedSwap,ae=>({resolvedSwap:ae}),async ae=>{const ue=!_&&We.chainId===r&&s.asset._source!=="wallet",Te=ue?await bn(s.asset,ae,We.chainId,o):qe;if($e())return null;const Be=ue?_n(We.amountIn,qe,Te):We.amountIn;if(u.addressesEqual(ae,We.tokenOut))return Ol(Be);const ce={type:"swap",tokenIn:ae,tokenOut:We.tokenOut,amountIn:Be,maxSlippage:c};if(f){const ze=await f(ce,We.chainId,i);if(ze)return ze}return oe.resolveSwap(ce,We.chainId,i)},We,We.candidates);return me.current=setTimeout(async()=>{try{if(n==="input"){let We=null,ae=ut;if(_){if(We=await rt({chainId:_.source.chainId,tokenOut:_.source.address,amountIn:ut,candidates:[s.asset.address]}),We==="stale"||$e())return;if(!We)throw new Error("No liquidity for this pair");ae=tn(We.quote.amountOutMinimum,_.source.decimals,_.destination.decimals,"floor")}const ue=Je||!_?await rt({chainId:r,tokenOut:o.address,amountIn:ae,candidates:Ne}):null;if(ue==="stale"||$e())return;if(Je&&!ue)throw new Error("No liquidity for this pair");const Te=ue?ue.quote.amountOut:ae,Be=Math.min(ue?.expiresAt??1/0,We?.expiresAt??1/0),ce=_?.destination.decimals??await bn(s.asset,ue.tokenIn,r,o),ze=!_&&s.asset._source!=="wallet"?_n(ae,qe,ce):ae;if($e())return;Y(ue?.tokenIn??_?.destination.address??null),V({request:Qe,key:`${T.keccak256(T.toHex(gt))}:${wt}`,expiresAt:Be}),P(Te),q(ze),de(ce),j(Je?ue?.quote??null:null),B(We?.quote??null),D(null),O(null);const Oe=parseFloat(T.formatUnits(Te,o.decimals));k(Oe<.01?Oe.toPrecision(4):Oe.toLocaleString(void 0,{maximumFractionDigits:6})),A(null),C(null)}else{const We=ze=>Ue(Oe=>Oe.exactOutputSwap,Oe=>({exactOutputSwap:Oe}),async Oe=>{try{return u.addressesEqual(Oe,ze.tokenOut)?Dl(ze.amountOut):await Ie.getQuote({tokenIn:Oe,tokenOut:ze.tokenOut,amountOut:ze.amountOut,maxSlippage:c},ze.chainId,i)}catch{return null}},{chainId:ze.chainId,tokenOut:ze.tokenOut,amountIn:ze.amountOut},ze.candidates),ae=!_||Je,ue=ae?await We({chainId:r,tokenOut:o.address,amountOut:ut,candidates:Ne}):null;if(ue==="stale"||$e())return;if(ae&&!ue)throw new Error("No liquidity for this pair");let Te=null;if(_){const ze=ue?ue.quote.amountInMax:ut;if(Te=await We({chainId:_.source.chainId,tokenOut:_.source.address,amountOut:tn(ze,_.destination.decimals,_.source.decimals,"ceil"),candidates:[s.asset.address]}),Te==="stale"||$e())return;if(!Te)throw new Error("No liquidity for this pair")}const Be=Te?qe:await bn(s.asset,ue.tokenIn,r,o);if($e())return;Y(ue?.tokenIn??_?.destination.address??null),V({request:Qe,key:`${T.keccak256(T.toHex(gt))}:${wt}`,expiresAt:Math.min(ue?.expiresAt??1/0,Te?.expiresAt??1/0)}),O(ue?.quote??null),D(Te?.quote??null),j(null),B(null),P(null);const ce=Te?.quote.amountIn??ue.quote.amountIn;A(T.formatUnits(ce,Be)),k(null),C(null)}}catch(We){if($e())return;const ae=We instanceof Error?We.message:"Failed to get quote";C(ae),k(null),A(null),j(null),B(null),D(null),O(null),P(null),Y(null)}finally{$e()||x(!1)}},Je||_?at:0),()=>{Re.current++,me.current&&clearTimeout(me.current)}},[Qe]),{inputAmount:lt&&n==="input"?z:null,inputDecimals:lt&&n==="input"?ne:null,quoteKey:lt?ee.key:null,quoteExpiresAt:lt?ee.expiresAt:null,refreshQuote:L,isQuoting:N===Qe?w:Je||!!_,quoteError:N===Qe?b:null,estimatedOutput:lt?v:null,estimatedInput:lt?I:null,resolvedSwap:lt?E:null,exactOutputSwap:lt?U:null,quoteAmountOut:lt?F:null,resolvedTokenIn:Je&<?ie??Ve:Ve,isDirect:Pe,needsSwap:Je,selectedIsEquivalent:ot,sourceSwap:lt?R:null,sourceExactOutputSwap:lt?M:null,pivot:_}}function Ns(e){const{enabled:t=!0,destinationToken:n,selectedAsset:s,paymentAmount:o="0",sourceChains:r,supportedSourceAssets:i,buildActionCalls:l,feeExecutionMode:c="user-transfer",buildSpicenetBatch:d,onPayExecute:f,resolveExactOutputSwap:m,amountDirection:h=e.feeOnlyAction?"output":"input",onSuccess:y,onError:g}=e,w=Bl(n,t),x=w.token??Fr,b=t&&!!w.token,C=h==="output",v=h==="input-inclusive",k=e.feeFunding?.length!==0&&(e.actionProceeds==="output"||!!e.feeFunding?.length),I=C?"output":"input",A=x.chainId,E=p.useContext(u.SpiceFlowProviderContext),j=u.resolveFeeToleranceBps(E?.feeToleranceBps),R=E?.mode||"7702",B=!1,M=!!E?.isWhitelistGateActive,D=!!E?.isWhitelistConfigured&&E?.isUserWhitelisted!==!0,U=p.useMemo(()=>r??E?.supportedChainIds??[],[r,E?.supportedChainIds]),O=i,{address:F,isConnected:P,isReady:z,isAuthenticated:q,provider:ne}=u.useWallet(),{execute:de,estimate:ie}=Is(),{externalWallet:Y,embeddedAddress:Q,activeWallet:G,activeAddress:fe}=u.useProviderWallets(),X=E?.externalWalletAddress,be=E?.embeddedWalletAddress||Q,we=fr(be,t),N=s,J=$s(N?.asset,R!=="7702"),ee=!!N&&N.asset.chainId===x.chainId&&u.addressesEqual(S.normalizeNativeTokenAddress(N.asset.address),S.normalizeNativeTokenAddress(x.address)),V=(R!=="7702"||e.actionExecution?.wallet==="external")&&J&&ee&&(!C||Number(o)>0)&&!e.feeOnlyAction&&!e.actionProceeds,me=J&&!V,he=e.actionExecution?.wallet==="external"&&!V,Re=he?[x.chainId,...N?.asset._source==="wallet"?[N.asset.chainId]:[]].find(K=>!E?.rpcOverrides?.[K]):void 0,W=w.error?w.error:f?"Move onPayExecute protocol calls to buildActionCalls and application updates to onSuccess before continuing.":he&&(C&&!(Number(o)>0)||e.feeOnlyAction||e.actionProceeds||e.prependSourceEscrow||S.isNativeToken(x.address))?"External wallet execution requires a positive ERC20 supply or payment with SDK-managed funding.":Re!==void 0?`Configure rpcOverrides for chain ${Re} before routing to the external caller.`:null,L=p.useMemo(()=>he&&X?(K,pe)=>dp(K,pe,X):l,[he,X,l]),{displayAssets:$,filteredSpiceAssets:le,walletAssets:se,embeddedWalletAddress:oe,refreshSpiceAssets:Ie,refreshWalletAssets:_,loading:je,refreshing:Fe,error:st}=jl({address:F,destinationToken:x,supportedSourceAssets:O,sourceChains:U,additionalSourceTokens:[...e.additionalSourceTokens??[],...N?.asset._source==="wallet"?[{address:N.asset.address,chainId:N.asset.chainId,decimals:N.asset.decimals,symbol:N.asset.symbol,name:N.asset.name,logoURI:N.asset.logoURI}]:[]],includeExternalWalletAssets:e.includeExternalWalletAssets,includeCrossChainEmbeddedAssets:e.includeCrossChainEmbeddedAssets,enabled:b&&(R!=="7702"?!!X:!!be)}),ve=!!e.combineSourceBalances,Ve=JSON.stringify([...se,...le],(K,pe)=>typeof pe=="bigint"?pe.toString():pe),Ne=p.useMemo(()=>[...se,...le],[Ve]),ot=ve?JSON.stringify([be,A,Ve]):"",Pe=p.useCallback((K,pe)=>{if(!ve)return;const Ge=Ne.find(Ke=>ye(Ke)===ye(K));return Ge?Zi(Ge,Ne,be??void 0,A,void 0,pe):void 0},[ve,Ne,be,A]),ht=p.useCallback(K=>!ve||K.owner?.toLowerCase()!==be?.toLowerCase()||K.chainId!==A?!1:Ne.some(pe=>pe.owner?.toLowerCase()===K.owner?.toLowerCase()&&pe.chainId===A&&(K.location==="embedded"&&pe.location==="rollup"&&Object.keys(pe.chainTokens??{}).some(Ge=>Ge.toLowerCase()===`evm:${A}:${K.address.toLowerCase()}`)||K.location==="rollup"&&pe.location==="embedded"&&Object.keys(K.chainTokens??{}).some(Ge=>Ge.toLowerCase()===`evm:${A}:${pe.address.toLowerCase()}`))),[ve,be,A,Ne]),Je=p.useCallback(K=>{if(!ve)return K.balance;const pe=Ne.find(Ge=>ye(Ge)===ye(K));if(!(!pe||pe.balanceError||pe.balanceStatus==="stale"))return ht(pe)?Pe(pe)?.availableBalance:pe.balance},[ve,Ne,ht,Pe]),gt=p.useMemo(()=>{if(!ve)return $;const K=new Set;return $.filter(pe=>{const Ge=Pe(pe);if(!Ge)return!0;const Ke=ye(Ge.escrow);return K.has(Ke)?!1:(K.add(Ke),!0)})},[$,ve,Pe]),Qe=k||e.feeFunding?.length!==0&&C&&!!N&&!!Pe(N.asset),lt=p.useMemo(()=>e.feeOnlyAction||Qe?$.filter(K=>K.balance>0n&&K.location!=="external"&&(K._source==="spice"||K._source==="wallet"&&K.chainId===A)):[],[$,e.feeOnlyAction,Qe,A]),Ae=N?[...se,...le].find(K=>ye(K)===ye(N.asset)):void 0,xt=p.useMemo(()=>N&&Ae?{...N,asset:Ae}:N,[N,Ae]),qe=N?En(Ae??N.asset,"spend-source",{allowedTokens:E?.allowedTokens,rpcOverrides:E?.rpcOverrides,liquidityVenues:E?.liquidityVenues,isWhitelistGateActive:M},x,O):null,ut=Ae?Pe(Ae):void 0,wt=ve?Ae?Je(Ae):void 0:N?.asset.balance,$e=N&&ht(N.asset)?wt??0n:Ae?Ae.balance<(N?.asset.balance??0n)?Ae.balance:N.asset.balance:0n,[at,Ue]=p.useState(!1),[rt,We]=p.useState(!1),ae=p.useRef(!1),ue=p.useRef(!1),Te=p.useRef(!0);p.useLayoutEffect(()=>(Te.current=!0,()=>{Te.current=!1}),[]);const[Be,ce]=p.useState(null),ze=p.useRef(g);ze.current=g;const Oe=p.useCallback(K=>{ce(K),typeof K=="string"&&K&&ze.current?.(new Error(K),u.getRelayerErrorDetail(K))},[]),[H,Ze]=p.useState("idle"),[Se,ct]=p.useState(""),[jt,Et]=p.useState(null),[De,et]=p.useState(!1),[yt,Ct]=p.useState(null),[it,Ot]=p.useState(null),[On,pt]=p.useState(!1),[an,Ft]=p.useState(!1),[Lt,kt]=p.useState(null),Qt=p.useRef(N),Mt=p.useRef(!1),Ut=p.useRef(null),Gt=p.useRef(null),ft=p.useRef(null),Ee=p.useRef(null),St=p.useRef(null),qt=p.useRef(null),Kt=p.useRef(y),Dt=p.useRef(null),Me=p.useRef(!1),[Jt,zt]=p.useState(null),[Nt,$t]=p.useState(null),[ln,Sn]=p.useState(!1),[In,fn]=p.useState(0),Ht=yt?.status==="success"?yt.txHash:H==="success"?jt:null,Tt=!!Ht&&Jt!==Ht,re=p.useRef(Tt);re.current=Tt,p.useEffect(()=>{Qt.current=N},[N]);const te=V?X:oe||Q||F,ke=b&&!at&&H==="idle"&&!W&&!D&&!!te&&!V&&!C&&v&&c==="user-transfer"&&!e.feeOnlyAction&&!e.actionInput&&!e.actionProceeds&&!!N&&Number(N.amount||"0")===0&&!!qe?.eligible&&$e>0n,Ye=p.useMemo(()=>{if(!ke||!N)return N;const K=10n**BigInt(N.asset.decimals);return{...N,amount:T.formatUnits($e<K?$e:K,N.asset.decimals)}},[ke,N,$e]),tt=Nl({enabled:b&&!D&&!V,direction:I,selectedAsset:Ye,destinationToken:x,chainId:A,recipient:te,paymentAmount:o,resolveExactOutputSwap:m,resolveInputSwap:e.resolveInputSwap,maxSlippage:e.maxSlippage}),Xe=V?{...tt,quoteKey:"direct-external",quoteExpiresAt:null,quoteAmountOut:null,inputAmount:null,inputDecimals:N?.asset.decimals??null,isQuoting:!1,quoteError:null,isDirect:!0,needsSwap:!1,selectedIsEquivalent:!0,resolvedTokenIn:x.address,resolvedSwap:null,exactOutputSwap:null,sourceSwap:null,sourceExactOutputSwap:null,pivot:null,estimatedInput:C?o:N?.amount??null,estimatedOutput:C?o:N?.amount??null}:tt,Le=Xe,{isQuoting:Wt,resolvedSwap:Bt,exactOutputSwap:Zt,quoteAmountOut:nn,resolvedTokenIn:At,isDirect:An,needsSwap:Pt,selectedIsEquivalent:Ln,sourceSwap:Z,sourceExactOutputSwap:ge,pivot:xe}=Xe,Ce=C?parseFloat(o||"0"):parseFloat(N?.amount||"")||0,bt=N?.asset?._source==="wallet",dt=!!N?.asset&&bt&&N.asset.chainId!==A,mn=N?Number(T.formatUnits($e,N.asset.decimals)):0,qn=p.useMemo(()=>{if(!N||C)return!1;try{return Vt(N.amount||"0",N.asset.decimals)>$e}catch{return!0}},[N,C,$e]);p.useEffect(()=>{b||(Oe(null),Ue(!1),Tt||(Ze("idle"),ct(""),Et(null),et(!1),Ct(null)),Ot(null),pt(!1),Ft(!1),kt(null),Mt.current=!1,Ut.current&&(Ut.current.abort(),Ut.current=null))},[b,Tt]);const zn=p.useCallback(K=>{Ze({building:"building","signing-delegation":"signing-delegation","signing-intent":"signing-intent",submitting:"submitting",executing:"executing",success:"success",error:"error"}[K.step]||"executing"),ct(K.message),K.txHash&&Et(K.txHash)},[]),cn=p.useMemo(()=>({currentPaymentAmount:o,isFeeInclusiveInput:v,feeOnlyAction:e.feeOnlyAction,swapInputAmount:Xe.inputAmount,destinationToken:x,embeddedWalletAddress:oe,providerEmbeddedAddress:Q,externalWalletAddress:X,address:F,recipient:e.recipient??(R!=="7702"?X:void 0),isNon7702:B,isPayMode:C,resolvedChainId:A,buildActionCalls:L,feeExecutionMode:c,buildSpicenetBatch:d,selectedAsset:N,combinedSourceGroup:ut,needsSwap:Pt,resolvedSwap:Bt,exactOutputSwap:Zt,quoteAmountOut:nn,resolvedTokenIn:At,sourceSwap:Z,sourceExactOutputSwap:ge,pivot:xe,resolveSourceExactOutputSwap:async K=>{if(!xe||!te)throw new Error("Swap route is not ready.");const pe=await gp({chainId:xe.source.chainId,recipient:te,tokenIn:N.asset.address,tokenOut:xe.source.address,amountOut:K,liquidityVenues:E?.liquidityVenues,maxSlippage:e.maxSlippage}).catch(()=>null);if(!pe)throw new Error("No liquidity for this pair.");return pe},resolveInputSwap:async(K,pe)=>{if(!At||!te)throw new Error("Swap route is not ready.");return Rr({chainId:A,recipient:te,tokenIn:At,tokenOut:x.address,amountIn:K,selectedSwap:pe,liquidityVenues:E?.liquidityVenues,maxSlippage:e.maxSlippage,resolveInputSwap:e.resolveInputSwap})}}),[o,x,oe,Q,X,F,e.recipient,e.feeOnlyAction,e.maxSlippage,e.resolveInputSwap,Xe.inputAmount,v,R,B,C,A,L,c,d,N,ut,Pt,Bt,Zt,nn,At,Z,ge,xe,te,E?.liquidityVenues]),Dn=p.useMemo(()=>N?.asset?xe?xe.destination.address:Pt&&At?At:N.asset.chainId===A?N.asset.address:At??sn(N.asset,A)??x.address:x.address,[N,x.address,Pt,A,At,xe]),_t=JSON.stringify([N&&ye(N.asset),h,e.actionExecution?.wallet,x.address,x.chainId,x.decimals,e.recipient,R,X,V?X:oe,E?.apiUrl,E?.rpcOverrides,e.maxSlippage,c,j,e.feeOnlyAction,ve,e.actionProceeds==="output"?"output":e.actionProceeds?.token,e.feeFunding,e.quotedInclusivePlatformFee,e.actionInput?.map(K=>[K.token,K.amount.toString()]),e.feeFundingReserve&&ye(e.feeFundingReserve.asset),e.feeFundingReserve?.amount.toString(),E?.liquidityVenues,E?.allowedTokens,M,O,U,e.actionInput,e.actionProceeds,e.feeFunding,A,Dn,Le.pivot?.source.address,Le.pivot?.destination.address],(K,pe)=>typeof pe=="bigint"?pe.toString():pe),Mr=p.useRef(null);Mr.current=b&&!at&&!W&&!D?_t:null,p.useEffect(()=>()=>{St.current?.controller.abort(),St.current=null},[_t,b,at,W,D]);const Yt=T.keccak256(T.stringToHex(JSON.stringify([_t,N?.amount,o]))),is=JSON.stringify([F,be,Q,X,fe,z,q,P,ne]),Rt=p.useRef({key:Yt,enabled:b,sourceBalance:$e,physicalAssets:Ne,sourceEligible:qe?.eligible,externalSignerReady:!!Y&&!!X,owner:te,walletScope:is,policyAvailable:!W&&!D}),ls=p.useRef(0);(Rt.current.key!==Yt||Rt.current.enabled!==b||Rt.current.owner!==te||Rt.current.walletScope!==is||Rt.current.policyAvailable!==(!W&&!D))&&ls.current++,Rt.current={key:Yt,enabled:b,sourceBalance:$e,physicalAssets:Ne,sourceEligible:qe?.eligible,externalSignerReady:!!Y&&!!X,owner:te,walletScope:is,policyAvailable:!W&&!D};const cs=p.useRef(null),Ms=p.useRef(!1),Ur=p.useRef(e.onSubmit);Ur.current=e.onSubmit;const Wr=p.useRef(e.beforeSubmit);Wr.current=e.beforeSubmit;const Us=p.useCallback(async K=>{if(!Ms.current||ae.current)return;ae.current=!0,Ms.current=!1;const pe=qt.current,Ge=Rt.current,Ke=ls.current,He=pe.feeQuote,mt=He?.fundingSource,_e=xn=>JSON.stringify([xn?.fundingSource,xn?.sourceAllocation,xn?.feeSourceAllocation],(Qn,Ao)=>typeof Ao=="bigint"?Ao.toString():Ao),It=_e(He),dn=Ur.current,en=ze.current,ac={operationKey:Ge.key,feeQuote:He,selectedAsset:pe.selectedAsset};We(!0),ce(null);try{try{await Wr.current?.(ac);const xn=Rt.current,Qn=qt.current;if(!Te.current||Ke!==ls.current||!xn.enabled||xn.key!==Ge.key||xn.owner!==Ge.owner||!ue.current||Qn?.feeQuote!==He||He?.fundingSource!==mt||_e(He)!==It)throw new Error("The wallet, policy or accepted action quote changed. Review again before submitting.");pe.validateFeeQuote?.(),dn?.(),Kt.current=pe.onSuccess,cs.current={key:Ge.key,quote:He}}catch(xn){const Qn=u.sanitizeError(xn,"Unable to prepare this action");Te.current&&(ce(Qn),Ze("idle")),en?.(new Error(Qn),u.getRelayerErrorDetail(Qn));return}await(K?Sl(pe):kl(pe))}finally{ae.current=!1,Te.current&&We(!1)}},[]),Lr=p.useCallback(()=>Us(!1),[Us]),Ws=V,qr=D,zr=!ft.current?.quote.fundedFeeToken&&(v||!!xe)&&!!it&&it.netAmount===0n,ds=p.useMemo(()=>!!e.feeOnlyAction||(!!N?.asset||!!e.actionProceeds)&&Ce>0,[N,Ce,e.actionProceeds,e.feeOnlyAction]),Nn=p.useMemo(()=>!b||!ds||!N?.asset&&!e.actionProceeds&&!e.feeOnlyAction?null:[Yt,ot,C?"pay":"supply",h,N?ye(N.asset):"sdk-funded",e.actionInput?.map(K=>`${K.token.toLowerCase()}:${K.amount}`).join(",")??"",e.feeFunding?.join(",")??"",e.quotedInclusivePlatformFee?"quoted-inclusive-fee":"split-inclusive-fee",JSON.stringify(E?.rpcOverrides),E?.apiUrl,e.recipient,N?.asset.address.toLowerCase(),N?.asset.chainId,N?.amount,o,x.address.toLowerCase(),x.chainId,A,Le.resolvedTokenIn?.toLowerCase()??"",Le.quoteKey,Le.needsSwap?"swap":"direct",Le.isDirect?"direct-token":"routed-token","7702",ee?"source-dest":"cross-chain",Le.isQuoting?"quoting":"quoted",Le.exactOutputSwap?.amountIn?.toString()??"",Le.exactOutputSwap?.amountInMax?.toString()??"",Le.exactOutputSwap?.venue??"",Le.resolvedSwap?.amountOut?.toString()??"",Le.quoteAmountOut?.toString()??"",Le.sourceSwap?.amountOutMinimum?.toString()??"",Le.sourceExactOutputSwap?.amountInMax?.toString()??"",Le.pivot?.source.address.toLowerCase()??"",oe??"",Q??"",F??""].join("|"),[b,Yt,ot,e.actionProceeds,e.feeOnlyAction,e.actionInput,e.feeFunding,e.quotedInclusivePlatformFee,at,H,ds,Ws,N,C,h,o,x,A,Le,B,ee,oe,Q,F]),us=p.useCallback(async(K,pe,Ge)=>{if(V){if(!X||!N)throw new Error("Connect the external wallet before continuing.");return ep({selectedAsset:pe?.selectedAsset??N,destinationToken:x,paymentAmount:C?o:void 0,account:X,beneficiary:e.recipient,buildActionCalls:L,feeExecutionMode:c})}const Ke={...Ge??{...cn,selectedAsset:Ye},requestTimestampMs:Date.now()};if(N&&ht(N.asset)&&!ut)throw new Error("This source is unavailable.");const He={combinedSourceGroup:ut,getCombinedSourceGroup:Pe,signal:K,feeToleranceBps:j,externalGasRecipient:he?X:void 0,externalGasCalls:he?async _e=>(await Il({quote:_e,recipient:X,beneficiary:e.recipient,chainId:x.chainId,token:x.address,feeExecutionMode:c,buildCalls:l})).calls:void 0,feeOnlyAction:e.feeOnlyAction,actionInput:e.actionInput,actionProceeds:e.actionProceeds==="output"?void 0:e.actionProceeds,feeFunding:e.feeFunding,feeFundingBalances:lt,feeFundingReserve:e.feeFundingReserve,liquidityVenues:E?.liquidityVenues,maxSlippage:e.maxSlippage,resolveExactOutputSwap:m,selectedAsset:Ye,isPayMode:C,isFeeInclusiveInput:v,quotedInclusivePlatformFee:e.quotedInclusivePlatformFee,parsedAmount:ke?Number(Ye.amount):Ce,needsSwap:Le.needsSwap,exactOutputSwap:Le.exactOutputSwap,isNon7702:B,isSourceDestToken:ee,currentPaymentAmount:o,destinationToken:x,feeExecutionMode:c,resolvedTokenIn:Le.resolvedTokenIn,embeddedWalletAddress:oe,providerEmbeddedAddress:Q,resolvedChainId:A,isConnected:P,address:F,ready:z,authenticated:q,isDirect:Le.isDirect,resolvedSwap:Le.resolvedSwap,sourceSwap:Le.sourceSwap,sourceExactOutputSwap:Le.sourceExactOutputSwap,pivot:Le.pivot,isQuoting:Le.isQuoting,executionTokenAddress:Dn,buildPayChainBatches:_e=>xo(Ke,_e),buildSupplyChainBatches:_e=>yo(Ke,_e),estimate:ie,...pe},mt=!He.feeOnlyAction&&He.selectedAsset&&Qe&&(He.selectedAsset.asset._source==="wallet"||!!He.combinedSourceGroup)&&He.selectedAsset.asset.chainId===A;if(Qe&&!He.feeOnlyAction&&He.selectedAsset&&!mt&&e.feeFunding&&e.feeFunding.join(",")!==wo.join(","))throw new Error("Fee-source overrides require a wallet source on the action chain.");return mt||Qe&&e.actionProceeds==="output"?$u(He,Ke,Un,e.actionProceeds==="output"):Un(He)},[N,Qe,ut,Pe,ht,Ye,ke,V,he,l,X,e.recipient,L,e.feeOnlyAction,e.actionInput,e.actionProceeds,e.feeFunding,e.quotedInclusivePlatformFee,lt,e.feeFundingReserve,e.maxSlippage,m,j,E?.liquidityVenues,C,v,Ce,Le,B,ee,o,x,c,oe,Q,cn,ie,A,P,F,z,q,Dn]);p.useEffect(()=>{Gt.current=us},[us]);const So=p.useCallback(async K=>{if(C)return null;if(!N||ye(K)!==ye(N.asset)||!te||!At)throw new Error("Select a source before calculating Max.");let pe=Je(K);if(pe===void 0)throw new Error("This source is unavailable.");if(V){if(!K.isNative&&!S.isNativeToken(K.address))return T.formatUnits(pe,K.decimals);const Ge=u.getClientForChain(K.chainId),Ke=X;let He=pe;for(let mt=0;mt<8;mt++){const _e=await us(void 0,{selectedAsset:{asset:K,amount:T.formatUnits(mt===0?1n:He,K.decimals)}});if(!_e?.actionDefinition)throw new Error("The direct action could not be sized.");const It=await Ti({client:Ge,account:Ke,calls:_e.actionDefinition.calls}),dn=pe>It?pe-It:0n;if(dn===0n)return"0";if(mt>0&&He<=dn)return T.formatUnits(He,K.decimals);He=dn}throw new Error("Network gas could not be reserved for Max. Enter a smaller amount.")}if(me&&(K.isNative||S.isNativeToken(K.address))){if(!X)throw new Error("Connect the source wallet before calculating Max.");const Ge=await Bi({client:u.getClientForChain(K.chainId),account:X,recipient:te,token:K.address,isNative:!0,amount:1n});pe-=Ge}return Qe&&v&&K._source==="wallet"&&K.chainId===A?T.formatUnits(pe>0n?pe:0n,K.decimals):hl({balance:pe,decimals:K.decimals,planForAmount:async Ge=>{const Ke={...cn,requestTimestampMs:Date.now(),selectedAsset:{asset:K,amount:T.formatUnits(Ge,K.decimals)}};let He=Ge;xe?(Ke.sourceSwap=await Rr({chainId:K.chainId,recipient:te,tokenIn:K.address,tokenOut:xe.source.address,amountIn:Ge,maxSlippage:e.maxSlippage,liquidityVenues:E?.liquidityVenues,resolveInputSwap:e.resolveInputSwap}),He=tn(Ke.sourceSwap.amountOutMinimum,xe.source.decimals,xe.destination.decimals,"floor")):He=_n(Ge,K.decimals,await bn(K,At,A,x)),Ke.resolvedSwap=Pt?await Ke.resolveInputSwap(He):null,Ke.swapInputAmount=He,Ke.quoteAmountOut=Ke.resolvedSwap?.amountOut??He;const mt=Qe&&K._source==="wallet"&&K.chainId===A,_e=await us(void 0,{selectedAsset:Ke.selectedAsset,...mt?{isFeeInclusiveInput:!0}:{},parsedAmount:Number(Ke.selectedAsset.amount),sourceSwap:Ke.sourceSwap,resolvedSwap:Ke.resolvedSwap,isQuoting:!1,buildSupplyChainBatches:It=>yo(Ke,It)},Ke);return mt&&_e?.fundingSource?.kind==="input"&&!v?{..._e,sourceSpendCap:Ge+(Ge-_e.swapInputAmount)}:_e}})},[N,Qe,cn,C,V,te,At,A,x,me,X,xe,Pt,us,Je,e.maxSlippage,e.resolveInputSwap,e.actionProceeds,e.feeFunding,e.quotedInclusivePlatformFee,v,E?.liquidityVenues]),$l=JSON.stringify([_t,is,Ve,N?.asset,e.feeFundingReserve,e.actionExecution?.recoveryKey,Pt,At,xe,b,W,D],(K,pe)=>typeof pe=="bigint"?pe.toString():pe),Hr=p.useRef(So);p.useLayoutEffect(()=>{Hr.current=So},[So]);const Vr=p.useCallback(K=>Hr.current(K),[$l,L,d,m,e.resolveInputSwap,typeof e.actionProceeds=="object"?e.actionProceeds.resolve:void 0,ie]);_o({shouldRun:b&&!at&&H==="idle"&&(ds||ke)&&!Le.isQuoting&&(!!Nn||ke),deps:[b,at,H,ds,Ws,Le.isQuoting,Nn,ke,_t],onSkip:()=>{if(!b){Ee.current=null,pt(!1),Ft(!1),kt(null),Ot(null);return}if(at||H!=="idle"){pt(!1);return}if(!ds){Ot(null),pt(!1),Ft(!1),kt(null);return}Le.isQuoting&&(pt(!1),Ft(!1))},onCleanup:()=>pt(!1),delayMs:Le.needsSwap||Le.pivot?0:100,backgroundIntervalMs:3e4,run:async({isBackground:K,isCurrent:pe,signal:Ge})=>{if(ke){const He=Ee.current;if(He?.scope===_t&&Date.now()-He.at<3e4||St.current?.scope===_t&&Date.now()-St.current.at<3e4)return;St.current?.controller.abort();const mt=new AbortController,_e=Gt.current?.(mt.signal).then(It=>{mt.signal.aborted||Mr.current!==_t||!It?.feeEstimate||(Ee.current={scope:_t,at:Date.now(),feeEstimate:It.feeEstimate,sourceGasSkim:It.sourceGasSkim})}).catch(It=>{mt.signal.aborted||console.debug("[SpiceSupply] fee prewarm unavailable:",It)})??Promise.resolve();St.current={scope:_t,at:Date.now(),controller:mt,promise:_e},await _e;return}const Ke=Nn;K||(kt(null),pt(!0));try{if(St.current?.scope===_t&&await St.current.promise,Ge.aborted||!pe())return;const He=Ee.current,mt=!C&&He?.scope===_t&&Date.now()-He.at<3e4?He:void 0;let _e;try{_e=await Gt.current?.(Ge,mt?{initialFeeEstimate:mt.feeEstimate,initialSourceGasSkim:mt.sourceGasSkim}:void 0)}catch(It){if(!mt||Ge.aborted||!pe())throw It;_e=await Gt.current?.(Ge)}if(!pe())return;if(_e&&Ke){const It=he?await Il({quote:_e,recipient:X,beneficiary:e.recipient,chainId:x.chainId,token:x.address,feeExecutionMode:c,buildCalls:l}):void 0;if(It&&_e.externalGasReserve?.nativeAmount&&(It.calls.length>_e.externalGasReserve.currentTransactions||It.calls.reduce((dn,en)=>dn+en.value,0n)>_e.externalGasReserve.currentValue))throw new Error("The external action gas requirement changed. Refresh the quote.");if(Ge.aborted||!pe())return;ft.current={key:Ke,quote:_e,externalAction:It},_e.feeEstimate&&(Ee.current={scope:_t,at:Date.now(),feeEstimate:_e.feeEstimate,sourceGasSkim:_e.sourceGasSkim}),Ot(_e.preview),Ft(!0)}else ft.current=null,Ot(null),Ft(!1);kt(null)}catch(He){if(!pe())return;if(K&&ft.current?.key===Ke){console.warn("[SpiceSupply] fee refresh failed:",He);return}const mt=u.sanitizeError(He,"Unable to calculate fees for this action.");ft.current=null,Ot(He instanceof Ar?He.preview:null),Ft(!1),kt(mt)}finally{pe()&&pt(!1)}}});const Qr=p.useCallback(()=>Us(!0),[Us]);p.useEffect(()=>{if(!Ht||Dt.current===Ht)return;Dt.current=Ht;const K=Kt.current;Me.current=!0,Sn(!0),$t(null),Promise.resolve().then(()=>K?.(Ht)).then(()=>{zt(Ht),Ie(),_()}).catch(pe=>{$t(`Transaction confirmed; application update needs retry: ${u.sanitizeError(pe,"Unable to finalize the action")}`)}).finally(()=>{Me.current=!1,Sn(!1)})},[Ht,In]);const Gr=Tt&&!Nt,_l=p.useCallback(()=>{!re.current||Me.current||(Dt.current=null,fn(K=>K+1))},[]),ec=p.useCallback(()=>{re.current||(et(!1),Ct(null),Mt.current=!1,Ie(),_())},[Ie,_]),nt=Nn&&ft.current?.key===Nn?ft.current.quote:null,ps=nt?ft.current?.externalAction:void 0,tc=ls.current,Ls=(K=!0)=>{if(W)throw new Error(W);if(!Te.current||!Rt.current.enabled||Rt.current.key!==Yt||ls.current!==tc||Rt.current.walletScope!==is||!Rt.current.policyAvailable)throw new Error("The source, amount, beneficiary or configuration changed. Review the form before continuing.");if(he&&!Rt.current.externalSignerReady)throw new Error("Connect the external wallet before funding.");if((N||e.feeOnlyAction)&&!nt)throw new Error("A current action plan is required. Refresh the quote before submitting.");if(V&&N?.asset.owner&&!u.addressesEqual(N.asset.owner,X))throw new Error("Reconnect the external wallet that owns the selected asset.");if(K&&N&&(nt?.sourceSpendCap??0n)>Rt.current.sourceBalance)throw new Error("The source balance changed. Review the available amount before continuing.");if(K&&N&&!Rt.current.sourceEligible)throw new Error(qe?.reason??"This source is unavailable.");if(K)for(const pe of[nt?.sourceAllocation,nt?.feeSourceAllocation])pe&&vr(pe,Rt.current.physicalAssets,Rt.current.owner??void 0,A)},Hn=async()=>{Ls();for(const K of[nt?.sourceAllocation,nt?.feeSourceAllocation]){if(!K)continue;const pe=K.positions.find(Ke=>Ke.asset.location==="embedded"),Ge=await u.getClientForChain(K.chainId).readContract({address:K.token,abi:T.erc20Abi,functionName:"balanceOf",args:[K.owner]});Ls(),vr(K,Rt.current.physicalAssets.map(Ke=>pe&&ye(Ke)===pe.positionId?{...Ke,balance:Ge}:Ke),K.owner,K.chainId)}},Kr=K=>({...K,sourceSpendCap:nt?.sourceSpendCap,minimumDestinationAmount:nt?.destinationAmount}),qs=nt?.sourceAllocation?.insufficient||nt?.feeSourceAllocation?.insufficient?!0:N&&nt?.sourceSpendCap!==void 0?nt.sourceSpendCap>$e:qn,Zr={...cn,resolvedSwap:nt?.destinationSwap??cn.resolvedSwap,swapInputAmount:nt?.swapInputAmount??cn.swapInputAmount};let zs=!1;qt.current={selectedAsset:N,parsedAmount:Ce,currentPaymentAmount:o,isInsufficientBalance:qs,isPayMode:C,isFeeInclusiveInput:v,quotedInclusivePlatformFee:e.quotedInclusivePlatformFee,feeOnlyAction:e.feeOnlyAction,actionProceeds:e.actionProceeds==="output"?void 0:e.actionProceeds,validateFeeQuote:()=>Ls(!zs),isNon7702:B,directExternalAction:V,isSourceDestToken:ee,needsSwap:Pt,exactOutputSwap:Zt,selectedIsEquivalent:Ln,resolvedTokenIn:At,sourceSwap:Z,sourceExactOutputSwap:ge,pivot:xe,embeddedWalletAddress:oe,providerEmbeddedAddress:Q,externalWallet:Y,externalWalletAddress:X,activeSignerWallet:G,activeSignerAddress:fe,address:F,isConnected:P,ready:z,authenticated:q,provider:ne,resolvedChainId:A,executionTokenAddress:Dn,destinationToken:x,buildActionCalls:L,feeExecutionMode:c,feeToleranceBps:j,buildSpicenetBatch:d,onPayExecute:f,onSuccess:y,feeQuote:nt,execution:{estimate:(K,pe,Ge,Ke)=>ie(K,pe,Ge,{...Ke,userOverride:te}),execute:async(K,pe,Ge,Ke,He,mt)=>{const _e=async()=>zs?Ls(!1):Hn();if(await Hn(),await ul(nt?.externalGasReserve),he&&!ps)throw new Error("The external action plan is unavailable.");if(V){if(!nt?.actionDefinition)throw new Error("The direct action plan is unavailable.");return El({definition:nt.actionDefinition,account:X,chainId:x.chainId,wallet:Y,assertCurrent:Hn})}me&&N&&(ct("Transfer the selected source to your embedded wallet"),await Fl({asset:N.asset,embedded:te,external:X,externalWallet:Y,amount:nt?.sourceSpendCap??0n,assertCurrent:Hn}),zs=!0,await _e());const It=await de(K,pe,Ge,he?en=>Ke?.(en.step==="success"?{...en,step:"executing",message:"Funds delivered. Confirm the action in your external wallet.",txHash:void 0}:{...en,txHash:void 0}):Ke,He,{...mt,userOverride:te,requireDestinationReceipt:!0,resolveActionOutputCredits:async()=>[...await mt?.resolveActionOutputCredits?.()??[],...nt?.externalGasReserve?.nativeAmount&&!S.isNativeToken(Dn)?[{chainId:A,token:S.ZERO_ADDRESS,amount:nt.externalGasReserve.nativeAmount}]:[]],walletFundingRequirement:nt?.sourceAllocation?{chainId:nt.sourceAllocation.chainId,token:nt.sourceAllocation.token,amount:nt.sourceAllocation.positions.find(en=>en.asset.location==="embedded")?.amount??0n}:N?.asset._source==="wallet"&&nt?.sourceSpendCap!==void 0?{chainId:N.asset.chainId,token:N.asset.address,amount:nt.sourceSpendCap}:void 0,validateBeforeSubmit:async en=>{if(await _e(),await ul(nt?.externalGasReserve,en),await mt?.validateBeforeSubmit?.(en),he&&Al(en,x.address,x.chainId,X)!==ps.amount)throw new Error("The external delivery changed. Review the quote before continuing.")}});if(!he)return It;zs=!0;const dn=async()=>{if(He?.aborted)throw new Error("Execution transaction aborted");await _e()};return await dn(),await up({hash:It,token:x.address,chainId:x.chainId,recipient:X,sender:te,amount:ps.amount}),await dn(),El({definition:ps,account:X,chainId:x.chainId,wallet:Y,assertCurrent:dn})},buildPayChainBatches:async K=>bo(await xo(Zr,Kr(K)),nt?.externalGasReserve),buildSupplyChainBatches:async K=>bo(await yo(Zr,Kr(K)),nt?.externalGasReserve),onProgress:zn},ui:{setError:Oe,setStep:Ze,setStatusMsg:ct,setTxHash:Et,setIsExecuting:Ue,setShowStatusPanel:et,setPaymentResult:Ct},refs:{spiceDepositSubmittedRef:Mt,abortControllerRef:Ut}};const Vn=!!e.isZeroAmountPay&&!e.feeOnlyAction&&C&&Ce===0,nc=C?(Vn||!!N?.asset||!!e.actionProceeds||!!e.feeOnlyAction)&&Ce>=0&&!qs&&!at&&(Vn||Ws||an)&&!Lt&&(Vn||e.feeOnlyAction||!Pt||!!Zt)&&(Vn||e.feeOnlyAction||!xe||!!ge)&&!qr:!!N?.asset&&Ce>0&&!qs&&!at&&(V||an)&&!Lt&&!zr&&(xe?!!Z&&!Wt&&(An||!!Bt):dt||An||!!Bt&&!Wt)&&!qr,Yr=(V||z&&q&&P&&!!F)&&!W&&!!te&&(!he||!!ps&&!!Y&&!!X)&&(!V||!!Y&&(!N?.asset.owner||u.addressesEqual(N.asset.owner,X)))&&(R==="7702"||!!X)&&!Tt&&!ln&&!Nt&&b&&nc&&(Vn||!N&&(!!e.actionProceeds||!!e.feeOnlyAction)||!!qe?.eligible)&&H!=="success"&&yt?.status!=="success"&&!Xe.quoteError&&(Vn||!!Nn&&ft.current?.key===Nn);ue.current=Yr;const Xr=Yr&&!e.submitDisabled&&!rt&&!ae.current;Ms.current=Xr;const Io=p.useCallback(()=>{re.current||(Ms.current=!1,ft.current=null,Ft(!1),tt.refreshQuote(),Ze("idle"),Oe(null),ct(""),Ct(null),et(!1))},[tt.refreshQuote,Oe]),Jr=p.useRef(Yt);p.useEffect(()=>{const K=Jr.current!==Yt;Jr.current=Yt,(K||u.isUserRejection(Be))&&H==="error"&&!at&&cs.current&&cs.current.key!==Yt&&Io()},[Yt,H,at,Be,Io]);const sc=p.useCallback(()=>{et(!1)},[]),oc=p.useCallback(()=>{re.current||(Ze("idle"),Et(null),Ie())},[Ie]),vt=nt??(ft.current?.key.startsWith(`${Yt}|`)?ft.current.quote:null)??(cs.current?.key===Yt?cs.current.quote:null),rc=async K=>{if(V)throw new Error("This source executes directly from the external wallet; submit the action without embedded funding.");if(!(!me||!N)){if(!nt||K!==nt.sourceSpendCap)throw new Error("Use the displayed source funding maximum before preparing this action.");await Hn(),await Fl({asset:N.asset,embedded:te,external:X,externalWallet:Y,amount:K,assertCurrent:Hn})}};return{operationKey:Yt,feeQuote:vt,selectedAsset:xt,capability:qe,assets:{getAvailableBalance:Je,selectable:gt,displayAssets:gt,filteredSpiceAssets:le,embeddedWalletAddress:oe,externalAddress:X,isNon7702:R!=="7702",refreshSpiceAssets:Ie,refreshWalletAssets:_,loading:je,refreshing:Fe,error:st},quote:{...Xe,...ke?{quoteKey:null,quoteExpiresAt:null,quoteError:null,isQuoting:!1,estimatedInput:null,estimatedOutput:null,quoteAmountOut:null,inputAmount:null,resolvedSwap:null,sourceSwap:null,exactOutputSwap:null,sourceExactOutputSwap:null}:{},hasSourceConversion:!!xe,executionInput:xe&&vt?{address:xe.destination.address,chainId:xe.destination.chainId,decimals:xe.destination.decimals,amount:vt.preview.netAmount}:null,...vt?.destinationSwap?{resolvedSwap:vt.destinationSwap,inputAmount:vt.swapInputAmount,estimatedOutput:T.formatUnits(vt.destinationSwap.amountOut,x.decimals)}:{},...vt?.fundedFeeToken&&vt.destinationAmount!==void 0?{estimatedOutput:T.formatUnits(vt.destinationAmount+(vt.destinationSwap?vt.destinationSwap.amountOut-vt.destinationSwap.amountOutMinimum:0n),x.decimals)}:{}},fees:{fundingConversion:vt?.fundingConversion,fundingSource:vt?.fundingSource,proceedsUsed:vt?.proceedsUsed,fundingShortfall:vt?.grossFundingAmount,source:xe&&vt?{address:xe.source.address,chainId:xe.source.chainId,symbol:xe.source.symbol,decimals:xe.source.decimals,gasFee:vt.sourceGasSkim??0n,spicenetFee:0n}:null,destinationAmount:vt?.destinationAmount,sourceSpendCap:vt?.sourceSpendCap,preview:ke?null:vt?.preview??it,isLoading:!ke&&On,ready:!ke&&!!nt,error:ke?null:Lt},amount:{availableBalance:wt,sourceRequiredAmount:vt?.sourceSpendCap??null,parsed:Ce,isInsufficientBalance:qs,sourceBalance:mn,feesExceedAmount:zr},status:{activity:we,finalizing:ln||Gr,finalizationError:Nt,step:Tt&&H==="success"?"executing":H,statusMsg:Tt?Nt??"Transaction confirmed. Updating application...":Se,txHash:jt,isExecuting:at||rt||Gr,error:W||Nt||Be||qe?.reason||null,showStatusPanel:De,paymentResult:Tt&&yt?.status==="success"?{...yt,status:"processing"}:yt},flags:{directExecutionFeeNote:Ws},retryFinalization:_l,fundEmbeddedSource:rc,canExecute:Xr,submit:C?Qr:Lr,submitSupply:Lr,submitPay:Qr,retrySupply:Io,dismissPaymentStatus:sc,resolveMaxAmount:Vr,max:()=>N?Vr(N.asset):Promise.resolve(null),resetAfterSuccess:oc,resetPaymentState:ec}}function xp(e){const{asset:t,amount:n,recipient:s,owner:o,onSuccess:r}=e,i=!!t&&!!e.destination&&e.destination.chainId!==t.chainId,l=e.destination?.chainId??t?.chainId??e.sourceChains?.[0]??0,c=p.useMemo(()=>S.getTokensForChain(l).find(C=>C.equivalenceGroup==="USDC"),[l]),d=p.useCallback((C,v)=>{const k=!i&&C===0n?n:C;if(!t||n<=0n||n>t.balance||!i&&k>n||!s||!o||u.addressesEqual(o,s))throw new Error("Enter a valid withdrawal amount and recipient.");if(v.chainId!==l||!u.addressesEqual(v.executorAddress??v.userAddress,o))throw new Error("The withdrawal wallet or network changed. Review the withdrawal again.");if(i&&(!e.destination||e.destination.symbol!=="USDC"||C<=0n))throw new Error("A USDC withdrawal quote is required for this network.");return go(l,i?e.destination.address:t.address,[{recipient:s,amount:k}]).calls},[t?.address,t?.chainId,t?.balance,n,s,o,l,i,e.destination?.address,e.destination?.symbol]),f=p.useMemo(()=>t?[{address:t.address,chainId:t.chainId,symbol:t.symbol,decimals:t.decimals,logoURI:t.logoURI}]:void 0,[t?.address,t?.chainId,t?.symbol,t?.decimals,t?.logoURI]),m=Ns({enabled:e.enabled&&!!c&&!!t&&n>0n&&!!s&&!!o&&!u.addressesEqual(o,s),amountDirection:"input-inclusive",quotedInclusivePlatformFee:!0,feeFunding:wo,destinationToken:e.destination??{address:t?.address??S.ZERO_ADDRESS,symbol:t?.symbol??"",decimals:t?.decimals??6,chainId:l},recipient:s,selectedAsset:t?{asset:t,amount:T.formatUnits(n,t.decimals)}:null,additionalSourceTokens:f,sourceChains:e.sourceChains,includeCrossChainEmbeddedAssets:!0,includeExternalWalletAssets:!1,feeExecutionMode:i?"user-transfer":"backend-transfer",buildActionCalls:d,buildSpicenetBatch:Ts,onError:(C,v)=>e.onError?.(C.message,v),onSuccess:async()=>{if(!t)return;const C=m.fees.destinationAmount;if(i&&(C==null||C<=0n))throw new Error("The confirmed withdrawal amount is unavailable.");window.dispatchEvent(new CustomEvent("withdraw-completed")),await r?.({token:i?"USDC":t.symbol,amount:T.formatUnits(i?C:n,i?e.destination.decimals:t.decimals),chainId:l})}}),h=`${e.enabled}:${t?.chainId}:${t?.address}:${n}:${s}:${o}:${l}:${e.destination?.address}`,y=p.useRef(h);p.useEffect(()=>{y.current===h||m.status.isExecuting||(y.current=h,(m.status.step==="success"||m.status.paymentResult?.status==="success")&&m.resetAfterSuccess())},[h,m.status.isExecuting,m.status.step,m.status.paymentResult?.status,m.resetAfterSuccess]);const g=m.fees.fundingSource,w=g?.kind==="input"?m.fees.fundingConversion?.amountInMax??m.fees.proceedsUsed??0n:0n,x=g?.kind==="input"?t:g?.asset,b=x?x._source==="wallet"?m.fees.fundingConversion?.amountInMax??m.fees.proceedsUsed:m.amount.sourceRequiredAmount:null;return{supply:m,source:x,maximumFeeFunding:b,feeFromAmount:w}}const Pl=u.font.ui,yp=({label:e,loading:t,balance:n,dark:s,dk:o})=>{const r=s?o.textSecondary:"#7D7C7B",i=s?o.textSecondary:"#71757A";return a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:Pl,fontSize:"17px",fontWeight:500,color:r,lineHeight:"24px"},children:e}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontFamily:Pl,fontSize:"13px",fontWeight:500,color:i,lineHeight:"16px"},children:["Balance:"," ",t?"...":n===null?"\u2014":u.formatBalance(n)]})]})},Ml=({isOpen:e,position:t,title:n,items:s,selectedId:o,onSelect:r,portalAttribute:i})=>{const{dark:l,dk:c,primaryColor:d}=u.useSpiceBrand(),[f,m]=p.useState(null),[h,y]=p.useState(!1);return p.useEffect(()=>{if(!e){y(!1);return}const g=requestAnimationFrame(()=>{requestAnimationFrame(()=>y(!0))});return()=>cancelAnimationFrame(g)},[e]),!e||!t||s.length===0?null:Gn.createPortal(a.jsxs("div",{[`data-${i}-popover`]:"true",style:{position:"fixed",top:`${t.top}px`,left:`${t.left}px`,opacity:h?1:0,transform:h?"scale(1) translateY(0)":"scale(0.96) translateY(-6px)",transition:`opacity 200ms ${u.easing.out}, transform 200ms ${u.easing.out}`,backgroundColor:l?c.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 ${c.cardBorder}`,minWidth:"220px",zIndex:u.z.dropdown,fontFamily:u.font.mono},children:[a.jsx("div",{style:{marginBottom:"6px"},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:l?c.textPrimary:"#0e0d0b",textTransform:"uppercase",letterSpacing:"1px"},children:n})}),a.jsx("div",{style:{borderBottom:`1px solid ${c.cardBorder}`,marginBottom:"6px"}}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:s.map(g=>{const w=o===g.id,x=f===g.id;return a.jsxs("button",{onClick:b=>{b.stopPropagation(),r(g.id)},onMouseEnter:()=>m(g.id),onMouseLeave:()=>m(null),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 4px",borderRadius:"8px",border:"none",cursor:"pointer",backgroundColor:w?l?c.hoverBg:"#f3f4f6":x?l?c.cardBg:"#f9fafb":"transparent",transition:"background-color 0.15s",width:"100%",fontFamily:u.font.mono},children:[g.icon&&a.jsx("img",{src:g.icon,alt:g.label,style:{width:"22px",height:"22px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:w?700:500,textTransform:"uppercase",color:l?c.textPrimary:"#0e0d0b",letterSpacing:"0.5px",flex:1,textAlign:"left"},children:g.label}),g.detail&&a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:c.textSecondary},children:g.detail}),w&&a.jsx(vi,{color:d,style:{flexShrink:0}})]},g.id)})})]}),document.body)},Co=u.font.ui,wp=u.font.mono,bp=170,vp=({header:e,amount:t,receiveAmountDisplay:n,receiveUsdEstimate:s,selectedDestToken:o,destTokenSymbol:r,destChainName:i,destChainLogo:l,compatibleDestinationChains:c,networkSwitchRef:d,onOpenNetworkPopover:f,showNetworkPopover:m,setShowNetworkPopover:h,networkPopoverPos:y,selectedChainId:g,setSelectedChainId:w,dark:x,dk:b})=>{const C=x?b.cardBg:"#E9E9E9",v=x?b.cardBorder:"#C6C6C6",k=x?b.textSecondary:"#71757A",I=x?b.textPrimary:"#0E0D0B",A=x?b.cardBorder:"#C5C5C4",E=x?"rgba(255,255,255,0.08)":"#D4D3D3",j=r.length>8?"14px":r.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:C,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(Mn,{element:"div",value:n,title:n,fontFamily:Co,color:t?I:"#A8A8A7",lineHeight:"0.95",maxFontSize:54,minFontSize:32,overflow:"wrap"}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:k,fontFamily:Co,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 ${A}`,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||td,alt:r,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:j,fontWeight:500,color:I,lineHeight:"1.3",fontFamily:Co,flex:1,minWidth:0,letterSpacing:0},children:r})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 10px",backgroundColor:E,borderTop:`1px solid ${A}`},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:I,fontFamily:Co,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:i})]}),a.jsx("button",{ref:d,onClick:R=>{R.stopPropagation(),f(d.current)},style:{background:"none",border:"none",cursor:c.length>1?"pointer":"not-allowed",padding:"0 0 0 8px",fontSize:"9.5px",fontFamily:wp,color:k,textDecoration:"underline",fontWeight:600,opacity:c.length>1?1:.45},children:"Switch"}),a.jsx(Ml,{isOpen:m,position:y,title:"SELECT NETWORK",portalAttribute:"network",items:c.map(R=>{const B=u.getChainConfig(R);return{id:String(R),label:B?.displayName||String(R),icon:Fn[R]||ws}}),selectedId:g!==null?String(g):null,onSelect:R=>{w(Number(R)),h(!1)}})]})]}),a.jsx("div",{style:{minHeight:"14px"}})]})]})]})},Cp=u.font.ui,jn=u.font.mono,kp=({show:e,onToggle:t,showCustomAddress:n,setShowCustomAddress:s,customRecipient:o,setCustomRecipient:r,externalAddress:i,recipientAddress:l,destChainName:c,destChainLogo:d,compatibleDestinationChains:f,txDetailsChainSwitchRef:m,onOpenNetworkPopover:h,sourceChainLabel:y,sourceDetailsLogo:g,sourceTokenLabel:w,amount:x,totalSourceDebitDisplay:b,receiveAmountDisplay:C,destTokenSymbol:v,shouldQuoteWithdrawGas:k,estimatingFee:I,feeError:A,displayedGasFee:E,selectedDestToken:j,theme:R,styles:B,dark:M,dk:D})=>{const U=M?D.textSecondary:"#71757A",O=M?D.textPrimary:"#0E0D0B",F=f.length>1,P=n&&o?T.isAddress(o)?u.truncateAddress(o):o:l?u.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:U,fontFamily:Cp,fontWeight:600},children:"Transaction Details"}),a.jsx(tu,{size:12,color:U,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:U,fontFamily:jn,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:O,fontFamily:jn,fontWeight:500},children:P}),a.jsx("button",{onClick:()=>{s(z=>!z),!n&&i&&r(i)},style:{background:"none",border:"none",cursor:"pointer",padding:"0",fontSize:"9.5px",fontFamily:jn,color:U,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:jn,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&&!T.isAddress(o)?!0:void 0,"data-spiceflow-focus":!0,value:o,onChange:z=>r(z.target.value),placeholder:"0x...",style:{width:"100%",padding:"8px 10px",borderRadius:"6px",border:`1px solid ${o&&!T.isAddress(o)?M?D.errorBorder:"#fca5a5":M?D.inputBorder:"#d1d5db"}`,backgroundColor:M?D.inputBg:"#f9fafb",color:M?D.inputText:"#111827",fontSize:"12px",fontFamily:jn,outline:"none",boxSizing:"border-box"}}),o&&!T.isAddress(o)&&a.jsx("span",{style:{fontSize:"11px",color:D.errorText,marginTop:"3px",display:"block"},children:"Invalid address"})]})]}),a.jsx(rn,{palette:D,labelColor:U,valueColor:O,label:"RECEIVING CHAIN",value:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"7px"},children:[d&&a.jsx("img",{src:d,alt:c,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",color:O,fontWeight:500,fontFamily:jn,textTransform:"uppercase"},children:c}),a.jsx("button",{ref:m,onClick:z=>{z.stopPropagation(),h(m.current)},style:{background:"none",border:"none",cursor:F?"pointer":"not-allowed",padding:"0",fontSize:"9.5px",fontFamily:jn,color:U,textDecoration:"underline",fontWeight:600,opacity:F?1:.45},children:"Switch"})]})}),a.jsx(rn,{palette:D,labelColor:U,valueColor:O,label:"REQUESTED WITHDRAWAL",value:a.jsxs(jr,{logo:g||null,alt:y,primaryText:O,children:[x||"0"," ",w]})}),k&&a.jsx(rn,{palette:D,labelColor:U,valueColor:O,label:"TOTAL SOURCE DEBIT",value:a.jsxs(jr,{logo:g||null,alt:y,primaryText:O,children:[b," ",w]})}),a.jsx(rn,{palette:D,labelColor:U,valueColor:O,label:"YOU RECEIVE",value:a.jsxs(jr,{logo:d,alt:c,primaryText:O,gap:"4px",children:[C," ",v]})}),k&&a.jsxs(a.Fragment,{children:[a.jsx(rn,{palette:D,labelColor:U,label:"EST. NETWORK FEE",valueColor:A?"#f87171":O,value:I?"Estimating...":A?"Unavailable":E!==null&&j?`${xr(E,j.decimals)} ${j.symbol}`:"Estimating..."}),A&&a.jsx(Xt,{variant:"error",size:"compact",palette:D,fontFamily:B?.fontFamily||R.typography.fontFamily,children:A})]})]})]})},Sp=p.memo(kp),jr=({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:jn},children:o})]}),Ps=u.font.ui,Ip=170,Ap=({header:e,amount:t,setAmount:n,isInsufficient:s,sourceAmountDecimals:o,selectedSourceAsset:r,resolvedSelectedSourceAsset:i,spiceAssets:l,setSelectedSourceAsset:c,sourceUsdEstimate:d,sourceTokenLabel:f,sourceChainLabel:m,totalSelectedBalance:h,showSourceTokenPopover:y,setShowSourceTokenPopover:g,tokenPopoverPos:w,setTokenPopoverPos:x,tokenTriggerRef:b,primaryColor:C,dark:v,dk:k})=>{const I=u.useAssetDisplay(),A=i?I({...i,logoURI:i._source==="wallet"?i.logoURI:ys}).logoURI:ys,E=v?k.cardBg:"#E9E9E9",j=v?k.cardBorder:"#C6C6C6",R=v?k.textSecondary:"#71757A",B=v?k.textPrimary:"#0E0D0B",M=v?k.cardBorder:"#C5C5C4",D=v?"rgba(255,255,255,0.08)":"#D4D3D3",U=f.length>8?"14px":f.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:E,border:`1px solid ${j}`,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(Mn,{element:"input",ariaLabel:"Withdraw amount",ariaInvalid:s,dataSpiceflowFocus:!0,value:t,onChange:O=>{const F=O.target.value;if(F===""){n("");return}/^\d*\.?\d*$/.test(F)&&n(u.parseNumericInput(F.startsWith(".")?`0${F}`:F,o??r?.decimals))},placeholder:"0.0",fontFamily:Ps,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:R,fontFamily:Ps,marginTop:"10px"},children:d})]}),a.jsx("div",{style:{width:`${Ip}px`,flexShrink:0},children:a.jsxs("div",{style:{backgroundColor:"transparent",border:`1px solid ${M}`,borderRadius:"8px",overflow:"hidden",width:"100%",display:"flex",flexDirection:"column",boxSizing:"border-box"},children:[a.jsxs("div",{ref:b,onClick:O=>{if(O.stopPropagation(),!y&&b.current){const F=b.current.getBoundingClientRect(),P=220,z=16;x({top:F.bottom+8,left:Math.min(Math.max(z,F.right-P),window.innerWidth-P-z)})}g(F=>!F)},style:{display:"flex",alignItems:"center",gap:"6px",padding:"9px 10px 8px 10px",cursor:"pointer"},children:[A&&a.jsx("img",{src:A,alt:f,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:U,fontWeight:500,color:B,lineHeight:"1.3",fontFamily:Ps,flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",letterSpacing:0},children:f}),a.jsx(Jn,{size:15,color:B,strokeWidth:2.25})]}),a.jsx(Ml,{isOpen:y,position:w,title:"SELECT TOKEN",portalAttribute:"token",items:(l||[]).map(O=>({id:ye(O),label:I({...O,displaySymbol:O.displaySymbol||(O._source==="wallet"?O.symbol:O.receiptTokenName)}).symbol,icon:I({...O,logoURI:O._source==="wallet"?O.logoURI:ys}).logoURI||void 0,detail:`${u.formatBalance(O.balanceFormatted)} \xB7 ${O._source==="wallet"?u.getChainConfig(O.chainId)?.displayName||O.chainId:"Spicenet"}`})),selectedId:i?ye(i):null,onSelect:O=>{const F=(l||[]).find(P=>ye(P)===O);F&&(c(F),n("")),g(!1)}}),a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 10px",backgroundColor:D,borderTop:`1px solid ${M}`},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:400,color:B,fontFamily:Ps,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:m})})]})})]}),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:Ps,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((O,F)=>{const P=F===4,z=parseFloat(t)||0,q=h>0&&Math.abs(z/h*100-O)<1;return a.jsx("button",{type:"button","aria-label":`Set amount to ${O}%`,"aria-pressed":q,onClick:()=>{const ne=i?.balance??0n;n(O===0?"":T.formatUnits(ne*BigInt(O)/100n,o??r?.decimals??6))},title:`${O}%`,disabled:h===0,"data-spiceflow-focus":!0,style:{width:"32px",height:"32px",padding:"9px",border:"none",backgroundColor:"transparent",cursor:h===0?"not-allowed":"pointer",opacity:q?1:.5,transition:"opacity 0.15s ease",display:"flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},children:a.jsx(cr,{pct:O,isMax:P,primaryColor:C,dark:v,fillColor:v?k.textSecondary:"#3C3E42"})},O)})})]})]})},Ep=({dark:e,dk:t})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:$o,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:u.font.ui},children:"Withdraw collateral from your account to 10+ EVM blockchains."})]}),Fp=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,onWithdrawExecute:o,onWithdrawSuccess:r,onWithdrawError:i,availableTokens:l,initialSourceAssetId:c,walletAssets:d,buildSpicenetBatch:f=Ts})=>{const m=p.useContext(u.SpiceFlowProviderContext);if(!m)return a.jsx("div",{children:"Error: SpiceWithdraw must be used within SpiceFlowProvider"});const h=m.mode||"7702",y=h==="presign"||h==="ondemand",g=m.supportedChainIds,w=m.allowedTokens,x=d?.initialAsset,b=p.useMemo(()=>[...d?.extraAssets??[],...x?[x]:[]].map(re=>({address:re.address,chainId:re.chainId,symbol:re.symbol,decimals:re.decimals})),[d?.extraAssets,x]),C=m.isWhitelistGateActive,{theme:v,dark:k,dk:I}=u.useSpiceBrand(s),A=u.useAssetDisplay(),E=m.network,j=()=>y?"select":"provider-login",[R,B]=p.useState(j()),[M,D]=p.useState(!1),[U,O]=p.useState(null),[F,P]=p.useState(null),[z,q]=p.useState(""),[ne,de]=p.useState(!1),[ie,Y]=p.useState(!1),[Q,G]=p.useState(!1),[fe,X]=p.useState(""),[be,we]=p.useState(!0),N=p.useRef(null),J=p.useRef(null),ee=p.useRef(null),[V,me]=p.useState(null),[he,Re]=p.useState(null),W=u.useWallet(),{isReady:L,isAuthenticated:$,address:le}=W,se=m?.embeddedWalletAddress,{address:oe,chainId:Ie}=yn.useAccount(),_=m.externalWalletAddress||oe,[je,Fe]=p.useState(!1),[st,ve]=p.useState(null),Ve=p.useRef(i);Ve.current=i;const Ne=p.useCallback(re=>{ve(re),typeof re=="string"&&re&&Ve.current?.(re,u.getRelayerErrorDetail(re))},[]),[ot,Pe]=p.useState(null),ht=p.useRef(null),Je=p.useRef(!0),gt=p.useRef(null);p.useEffect(()=>(Je.current=!0,()=>{Je.current=!1}),[]);const{execute:Qe,estimate:lt}=Is(),Ae=fr(le,e),[xt,qe]=p.useState(null),[ut,wt]=p.useState(null),[$e,at]=p.useState(!1),[Ue,rt]=p.useState(null),{assets:We,loading:ae,error:ue,refresh:Te}=Xn({owner:se,role:"holding",includeWalletAssets:!0,additionalSourceTokens:b,enabled:e&&!!se}),Be=p.useMemo(()=>{if(C)return[];const re=(te,ke)=>(ke.balanceUsd||0)-(te.balanceUsd||0);return(We??[]).filter(te=>te.balance>0n&&En(te,"holding",{allowedTokens:w,isWhitelistGateActive:C}).eligible).sort(re)},[We,w,C]),ce=p.useMemo(()=>[...new Set([...g??[],...Object.keys(l??{}).map(Number),...(Be||[]).map(re=>re.chainId),...(Be||[]).flatMap(re=>Object.keys(re.chainTokens??{}).map(te=>{const[,ke]=te.split(":"),Ye=Number(ke);return Number.isFinite(Ye)?Ye:null}).filter(te=>te!==null))])].filter(re=>u.getChainConfig(re)?.network===E),[g,l,Be,E]),ze=p.useMemo(()=>{if(l)return l;const re={};for(const te of Be||[]){const ke=Object.entries(te.chainTokens??{});if(ke.length>0){for(const[Ye,tt]of ke){const[Xe,Le,Wt]=Ye.split(":");if(Xe!=="evm"||!Le||!Wt)continue;const Bt=Number(Le);if(!Number.isFinite(Bt))continue;const Zt=Wt.startsWith("0x")?Wt.toLowerCase():`0x${Wt.toLowerCase()}`,nn=u.getChainConfig(Bt)?.supportedTokens?.find(At=>u.addressesEqual(At.address,Zt));nn&&Wo(te,Zt,Bt)&&(re[Bt]||(re[Bt]=[]),re[Bt].find(At=>u.addressesEqual(At.address,Zt))||re[Bt].push({address:Zt,symbol:nn?.symbol||tt?.name||te.symbol,name:nn?.name||tt?.name||te.displayName||te.name||te.symbol,decimals:nn?.decimals??tt?.decimals??te.decimals,logoURI:nn?.logo||te.logoURI}))}continue}re[te.chainId]||(re[te.chainId]=[]),re[te.chainId].find(Ye=>u.addressesEqual(Ye.address,te.address))||re[te.chainId].push({address:te.address,symbol:te.symbol,name:te.displayName||te.name||te.symbol,decimals:te.decimals,logoURI:te.logoURI})}return re},[l,Be]),Oe=p.useCallback((re,te)=>{const ke=Fu(re,te,te?re?._source==="wallet"?l?.[te]??[]:ze[te]??[]:[]);return!re||!ke||!te?null:re._source==="wallet"||En(re,"withdraw-destination",m,{...ke,chainId:te}).eligible?ke:null},[ze,l,m.allowedTokens,m.rpcOverrides,m.isWhitelistGateActive]),H=p.useMemo(()=>U?Be.find(re=>ye(re)===ye(U))??null:null,[U,Be]),Ze=H?H.balanceError:ue,Se=H?._source==="wallet",ct=p.useMemo(()=>{if(!H)return[];const re=Object.keys(H.chainTokens??{}).map(te=>gn(te)?.chainId??null).filter(te=>te!==null);return Array.from(new Set([...re,H.chainId,...ce].filter(Number.isFinite))).filter(te=>u.getChainConfig(te)?.network===E&&(H._source==="wallet"||Oe(H,te)!==null))},[H,ce,Oe,E]),jt=p.useMemo(()=>{if(!H||typeof window>"u")return null;const re=`spiceflow:withdraw-chain:${H.receiptTokenId||H.address.toLowerCase()}`,te=window.localStorage.getItem(re),ke=te?Number(te):null;return ke!==null&&Number.isFinite(ke)&&ct.includes(ke)?ke:null},[H,ct]),Et=p.useMemo(()=>H?H._source==="wallet"?H.chainId:jt!==null?jt:Ie&&ct.includes(Ie)?Ie:H.chainId&&ct.includes(H.chainId)?H.chainId:ct[0]??null:ce[0]??null,[H,jt,Ie,ct,ce]),De=p.useMemo(()=>Oe(H,F),[Oe,H,F]);p.useEffect(()=>{e&&(O(null),q(""))},[e,c,x?.address,x?.chainId]),p.useEffect(()=>{if(!e||!Be.length||U)return;const re=x?Be.find(te=>te.chainId===x.chainId&&u.addressesEqual(te.address,x.address)&&te._source==="wallet"):c?Be.find(te=>te.receiptTokenId===c):Be[0];O(re??null),q("")},[e,Be,U,c,x]);const et=p.useRef(null);p.useEffect(()=>{if(!H){et.current=null;return}const re=ye(H),te=et.current!==re;et.current=re,(te&&H._source==="wallet"||F===null||!ct.includes(F))&&P(Et)},[H,F,Et,ct]),p.useEffect(()=>{if(!ne&&!ie)return;const re=te=>{const ke=te.target;ne&&!N.current?.contains(ke)&&!J.current?.contains(ke)&&!ke?.closest?.("[data-network-popover]")&&de(!1),ie&&!ee.current?.contains(ke)&&!ke?.closest?.("[data-token-popover]")&&Y(!1)};return document.addEventListener("mousedown",re),()=>document.removeEventListener("mousedown",re)},[ne,ie]);const yt=p.useCallback(re=>{if(!re||ct.length<=1)return;const te=re.getBoundingClientRect(),ke=220,Ye=16;me({top:te.bottom+8,left:Math.min(Math.max(Ye,te.right-ke),window.innerWidth-ke-Ye)}),de(tt=>!tt)},[ct.length]),Ct=p.useCallback(()=>we(re=>!re),[]);p.useEffect(()=>{if(!H||F===null||typeof window>"u")return;const re=`spiceflow:withdraw-chain:${H.receiptTokenId||H.address.toLowerCase()}`;window.localStorage.setItem(re,String(F))},[H,F]);const it=Q?T.isAddress(fe)?fe:void 0:_||(Se?void 0:se),Ot=Xn({owner:it,role:"holding",includeRollupAssets:!1,sourceChains:F?[F]:[],additionalSourceTokens:De&&F?[{...De,chainId:F}]:[],enabled:e&&!!it&&!!De&&!!F}),On=Ot.walletAssets.find(re=>u.addressesEqual(re.owner,it)&&re.chainId===F&&u.addressesEqual(re.address,De?.address)),pt=H?.balanceFormatted??0,an=H?A(Se?H:{...H,displaySymbol:H.displaySymbol||H.receiptTokenName,logoURI:ys}):void 0,Ft=an?.symbol||"Select token",Lt=H?.displayChainName||(Se?u.getChainConfig(H.chainId)?.displayName:"Spicenet")||"Network",kt=H?.receiptTokenDecimals??H?.decimals,Qt=p.useMemo(()=>{if(!De||kt===void 0)return 0n;try{return Vt(z||"0",kt)}catch{return 0n}},[z,De,kt]),Mt=p.useMemo(()=>!De||kt===void 0?0n:Nu(Qt,kt,De.decimals),[De,kt,Qt]),Ut=ut??xt,Gt=Qt,ft=xp({enabled:e&&Se&&!!De,destination:De&&F?{...De,chainId:F}:null,asset:Se?H:null,amount:Qt,recipient:it,owner:se,sourceChains:g,onSuccess:r,onError:i}),Ee=ft.supply,St=Se&&F!==H?.chainId,qt=Se?Ee.fees.ready?Ee.fees.destinationAmount??0n:0n:Mt>(Ut??0n)?Mt-(Ut??0n):0n,Kt=Se&&F?De?En(H,"spend-source",m,{...De,chainId:F}).reason:"USDC withdrawal is unavailable on this network. Choose another network.":null,Dt=je||Se&&(Ee.status.isExecuting||Ee.status.finalizing),Me=Ee.status.step==="success"||Ee.status.paymentResult?.status==="success",Jt=p.useCallback(re=>{if(Se||!F||!De)return[];if(Qt===0n||Mt===0n||!it)return[];const te=Array.isArray(re)?re.filter(Xe=>Xe.amount>0n):[{token:De.address,recipient:it,amount:re??Mt}],ke=te.reduce((Xe,Le)=>Xe+Le.amount,0n);if(ke<=0n)return[];const Ye={chainId:F,calls:[],tokenTransfers:te.map(Xe=>({from:"escrow",to:Xe.recipient,token:Xe.token,amount:Xe.amount}))},tt=f({destinationChainId:F,deliveryToken:De.address,deliveryAmount:ke,deliveryRecipient:it,deliveryTransfers:te,requestTimestampMs:gt.current??Date.now()});return tt?[tt,Ye]:[Ye]},[Se,F,De,Qt,Mt,it,f]),zt=p.useMemo(()=>Jt(),[Jt]),Nt=p.useMemo(()=>Pu(zt,De?.address),[zt,De?.address]),$t=p.useRef(null),ln=!Se&&e&&!y&&!je&&!!De&&!!F&&Qt!==0n;_o({shouldRun:ln&&zt.length>0&&!!Nt,deps:[ln,zt.length>0,Nt],delayMs:500,onSkip:()=>{$t.current=null,qe(null),rt(null),at(ln&&zt.length===0)},onCleanup:()=>at(!1),run:async({isCurrent:re,signal:te})=>{const ke=Nt;at(!0),rt(null);try{const Ye=await Du({batches:zt,tokenAddress:De.address,chainId:F,estimate:lt,signal:te});if(!re())return;$t.current={key:ke,quote:Ye},qe(Ye.gasFee)}catch(Ye){if(!re())return;$t.current=null,qe(null),rt(Ye instanceof Error?Ye.message:"Failed to estimate gas fee")}finally{re()&&at(!1)}}}),p.useEffect(()=>{je||wt(null)},[je,z,F,De?.address]);const Sn=p.useCallback(()=>{D(!0),B("select")},[]),In=p.useCallback(()=>{Dt||t()},[t,Dt]),fn=p.useRef(null);fn.current={batches:zt,walletAddress:le,recipient:it,token:De,chainId:F,amount:z,grossAmountRaw:Mt,gasFee:xt,feeEstimate:Nt&&$t.current?.key===Nt?$t.current.quote.feeEstimate:null,isNon7702:y,buildWithdrawBatches:Jt,execution:{estimate:lt,execute:Qe},ui:{setIsExecuting:Fe,setExecutionError:Ne,setExecutionProgress:Pe,setLockedGasFee:wt},executionContextRef:ht,isMountedRef:Je,onWithdrawExecute:o,onWithdrawSuccess:r,buildSpicenetBatch:f};const Ht=p.useCallback(()=>(gt.current=Date.now(),Qi(fn.current)),[]),Tt=p.useCallback(()=>Gi(fn.current),[]);if(p.useEffect(()=>{if(!e){const re=setTimeout(()=>{B(j()),D(!1),O(null),P(null),q(""),de(!1),Y(!1),G(!1),X(""),Fe(!1),Ne(null),Pe(null),ht.current=null},300);return()=>clearTimeout(re)}},[e,y]),p.useEffect(()=>{if(!y&&e&&R==="provider-login"&&L&&$&&se&&!M){const re=setTimeout(()=>{D(!0),B("select")},100);return()=>clearTimeout(re)}},[y,e,R,L,$,se,M]),!e)return null;if(R==="provider-login"&&!y)return a.jsx(mr,{onAuthSuccess:Sn,autoTrigger:!0});if(R==="select"){const re=parseFloat(z)||0,te=kt?xr(Gt,kt):z||"0",ke=!!H&&Gt>H.balance,Ye=(F?u.getChainConfig(F):null)?.displayName||"Network",tt=F?Fn[F]||ws:null,Xe=De?.symbol||"\u2014",Le=Ft,Wt=De?xr(qt,De.decimals):"0",Bt=H&&H.balanceFormatted>0?H.balanceUsd/H.balanceFormatted:void 0,Zt=H?.priceStatus==="stale",nn=Ki(re,Bt,Zt),At=Ki(parseFloat(Wt)||0,St?void 0:Bt,Zt),An=(!Q||T.isAddress(fe))&&(!Se||!u.addressesEqual(it,se)),Pt=!y&&!Se&&re>0&&De!==null,Ln=!Pt||xt!==null&&!$e&&!Ue,Z=re>0&&!ke&&!ae&&!Ze&&H!==null&&F!==null&&De!==null&&!Kt&&it&&An&&Ln&&qt>0n&&(!Se||Ee.canExecute&&!Me),ge=!Z,xe=ae?"LOADING BALANCES":Ze?"BALANCES UNAVAILABLE":H===null?"NO BALANCE":re===0?"ENTER AMOUNT":ke?"INSUFFICIENT BALANCE":Pt&&!Ln?Ue?"GAS UNAVAILABLE":"ESTIMATING GAS":Pt&&qt===0n?"AMOUNT TOO SMALL":Se&&!Ee.canExecute?"REVIEW FEES":"WITHDRAW",Ce=!!ot&&(ot.step==="success"||ot.step==="error"),bt=s?.primaryColor||v.colors.primary,dt=402,mn=(qn,zn,cn)=>a.jsx(yp,{label:qn,loading:cn,balance:zn,dark:k,dk:I});return a.jsx(on,{isOpen:!0,onClose:In,title:"Withdraw",subtitle:a.jsx(Ep,{dark:k,dk:I}),styles:s,theme:v,dark:k,maxWidth:"486px",footerLinkText:"Spicenet accounts \u2192",overlayDimmed:!1,closeOnBackdropClick:n,overlayContent:Ce?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:Dt,onRetryTx:()=>{Tt()},onNewTx:()=>{Pe(null),q(""),Ne(null),ht.current=null},onClose:()=>{Pe(null),Ne(null),Fe(!1),ht.current=null},onComplete:()=>{Pe(null),Ne(null),Fe(!1),ht.current=null},results:[{asset:{symbol:De?.symbol||"Token",address:De?.address||""},txHash:ot?.txHash||"",success:ot?.step==="success",error:ot?.error,amount:z}],chainId:F??void 0,theme:v})})}):null,children:a.jsxs("fieldset",{disabled:Dt,style:{border:0,minWidth:0,width:"calc(100% - 32px)",maxWidth:`${dt}px`,margin:"0 auto",padding:"0 0 4px 0",position:"relative"},children:[a.jsx(mo,{activity:Ae,palette:I,onRefresh:()=>{Te()}}),a.jsxs("div",{style:{marginTop:"16px",marginBottom:"16px",display:"flex",flexDirection:"column",gap:"16px"},children:[a.jsx(Ap,{header:mn("Source",pt,ae),amount:z,setAmount:q,isInsufficient:ke,sourceAmountDecimals:kt,selectedSourceAsset:H,resolvedSelectedSourceAsset:H,spiceAssets:Be,setSelectedSourceAsset:O,sourceUsdEstimate:nn,sourceTokenLabel:Le,sourceChainLabel:Lt,totalSelectedBalance:pt,showSourceTokenPopover:ie,setShowSourceTokenPopover:Y,tokenPopoverPos:he,setTokenPopoverPos:Re,tokenTriggerRef:ee,primaryColor:bt,dark:k,dk:I}),a.jsx(vp,{header:mn("Destination",On?.balanceFormatted??null,Ot.loading),amount:z,receiveAmountDisplay:Wt,receiveUsdEstimate:At,selectedDestToken:De,destTokenSymbol:Xe,destChainName:Ye,destChainLogo:tt,compatibleDestinationChains:ct,networkSwitchRef:N,onOpenNetworkPopover:yt,showNetworkPopover:ne,setShowNetworkPopover:de,networkPopoverPos:V,selectedChainId:F,setSelectedChainId:P,dark:k,dk:I})]}),a.jsxs("div",{style:{marginBottom:v.spacing.sm},children:[a.jsx(Sp,{show:be,onToggle:Ct,showCustomAddress:Q,setShowCustomAddress:G,customRecipient:fe,setCustomRecipient:X,externalAddress:_,recipientAddress:it,destChainName:Ye,destChainLogo:tt,compatibleDestinationChains:ct,txDetailsChainSwitchRef:J,onOpenNetworkPopover:yt,sourceChainLabel:Lt,sourceDetailsLogo:H?an?.logoURI:ys,sourceTokenLabel:Le,amount:z,totalSourceDebitDisplay:te,receiveAmountDisplay:Wt,destTokenSymbol:Xe,shouldQuoteWithdrawGas:Pt,estimatingFee:$e,feeError:Ue,displayedGasFee:Ut,selectedDestToken:De,theme:v,styles:s,dark:k,dk:I}),St&&a.jsx(Xt,{variant:"info",size:"compact",palette:I,children:Ee.fees.ready?`You receive ${Wt} USDC on ${Ye}`:`USDC on ${Ye} \u2014 ${Kt||Ee.fees.error||Ee.quote.quoteError||"waiting for quote"}`}),Se&&Ee.fees.ready&&a.jsxs(a.Fragment,{children:[a.jsx(rn,{palette:I,label:"TOTAL SOURCE DEBIT",value:`${te} ${Le}`}),a.jsx(rn,{palette:I,label:"MINIMUM RECEIVED",value:`${Wt} ${Xe}`}),a.jsx(rn,{palette:I,label:St?"DESTINATION FEES":"EST. FEE",value:Ee.fees.preview?.totalFee!==void 0?`${T.formatUnits(Ee.fees.preview.totalFee,Ee.fees.preview.decimals)} ${Ee.fees.preview.symbol}`:"Unavailable"})]}),St&&Ee.fees.ready&&Ee.fees.source&&a.jsx(rn,{palette:I,label:"SOURCE NETWORK FEE",value:`${T.formatUnits(Ee.fees.source.gasFee,Ee.fees.source.decimals)} ${Ee.fees.source.symbol}`}),Kt&&a.jsx(Xt,{variant:"warning",size:"compact",palette:I,children:Kt}),Se&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[!St&&a.jsx(rn,{palette:I,label:"FEE ASSET",value:Ee.fees.isLoading?"Estimating...":ft.source?`${A(ft.source).symbol} \xB7 ${ft.source._source==="spice"?"Spicenet":u.getChainConfig(ft.source.chainId)?.displayName}`:"Unavailable"}),!St&&a.jsx(rn,{palette:I,label:"MAXIMUM FEE FUNDING",value:Ee.fees.isLoading?"Estimating...":Ee.fees.ready&&ft.source&&ft.maximumFeeFunding!=null?`${T.formatUnits(ft.maximumFeeFunding,ft.source.decimals)} ${A(ft.source).symbol}`:"Unavailable"}),!Me&&(Ee.status.error||Ee.fees.error||Ee.quote?.quoteError)&&a.jsx(Xt,{variant:"error",size:"compact",palette:I,children:Ee.status.error||Ee.fees.error||Ee.quote?.quoteError}),!Me&&Ee.status.finalizationError&&a.jsx(u.Button,{variant:"outline",dark:k,disabled:Ee.status.finalizing,onClick:()=>void Ee.retryFinalization(),children:"Retry application update"}),!Me&&Ee.status.step==="error"&&Ee.status.error==="Transaction fees changed. Refresh the quote before submitting."&&a.jsx(u.Button,{variant:"outline",dark:k,disabled:Ee.status.isExecuting,onClick:Ee.retrySupply,children:"Refresh quote"}),Ee.status.statusMsg&&a.jsx("span",{role:"status",children:Ee.status.statusMsg})]}),H&&!ae&&ct.length===0&&a.jsx(Xt,{variant:"warning",size:"compact",palette:I,children:"No withdrawal networks are available for this asset."}),st&&a.jsx(Xt,{variant:"error",size:"compact",palette:I,fontFamily:s?.fontFamily||v.typography.fontFamily,style:{marginBottom:"12px"},children:st}),ue&&a.jsxs(Xt,{variant:Ze?"error":"warning",size:"compact",palette:I,children:[Ze?"Unable to load this balance. Please try again.":"Some other balances could not be refreshed."," ",a.jsx("button",{type:"button",onClick:()=>void Te(),children:"Retry"})]}),a.jsx(u.Button,{variant:"outline",fullWidth:!0,onClick:()=>{if(Z)if(Se){if(St&&qt<=0n)return;Ee.submitSupply()}else Ht()},disabled:ge||Dt,theme:v,dark:k,styles:s,style:{marginTop:"8px"},children:Dt?"EXECUTING...":Se&&Me?"WITHDRAWN":xe})]})]})})}return null},Or=Fp,Tp=({onDepositClick:e,onWithdrawClick:t,depositDisabled:n=!1,withdrawDisabled:s=!1,primaryColor:o="#EA4B4B",buttonStyles:r,dark:i=!1})=>{if(!e&&!t)return null;const l={button:{backgroundColor:o,...r}};return a.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e&&a.jsx(u.Button,{variant:"outline",onClick:e,disabled:n,dark:i,styles:l,style:{flex:1,height:"44px",fontSize:"12px"},children:"Deposit"}),t&&a.jsx(u.Button,{variant:"outline",onClick:()=>t(),disabled:s,dark:i,styles:l,style:{flex:1,height:"44px",fontSize:"12px"},children:"Withdraw"})]})},Bp=p.memo(Tp),Rp=({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",{role:o.onClick?"button":void 0,tabIndex:o.onClick?0:void 0,onClick:o.onClick,onKeyDown:o.onClick?i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),o.onClick?.())}:void 0,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))})]})},jp=p.memo(Rp);var Op="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 Dp=({appName:e,status:t,statusLabel:n,totalUsdValue:s,breakdownSubtitle:o,showUsdSummary:r=!0,address:i,dk:l,dark:c=!1,showModeToggle:d,isEmbeddedMode:f=!0,onModeToggle:m})=>{const[h,y]=p.useState(!1),g=async()=>{i&&await u.copyToClipboard(i)&&(y(!0),setTimeout(()=>y(!1),2e3))},w=t==="active",x=n||(w?"Active":"Inactive"),b=w?"#10b981":"#9ca3af",C=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:l.textPrimary},children:[e," Account"]}),d?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?l.hoverBg:"#f3f4f6",border:c?`1px solid ${l.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"11px",fontWeight:600,fontFamily:u.font.mono,color:l.textSecondary,transition:"background-color 150ms ease, border-color 150ms ease, color 150ms ease",letterSpacing:"0.02em"},children:[a.jsx("span",{children:f?"Embedded":"External"}),a.jsx("img",{src:Op,alt:"","aria-hidden":"true",style:{width:"11px",height:"11px",display:"block",...c?{filter:"invert(0.65)"}:{}}})]}),a.jsx(bi,{content:C,label:"Account mode info",textColor:c?l.textPrimary:"#f9fafb",backgroundColor:c?l.cardBg:"#111827",borderColor:c?l.cardBorder:"rgba(255,255,255,0.08)",accentColor:c?l.textSecondary:"#6b7280",children:a.jsx("img",{src:$o,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?l.hoverBg:w?"#ecfdf5":"#f3f4f6",border:c?`1px solid ${l.cardBorder}`:w?"1px solid #a7f3d0":"1px solid #e5e7eb"},children:[a.jsx("div",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:b}}),a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:c?l.textSecondary:w?"#065f46":"#6b7280"},children:x})]})]}),r&&a.jsx("div",{style:{fontSize:"28px",fontWeight:700,color:l.textPrimary,lineHeight:1.2,marginBottom:"2px"},children:u.formatUsd(s)}),r&&o&&a.jsx("div",{style:{fontSize:"12px",color:l.textSecondary,marginBottom:"8px"},children:o}),i&&a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"12px",fontFamily:u.font.mono,color:c?l.textSecondary:"#9ca3af"},children:u.truncateAddress(i)}),a.jsx("button",{onClick:g,style:{padding:"2px 6px",fontSize:"10px",fontWeight:500,backgroundColor:"transparent",color:c?l.textSecondary:"#9ca3af",border:"none",cursor:"pointer",borderRadius:"4px",transition:"background-color 150ms ease, color 150ms ease"},title:"Copy address",children:h?"Copied":"Copy"})]})]})},Np=p.memo(Dp),Pp=({asset:e,label:t,logo:n,dk:s,dark:o})=>{const r=dr(n,e.chainId,e.tokenAddress),[i,l]=p.useState();return n===null?null:r&&r!==i?a.jsx("img",{src:r,alt:t,onError:()=>l(r),style:{width:"24px",height:"24px",borderRadius:"50%"}}):a.jsx("div",{style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:o?s.hoverBg:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:600,color:s.textSecondary},children:t.charAt(0)})},Mp=e=>`${e.tokenAddress}-${e.chainId}`,Up=({spiceAssets:e,loading:t,dk:n,dark:s=!1,canDirectWithdraw:o=!1,onDirectWithdraw:r,directWithdrawState:i,onWithdrawClick:l,limit:c})=>{const d=u.useAssetDisplay(),[f,m]=p.useState(!1),h=c!==void 0&&!f?Math.max(e.length-c,0):0,y=h>0?e.slice(0,c):e,g={fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:n.textSecondary,marginBottom:"8px",textTransform:"uppercase"},w={backgroundColor:n.cardBg,border:s?`1px solid ${n.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px"};return t?a.jsxs("div",{children:[a.jsx("div",{style:g,children:"Idle Balances"}),[1,2].map(x=>a.jsx("div",{style:{...w,padding:"12px",marginBottom:"6px",height:"48px",animation:"pulse 1.5s ease-in-out infinite",opacity:.5}},x))]}):e.length===0?a.jsxs("div",{children:[a.jsx("div",{style:g,children:"Idle Balances"}),a.jsx("div",{style:{...w,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:g,children:"Idle Balances"}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[y.map(x=>{const b=u.getChainConfig(x.chainId),C=x.chainDisplayName||b?.displayName||`Chain ${x.chainId}`,v=d({symbol:x.tokenSymbol,displaySymbol:x.tokenDisplaySymbol||x.tokenDisplayName,displayName:x.tokenDisplayName,receiptTokenId:x.receiptTokenId,receiptTokenName:x.receiptTokenName,location:x.location,logoURI:x.logoURI}),k=v.symbol,I=Mp(x),A=x.receiptTokenId&&l,E=A||o&&x.directWithdraw&&!!r,j=!A&&i?.key===I?i:null,R=j?.step==="pending";return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",...w},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx(Pp,{asset:x,label:k,logo:v.logoURI,dk:n,dark:s}),a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:k}),a.jsx("div",{style:{fontSize:"11px",color:s?n.textSecondary:"#9ca3af"},children:C})]})]}),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:u.formatAssetBalance({balance:BigInt(x.balance),decimals:x.tokenDecimals})}),a.jsx("div",{style:{fontSize:"11px",color:j?.step==="error"?n.errorText:s?n.textSecondary:"#9ca3af"},children:j?.step==="error"?j.message||"Withdraw failed":!Number.isFinite(x.usdValue)||x.usdValue<=0?"\u2014":`${u.formatUsd(x.usdValue)}${x.priceStatus==="stale"?" (stale)":""}`})]}),E&&a.jsx("button",{onClick:()=>{R||(A?A(x.receiptTokenId):r(x))},disabled:R,title:A?"Choose withdrawal network":"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:R?"default":"pointer",opacity:R?.6:1,whiteSpace:"nowrap"},children:R?"Withdrawing\u2026":"Withdraw"})]})]},x.positionId??`${x.owner??""}:${x.location??""}:${x.receiptTokenId??`${x.tokenAddress}-${x.chainId}`}`)}),c!==void 0&&e.length>c&&a.jsxs("button",{onClick:()=>m(!f),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"6px",width:"100%",padding:"8px 12px",...w,cursor:"pointer",color:n.textSecondary,fontSize:"12px",fontWeight:500},children:[a.jsx("span",{children:f?"Show less":`Show ${h} more`}),a.jsx("span",{style:{transform:f?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease",fontSize:"10px"},children:"\u25BE"})]})]})]})},Wp=p.memo(Up),Lp=({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=u.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}`)})})]}),qp=p.memo(Lp),zp=({appName:e,status:t,statusLabel:n,totalUsdValue:s,breakdownSubtitle:o,showUsdSummary:r,address:i,spiceAssets:l,spiceAssetsLoading:c,pendingDeposits:d,customSections:f,notice:m,onDepositClick:h,onWithdrawClick:y,depositDisabled:g,onCompleteDeposit:w,primaryColor:x,buttonStyles:b,dk:C,dark:v=!1,showModeToggle:k,isEmbeddedMode:I,onModeToggle:A,showConnectExternalCta:E,onConnectExternalWallet:j,connectExternalError:R,showHowItWorks:B=!0,canDirectWithdraw:M,onDirectWithdraw:D,directWithdrawState:U,idleBalancesLimit:O})=>{const[F,P]=p.useState(!1);return a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"16px",padding:"16px",maxHeight:"calc(80vh - 32px)",overflowY:"auto"},children:[a.jsx(Np,{appName:e,status:t,statusLabel:n,totalUsdValue:s,breakdownSubtitle:o,showUsdSummary:r,address:i,dk:C,dark:v,showModeToggle:k,isEmbeddedMode:I,onModeToggle:A}),m&&a.jsx("div",{style:{padding:"10px 12px",borderRadius:"8px",backgroundColor:m.tone==="warning"?v?"rgba(245, 158, 11, 0.12)":"#fffbeb":m.tone==="success"?v?"rgba(16, 185, 129, 0.12)":"#ecfdf5":C.cardBg,border:m.tone==="warning"?v?"1px solid rgba(245, 158, 11, 0.35)":"1px solid #fde68a":m.tone==="success"?v?"1px solid rgba(16, 185, 129, 0.35)":"1px solid #a7f3d0":v?`1px solid ${C.cardBorder}`:"1px solid #e5e7eb",color:m.tone==="warning"?v?"#fbbf24":"#92400e":m.tone==="success"?v?"#34d399":"#047857":C.textSecondary,fontSize:"12px",lineHeight:1.45,fontWeight:500},children:m.message}),E&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[a.jsx("button",{onClick:j,style:{width:"100%",padding:"10px 14px",borderRadius:"8px",backgroundColor:x||"#EA4B4B",color:"#ffffff",border:"none",cursor:"pointer",fontSize:"13px",fontWeight:600,fontFamily:u.font.ui,transition:"opacity 150ms ease"},children:"Connect External Wallet"}),R&&a.jsx("span",{style:{fontSize:"11px",color:v?C.errorText:"#b91c1c",lineHeight:1.4},children:R})]}),a.jsx("div",{style:{height:"1px",backgroundColor:v?"#2d2d2d":"#e5e7eb"}}),a.jsx(Bp,{onDepositClick:h,onWithdrawClick:y,depositDisabled:g,primaryColor:x,buttonStyles:b,dark:v}),B&&a.jsxs("div",{children:[a.jsxs("button",{onClick:()=>P(!F),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",padding:"8px 12px",backgroundColor:C.cardBg,border:v?`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:F?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease",fontSize:"10px"},children:"\u25BE"})]}),F&&a.jsxs("div",{style:{marginTop:"6px",padding:"10px 12px",backgroundColor:v?C.cardBg:"#f0fdf4",border:v?`1px solid ${C.cardBorder}`:"1px solid #bbf7d0",borderRadius:"8px",fontSize:"12px",lineHeight:1.5,color:v?C.textSecondary:"#374151"},children:["Fund your ",e," Account from any supported chain. Once funded, transact gas-free and asset-abstracted on ",e,"."]})]}),a.jsx(qp,{pendingDeposits:d,onCompleteDeposit:w,dk:C,dark:v}),a.jsx(Wp,{spiceAssets:l,loading:c,dk:C,dark:v,canDirectWithdraw:M,onDirectWithdraw:D,directWithdrawState:U,onWithdrawClick:y,limit:O}),f.map((z,q)=>a.jsx(jp,{section:z,dk:C,dark:v},q))]})},Hp=p.memo(zp);function Vp({dark:e,onSuccess:t,onError:n}){const{disconnect:s}=yn.useDisconnect(),{logout:o}=fs.usePrivy(),[r,i]=p.useState(!1);return a.jsx(u.Button,{variant:"ghost",fullWidth:!0,dark:e,loading:r,onClick:async()=>{i(!0);try{s(),await o(),t()}catch(l){n(u.sanitizeError(l,"Unable to disconnect. Please try again."))}finally{i(!1)}},children:"Disconnect"})}const Dr=380,Wn=8,Qp=[],Gp={};function Ul(e){return e?.trim().replace(/^spice/i,"").replace(/[^a-z0-9]/gi,"").toUpperCase()||void 0}function Kp(e,t){const n=new Map;Object.entries(t).forEach(([o,r])=>{if(!Number.isFinite(r)||r<=0)return;n.set(o,r),n.set(o.toUpperCase(),r);const i=Ul(o);i&&n.set(i,r)});const s=[e.symbol,e.displaySymbol,e.receiptTokenName,e.name,e.displayName];for(const o of s){if(!o)continue;const r=n.get(o)??n.get(o.toUpperCase());if(r!==void 0)return r;const i=Ul(o);if(!i)continue;const l=n.get(i);if(l!==void 0)return l}return 0}const Wl=({appName:e,status:t="active",statusLabel:n,customSections:s=Qp,extraAssets:o=[],tokenPrices:r={},tokenLogos:i=Gp,breakdownLabels:l=[],notice:c,styles:d,dark:f,onDepositSuccess:m,onDepositClick:h,onWithdrawClick:y,onCompleteDeposit:g,showModeToggle:w=!1,defaultMode:x,showUsdSummary:b=!0,alwaysShowEmbeddedIdle:C=!1,idleBalancesLimit:v,showDisconnect:k=!1})=>{const I=p.useContext(u.SpiceFlowProviderContext),A=I?.mode!=="7702",E=!!I?.isWhitelistGateActive,j=!!I?.isWhitelistConfigured&&I?.isUserWhitelisted!==!0,R=p.useRef(!1);p.useEffect(()=>{if(!R.current){if(u.hasStoredSpiceFlowMode()){R.current=!0;return}x&&I?.setMode&&(I.setMode(x==="non7702"?"ondemand":"7702"),R.current=!0)}},[I,x]);const[B,M]=p.useState(!1),[D,U]=p.useState(null),[O,F]=p.useState({top:0,bottom:0,left:0,placement:"below"}),P=p.useRef(null),z=p.useRef(null),{address:q,isConnected:ne}=u.useWallet(),de=I?.embeddedWalletAddress,ie=I?.externalWalletAddress,{embeddedAddress:Y}=u.useProviderWallets(),{brand:Q,dark:G,primaryColor:fe,dk:X}=u.useSpiceBrand(d,f),be=e??Q?.appName??"Spice",we=A&&!ie,N=!A||C,J=N?de||Y:q,ee=p.useMemo(()=>I?.supportedChainIds??S.getChainIdsByNetwork("mainnet"),[I?.supportedChainIds]),V=Xn({owner:N?J:ie,role:"holding",sourceChains:ee,additionalSourceTokens:o.filter(ae=>!ae.receiptTokenId&&(!ae.owner||u.addressesEqual(ae.owner,N?J:ie))).map(ae=>({address:ae.tokenAddress,chainId:ae.chainId,decimals:ae.tokenDecimals,symbol:ae.tokenSymbol,logoURI:ae.logoURI})),includeRollupAssets:N,enabled:N?!!J:!!ie}),me=V.assets.filter(ae=>ae._source==="spice"),he=V.walletAssets,Re=V.loading,W=V.refresh,L=N?J:ie,$=p.useMemo(()=>o.filter(ae=>!ae.owner||ae.owner.toLowerCase()===L?.toLowerCase()).map(ae=>({...ae,owner:ae.owner??L,location:ae.location??(ae.receiptTokenId?"rollup":N?"embedded":"external")})),[o,L,N]),le=p.useMemo(()=>{const ae=new Map(Object.entries(r).filter(([,ue])=>Number.isFinite(ue)&&ue>0).map(([ue,Te])=>[ue.toLowerCase(),Te]));return he.map(ue=>({owner:ue.owner,location:ue.location,positionId:ye(ue),tokenAddress:ue.address,tokenSymbol:ue.symbol,tokenDecimals:ue.decimals,chainId:ue.chainId,chainDisplayName:u.getChainName(ue.chainId),balance:ue.balance.toString(),balanceFormatted:ue.balanceFormatted,usdValue:ue.balanceUsd||(ae.get(`${ue.chainId}:${ue.address.toLowerCase()}`)??0)*ue.balanceFormatted,logoURI:ue.logoURI||i[ue.symbol],directWithdraw:N}))},[he,$,i,r,N]),se=p.useMemo(()=>{const ae=N?me.map(ce=>{const ze=ce.balanceUsd||0,Oe=Number.isFinite(ce.balanceFormatted)?ce.balanceFormatted:0,H=Kp(ce,r),Ze=ce.priceStatus&&H>0?H*Oe:ze>0?ze:H*Oe;return{owner:ce.owner,location:ce.location,positionId:ye(ce),tokenAddress:ce.address,tokenSymbol:ce.symbol,tokenDisplaySymbol:u.getAssetDisplaySymbol(ce),tokenDisplayName:u.getAssetDisplayName(ce),tokenDecimals:ce.decimals,chainId:ce.chainId,chainDisplayName:u.getAssetDisplayChainName(ce),balance:ce.balance.toString(),balanceFormatted:ce.balanceFormatted,usdValue:Ze,priceStatus:H>0?void 0:ce.priceStatus,logoURI:ce.logoURI,receiptTokenId:ce.receiptTokenId,receiptTokenName:ce.receiptTokenName}}):[],ue=ce=>`${ce.owner?.toLowerCase()}:${ce.location}:${ce.chainId}:${ce.receiptTokenId??S.normalizeNativeTokenAddress(ce.tokenAddress).toLowerCase()}`,Te=new Map([...V.rollupAssets,...he].map(ce=>[ue({...ce,tokenAddress:ce.address}),ce])),Be=new Map([...ae,...le].map(ce=>[ue(ce),ce]));for(const ce of we?[]:$){const ze=ue(ce),Oe=Be.get(ze);Be.set(ze,Oe?{...ce,...Oe,logoURI:ce.logoURI??Oe.logoURI,tokenDisplayName:ce.tokenDisplayName??Oe.tokenDisplayName,tokenDisplaySymbol:ce.tokenDisplaySymbol??Oe.tokenDisplaySymbol}:ce)}return[...Be.values()].filter(ce=>BigInt(ce.balance)>0n&&Pa({isDiscovered:Te.get(ue(ce))?.isDiscovered,balanceUsd:ce.usdValue},!0)&&u.isAssetAllowed(Te.get(ue(ce))??{address:ce.tokenAddress,symbol:ce.tokenSymbol,displaySymbol:ce.tokenDisplaySymbol},I?.allowedTokens)).sort((ce,ze)=>ze.usdValue-ce.usdValue)},[N,we,me,V.rollupAssets,r,le,$,I?.allowedTokens]),oe=p.useMemo(()=>se.reduce((ae,ue)=>ae+ue.usdValue,0),[se]),{pendingDeposits:Ie,refresh:_}=si({chainIds:ee,enabled:!!q,discoverWalletBalances:!0}),je=p.useMemo(()=>s.reduce((ae,ue)=>ae+(ue.totalValue??0),0),[s]),Fe=oe+je,st=p.useMemo(()=>{const ae=[];oe>0&&ae.push(`${u.formatUsd(oe)} idle`);for(const ue of s){const Te=l.find(Be=>Be.sectionTitle===ue.title)?.label||ue.title.toLowerCase();ae.push(`${u.formatUsd(ue.totalValue??0)} ${Te}`)}return ae.join(" \xB7 ")},[oe,s,l]),ve=p.useCallback(ae=>{g?g(ae):U(ae)},[g]),Ve=p.useCallback(()=>{U(null)},[]),Ne=p.useCallback(()=>{U(null),m?.()},[m]),ot=p.useCallback(()=>{if(!P.current)return;const ae=P.current.getBoundingClientRect(),ue=window.innerHeight-ae.bottom-Wn,Te=ae.top-Wn,Be=ue>=400||ue>=Te?"below":"above",ce=Math.max(Wn,Math.min(ae.right-Dr,window.innerWidth-Dr-Wn)),ze=Be==="below"?ae.bottom+Wn:ae.top-Wn,Oe=Be==="above"?window.innerHeight-ze:0;F({top:ze,bottom:Oe,left:ce,placement:Be})},[]);p.useLayoutEffect(()=>{B&&ot()},[B,ot]),p.useEffect(()=>{if(!B)return;const ae=Be=>{P.current&&!P.current.contains(Be.target)&&z.current&&!z.current.contains(Be.target)&&M(!1)},ue=Be=>{Be.key==="Escape"&&M(!1)},Te=()=>ot();return document.addEventListener("mousedown",ae),document.addEventListener("keydown",ue),window.addEventListener("scroll",Te,{passive:!0}),window.addEventListener("resize",ot),()=>{document.removeEventListener("mousedown",ae),document.removeEventListener("keydown",ue),window.removeEventListener("scroll",Te),window.removeEventListener("resize",ot)}},[B,ot]);const Pe=N?de||Y||q:ie||q,ht=p.useCallback(()=>{I?.setMode&&I.setMode(A?"7702":"ondemand")},[I,A]),[Je,gt]=p.useState(null);let Qe=null;try{Qe=fs.useConnectWallet({onSuccess:()=>gt(null),onError:ae=>gt(u.sanitizeError(ae,"Failed to connect wallet."))}).connectWallet}catch{Qe=null}const lt=p.useCallback(()=>{Qe&&(M(!1),gt(null),Qe({walletChainType:"ethereum-only"}))},[Qe]),Ae=!ie&&!!Qe,xt=p.useCallback(()=>{M(!1),h?.()},[h]),qe=p.useCallback(ae=>{M(!1),y?.(ae)},[y]),ut=p.useCallback(ae=>{M(!1),ve(ae)},[ve]),[wt,$e]=p.useState(null),at=N&&!!ie&&!u.addressesEqual(L,ie),Ue=p.useCallback(ae=>{const ue=he.find(Te=>Te.chainId===ae.chainId&&u.addressesEqual(Te.address,ae.tokenAddress));ue&&(M(!1),$e(ue))},[he]);if(typeof window>"u")return null;const rt=a.jsxs("button",{ref:P,onClick:()=>M(!B),style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 14px",borderRadius:"9999px",backgroundColor:G?X.hoverBg:"#ffffff",border:G?`1px solid ${X.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"13px",fontWeight:500,fontFamily:u.font.ui,color:G?X.textPrimary:"#111827",transition:"background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease",boxShadow:G?"none":"0 1px 2px rgba(0,0,0,0.05)"},children:[a.jsxs("span",{children:[be," Account"]}),ne&&b&&a.jsxs("span",{style:{color:G?X.textSecondary:"#6b7280"},children:["\xB7 ",u.formatUsd(Fe)]}),a.jsx("span",{style:{fontSize:"10px",color:G?X.textSecondary:"#9ca3af",transform:B?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease"},children:"\u25BE"})]}),We=B?Gn.createPortal(a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.08)",zIndex:u.z.popover},onClick:()=>M(!1)}),a.jsxs("div",{ref:z,style:{position:"fixed",top:O.placement==="below"?`${O.top}px`:"auto",bottom:O.placement==="above"?`${O.bottom}px`:"auto",left:`${O.left}px`,width:`${Dr}px`,maxWidth:`calc(100vw - ${Wn*2}px)`,maxHeight:"80vh",backgroundColor:G?X.shell:"#ffffff",border:G?`1px solid ${X.cardBorder}`:"1px solid #e5e7eb",borderRadius:"12px",boxShadow:G?"0 10px 40px rgba(0, 0, 0, 0.5)":"0 10px 40px rgba(0, 0, 0, 0.12)",zIndex:u.z.popover+1,overflow:"hidden",animation:`accountDisplayFadeIn 200ms ${u.easing.out}`},children:[a.jsx(Hp,{appName:be,status:t,statusLabel:n,totalUsdValue:Fe,breakdownSubtitle:st,showUsdSummary:b,address:N?Pe:q,spiceAssets:se,spiceAssetsLoading:Re,pendingDeposits:Ie,customSections:s,notice:c,onDepositClick:h?xt:void 0,onWithdrawClick:y?qe:void 0,depositDisabled:j,onCompleteDeposit:ut,primaryColor:fe,buttonStyles:d?.button,dk:X,dark:G,showModeToggle:w,isEmbeddedMode:!A,onModeToggle:ht,showConnectExternalCta:Ae,onConnectExternalWallet:lt,connectExternalError:Je,showHowItWorks:!E,canDirectWithdraw:at,onDirectWithdraw:Ue,idleBalancesLimit:v}),k&&ne&&a.jsx("div",{style:{padding:"0 16px 16px"},children:a.jsx(Vp,{dark:G,onSuccess:()=>M(!1),onError:gt})})]}),a.jsx("style",{children:`
|
|
44
|
+
`,Wi=({title:e,showChevron:t,expanded:n,onToggleDetails:s,showClose:o,onClose:r,fontFamily:i,labelColor:l,textPrimary:c,closeHoverBg:d,closePressedBg:f})=>{const[m,h]=u.useState(!1),[w,g]=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(Jn,{color:l,direction:n?"up":"down"})]}),o&&a.jsx("button",{onClick:r,onMouseEnter:()=>h(!0),onMouseLeave:()=>{h(!1),g(!1)},onMouseDown:()=>g(!0),onMouseUp:()=>g(!1),style:{background:w?f:m?d:"none",border:"none",borderRadius:"4px",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:m||w?c:l,transform:w?"scale(0.9)":m?"scale(1.1)":"scale(1)",transition:p.transition.interactive},children:a.jsx(Es,{size:16})})]})},Li=({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(p.Spinner,{size:24,borderWidth:3,color:r}),a.jsxs("div",{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontWeight:600,fontFamily:p.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]})]})]}),qi=({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]}),gr=({isOpen:e,onClose:t,onComplete:n,closeOnComplete:s=!1,type:o,results:r,chainId:i,chainName:l,explorerUrl:c,theme:d,styles:f,dark:m,intentStatus:h,onRetry:w,onNewTx:g,onRetryTx:y,asOverlay:x=!0,isProcessing:b=!1,showStepBreakdown:v=!0})=>{const{theme:C,primaryColor:k,dark:I,dk:A}=p.useSpiceBrand(f,m),F=d||C,[R,j]=u.useState(!1),T=l??(i?p.getChainName(i):"Network"),P=c??(i&&p.getExplorerUrl(i,"").replace(/\/tx\/.*$/,"")||void 0),O=I?A.cardBg:"#ffffff",M=I?"0 4px 20px rgba(0, 0, 0, 0.4)":"0 4px 20px rgba(0, 0, 0, 0.1)",U=I?"0 -4px 8px -2px rgba(0, 0, 0, 0.4)":"0 -4px 8px -2px rgba(0, 0, 0, 0.15)",E=A.textSecondary,D=I?A.textPrimary:"#374151",L=I?A.inputBg:"#f9fafb",z=I?A.inputBorder:"#e5e7eb",se=I?A.inputBg:"#f3f4f6",de=I?A.inputBorder:"#e5e7eb",[oe,Q]=u.useState(!0),J=I?A.inputBg:"#f9fafb",X=I?A.hoverBg:"#f3f4f6",ee=I?{successBg:A.successBg,successBorder:A.successBorder,successText:A.successText,errorBg:A.errorBg,errorBorder:A.errorBorder,errorText:A.errorText}:{},K=h?.steps.find(G=>G.status==="failed")?.error;u.useEffect(()=>{!e&&!h&&j(!1)},[e,h]);const we=()=>{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)},ve=()=>{Q(!oe)};if(h){const{steps:G,overallStatus:pe}=h,xe=pe==="processing",ke=pe==="success",q=pe==="failed",W=G.filter(te=>te.transactionHash)[0],_=G.length>1?G.map(te=>te.chainName).filter(Boolean).join(" and "):T!=="Network"?T:G[0]?.chainName||T,ce=P||(W?p.getExplorerUrl(W.chainId,W.transactionHash||"").replace(/\/tx\/.*$/,""):void 0),$=a.jsxs(a.Fragment,{children:[a.jsx(Wi,{title:xe?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:v,expanded:oe,onToggleDetails:ve,showClose:!xe,onClose:t,fontFamily:f?.fontFamily||F.typography.fontFamily,labelColor:E,textPrimary:D,closeHoverBg:J,closePressedBg:X}),a.jsx("div",{style:{marginBottom:"16px"},children:xe?a.jsx(Li,{chainName:_,bg:se,border:de,textPrimary:D,labelColor:E,primaryColor:k}):a.jsx(Pi,{isSuccess:ke,type:o,chainName:_,explorerUrl:ce,txHash:W?.transactionHash,dark:I,...ee,textSecondary:E})}),v&&a.jsx("div",{style:{overflow:"hidden",maxHeight:oe?"300px":"0px",opacity:oe?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:oe?"16px":"0"},children:a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:G.map((te,Ie)=>{const he=te.transactionHash?p.getExplorerUrl(te.chainId,te.transactionHash):null;return a.jsx(qi,{bg:L,border:z,left:a.jsx("span",{style:{fontSize:"13px",color:D},children:te.chainName?`On ${te.chainName}`:te.description||`Step ${Ie+1}`}),right:a.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:te.status==="success"?"#10b981":te.status==="failed"?"#ef4444":E,fontWeight:500},children:[he&&a.jsx("a",{href:he,target:"_blank",rel:"noopener noreferrer",style:{color:I?A.infoText:"#2563eb",textDecoration:"none"},onClick:fe=>fe.stopPropagation(),children:"View"}),te.status==="success"?"\u2713":te.status==="failed"?"\u2717":"\u25CB"]})},Ie)})})}),!xe&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[q&&w&&a.jsx(p.Button,{variant:"outline",fullWidth:!0,onClick:w,theme:F,styles:f,dark:I,children:"TRY AGAIN"}),g&&a.jsxs(p.Button,{variant:"outline",fullWidth:!0,onClick:g,theme:F,styles:f,dark:I,children:["NEW ",o.toUpperCase()," \u2192"]})]})]});return x?a.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,zIndex:10,animation:R?"slideDown 0.3s ease-in forwards":"slideUp 0.3s ease-out forwards",pointerEvents:"auto"},children:[a.jsx("div",{style:{backgroundColor:O,borderRadius:"12px 12px 0 0",width:"100%",padding:"18px 24px 24px",boxShadow:U},children:$}),a.jsx("style",{children:Ui})]}):a.jsx("div",{style:{backgroundColor:O,borderRadius:"12px",padding:"24px",width:"100%",boxShadow:M},children:$})}if(!e&&!b||!b&&(!r||r.length===0))return null;const N=r?r.every(G=>G.success):!1,Z=r?.[0],Y=[...r??[]].reverse().find(G=>G.txHash)?.txHash||Z?.txHash;return a.jsxs("div",{style:{position:x?"absolute":"relative",bottom:x?0:void 0,left:x?0:void 0,right:x?0:void 0,zIndex:x?10:void 0,animation:x?R?"slideDown 0.3s ease-in forwards":"slideUp 0.3s ease-out forwards":void 0,pointerEvents:"auto",width:"100%"},children:[a.jsx("div",{style:{backgroundColor:O,borderRadius:x?"12px 12px 0 0":"12px",width:"100%",padding:"18px 0 24px",boxShadow:x?U:M},children:a.jsxs("div",{style:{width:"100%",boxSizing:"border-box",padding:"0 24px"},children:[a.jsx(Wi,{title:b?`Processing ${o.charAt(0).toUpperCase()+o.slice(1)}`:`${o.charAt(0).toUpperCase()+o.slice(1)} results`,showChevron:!b&&v,expanded:oe,onToggleDetails:b?void 0:ve,showClose:!b,onClose:t,fontFamily:f?.fontFamily||F.typography.fontFamily,labelColor:E,textPrimary:D,closeHoverBg:J,closePressedBg:X}),a.jsx("div",{style:{marginBottom:"16px",animation:"statusFadeIn 220ms cubic-bezier(0.22, 1, 0.36, 1) both"},children:b?a.jsx(Li,{chainName:T,bg:se,border:de,textPrimary:D,labelColor:E,primaryColor:k}):a.jsx(Pi,{isSuccess:N,type:o,chainName:T,explorerUrl:P,txHash:Y,dark:I,...ee,textSecondary:E})},b?"processing":N?"success":"error"),!b&&v&&r&&r.length>1&&a.jsx("div",{style:{overflow:"hidden",maxHeight:oe?"200px":"0px",opacity:oe?1:0,transition:"max-height 0.3s ease, opacity 0.3s ease",marginBottom:oe?"16px":"0"},children:a.jsx("div",{style:{maxHeight:"180px",overflowY:"auto",display:"flex",flexDirection:"column",gap:"8px"},children:r.map((G,pe)=>a.jsx(qi,{bg:L,border:z,left:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{fontWeight:600,fontSize:"13px",color:A.textPrimary,fontFamily:p.font.mono},children:G.asset.symbol}),G.amount&&a.jsx("span",{style:{fontSize:"12px",color:E},children:G.amount})]}),right:a.jsx("span",{style:{fontSize:"12px",color:G.success?"#10b981":"#ef4444",fontWeight:500},children:G.success?"\u2713":"\u2717"})},pe))})}),!b&&!N&&r&&a.jsx("div",{style:{padding:"12px",backgroundColor:A.errorBg,border:`1px solid ${A.errorBorder}`,borderRadius:"8px",marginBottom:"16px"},children:a.jsx("p",{style:{fontSize:"13px",color:A.errorText,margin:0,lineHeight:1.5},children:K||r.find(G=>!G.success)?.error||`${o.charAt(0).toUpperCase()+o.slice(1)} failed. Please try again.`})}),!b&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[!N&&y&&a.jsxs(p.Button,{variant:"outline",fullWidth:!0,onClick:y,theme:F,styles:f,dark:I,children:["TRY AGAIN ",o.toUpperCase()]}),N&&a.jsx(p.Button,{variant:"outline",fullWidth:!0,onClick:we,theme:F,styles:f,dark:I,children:"DONE"})]})]})}),a.jsx("style",{children:Ui})]})};function ho({activity:e,palette:t,onRefresh:n}){return a.jsxs(a.Fragment,{children:[e.actions.length>0&&a.jsx(Jt,{variant:"info",palette:t,style:{marginTop:12,marginBottom:12},children:a.jsxs("details",{children:[a.jsx("summary",{children:"Recent wallet activity"}),e.actions.map(s=>{const o=s.intents.flatMap(l=>l.steps),r=o.filter(l=>["success","completed"].includes(l.status)).length,i=o.some(l=>["error","reverted"].includes(l.status));return a.jsxs("p",{children:[s.actionId,": ",r,"/",o.length," steps completed.",i?" Remaining work stopped; completed transfers are retained.":r<o.length?" Awaiting backend confirmation.":" Completed."]},s.actionId)}),a.jsx("button",{type:"button",onClick:()=>{e.refresh(),n?.()},children:n?"Refresh activity and balances":"Refresh activity"})]})}),e.error&&a.jsx(Jt,{variant:"warning",palette:t,children:e.error})]})}function zi(e){const t=new Set(S.getEquivalentAddresses(e).map(n=>n.toLowerCase()));return t.add(e.toLowerCase()),t}const Iu=["USDC","USDT","WETH","WBTC"];function Hi(e,t){const n=p.getChainConfig(t);if(!n)return;if(n.nativeCurrency.symbol.toUpperCase()===e.toUpperCase())return{address:S.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 En(e,t,n){const s=p.getChainConfig(t);if(!s)return;if(n!==void 0){if(S.isNativeToken(e)&&!S.getTokenByAddress(e,n))return;const i=qo(e,n,t);return i?{address:i.address.toLowerCase(),symbol:i.symbol,decimals:i.decimals,chainId:t}:void 0}if(S.isNativeToken(e))return;const o=zi(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 Au(e){const{sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,intermediaryCandidates:r=Iu}=e;if($s(t,n))return{strategy:"direct",sourceAsset:t,outputAsset:n,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} fronted directly`};if(s===o&&(S.isNativeToken(t.address)||!S.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(En(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(En(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=Hi(i,s);if(!l||$s(t,l)||$s(n,l))continue;const c=Hi(i,o);if(c&&$s(l,c))return{strategy:"intermediary",sourceAsset:t,outputAsset:n,intermediaryAsset:c,sourceChainId:s,destinationChainId:o,summary:`${t.symbol} \u2192 ${i} on source, fronted, then ${i} \u2192 ${n.symbol} on destination`}}throw new p.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 Eu(e){const{route:t,sourceAmount:n,userAddress:s,registry:o,actionCalls:r,slippage:i}=e;async function l(c,d,f,m){const h=await o.resolveSwap({type:"swap",tokenIn:d,tokenOut:f,amountIn:m,maxSlippage:i},c,s);if(!h)throw new p.SpiceflowError("NO_LIQUIDITY",`No venue returned a quote for ${d} \u2192 ${f} on chain ${c}. No liquidity available for this pair.`,{chainId:c,tokenIn:d,tokenOut:f,amountIn:m.toString()});return h}switch(t.strategy){case"direct-swap":{const c=await l(t.destinationChainId,t.sourceAsset.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...c.calls,...r]}],solverFrontToken:t.outputAsset,solverFrontAmount:0n,resolvedSwaps:{sourceSwap:c}}}case"direct":{const c=En(t.sourceAsset.address,t.destinationChainId,t.sourceChainId)||t.sourceAsset;if(zi(c.address).has(t.outputAsset.address.toLowerCase()))return{chainBatches:[{chainId:t.destinationChainId,calls:r}],solverFrontToken:c,solverFrontAmount:n,resolvedSwaps:{}};const d=await l(t.destinationChainId,c.address,t.outputAsset.address,n);return{chainBatches:[{chainId:t.destinationChainId,calls:[...d.calls,...r]}],solverFrontToken:c,solverFrontAmount:n,resolvedSwaps:{destinationSwap:d}}}case"source-swap":{const c=En(t.outputAsset.address,t.sourceChainId,t.destinationChainId);if(!c)throw new p.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 d=En(t.outputAsset.address,t.destinationChainId,t.destinationChainId);if(!d)throw new p.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,c.address,n);return{chainBatches:[{chainId:t.sourceChainId,calls:f.calls},{chainId:t.destinationChainId,calls:r}],solverFrontToken:d,solverFrontAmount:f.amountOutMinimum,resolvedSwaps:{sourceSwap:f}}}case"intermediary":{if(!t.intermediaryAsset)throw new p.SpiceflowError("ROUTE_STRATEGY_ERROR","Intermediary strategy requires an intermediary asset but none was provided in the route plan.",{strategy:t.strategy});const c=En(t.intermediaryAsset.address,t.sourceChainId,t.destinationChainId);if(!c)throw new p.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 d=await l(t.sourceChainId,t.sourceAsset.address,c.address,n),f=await l(t.destinationChainId,t.intermediaryAsset.address,t.outputAsset.address,d.amountOutMinimum);return{chainBatches:[{chainId:t.sourceChainId,calls:d.calls},{chainId:t.destinationChainId,calls:[...f.calls,...r]}],solverFrontToken:t.intermediaryAsset,solverFrontAmount:d.amountOutMinimum,resolvedSwaps:{sourceSwap:d,destinationSwap:f}}}default:throw new p.SpiceflowError("ROUTE_STRATEGY_ERROR",`Unknown route strategy: ${t.strategy}`,{strategy:t.strategy})}}function Fu(e,t,n){if(!e||!t)return null;if(e._source==="wallet"){if(t===e.chainId)return{address:e.address,symbol:e.symbol,name:e.name||e.symbol,decimals:e.decimals,logoURI:e.logoURI};const m=S.getTokensForChain(t).find(h=>h.equivalenceGroup==="USDC"&&h.symbol.toUpperCase()==="USDC");return!m||n.length>0&&!n.some(h=>p.addressesEqual(h.address,m.address))?null:{address:m.address,symbol:"USDC",name:m.name||"USD Coin",decimals:m.decimals,logoURI:m.logo}}const s=Kn(e,t),o=Object.entries(e.chainTokens??{}).flatMap(([m,h])=>{const w=hn(m);return w?.chainId===t?[{parsed:w,detail:h}]:[]}),r=m=>n.find(h=>p.addressesEqual(h.address,m))??null,i=m=>{const h=o.find(({parsed:y})=>p.addressesEqual(y.address,m));if(!h)return null;const w=p.getChainConfig(t);if(S.isNativeToken(m))return w?{address:S.ZERO_ADDRESS,symbol:w.nativeCurrency.symbol,name:w.nativeCurrency.name,decimals:w.nativeCurrency.decimals,logoURI:e.logoURI}:null;const g=w?.supportedTokens?.find(y=>p.addressesEqual(y.address,m));return!g||!Lo(e,m,t)?null:{address:h.parsed.address,symbol:g.symbol,name:g.name||h.detail?.name||e.displayName||e.name||e.symbol,decimals:g.decimals,logoURI:g.logo||e.logoURI}},l=o.map(({parsed:m})=>m.address).filter(S.isNativeToken);for(const m of[...s,...l]){if(S.isNativeToken(m)){const g=i(m);if(g)return g}const h=r(m);if(h)return h;const w=i(m);if(w)return w}if(e.chainTokens||e.receiptTokenId)return null;const c=rn(e,t);if(c){const m=r(c);if(m)return m}const d=En(e.address,t,e.chainId);return d?r(d.address)||(n.length>0?null:{address:d.address,symbol:d.symbol||e.symbol,name:e.displayName||e.name||e.symbol,decimals:d.decimals??e.decimals,logoURI:e.logoURI}):null}function Tu(e){const t=e.find(n=>S.isSpicenetChainId(n.chainId))?.calls?.[0]?.data;if(!t)return null;try{const n=B.decodeFunctionData({abi:S.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 Bu(e,t){if(!e||e.length!==t.length)return!1;const n=s=>s.reduce((o,r)=>o+r.amount,0n);return n(e)!==n(t)?!1:e.every((s,o)=>{const r=t[o];return s.token.toLowerCase()!==r.token.toLowerCase()||s.recipient.toLowerCase()!==r.recipient.toLowerCase()?!1:s.recipient.toLowerCase()===S.SPICE_GAS_FEE_RECIPIENT.toLowerCase()?p.amountsWithinBps(s.amount,r.amount,100n):s.recipient.toLowerCase()!==S.SPICE_PLATFORM_FEE_RECIPIENT.toLowerCase()||s.amount===r.amount})}function Ru(e,t){const n=e.intents.flatMap(r=>r.batches).filter(r=>{const i=p.getBatchFees(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 ju(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 Vi(e,t){if(!e.token||!e.recipient||e.chainId===null)return null;const n=Ru(t,e.chainId);if(!n)return null;const{gasFee:s,bridgeFee:o,spicenetFee:r}=p.getBatchFees(n),i=s+o,l=e.grossAmountRaw-i-r;if(l<=0n)throw new Error("Withdrawal amount does not cover the network fee.");const c=[{token:e.token.address,recipient:e.recipient,amount:l}];return i>0n&&c.push({token:e.token.address,recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:i}),r>0n&&c.push({token:e.token.address,recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:r}),ju(c)}function Ou(e,t,n){const s=Vi(e,t);return!s||Bu(Tu(n),s)?null:e.buildWithdrawBatches(s)}async function Qi(e){if(e.executionContextRef.current){await Gi(e);return}if(!e.batches.length||!e.walletAddress||!e.recipient)return;const t=p.relayerService.getBaseUrl();e.ui.setIsExecuting(!0),e.ui.setExecutionError(null),e.ui.setExecutionProgress(null),e.executionContextRef.current=null,e.ui.setLockedGasFee(e.gasFee);try{let n=e.batches;if(e.isNon7702&&e.onWithdrawExecute)await e.onWithdrawExecute(e.amount);else{if(!e.isNon7702&&!n.some(r=>S.isSpicenetChainId(r.chainId)))throw new Error("Spice withdrawals must include a Spicenet funding batch before the destination chain batch.");const s=e.token?.address||"",o={useCustomTransfers:!0};if(e.buildSpicenetBatch){const r=e.feeEstimate??await e.execution.estimate(n,s,0n,o),i=Vi(e,r);i&&(n=e.buildWithdrawBatches(i));const l=r.intents[0]?.batches.find(c=>c.chainId===e.chainId)??r.intents[0]?.batches[0]??null;l&&e.ui.setLockedGasFee(p.getBatchFees(l).totalFee)}else{const r=(e.feeEstimate??await e.execution.estimate(n,s,0n,o)).intents[0]?.batches[0]??null;r&&e.ui.setLockedGasFee(p.getBatchFees(r).totalFee)}await e.execution.execute(n,s,0n,r=>{r.actionId&&r.intentId&&typeof r.intentIndex=="number"&&typeof r.totalSteps=="number"&&(e.executionContextRef.current={actionId:r.actionId,intentId:r.intentId,intentIndex:r.intentIndex,totalSteps:r.totalSteps,autoContinue:r.autoContinue,apiUrl:t,finish:()=>xr(e)}),e.ui.setExecutionProgress(r)},void 0,e.buildSpicenetBatch?{...o,adjustBatchesForEstimate:({feeEstimate:r,chainBatches:i})=>Ou(e,r,i)}:{...o,skipPreSubmitFeeEstimate:!0})}await xr(e)}catch(n){const s=n instanceof Error?n.message:"Withdraw failed";e.ui.setExecutionError(s)}finally{e.ui.setIsExecuting(!1)}}async function xr(e){window.dispatchEvent(new CustomEvent("withdraw-completed")),await e.onWithdrawSuccess?.({token:e.token?.symbol||"",amount:e.amount,chainId:e.chainId})}async function Gi(e){const t=e.executionContextRef.current;if(!t){if(e.isNon7702&&e.onWithdrawExecute){await Qi(e);return}e.ui.setExecutionError("The previous withdrawal action is unavailable. Reconcile it before starting another.");return}const n=t.apiUrl?new p.RelayerService:p.relayerService;t.apiUrl&&n.setBaseUrl(t.apiUrl),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 s=t.totalSteps;for(let o=0;o<t.totalSteps;o++)if((await n.checkStepStatus(t.intentId,o)).data.status!=="success"){s=o;break}if(s>=t.totalSteps)e.ui.setExecutionProgress(o=>({...o||{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 o=s;o<t.totalSteps;o++){const r=await mi({actionId:t.actionId,intentIndex:t.intentIndex,intentId:t.intentId,stepIndex:o,chainId:e.chainId??void 0,observeOnly:t.autoContinue,maxPolls:t.autoContinue?Number.POSITIVE_INFINITY:void 0,relayer:n,completeOnExecution:!e.isNon7702&&o===t.totalSteps-1,onStatusMessage:(i,l)=>{e.isMountedRef.current&&e.ui.setExecutionProgress({step:"executing",message:i,txHash:l,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}});if(!e.isMountedRef.current)return;e.ui.setExecutionProgress({step:o===t.totalSteps-1?"success":"executing",message:o===t.totalSteps-1?"Transaction successful!":"Executing remaining steps...",txHash:r,actionId:t.actionId,intentId:t.intentId,intentIndex:t.intentIndex,totalSteps:t.totalSteps})}await(t.finish?.()??xr(e))}catch(s){const o=s instanceof Error?s.message:"Withdraw failed";e.ui.setExecutionError(o)}finally{e.ui.setIsExecuting(!1)}}async function Du(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=>p.getBatchFees(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:p.getBatchFees(s).totalFee,feeEstimate:t}}function yr(e,t){return B.formatUnits(e,t).replace(/(\.\d*?[1-9])0+$|\.0+$/,"$1")}function Nu(e,t,n){return sn(e,t,n,"floor")}function Ki(e,t,n=!1){if(e<=0)return"$0";if(!t||!Number.isFinite(t)||t<=0)return"\u2014";const s=e*t;return`$${s>=1?s.toFixed(3).replace(/0+$/,"").replace(/\.$/,""):s.toFixed(4).replace(/0+$/,"").replace(/\.$/,"")}${n?" (stale)":""}`}function Mu(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}const Pu=36;function es(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=Pu}function Bs(e){return!e.balanceError&&e.balanceStatus!=="stale"&&e.balance>=0n&&es(e.decimals)&&!e.isNative&&!S.isNativeToken(e.address)}function wr(e,t){if(!e.chainTokens||Array.isArray(e.chainTokens))return null;let n;for(const[s,o]of Object.entries(e.chainTokens)){const r=hn(s);if(!(!r||r.chainId!==t)){if(n)return null;n={address:r.address,decimals:o?.decimals}}}return n??null}function br(e,t,n){if(e<0n)return null;const s=S.convertAmountBetweenDecimals(e,t,n);return S.convertAmountBetweenDecimals(s,n,t)===e?s:null}function jn(e,t){return es(e.receiptTokenDecimals)&&br(t,e.decimals,e.receiptTokenDecimals)!==null}function Uu(e,t){if(!es(e.receiptTokenDecimals))return-1n;const n=S.convertAmountBetweenDecimals(t,e.decimals,e.receiptTokenDecimals),s=S.convertAmountBetweenDecimals(n,e.receiptTokenDecimals,e.decimals);return s<=t?s:-1n}function go(e,t){return e.owner?.toLowerCase()===t.toLowerCase()}function Wu(e,t,n,s,o){if(!e)return[];const r=[];for(const i of Array.isArray(e)?e:[e]){if(i.amount<0n||!go(i.asset,s)||i.asset.chainId!==o)return null;const l=ye(i.asset);if(l!==ye(t)&&l!==ye(n))return null;const c=r.find(d=>d.positionId===l);c?c.amount+=i.amount:r.push({positionId:l,amount:i.amount})}return r}function Zi(e,t,n,s,o,r){if(!n||!/^0x[0-9a-f]{40}$/i.test(n)||!go(e,n)||e.chainId!==s||!Bs(e))return;let i,l,c;if(e.location==="embedded"&&e._source!=="spice"){i=e,c=e.address;const C=t.filter(k=>{const I=wr(k,s);return k.location==="rollup"&&k._source!=="wallet"&&go(k,n)&&k.chainId===s&&Bs(k)&&!!k.receiptTokenId&&!!I&&p.addressesEqual(I.address,c)});if(C.length!==1)return;[l]=C}else if(e.location==="rollup"&&e._source!=="wallet"&&e.receiptTokenId){l=e;const C=wr(e,s);if(!C)return;c=C.address;const k=t.filter(I=>I.location==="embedded"&&I._source!=="spice"&&go(I,n)&&I.chainId===s&&Bs(I)&&p.addressesEqual(I.address,c));if(k.length!==1)return;[i]=k}else return;if(!i||!l||!c||!Bs(i)||!Bs(l)||i.location!=="embedded"||l.location!=="rollup"||!l.receiptTokenId||!es(i.decimals)||i.decimals!==l.decimals||!es(l.receiptTokenDecimals))return;const d=wr(l,s);if(!d||!p.addressesEqual(d.address,c)||d.decimals!==void 0&&d.decimals!==i.decimals)return;const f=ye(i),m=ye(l);if(f===m||t.filter(C=>ye(C)===f).length!==1||t.filter(C=>ye(C)===m).length!==1)return;let h=i.balance,w=o??l.balance;if(w<0n||w>l.balance)return;const g=Wu(r,i,l,n,s);if(g===null)return;for(const C of g)if(C.positionId===f){if(C.amount>h)return;h-=C.amount}else{if(C.amount>w||!jn(l,C.amount))return;w-=C.amount}const y=ye(e),x=e.decimals;if(!es(x))return;const b=br(h,i.decimals,x),v=br(w,l.decimals,x);if(!(b===null||v===null))return{wallet:i,escrow:l,owner:n,chainId:s,token:c,decimals:i.decimals,representativePositionId:y,representativeDecimals:x,walletAvailable:h,escrowAvailable:w,availableBalance:b+v,...g.length===1?{reserve:g[0]}:{},reserves:g}}function Yi(e,t,n,s){const o=ye(e);return{positionId:o,asset:e,amount:t,reservedAmount:n.find(r=>r.positionId===o)?.amount??0n,availableAmount:s}}function vr(e,t,n,s){if(t<=0n)throw new RangeError("Enter an amount within the available balance.");const o=s?.quoteOnly===!0;if(!o&&t>e.availableBalance)throw new RangeError("Enter an amount within the available balance.");let r,i,l=0n,c=0n,d=0n;if(n==="escrow"){const f=t<e.escrowAvailable?t:e.escrowAvailable;if(i=Uu(e.escrow,f),i<0n)throw new RangeError("Enter an amount within the available balance.");if(l=t-i,r=l,c=t,!o&&l>e.walletAvailable||!jn(e.escrow,l)||!jn(e.escrow,c))throw new RangeError("Enter an amount within the available balance.")}else if(r=t<e.walletAvailable?t:e.walletAvailable,d=r,c=t-r,i=c,!o&&c>e.escrowAvailable||!jn(e.escrow,c))throw new RangeError("Enter an amount within the available balance.");return{owner:e.owner,chainId:e.chainId,token:e.token,decimals:e.decimals,representativePositionId:e.representativePositionId,representativeDecimals:e.representativeDecimals,route:n,grossAmount:t,insufficient:r>e.walletAvailable||i>e.escrowAvailable,positions:[Yi(e.wallet,r,e.reserves,e.walletAvailable),Yi(e.escrow,i,e.reserves,e.escrowAvailable)],walletDeposit:l,escrowWithdrawal:c,walletInPlace:d}}function Cr(e,t,n,s,o){if(!e.positions.find(f=>f.positionId===e.representativePositionId))throw new Error("The source balance changed. Review the available amount before continuing.");const r=t.filter(f=>ye(f)===e.representativePositionId);if(r.length!==1)throw new Error("The source balance changed. Review the available amount before continuing.");if(e.insufficient)throw new Error("The source balance changed. Review the available amount before continuing.");const i=e.positions.filter(f=>f.reservedAmount>0n).map(f=>({asset:f.asset,amount:f.reservedAmount})),l=Zi(r[0],t,n,s,o,i);if(!l||l.representativePositionId!==e.representativePositionId||l.representativeDecimals!==e.representativeDecimals||l.owner.toLowerCase()!==e.owner.toLowerCase()||l.chainId!==e.chainId||!p.addressesEqual(l.token,e.token)||l.decimals!==e.decimals)throw new Error("The source balance changed. Review the available amount before continuing.");if(e.grossAmount<=0n||e.positions.length!==2)throw new Error("The source balance changed. Review the available amount before continuing.");const c=e.positions.find(f=>f.positionId===ye(l.wallet)),d=e.positions.find(f=>f.positionId===ye(l.escrow));if(!c||!d||c.positionId===d.positionId||c.amount<0n||d.amount<0n||c.reservedAmount<0n||d.reservedAmount<0n)throw new Error("The source balance changed. Review the available amount before continuing.");if(e.route==="escrow"){if(e.walletDeposit!==c.amount||e.walletInPlace!==0n||e.escrowWithdrawal!==e.grossAmount||c.amount+d.amount!==e.grossAmount||!jn(l.escrow,d.amount)||!jn(l.escrow,c.amount)||!jn(l.escrow,e.escrowWithdrawal))throw new Error("The source balance changed. Review the available amount before continuing.")}else if(e.walletDeposit!==0n||e.walletInPlace!==c.amount||e.escrowWithdrawal!==d.amount||c.amount+d.amount!==e.grossAmount||!jn(l.escrow,d.amount))throw new Error("The source balance changed. Review the available amount before continuing.");if(c.amount>l.walletAvailable||d.amount>l.escrowAvailable)throw new Error("The source balance changed. Review the available amount before continuing.");for(const f of e.positions){const m=t.find(h=>ye(h)===f.positionId);if(!m||m.decimals!==f.asset.decimals||m.receiptTokenDecimals!==f.asset.receiptTokenDecimals||m.receiptTokenId!==f.asset.receiptTokenId)throw new Error("The source balance changed. Review the available amount before continuing.")}}function xo(e,t,n){const s=n.filter(o=>o.amount>0n);return{chainId:e,domain:"evm",tokenTransfers:[],calls:S.isNativeToken(t)?s.map(o=>({to:o.recipient,value:o.amount,data:"0x"})):s.map(o=>({to:t,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[o.recipient,o.amount]})}))}}new Set([S.SPICE_GAS_FEE_RECIPIENT,S.SPICE_PLATFORM_FEE_RECIPIENT].map(e=>e.toLowerCase()));function Lu(e){const t=new Map;for(const n of e){if(n.amount<=0n)continue;const s=B.getAddress(n.token),o=B.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 qu(e,t){return`0x${t}${e.slice(4)}`}function Xi(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 m=o?.find(F=>F.chainId===f.chainId);if(!m)return f;const h=p.getBatchFees(m),w=h.totalFee;if(w<=0n)return f;const g=(f.tokenTransfers??[]).filter(F=>r(F)&&B.getAddress(F.to).toLowerCase()===t.toLowerCase()),y=g.find(F=>!S.isNativeToken(B.getAddress(F.token)))??g[0];if(!y)return f;const x=B.getAddress(y.token),b=S.isNativeToken(x);let v=!1;const C=(f.tokenTransfers??[]).map(F=>v||!r(F)||B.getAddress(F.to).toLowerCase()!==t.toLowerCase()||B.getAddress(F.token).toLowerCase()!==x.toLowerCase()?F:(v=!0,{...F,amount:s?.payoutAlreadyGross?BigInt(F.amount):BigInt(F.amount)+w}));if(!v)return f;const k=(F,R)=>b?{to:F,value:R,data:"0x"}:{to:x,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[F,R]})},I=[];h.spicenetFee>0n&&I.push(k(S.SPICE_PLATFORM_FEE_RECIPIENT,h.spicenetFee));const A=h.gasFee+h.bridgeFee;return A>0n&&I.push(k(S.SPICE_GAS_FEE_RECIPIENT,A)),{...f,tokenTransfers:C,calls:[...I,...f.calls]}}),l=i.flatMap(f=>(f.tokenTransfers??[]).filter(r).map(m=>{const h=B.getAddress(m.token),w=B.getAddress(m.to),g=[{token:h,to:w,amount:BigInt(m.amount)}];return{chainId:f.chainId,transfers:Lu(g)}}));if(l.length===0)return e;const c=s?.requestTimestampMs??Date.now(),d=BigInt(Math.floor(c/1e3))+3600n;return[{chainId:S.SPICENET_NATIVE_CHAIN_ID,domain:"spicenet",tokenTransfers:[],calls:l.map((f,m)=>{const h=B.keccak256(B.encodeAbiParameters([{type:"address"},{type:"address"},{type:"uint256"},{type:"uint256"},{type:"uint256"}],[t,f.transfers[0].token,f.transfers.reduce((g,y)=>g+y.amount,0n),BigInt(f.chainId),BigInt(c+m)])),w=qu(h,"77");return{to:"0x0000000000000000000000000000000000000000",value:0n,data:B.encodeFunctionData({abi:S.spicenetAbi,functionName:"createWithdrawalRequest",args:[{chainId:`evm:${f.chainId}`,idempotenceKey:w,nbf:0n,exp:d,metadata:"{}",transfers:f.transfers.map(g=>({token:g.token.toLowerCase(),to:g.to,amount:g.amount}))}]})}})},...i]}function On(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)),...Xi(o.filter(r),t,n,s)]}class ts extends Error{constructor(t,n){super("The selected balance cannot cover the fee funding amount"),this.requiredAmount=t,this.balance=n,this.name="InsufficientFeeFundingBalanceError"}}function kr(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:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:o},{to:S.SPICE_GAS_FEE_RECIPIENT,amount:s}].filter(l=>l.amount>0n);return e.map(l=>l===r?{...l,calls:[...l.calls,...i.map(c=>({to:n,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[c.to,c.amount]})}))],tokenTransfers:[...l.tokenTransfers??[],...i.map(c=>({from:t,to:c.to,token:n,amount:c.amount}))]}:l)}async function Ji(e,t,n,s,o){const r=S.hashChainBatches(e),i=await p.relayerService.estimateBatchGas({user:t,outputToken:n,signal:s,requireSimulation:!0,includePlatformFee:o!==void 0,chainBatches:e.map((l,c)=>({...l,hash:r[c].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 $i(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?.preview)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,c=t<l?t:l,d=l-c;if(d>0n&&e.fundShortfall===!1)throw new ts(l,t);const f=d>0n?(d*110n+99n)/100n+2n:0n;let m=f,h;const w=On(await e.buildBatches(f,{actionAmountOverride:e.actionAmountFor?.(l),onSourceSpend:x=>{m=x},onActionCalls:x=>{h=x}}),e.owner),g=kr(w,e.owner,e.token,s+r,o),y=await Ji(g,e.owner,e.token,e.signal);if(y<=s&&(s-y)*100n<=y*15n)return{preview:{...n.preview,grossAmount:f,netAmount:0n,gasFee:s,totalFee:l,gasQuoteSource:"estimated"},feeEstimate:n.feeEstimate,grossFundingAmount:f,proceedsAvailable:t,proceedsUsed:c,fundingBatches:g,sourceSpendCap:m,destinationAmount:0n,actionDefinition:h};s=y}throw new Error("Action proceeds fee estimate did not converge")}function _i(e,t){let n,s;if(S.isNativeToken(t)){if(e.data!=="0x")return null;n=e.to,s=e.value}else{if(!p.addressesEqual(e.to,t))return null;try{const o=B.decodeFunctionData({abi:B.erc20Abi,data:e.data});if(o.functionName!=="transfer")return null;[n,s]=o.args}catch{return null}}return p.addressesEqual(n,S.SPICE_GAS_FEE_RECIPIENT)?{gas:s,platform:0n}:p.addressesEqual(n,S.SPICE_PLATFORM_FEE_RECIPIENT)?{gas:0n,platform:s}:null}async function zu(e,t,n){const s=p.getClientForChain(e);return S.isNativeToken(n)?s.getBalance({address:t}):s.readContract({address:n,abi:B.erc20Abi,functionName:"balanceOf",args:[t]})}function ns(e,t,n){return e.map(s=>s.chainId===t?{...s,calls:s.calls.filter(o=>!_i(o,n))}:s)}function el(e,t,n){if(!e.feeOnlyAction)return{};const s=e.embeddedWalletAddress??e.providerEmbeddedAddress,o=e.feeQuote?.fundingSource,r=o&&o.kind!=="proceeds"?void 0:e.actionProceeds,i=o&&(o.kind==="input"||o.kind==="balance"&&o.asset?._source==="wallet")?o:void 0;if(r||e.feeQuote?.fundingConversion||i){const f=e.feeQuote?.fundingConversion,m=r??{token:t,resolve:async()=>0n},h=e.feeQuote?.preview,w=e.feeQuote?.proceedsUsed,g=f?.fromProceeds?f.tokenIn:t;if(!h||w===void 0||!i&&m.token.toLowerCase()!==g.toLowerCase())throw new Error("Refresh the action proceeds quote");const y=h.gasFee+(h.bridgeFee??0n),x=h.spicenetFee,b=i?async()=>{e.validateFeeQuote?.();const C=await zu(e.resolvedChainId,s,i.token);e.validateFeeQuote?.();const k=i.kind==="input"?i.amount:(f?.amountInMax??w)+(i.reservedAmount??0n);if(e.signal?.aborted||C<k||f&&f.amountOut<y+x)throw new Error("The fee funding balance changed; refresh before retrying");return f?[{chainId:e.resolvedChainId,token:t,amount:f.amountOut}]:[]}:async()=>{e.validateFeeQuote?.();const C=await m.resolve(e.signal);if(e.validateFeeQuote?.(),e.signal?.aborted||(f?.fromProceeds?C<f.amountInMax||f.amountOut<y+x:C<w||C+(f?.amountOut??n)<y+x))throw new Error("Action proceeds changed; refresh before retrying");return f?.fromProceeds?[{chainId:e.resolvedChainId,token:f.tokenIn,amount:f.amountInMax},{chainId:e.resolvedChainId,token:t,amount:f.amountOut}]:[{chainId:e.resolvedChainId,token:t,amount:w+(f?.amountOut??0n)}]},v=async C=>{await b();const k=await Ji(C,s,t,e.signal,f?x:void 0);if(await b(),(k>h.gasFee?k-h.gasFee:h.gasFee-k)*100n>k*15n)throw new Error("Action gas quote changed; refresh before retrying")};return{resolveActionOutputCredits:b,prepareForSigning:async C=>{if(e.feeQuote?.sourceAllocation||e.feeQuote?.feeSourceAllocation)return await v(C),C;const k=ns(C,e.resolvedChainId,t).map(A=>({...A,tokenTransfers:A.tokenTransfers?.filter(F=>!(typeof F.from=="string"&&p.addressesEqual(F.from,s)&&(p.addressesEqual(F.to,S.SPICE_GAS_FEE_RECIPIENT)||p.addressesEqual(F.to,S.SPICE_PLATFORM_FEE_RECIPIENT))))})),I=kr(k,s,t,y,x);return await v(I),I},validateBeforeSubmit:v}}const l=S.getTokenByAddress(t,e.resolvedChainId),c={chainId:e.resolvedChainId,tokenAddress:t,symbol:l?.symbol??e.destinationToken.symbol,decimals:e.executionTokenDecimals??l?.decimals??e.destinationToken.decimals},d=async f=>{e.validateFeeQuote?.();const m=ns(f,e.resolvedChainId,t),h=await e.execution.estimate(m,t,n,{userOverride:s,useCustomTransfers:!0,feeExecutionMode:"backend-transfer"});e.validateFeeQuote?.();const w=p.getSupplyFeePreview(h,c);if(!w||w.chainId!==e.resolvedChainId)throw new Error("The fee service did not return the destination action's fee quote");if(w.gasFee+w.spicenetFee+(w.bridgeFee??0n)+2n>n)throw new Error("Fees exceed the displayed maximum funding; refresh the quote before retrying");return{raw:m,feeEstimate:h,fees:w}};return{prepareForSigning:async f=>{const{raw:m,feeEstimate:h}=await d(f);return e.feeQuote?.sourceAllocation||e.feeQuote?.feeSourceAllocation?f:On(m,s,h,{payoutAlreadyGross:!0})},validateBeforeSubmit:async f=>{const{fees:m}=await d(f);let h=0n,w=0n;for(const y of f)if(y.chainId===e.resolvedChainId)for(const x of y.calls){const b=_i(x,t);b&&(h+=b.gas,w+=b.platform)}if(h+w+2n>n)throw new Error("Signed fees exceed the displayed maximum funding");const g=m.gasFee+(m.bridgeFee??0n);if((h>g?h-g:g-h)*100n>g*15n||w!==m.spicenetFee)throw new Error("The signed gas quote changed materially; refresh before retrying")}}}const Hu="0xa9059cbb";function Rs(e,t,n){return S.isNativeToken(e)?{to:n,value:t,data:"0x"}:{to:e,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[n,t]})}}function Sr(e,t,n){return{chainId:n,calls:[Rs(e,t,S.getEscrowContractAddress(n))]}}function Vu(e,t,n,s){const o=t.source.chainId;return{chainId:o,calls:[...e.calls,Rs(t.source.address,n,S.getEscrowContractAddress(o)),...s>0n?[Rs(t.source.address,s,S.SPICE_GAS_FEE_RECIPIENT)]:[]]}}function tl(e,t){const n=e.amountOutMinimum-t;if(n<=0n)throw new Error("Amount is too small to cover fees. Increase the amount and retry.");return n}function nl(e,t,n){return e?.asset?._source==="wallet"&&e?.asset.chainId===n}function sl(e){return e.isNative||S.isNativeToken(e.address)?!0:!S.getTokenByAddress(e.address,e.chainId)}function ol(e,t,n,s){return t!=="user-transfer"||!n||e.length===0||e[0]?.to.toLowerCase()!==s.toLowerCase()||!e[0]?.data.startsWith(Hu)?{feeCall:null,remainingCalls:e}:{feeCall:e[0],remainingCalls:e.slice(1)}}async function ss(e,t,n,s){const o=await(t??Ts)({...n,requestTimestampMs:s});return o?[o,e]:[e]}function Qu(e){return e.filter(t=>t.domain!=="spicenet")}function os(e,t){const n=(e.tokenTransfers??[]).filter(s=>s.from==="escrow").map(s=>({token:S.normalizeNativeTokenAddress(s.token),recipient:s.to,amount:BigInt(s.amount)})).filter(s=>s.amount>0n);return t!==void 0&&n.length===1&&(n[0]={...n[0],amount:t}),n.length>0?n:void 0}function rs(e,t,n){return sn(e,t,n,"ceil")}function rl(e){const t=e.selectedAsset?.asset;return e.isPayMode&&!!t&&t._source==="wallet"&&t.chainId!==e.resolvedChainId&&!!e.pivot}function Ir(e){const t=e.selectedAsset?.asset;return!e.isPayMode&&!!t&&t._source==="wallet"&&t.chainId!==e.resolvedChainId&&!!e.sourceSwap&&!!e.pivot}function js(e,t){if(t?.sourceSpendCap!==void 0&&e>t.sourceSpendCap)throw new Error("The source amount increased. Review the updated quote before submitting.");t?.onSourceSpend?.(e)}async function al(e,t,n){let s;const o=await e({...t,buildActionCalls:async(r,i)=>{s=r;const l=await t.buildActionCalls(r,i);return n?.onActionCalls?.({amount:r,context:i,calls:l}),l}},n);if(s!==void 0){if(n?.minimumDestinationAmount!==void 0&&s<n.minimumDestinationAmount)throw new Error("The destination amount decreased. Review the refreshed quote before submitting.");n?.onDestinationAmount?.(s)}return o}const yo=(e,t)=>al(Gu,e,t),wo=async(e,t)=>{const n=await al(Ku,e,t),s=t?.actionContextOverride?.feeBreakdown,o=n[n.length-1];if(e.feeExecutionMode!=="user-transfer"||!s||!o)return n;const r=e.needsSwap&&e.resolvedTokenIn?e.resolvedTokenIn:e.destinationToken.address,[i]=ns([o],e.resolvedChainId,r),l=xo(e.resolvedChainId,r,[{recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:s.spicenetFee},{recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:s.gasFee+(s.bridgeFee??0n)}]).calls,c=o.calls.filter(d=>!i.calls.includes(d));return c.length===l.length&&l.every(d=>c.some(f=>f.to.toLowerCase()===d.to.toLowerCase()&&f.value===d.value&&f.data===d.data))?n:[...n.slice(0,-1),{...i,calls:[...l,...i.calls]}]};async function Gu(e,t){const{currentPaymentAmount:n,destinationToken:s,embeddedWalletAddress:o,providerEmbeddedAddress:r,address:i,isNon7702:l,resolvedChainId:c,buildActionCalls:d,feeExecutionMode:f,buildSpicenetBatch:m,needsSwap:h,exactOutputSwap:w,resolvedTokenIn:g,requestTimestampMs:y}=e,x=t?.sourceAssetOverride?{asset:t.sourceAssetOverride}:e.selectedAsset,b=t?.fundingTokenOverride??g,v=Xt(n,s.decimals),C=t?.actionAmountOverride??(e.feeOnlyAction?0n:v),k=!!e.feeOnlyAction&&(t?.fundingAmountOverride??0n)>0n,I=o||r||i;if(!I)throw new Error("Embedded wallet address is not available. Please sign in and try again.");const A={userAddress:e.recipient??I,executorAddress:I,beneficiary:e.recipient??I,outputRecipient:h?I:void 0,chainId:c,destinationToken:s.address,grossAmount:t?.fundingAmountOverride??v,netAmount:C,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:f,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},F=await d(C,A),R={chainId:c,calls:F},j=!!x&&x.asset._source!=="wallet",T=nl(x??null,l,c),P=j||T&&!!x&&!sl(x.asset),O=(E,D)=>({token:S.normalizeNativeTokenAddress(E),from:"escrow",to:I,amount:D}),M=(E,D,L)=>T?[Sr(E,D,c),...L]:L;if(v===0n&&!k)return[R];const U=t?.combinedSourceGroupOverride===null?void 0:t?.combinedSourceGroupOverride??e.combinedSourceGroup;if(U&&(!h||b?.toLowerCase()===U.token.toLowerCase())){if(h&&!w)throw new Error("The action quote is unavailable.");const E=h?{...R,calls:[...w.calls,...F]}:R,D=t?.fundingAmountOverride??(h?w?.amountInMax??0n:v),L=vr(U,D,"in-place",{quoteOnly:!0});if(t?.onSourceAllocation?.(L),js(_n(D,U.decimals,U.representativeDecimals),t),L.escrowWithdrawal===0n)return[E];const z={...E,tokenTransfers:[O(U.token,L.escrowWithdrawal)]};return ss(z,m,{userAddress:I,destinationChainId:c,deliveryToken:U.token,deliveryAmount:L.escrowWithdrawal,deliveryRecipient:I,deliveryTransfers:os(z),sourceAsset:U.escrow},y)}if(x?.asset._source==="wallet"&&x.asset.chainId!==c&&!e.pivot)throw new Error("A current source-to-destination funding route is required");if(e.feeOnlyAction&&t?.fundingTokenOverride&&T)return js(t.fundingAmountOverride??0n,t),[R];if(rl(e)){if(h&&!w)throw new Error("Swap quote not available yet");const E=t?.fundingAmountOverride??(w?w.amountInMax:v),D=t?.sourceGasSkimOverride??0n,L=sn(E,e.pivot.destination.decimals,e.pivot.source.decimals,"ceil"),z=L+D,se=e.sourceExactOutputSwap,de=se&&(t?.reuseQuotedSourceSwap||se.amountOut>=z)?se:e.resolveSourceExactOutputSwap?await e.resolveSourceExactOutputSwap(z):null;if(!de)throw new Error("Swap quote not available yet");js(de.amountInMax,t);const oe=x.asset;if(de.amountInMax>oe.balance)throw new Error(`Insufficient ${oe.symbol} for this payment. Required ${B.formatUnits(de.amountInMax,oe.decimals)} ${oe.symbol}; available ${B.formatUnits(oe.balance,oe.decimals)} ${oe.symbol}.`);const Q=de.amountOut>=z?L:de.amountOut-D;if(Q<=0n)throw new Error("Amount is too small to cover fees. Increase the amount and retry.");const J={chainId:e.pivot.source.chainId,calls:[...de.calls,Rs(e.pivot.source.address,Q,S.getEscrowContractAddress(e.pivot.source.chainId)),...D>0n?[Rs(e.pivot.source.address,D,S.SPICE_GAS_FEE_RECIPIENT)]:[]]},X={chainId:c,calls:[...w?.calls??[],...F],tokenTransfers:[O(e.pivot.destination.address,E),...R.tokenTransfers??[]]},ee=await ss(X,m,{userAddress:I,destinationChainId:c,deliveryToken:e.pivot.destination.address,deliveryAmount:E,deliveryRecipient:I,deliveryTransfers:os(X),sourceAsset:x.asset},y);return[J,...ee]}if(x){const E=t?.fundingAmountOverride??w?.amountInMax??v;js(rs(E,await Sn(x.asset,b??x.asset.address,c,s),x.asset.decimals),t)}if(h&&w){const E=b??rn(x.asset,c)??x.asset.address,D=t?.fundingAmountOverride??w.amountInMax,L=P?[O(E,D)]:[],z={chainId:c,calls:[...w.calls,...F],tokenTransfers:[...L,...R.tokenTransfers??[]]};if(!P)return[z];const se=await ss(z,m,{userAddress:I,destinationChainId:c,deliveryToken:E,deliveryAmount:D,deliveryRecipient:I,deliveryTransfers:os(z),sourceAsset:x.asset},y);return M(E,D,se)}if(P){const E=b??rn(x.asset,c)??s.address;if(T&&!e.feeOnlyAction&&E.toLowerCase()===s.address.toLowerCase())return[R];const D=t?.fundingAmountOverride??v,L={...R,tokenTransfers:[O(E,D),...R.tokenTransfers??[]]},z=await ss(L,m,{userAddress:I,destinationChainId:c,deliveryToken:E,deliveryAmount:D,deliveryRecipient:I,deliveryTransfers:os(L),sourceAsset:x.asset},y);return M(E,D,z)}return[R]}async function Ku(e,t){const{selectedAsset:n,embeddedWalletAddress:s,recipient:o,resolvedChainId:r,destinationToken:i,buildActionCalls:l,feeExecutionMode:c,buildSpicenetBatch:d,isPayMode:f,isNon7702:m,needsSwap:h,resolvedSwap:w,quoteAmountOut:g,resolvedTokenIn:y,requestTimestampMs:x}=e;if(!n?.asset||!s)return[];const b=o??s;if(!b)return[];const v=Ir(e);let C=e.sourceSwap,k=Xt(n.amount,n.asset.decimals),I=v?e.sourceSwap.amountOutMinimum:null;if(v&&e.isFeeInclusiveInput&&(I=tl(e.sourceSwap,t?.sourceGasSkimOverride??0n)),v&&!e.isFeeInclusiveInput&&(t?.fundingAmountOverride!==void 0||(t?.sourceGasSkimOverride??0n)>0n)){I=t?.fundingAmountOverride!==void 0?rs(t.fundingAmountOverride,e.pivot.destination.decimals,e.pivot.source.decimals):e.sourceSwap.amountOutMinimum;const ve=I+(t?.sourceGasSkimOverride??0n);if(!e.resolveSourceExactOutputSwap)throw new Error("The source quote cannot include fees yet.");const N=await e.resolveSourceExactOutputSwap(ve);if(N.amountOut<ve)throw new Error("The source quote does not cover the accepted funding amount.");k=N.amountInMax,C={...N,amountOutMinimum:N.amountOut}}const A=v?e.pivot.destination.address:y??rn(n.asset,r)??i.address,F=v?e.pivot.destination.decimals:await Sn(n.asset,A,r,i),R=t?.fundingAmountOverride??t?.actionAmountOverride??(v?sn(I,e.pivot.source.decimals,F,"floor"):_n(Xt(n.amount,n.asset.decimals),n.asset.decimals,F)),j=t?.fundingAmountOverride??R,T=t?.combinedSourceGroupOverride===null?void 0:t?.combinedSourceGroupOverride??e.combinedSourceGroup,P=T&&!v?vr(T,j,"escrow",{quoteOnly:!0}):void 0;P&&t?.onSourceAllocation?.(P);const O=P?.walletDeposit??t?.sourceFundingAmountOverride??rs(R,F,n.asset.decimals);js(P&&T?_n(j,T.decimals,T.representativeDecimals):v?k:O,t);const M=t?.deliveryAmountOverride??(c==="user-transfer"?j:t?.actionContextOverride?.netAmount??j),U=t?.withdrawalAmountOverride??M,E=t?.actionAmountOverride??t?.actionContextOverride?.netAmount??R;let D=w;if(h&&!f&&(t?.actionContextOverride?.netAmount!==void 0||v&&(t?.sourceGasSkimOverride??0n)>0n&&!t?.reuseQuotedSourceSwap)){if(!e.resolveInputSwap)throw new Error("Swap quote cannot be refreshed for the amount after fees.");const ve=t?.actionContextOverride?.netAmount??E;(!D||e.swapInputAmount!==ve)&&(D=await e.resolveInputSwap(ve,w??void 0))}D&&t?.onSwap?.(D,t?.actionContextOverride?.netAmount??e.swapInputAmount??E);const L=D?.amountOutMinimum??g,z={userAddress:b,executorAddress:s,beneficiary:b,outputRecipient:h?s:void 0,chainId:r,destinationToken:i.address,feeToken:c==="user-transfer"&&h&&y?y:i.address,grossAmount:j,netAmount:E,combinedFeeAmount:t?.actionContextOverride?.combinedFeeAmount,feeExecutionMode:c,feeBreakdown:t?.actionContextOverride?.feeBreakdown,...t?.actionContextOverride},se=()=>l(E,z),de=n.asset?._source==="wallet";if(!f&&de&&n.asset.chainId===r&&sl(n.asset)){if(h){if(!y)throw new Error("Swap input token could not be resolved");if(!D||L===null)throw new Error("Swap quote not available yet")}if(h&&D&&L){const ve=await l(t?.actionAmountOverride??L,{...z,netAmount:t?.actionAmountOverride??L}),{feeCall:N,remainingCalls:Z}=ol(ve,c,h,z.feeToken);return[{chainId:r,calls:[...N?[N]:[],...D.calls,...Z]}]}return[{chainId:r,calls:await se()}]}if(!f&&de&&n.asset.chainId!==r&&!v)throw new Error("A current source-to-destination funding route is required");const oe=n.asset._source!=="wallet",Q=nl(n,m,r);if(!(oe||Q||v))return[{chainId:r,calls:await se()}];const J=v?Vu(C,e.pivot,I,t?.sourceGasSkimOverride??0n):P&&T?P.walletDeposit>0n?Sr(T.token,P.walletDeposit,r):null:Q?Sr(y??S.normalizeNativeTokenAddress(n.asset.address),O,r):null,X=(ve,N)=>({token:S.normalizeNativeTokenAddress(ve),from:"escrow",to:s,amount:N});if(h){if(!y)throw new Error("Swap input token could not be resolved");if(!D||L===null)throw new Error("Swap quote not available yet")}if(h&&D&&L&&y){const ve=await l(t?.actionAmountOverride??L,{...z,netAmount:t?.actionAmountOverride??L}),{feeCall:N,remainingCalls:Z}=ol(ve,c,h,z.feeToken),Y={chainId:r,calls:[...N?[N]:[],...D.calls,...Z],tokenTransfers:[X(y,M)]},G=await ss(Y,d,{userAddress:s,destinationChainId:r,deliveryToken:y,deliveryAmount:M,withdrawalAmount:U,deliveryRecipient:s,deliveryTransfers:os(Y,U),sourceAsset:n.asset},x);return J?[J,...G]:G}const ee=y??rn(n.asset,r)??i.address,K={chainId:r,calls:await se(),tokenTransfers:[X(ee,M)]},we=await ss(K,d,{userAddress:s,destinationChainId:r,deliveryToken:ee,deliveryAmount:M,withdrawalAmount:U,deliveryRecipient:s,deliveryTransfers:os(K,U),sourceAsset:n.asset},x);return J?[J,...we]:we}async function Zu(e,t,n,s,o){let r=e;for(let i=0;i<4;i++){const l=await t(r),c=await s(l,n,r,o),d=p.getSingleNetOutput(c);if(d===null||d>=e)return r;const f=r-d,m=e+f;if(m<=r)return r;r=m}return r}function Yu(e){return{...e,resolve:async(t,n,s)=>{const o=await e.resolve(t,n,s),r=o?.calls[0]?.to;return!o||!r||S.isNativeToken(t.tokenIn)?o:{...o,calls:[{to:t.tokenIn,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"approve",args:[r,o.amountInMax]})},...o.calls]}}}}function Os(e){const t=(e?.customVenues??[]).map(s=>vc(Yu(s)));async function n(s,o,r){const i=t.filter(d=>d.chainIds.includes(o));if(i.length===0)throw new p.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 d=>({venue:d,quote:await d.resolve(s,o,r)})))).filter(d=>d.status==="fulfilled").map(d=>d.value).filter(d=>d.quote!==null);if(l.length===0)throw new p.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 c=l.find(d=>d.venue.preferred);return c?c.quote:(l.sort((d,f)=>d.quote.amountIn<f.quote.amountIn?-1:d.quote.amountIn>f.quote.amountIn?1:0),l[0].quote)}return{getQuote:n,venues:t}}function il(e,t,n){if(e._source==="wallet")return e.chainId===t?e.address:null;const s=Kn(e,t);return s.find(o=>o.toLowerCase()===n.toLowerCase())??s[0]??null}async function ll(e,t,n,s){const o=S.hashChainBatches(s),r=await p.relayerService.estimateBatchGas({user:t,outputToken:n,requireSimulation:!0,includePlatformFee:!0,signal:e.signal,chainBatches:s.map((i,l)=>({...i,hash:o[l].hash}))});if(!r.simulationVerified||r.gasQuoteSource!=="estimated"||r.platformFee===void 0||r.gasFee<=0n)throw new Error("Fee funding requires verified gas and platform pricing");return r}async function Ds(e,t){const n=e.selectedAsset?.asset,s=!t&&!!e.actionProceeds&&e.actionProceeds.token.toLowerCase()!==e.destinationToken.address.toLowerCase(),o=!!t||s,r=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!r||!o&&(!n||n._source!=="spice"&&!(n._source==="wallet"&&n.chainId===e.resolvedChainId)))throw new Error("A local embedded or Spice balance is required for fee conversion");const i=t?t.token:s?e.actionProceeds.token:il(n,e.resolvedChainId,e.destinationToken.address);if(!i)throw new Error("This receipt has no registered destination withdrawal token");const l=S.getTokenByAddress(i,e.resolvedChainId)?.decimals??(S.isNativeToken(i)?18:o?await p.getClientForChain(e.resolvedChainId).readContract({address:i,abi:B.erc20Abi,functionName:"decimals"}):n?._source==="wallet"?n.decimals:void 0);if(l===void 0)throw new Error("Fee funding token metadata is unavailable");const c=e.destinationToken.address;if(e.actionProceeds&&!s&&e.actionProceeds.token.toLowerCase()!==c.toLowerCase())throw new Error("Action proceeds must use the destination fee token");const d=t?t.amount:e.actionProceeds?await e.actionProceeds.resolve(e.signal):0n;if(d<0n||e.signal?.aborted)throw new Error("Action proceeds quote was cancelled or invalid");const f=Os({customVenues:[...e.resolveExactOutputSwap?[{name:"consumer-exact-output",chainIds:[e.resolvedChainId],preferred:!0,resolve:e.resolveExactOutputSwap}]:[],...Pn(e.liquidityVenues).output]}),m=w=>ll(e,r,c,w);let h=await m(await e.buildPayChainBatches({fundingAmountOverride:0n}));for(let w=0;w<8;w++){const g=h.gasFee+h.platformFee,y=o?0n:d<g?d:g,x=g-y,b=x>0n?(x*110n+99n)/100n+2n:0n,v=b>0n?await f.getQuote({tokenIn:i,tokenOut:c,amountOut:b,maxSlippage:e.maxSlippage},e.resolvedChainId,r):null;if(e.signal?.aborted)throw new Error("Fee conversion quote was cancelled");if(v&&(v.amountOut!==b||v.amountInMax<=0n||v.amountInMax<v.amountIn||!v.calls.length))throw new Error("Invalid exact-output fee conversion quote");const C=v?.amountInMax??0n,k=o?0n:rs(C,l,n.decimals);if(o&&C>d)throw new ts(C,d);if(!o&&k>n.balance)throw new ts(k,n.balance);let I,A=On(await e.buildPayChainBatches({fundingAmountOverride:o?0n:C,...o?{}:{fundingTokenOverride:i},...t?{actionAmountOverride:t.amount-C}:{},onActionCalls:R=>{I=R}}),r);if(v){const R=A.length-1;A=A.map((j,T)=>T===R?{...j,calls:[...j.calls,...v.calls]}:j)}A=kr(A,r,c,h.gasFee,h.platformFee);const F=await m(A);if(F.gasFee<=h.gasFee&&(h.gasFee-F.gasFee)*100n<=F.gasFee*15n&&F.platformFee===h.platformFee){const R={tokenIn:i,tokenOut:c,amountInMax:C,amountOut:b,sourceAmountMax:k,...s?{fromProceeds:!0}:{},...t?{fromInput:!0}:{}};return{feeEstimate:null,preview:{symbol:e.destinationToken.symbol,decimals:e.destinationToken.decimals,grossAmount:o?0n:b,netAmount:0n,gasFee:h.gasFee,spicenetFee:h.platformFee,totalFee:g,gasQuoteSource:"estimated"},grossFundingAmount:o?0n:C,proceedsAvailable:d,proceedsUsed:o?g:y,fundingConversion:R,fundingBatches:A,sourceSpendCap:k,destinationAmount:0n,actionDefinition:I}}h=F}throw new Error("Fee conversion pricing did not converge")}const bo=["input","proceeds","balance"];function Xu(e){if(e.reserve&&e.reserve.amount<0n)throw new Error("Fee funding reserve cannot be negative");if(e.reserves?.some(l=>l.amount<0n))throw new Error("Fee funding reserve cannot be negative");const t=l=>p.addressesEqual(l,e.feeToken),n=(l,c)=>Number(l.swap)-Number(c.swap),s={input:[],proceeds:[],balance:[]};for(const l of e.inputs??[])l.amount>0n&&s.input.push({kind:"input",...l,swap:!t(l.token)});s.input.sort(n),e.proceeds&&e.proceeds.amount>0n&&s.proceeds.push({kind:"proceeds",...e.proceeds,swap:!t(e.proceeds.token)});const o=e.balances.filter(l=>l._source==="wallet"&&l.chainId===e.chainId&&l.location!=="external"),r=e.balances.filter(l=>l._source==="spice"),i=l=>{const c=[];for(const d of l){const f=[...e.reserves??[],...e.reserve?[e.reserve]:[]].filter(g=>ye(d)===ye(g.asset)).reduce((g,y)=>y.amount>g?y.amount:g,0n),m=d.balance-f;if(m<=0n)continue;const h=f>0n?{...d,balance:m,balanceFormatted:Number(B.formatUnits(m,d.decimals)),balanceUsd:d.balanceUsd*Number(m)/Number(d.balance)}:d,w=il(h,e.chainId,e.feeToken);w&&(e.inputs?.some(g=>p.addressesEqual(g.token,w)&&![...e.reserves??[],...e.reserve?[e.reserve]:[]].some(y=>p.addressesEqual(y.asset.address,g.token)))||c.push({kind:"balance",token:w,amount:h.balance,asset:h,...f>0n?{reservedAmount:f}:{},swap:!t(w)}))}return c.sort((d,f)=>n(d,f)||f.asset.balanceUsd-d.asset.balanceUsd)};return s.balance=[...i(o),...i(r)],(e.order??bo).flatMap(l=>s[l])}function Ju(e){return e instanceof ts||e instanceof p.SpiceflowError&&e.code==="NO_SWAP_ROUTE"}async function cl(e,t){const n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!n||!e.ready||!e.authenticated)return null;const s=e.destinationToken.address;let o;const r=()=>o??(o=(async()=>{const d=await ll(e,n,s,await e.buildPayChainBatches({fundingAmountOverride:0n}));return{feeEstimate:null,preview:{symbol:e.destinationToken.symbol,decimals:e.destinationToken.decimals,gasFee:d.gasFee,spicenetFee:d.platformFee,bridgeFee:0n,totalFee:d.gasFee+d.platformFee,grossAmount:0n,netAmount:0n,gasQuoteSource:"estimated"}}})()),i=(d,f)=>e.buildPayChainBatches({...f,fundingAmountOverride:d}),l=(d,f)=>$i({proceeds:{token:s,resolve:async()=>d},owner:n,token:s,signal:e.signal,baseline:r,buildBatches:i,fundShortfall:!1,actionAmountFor:f}),c=async d=>{if(d.kind==="input")return d.swap?Ds({...e,actionProceeds:void 0},d):l(d.amount,g=>d.amount-g);if(d.kind==="proceeds"){const g={...e.actionProceeds,resolve:async()=>d.amount};return d.swap?Ds({...e,actionProceeds:g}):l(d.amount)}const f=d.asset;if(f._source==="wallet"&&!d.swap)return l(f.balance);let m=!d.swap&&f._source==="spice"?e.getCombinedSourceGroup?.(f):void 0;if(m){const g=[ye(m.wallet),ye(m.escrow)],y=[...e.feeFundingReserves??[],...e.feeFundingReserve?[e.feeFundingReserve]:[]].filter(x=>g.includes(ye(x.asset)));y.length&&(m=e.getCombinedSourceGroup?.(f,y))}const h={...e,selectedAsset:{asset:f,amount:"0"},combinedSourceGroup:m,resolvedTokenIn:d.token,actionInput:void 0,actionProceeds:void 0,buildPayChainBatches:g=>e.buildPayChainBatches({...g,sourceAssetOverride:f,combinedSourceGroupOverride:m??null,fundingTokenOverride:g?.fundingTokenOverride??d.token})};if(d.swap)return Ds(h);const w=await t(h);if(w&&(w.sourceSpendCap??0n)>(m?.availableBalance??f.balance))throw new ts(w.sourceSpendCap,m?.availableBalance??f.balance);return w};for(const d of e.feeFunding??bo){const f=d==="proceeds"&&e.actionProceeds?{token:e.actionProceeds.token,amount:await e.actionProceeds.resolve(e.signal)}:void 0;if(e.signal?.aborted)throw new Error("Fee funding quote was cancelled");if(f&&f.amount<0n)throw new Error("Action proceeds cannot be negative");const m=Xu({feeToken:s,chainId:e.resolvedChainId,inputs:e.actionInput,proceeds:f,balances:e.feeFundingBalances??[],order:[d],reserve:e.feeFundingReserve,reserves:e.feeFundingReserves});for(const h of m)try{const w=await c(h);if(!w)continue;const{swap:g,...y}=h;return{...w,fundingSource:y}}catch(w){if(e.signal?.aborted||!Ju(w))throw w}}throw new Error(`No available balance can cover this action's ${e.destinationToken.symbol} execution cost`)}async function $u(e,t,n,s=!1){const o=e.selectedAsset,r=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(!o||!r||!e.ready||!e.authenticated||e.isQuoting)return null;if(!e.combinedSourceGroup&&o.asset._source!=="wallet"||o.asset.chainId!==e.resolvedChainId||!_s(o.asset)&&o.asset.owner&&!p.addressesEqual(o.asset.owner,r))throw new Error("Funded fee hierarchy requires principal on the action chain in the executing wallet.");if(s&&(e.isPayMode||!e.isFeeInclusiveInput||t.recipient&&!p.addressesEqual(t.recipient,r)))throw new Error("Output-funded actions require an input-inclusive amount left in the executing wallet.");if(e.isPayMode&&e.needsSwap&&!e.exactOutputSwap)return null;const i=e.isPayMode?Xt(e.currentPaymentAmount,e.destinationToken.decimals):void 0;if(e.isPayMode&&e.needsSwap&&e.exactOutputSwap.amountOut!==i)throw new Error("Wait for the payment quote for the current amount.");const l=S.getTokensForChain(e.resolvedChainId).find(k=>k.equivalenceGroup==="USDC");if(!l)throw new Error("Configure the execution fee token for this chain.");const c={...l,address:l.address,chainId:e.resolvedChainId},d=i!==void 0?e.needsSwap?e.exactOutputSwap.amountInMax:i:Xt(o.amount,o.asset.decimals);if(d<=0n||d>(e.combinedSourceGroup?.availableBalance??o.asset.balance))throw new Error("Enter an amount within the available balance.");if(!e.isPayMode&&e.needsSwap&&t.swapInputAmount!=null&&t.swapInputAmount!==d)throw new Error("Wait for the action quote for the current amount.");const f=i??(e.needsSwap?t.resolvedSwap?.amountOutMinimum??0n:d);let m=t.resolvedSwap??void 0,h=d,w=f;const g=e.combinedSourceGroup?vr(e.combinedSourceGroup,d,"in-place"):void 0,y={...e,feeOnlyAction:!0,selectedAsset:null,isPayMode:!0,isFeeInclusiveInput:!1,parsedAmount:0,currentPaymentAmount:"0",destinationToken:c,resolvedTokenIn:c.address,executionTokenAddress:c.address,needsSwap:!1,resolvedSwap:null,isDirect:!0,actionInput:!e.isPayMode&&e.isFeeInclusiveInput?[{token:o.asset.address,amount:d}]:void 0,actionProceeds:s?{token:e.destinationToken.address,resolve:async()=>f>0n?f-1n:0n}:e.actionProceeds,feeFundingBalances:e.feeFundingBalances?.filter(k=>!k.balanceError&&!(e.feeFundingReserve&&ye(e.feeFundingReserve.asset)!==ye(o.asset)&&ye(k)===ye(e.feeFundingReserve.asset))&&!_s(k)&&(!k.owner||p.addressesEqual(k.owner,r))),feeFundingReserves:g?.positions.map(k=>({asset:k.asset,amount:k.amount})),feeFundingReserve:g?void 0:{asset:o.asset,amount:e.feeFundingReserve&&ye(e.feeFundingReserve.asset)===ye(o.asset)&&e.feeFundingReserve.amount>d?e.feeFundingReserve.amount:d},buildPayChainBatches:async k=>{const I=k?.actionAmountOverride??d;if(I<=0n)throw new ts(d+1n,d);const A=!e.isPayMode&&e.needsSwap?I===d?t.resolvedSwap:await t.resolveInputSwap?.(I,t.resolvedSwap??void 0):null,F=e.needsSwap?e.isPayMode?e.exactOutputSwap:A:null;if(e.needsSwap&&!F)throw new Error("The action quote is unavailable.");m=A??void 0,h=I,w=i??m?.amountOutMinimum??I;const R={userAddress:t.recipient??r,executorAddress:r,beneficiary:t.recipient??r,outputRecipient:r,chainId:e.resolvedChainId,destinationToken:e.destinationToken.address,grossAmount:f,netAmount:w,feeToken:c.address,feeExecutionMode:"backend-transfer"},j=await t.buildActionCalls(w,R),T={amount:w,context:R,calls:j},P=[...F?.calls??[],...j];let O=await yo({...t,selectedAsset:null,combinedSourceGroup:void 0,feeOnlyAction:!0,isPayMode:!0,isFeeInclusiveInput:!1,currentPaymentAmount:"0",destinationToken:c,resolvedTokenIn:c.address,needsSwap:!1,resolvedSwap:null,exactOutputSwap:null,quoteAmountOut:null,feeExecutionMode:"backend-transfer",buildActionCalls:()=>P},{...k,onActionCalls:()=>k?.onActionCalls?.(T)});if(g?.escrowWithdrawal){const M=[...O].reverse().findIndex(E=>E.domain!=="spicenet"&&E.chainId===e.resolvedChainId),U=M<0?-1:O.length-M-1;if(U<0)throw new Error("The action quote is unavailable.");O[U]={...O[U],tokenTransfers:[...O[U].tokenTransfers??[],{token:g.token,from:"escrow",to:r,amount:g.escrowWithdrawal}]},O=On(O,r,void 0,{payoutAlreadyGross:!0,requestTimestampMs:t.requestTimestampMs})}return O}},x=await cl(y,n);if(!x)return null;if(s&&x.fundingSource?.kind==="proceeds"&&(w-=x.fundingConversion?.amountInMax??x.proceedsUsed??0n),w<=0n)throw new Error("Not enough action output remains after execution costs.");let b=g;const v=b&&x.sourceAllocation&&b.positions.every(k=>x.sourceAllocation.positions.some(I=>I.positionId===k.positionId)),C=x.sourceAllocation&&!v?x.sourceAllocation:void 0;if(b){const k=x.sourceAllocation?.positions??[],I=x.fundingSource?.kind==="balance"&&x.fundingSource.asset&&ye(x.fundingSource.asset)===ye(e.combinedSourceGroup.wallet)?x.fundingConversion?.amountInMax??x.proceedsUsed??0n:0n,A=k.find(R=>R.positionId===ye(e.combinedSourceGroup.wallet))?.amount??I,F=k.find(R=>R.positionId===ye(e.combinedSourceGroup.escrow))?.amount??(x.fundingSource?.kind==="balance"&&x.fundingSource.asset&&ye(x.fundingSource.asset)===ye(e.combinedSourceGroup.escrow)?x.sourceSpendCap??0n:0n);b={...b,grossAmount:d+A+F,walletInPlace:b.walletInPlace+A,escrowWithdrawal:b.escrowWithdrawal+F,positions:b.positions.map(R=>({...R,amount:R.amount+(R.asset.location==="embedded"?A:F),reservedAmount:0n}))}}return{...x,fundedFeeToken:c,batches:x.fundingBatches??x.batches,destinationSwap:m,swapInputAmount:h,destinationAmount:w,sourceAllocation:b,feeSourceAllocation:C,sourceSpendCap:b?.grossAmount??d+(x.fundingSource?.kind==="balance"&&x.fundingSource.asset&&ye(x.fundingSource.asset)===ye(o.asset)?x.fundingConversion?.amountInMax??x.proceedsUsed??0n:0n)}}async function _u(e,t){const n=e.externalGasRecipient,s=e.embeddedWalletAddress||e.providerEmbeddedAddress,o=e.resolvedChainId,r=t.batches,i=r.map(b=>b.chainId).lastIndexOf(o);if(i<0)throw new Error("Destination gas quote is unavailable.");const[l,c]=await Promise.all([p.relayerService.estimateBatchGas({user:s,outputToken:S.ZERO_ADDRESS,chainBatches:r,stepIndex:i,signal:e.signal}),p.getClientForChain(o).getBalance({address:n})]);if(e.signal?.aborted)throw new Error("Fee estimation cancelled");if(l.gasQuoteSource!=="estimated"||l.gasFee<=0n)throw new Error("A native gas quote is required for the external wallet.");const d=r[i].calls.reduce((b,v)=>p.addressesEqual(v.to,n)&&v.data==="0x"?b+v.value:b,0n),f=l.gasFee,m=c+d<f?await e.externalGasCalls?.(t)??[]:[],h=m.reduce((b,v)=>b+v.value,0n),w=(3n+BigInt(m.length))*f+h,g=c+d<f?w-c-d:0n,y={chainId:o,recipient:n,balance:c,incoming:d,transactionGas:f,nativeAmount:g,currentTransactions:m.length,currentValue:h,feeAmount:0n,calls:[]};if(g===0n)return y;const x=e.executionTokenAddress;if(S.isNativeToken(x))y.feeAmount=g;else{const b=await Os({customVenues:[...e.resolveExactOutputSwap?[{name:"consumer-exact-output",chainIds:[o],preferred:!0,resolve:e.resolveExactOutputSwap}]:[],...Pn(e.liquidityVenues).output]}).getQuote({tokenIn:x,tokenOut:S.ZERO_ADDRESS,amountOut:g,maxSlippage:e.maxSlippage},o,s);if(b.amountOut!==g||b.amountInMax<=0n||!b.calls.length)throw new Error("The external gas purchase could not be quoted.");if(e.signal?.aborted)throw new Error("Fee estimation cancelled");y.feeAmount=b.amountInMax,y.calls=b.calls}return y.calls=[...y.calls,{to:n,value:g,data:"0x"}],y}function vo(e,t){if(!t?.nativeAmount)return e;const n=e.map(s=>s.chainId).lastIndexOf(t.chainId);if(n<0)throw new Error("The gas reserve destination changed.");return e.map((s,o)=>o===n?{...s,calls:[...s.calls,...t.calls]}:s)}function dl(e,t){if(e&&e.nativeAmount>0n){const n=t.filter(o=>o.chainId===e.chainId).slice(-1)[0],s=n?.calls.slice(-e.calls.length);if(!s||s.length!==e.calls.length||s.some((o,r)=>{const i=e.calls[r];return!p.addressesEqual(o.to,i.to)||o.value!==i.value||o.data!==i.data}))throw new Error("The external gas purchase changed. Refresh the quote before submitting.");if(n.calls.slice(0,-e.calls.length).reduce((o,r)=>p.addressesEqual(r.to,e.recipient)&&r.data==="0x"?o+r.value:o,0n)<e.incoming)throw new Error("The native result changed. Refresh the gas reserve quote before submitting.")}}async function ul(e,t){if(!e)return;t&&dl(e,t);const n=await p.getClientForChain(e.chainId).getBalance({address:e.recipient});if(e.nativeAmount>0n?n!==e.balance:n+e.incoming<e.transactionGas)throw new Error("The external wallet gas balance changed. Refresh the quote before submitting.")}async function ep(e){const t=e.selectedAsset.asset;if(t.chainId!==e.destinationToken.chainId||!p.addressesEqual(S.normalizeNativeTokenAddress(t.address),S.normalizeNativeTokenAddress(e.destinationToken.address)))throw new Error("Direct execution requires the destination token on its own chain.");if(t.decimals!==e.destinationToken.decimals)throw new Error("Source and destination token decimals do not match.");const n=Xt(e.paymentAmount??e.selectedAsset.amount,t.decimals);if(n<=0n)throw new Error("Enter a positive action amount.");const s={userAddress:e.beneficiary??e.account,executorAddress:e.account,beneficiary:e.beneficiary??e.account,chainId:e.destinationToken.chainId,destinationToken:e.destinationToken.address,feeToken:t.address,grossAmount:n,netAmount:n,combinedFeeAmount:0n,feeExecutionMode:e.feeExecutionMode,feeBreakdown:{spicenetFee:0n,gasFee:0n,bridgeFee:0n}},o=await e.buildActionCalls(n,s);if(!o.length)throw new Error("No action calls configured.");if(S.isNativeToken(t.address)&&o.reduce((r,i)=>r+i.value,0n)>n)throw new Error("The native action exceeds the accepted source amount.");return{actionDefinition:{amount:n,context:s,calls:o},actionContext:s,batches:[{chainId:s.chainId,calls:o}],fundingAmount:n,sourceSpendCap:n,destinationAmount:n,feeEstimate:null,preview:{symbol:t.symbol,decimals:t.decimals,grossAmount:n,netAmount:n,totalFee:0n,gasFee:0n,spicenetFee:0n,bridgeFee:0n,gasQuoteSource:"static_zero"}}}async function pl(e){const[t]=await e.buildSupplyChainBatches({sourceGasSkimOverride:1n,reuseQuotedSourceSwap:!0});if(!t)throw new Error("Swap quote not available yet");const{gasFee:n}=await p.relayerService.estimateBatchGas({user:e.user,outputToken:e.pivot.source.address,stepIndex:0,chainBatches:[t],signal:e.signal});return n}const Ar=(e,t)=>(e+t-1n)/t;function Co(e,t,n=0n){return e.intents.length===0?t:{...e,intents:e.intents.map(s=>({...s,batches:s.batches.map(o=>{const r=t.intents.find(c=>c.intentIndex===s.intentIndex)?.batches.find(c=>c.chainId===o.chainId);if(!r&&n===0n)return o;const i={...o.feeBreakdown};let l=0n;for(const c of["gasFee","bridgeFee"]){const d=BigInt(i[c]??"0"),f=BigInt(r?.feeBreakdown[c]??"0"),m=d>f?d+Ar(d*n,10000n):f;m>d&&(i[c]=m.toString(),l+=m-d)}return{...o,feeBreakdown:i,totalDebit:(BigInt(o.totalDebit)+l).toString()}})}))}}async function fl(e){if(e.options.signal?.aborted)throw new Error("Fee estimation cancelled");if(!p.relayerService.canValidateActionFees())throw new Error("This withdrawal requires signed fee validation. Refresh the quote before submitting.");const[t,n]=await Promise.all([e.signedEstimate??e.estimate(e.batches,e.tokenAddress,e.fundingAmount,{...e.options,feeExecutionMode:"user-transfer",validateFeeCalls:!0}),e.estimate(e.pricingBatches,e.tokenAddress,e.fundingAmount,{...e.options,feeExecutionMode:"backend-transfer",validateFeeCalls:!1})]);if(e.options.signal?.aborted)throw new Error("Fee estimation cancelled");const s=o=>o.intents.flatMap(r=>r.batches.map(i=>`${r.intentIndex}:${i.chainId}`)).sort().join(",");if(!s(n)||s(n)!==s(t))throw new Error("Unable to validate the signed withdrawal fees.");return{intents:n.intents.map(o=>({...o,batches:o.batches.map(r=>{const i=t.intents.find(d=>d.intentIndex===o.intentIndex)?.batches.find(d=>d.chainId===r.chainId);if(!i)throw new Error("Unable to validate the signed withdrawal fees.");const l={...r.feeBreakdown};let c=0n;for(const d of["gasFee","bridgeFee"]){const f=BigInt(l[d]??"0"),m=BigInt(i.feeBreakdown[d]??"0");m>f&&(l[d]=m.toString(),c+=m-f)}return{...r,feeBreakdown:l,totalDebit:(BigInt(r.totalDebit)+c).toString()}})}))}}function tp(e,t){const n=e.spicenetFee+(e.bridgeFee??0n);return e.grossAmount<=n?t+e.gasFee+n:Ar((t+e.gasFee)*e.grossAmount,e.grossAmount-n)+2n}async function ml(e){const{requiredNetFunding:t}=e;if(e.feeOnlyAction){const d=e.executionOptions?.userOverride;if(!d||t!==0n)throw new Error("Fee-only estimates require a zero action amount and its embedded executor");let f=1n,m;for(let h=0;h<8;h++){const w=On(await e.buildBatches(f),d,m,{payoutAlreadyGross:!0}),g=await e.estimate(ns(w,e.tokenDescriptor.chainId,e.fundingToken),e.fundingToken,f,{...e.executionOptions,feeExecutionMode:"backend-transfer"}),y=p.getSupplyFeePreview(g,e.tokenDescriptor);if(!y)throw new Error("The fee service did not return a fee quote for this action");const x=y.gasFee+y.spicenetFee+(y.bridgeFee??0n);if(m&&x+2n<=f)return{preview:{...y,grossAmount:f,netAmount:0n},feeEstimate:g,grossFundingAmount:f};f=(x*110n+99n)/100n+2n,m=g}throw new Error("Fee-only funding did not converge; refresh the fee quote before retrying")}const n=await e.buildBatches(t),s=await e.estimate(n,e.fundingToken,t,e.executionOptions),o=p.getSupplyFeePreview(s,e.tokenDescriptor);if(!o)return{preview:p.getEscrowFreeFeePreview(n,e.tokenDescriptor,t),feeEstimate:s,grossFundingAmount:t};const r=tp(o,t),i=d=>o.grossAmount>0n?Ar(d*r,o.grossAmount):d,l=i(o.spicenetFee),c=i(o.bridgeFee??0n);return{preview:{...o,grossAmount:r,netAmount:t,spicenetFee:l,bridgeFee:c,totalFee:o.gasFee+l+c},feeEstimate:s,grossFundingAmount:r}}async function hl(e){if(e.balance<=0n)throw new Error("No spendable balance remains after source gas.");let t=e.balance;for(let n=0;n<8;n++){const s=await e.planForAmount(t);if(!s||s.sourceSpendCap===void 0||s.sourceSpendCap<=0n)throw new Error("Max requires a current route and fee estimate.");if(s.sourceSpendCap<=e.balance)return p.formatRawTokenInput(t,e.decimals);const o=t*e.balance/s.sourceSpendCap;if(o<=0n||o>=t)throw new Error("The balance cannot cover this action and its fees.");t=o}throw new Error("Max fees did not converge. Refresh the quote before retrying.")}async function np(e){if(e.isPayMode||e.needsSwap||e.isQuoting||e.pivot||!e.embeddedWalletAddress)return null;const t=e.asset,n=S.getTokenByAddress(e.executionTokenAddress,t.chainId);return!n||t.balance<=0n?null:hl({balance:t.balance,decimals:t.decimals,planForAmount:s=>Wn({selectedAsset:{asset:t,amount:p.formatRawTokenInput(s,t.decimals)},isPayMode:!1,isNon7702:!1,isFeeInclusiveInput:!1,parsedAmount:Number(p.formatRawTokenInput(s,t.decimals)),currentPaymentAmount:"0",destinationToken:{...n,address:e.executionTokenAddress,chainId:t.chainId},resolvedChainId:t.chainId,resolvedTokenIn:e.executionTokenAddress,executionTokenAddress:e.executionTokenAddress,embeddedWalletAddress:e.embeddedWalletAddress,providerEmbeddedAddress:e.embeddedWalletAddress,address:e.embeddedWalletAddress,isConnected:!0,ready:!0,authenticated:!0,isDirect:!0,isSourceDestToken:!0,needsSwap:!1,isQuoting:!1,resolvedSwap:null,exactOutputSwap:null,buildPayChainBatches:async()=>[],buildSupplyChainBatches:o=>e.buildSupplyChainBatches({...o,actionAmountOverride:s}),estimate:e.estimate,feeExecutionMode:e.feeExecutionMode})})}async function Wn(e){const t=await gl(e);if(!e.externalGasRecipient||!t?.batches?.length)return t;const n=await _u(e,t);if(!n.nativeAmount)return{...t,externalGasReserve:n};const s=await gl({...e,externalGasReserve:n,initialFeeEstimate:void 0,buildPayChainBatches:async o=>vo(await e.buildPayChainBatches(o),n),buildSupplyChainBatches:async o=>vo(await e.buildSupplyChainBatches({...o,...e.feeExecutionMode!=="user-transfer"&&o?.actionContextOverride?.netAmount!==void 0?{deliveryAmountOverride:o.actionContextOverride.netAmount+n.feeAmount}:{}}),n)});return s?(dl(n,s.batches??[]),{...s,externalGasReserve:n,preview:{...s.preview,gasFee:s.preview.gasFee+n.feeAmount,totalFee:(s.preview.totalFee??0n)+(e.isPayMode?n.feeAmount:0n),...e.isPayMode?{netAmount:s.preview.netAmount-n.feeAmount}:{}}}):null}async function gl(e){const{signal:t,selectedAsset:n,isPayMode:s,isFeeInclusiveInput:o=!1,parsedAmount:r,needsSwap:i,exactOutputSwap:l,isNon7702:c,currentPaymentAmount:d,destinationToken:f,feeExecutionMode:m,resolvedTokenIn:h,embeddedWalletAddress:w,providerEmbeddedAddress:g,resolvedChainId:y,isConnected:x,address:b,ready:v,authenticated:C,isDirect:k,resolvedSwap:I,sourceSwap:A,pivot:F,isQuoting:R,executionTokenAddress:j,buildPayChainBatches:T,buildSupplyChainBatches:P,estimate:O}=e;if(e.feeOnlyAction&&!n&&e.feeFunding?.length!==0)return cl(e,Wn);if(e.feeOnlyAction&&e.actionProceeds&&e.actionProceeds.token.toLowerCase()!==f.address.toLowerCase()||e.feeOnlyAction&&n&&(n.asset._source==="spice"||n.asset._source==="wallet"&&n.asset.chainId===y)&&(h?h.toLowerCase()!==f.address.toLowerCase():n.asset.receiptTokenId||n.asset.chainTokens))return Ds(e);if(e.actionProceeds&&e.feeOnlyAction){const X=w||g;if(!X||!v||!C)return null;if(h&&h.toLowerCase()!==f.address.toLowerCase())throw new Error("Action proceeds require a matching fee-token source");return $i({proceeds:e.actionProceeds,owner:X,token:f.address,signal:t,buildBatches:(ee,K)=>T({...K,fundingAmountOverride:ee}),baseline:()=>Wn({...e,actionProceeds:void 0,selectedAsset:n??{amount:"0",asset:{...f,name:f.symbol,balance:0n,balanceFormatted:0,balanceUsd:0,isNative:!1,_source:"spice"}}})})}if(!n?.asset)return null;if(s){if(!w&&!g||r<=0&&!e.feeOnlyAction||i&&!l&&!e.feeOnlyAction)return null;const X=Xt(d,f.decimals),ee=h||rn(n.asset,y)||n.asset.address||f.address,K={chainId:y,tokenAddress:ee,symbol:S.getTokenByAddress(ee,y)?.symbol??n.asset.symbol,decimals:await Sn(n.asset,ee,y,f)};if(!x||!b||!v||!C)return null;const we=w||g||b,ve=(i?l?.amountInMax??0n:X)+(e.externalGasReserve?.feeAmount??0n);if(ve===0n&&!e.feeOnlyAction)return null;const N=F?await pl({user:we,pivot:F,buildSupplyChainBatches:_=>T({..._,sourceGasSkimOverride:1n}),signal:t}):0n,Z=Date.now();let Y=await ml({requiredNetFunding:ve,feeOnlyAction:e.feeOnlyAction,buildBatches:_=>T({fundingAmountOverride:_,sourceGasSkimOverride:N}).then(ce=>Xi(Qu(ce),we,void 0,{requestTimestampMs:Z})),fundingToken:ee,estimate:O,executionOptions:{userOverride:we,useCustomTransfers:!0,feeExecutionMode:m,signal:t},tokenDescriptor:K});if(!Y.preview)return null;let G=0n,pe,xe,ke=[],q=!1;for(let _=0;_<8;_++){if(t?.aborted)throw new Error("Fee estimation cancelled");if(ke=On(await T({fundingAmountOverride:Y.grossFundingAmount,sourceGasSkimOverride:N,onSourceSpend:We=>{G=We},onSourceAllocation:We=>{pe=We},onActionCalls:We=>{xe=We}}),we,Y.feeEstimate,{payoutAlreadyGross:!0,requestTimestampMs:Z}),pe){const We=p.getSupplyFeePreview(Y.feeEstimate,K);if(!We)throw new Error("The action quote is unavailable.");const Ce=xo(y,ee,[{recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:We.gasFee+(We.bridgeFee??0n)},{recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:We.spicenetFee}]).calls;ke=ns(ke,y,ee);const ze=[...ke].reverse().findIndex(tt=>tt.domain!=="spicenet"&&tt.chainId===y),He=ze<0?-1:ke.length-ze-1;if(He<0)throw new Error("The action quote is unavailable.");ke[He]={...ke[He],calls:[...Ce,...ke[He].calls]}}if(e.feeOnlyAction){q=!0;break}const ce=await O(ke,ee,Y.grossFundingAmount,{userOverride:we,useCustomTransfers:!0,feeExecutionMode:m,signal:t}),$=m==="user-transfer"?Co(ce,Y.feeEstimate):ce,te=p.getSupplyFeePreview($,K)??p.getEscrowFreeFeePreview(ke,K,ve);if(!te)return null;const Ie=ve+te.gasFee+te.spicenetFee+(te.bridgeFee??0n),he=p.getSupplyFeePreview(Y.feeEstimate,K),fe=(he?.gasFee??0n)===te.gasFee&&(he?.spicenetFee??0n)===te.spicenetFee&&(he?.bridgeFee??0n)===(te.bridgeFee??0n),Ae=Y.grossFundingAmount===Ie&&fe;if(Y={feeEstimate:$,grossFundingAmount:Ie,preview:{...te,grossAmount:Ie,netAmount:ve}},Ae){q=!0;break}}if(!q)throw new Error("Payment fees did not converge. Refresh the quote before submitting.");if(!Y.preview)return null;const W=F?sn(N,F.source.decimals,F.destination.decimals,"ceil"):0n;return{...Y,batches:ke,sourceSpendCap:G,sourceAllocation:pe,actionDefinition:xe,destinationAmount:X,preview:{...Y.preview,grossAmount:Y.preview.grossAmount+W,gasFee:Y.preview.gasFee+W,totalFee:(Y.preview.totalFee??0n)+W},...F?{sourceGasSkim:N}:{}}}if(r<=0||!w)return null;const M=w||g;if(F&&!A)return null;const U=Ir({isPayMode:s,selectedAsset:n,resolvedChainId:y,sourceSwap:A,pivot:F});if(!(!s&&!c&&n.asset?._source==="wallet"&&n.asset.chainId!==y)&&!k&&!I&&!R||R)return null;let E=await P();if(E.length===0)return null;const D={chainId:y,tokenAddress:j,symbol:S.getTokenByAddress(j,y)?.symbol??(n.asset.chainId===y&&p.addressesEqual(n.asset.address,j)?n.asset.symbol:f.symbol),decimals:await Sn(n.asset,j,y,f)},L=U&&e.initialFeeEstimate!==void 0&&e.initialSourceGasSkim!==void 0,z=U?L?e.initialSourceGasSkim:await pl({user:M,pivot:F,buildSupplyChainBatches:P,signal:t}):0n;U&&z>0n&&(E=await P({sourceGasSkimOverride:z}));const se=U?sn(o?tl(A,z):A.amountOutMinimum,F.source.decimals,F.destination.decimals,"floor"):sn(Xt(n.amount,n.asset.decimals),n.asset.decimals,D.decimals,"floor"),de=e.quotedInclusivePlatformFee&&m==="user-transfer",oe={userOverride:M,useCustomTransfers:!0,feeExecutionMode:m,signal:t,...U?{skipUserFundingPreflight:!0}:{}};let Q=se,J=e.initialFeeEstimate??await O(E,j,Q,de?{...oe,feeExecutionMode:"backend-transfer"}:oe);de&&!e.initialFeeEstimate&&(J=Co(J,{intents:[]},100n));for(let X=0;X<8;X++){if(t?.aborted)throw new Error("Fee estimation cancelled");const ee=p.getSupplyFeePreview(J,D)??p.getEscrowFreeFeePreview(E,D,Q);if(!ee)return null;const K=Fr(ee,se,o,m,e.externalGasReserve?.feeAmount,e.quotedInclusivePlatformFee);Q=K.grossAmount;let we,ve,N,Z,Y,G;const pe=await P({fundingAmountOverride:Q,sourceGasSkimOverride:z,actionContextOverride:K,onDestinationAmount:$=>{we=$},onSourceSpend:$=>{ve=$},onSourceAllocation:$=>{N=$},onSwap:($,te)=>{Z=$,Y=te},onActionCalls:$=>{G=$}}),xe=de?ns(await P({fundingAmountOverride:Q,sourceGasSkimOverride:z,actionContextOverride:K,deliveryAmountOverride:K.netAmount,withdrawalAmountOverride:K.netAmount}).then($=>{if($.length!==pe.length)throw new Error("The withdrawal fee route changed. Refresh the quote before submitting.");return $.map((te,Ie)=>{const he=pe[Ie];if(!he||he.chainId!==te.chainId||he.domain!==te.domain)throw new Error("The withdrawal fee route changed. Refresh the quote before submitting.");return te.domain==="spicenet"?te:{...te,calls:he.calls}})}),y,j):void 0,[ke,q]=await Promise.all([xe?fl({estimate:O,batches:pe,pricingBatches:xe,tokenAddress:j,fundingAmount:Q,options:oe}):O(pe,j,Q,{...oe,validateFeeCalls:e.initialFeeEstimate!==void 0}),L?p.relayerService.estimateBatchGas({user:M,outputToken:F.source.address,stepIndex:0,chainBatches:[pe[0]],signal:t}):void 0]);if(q&&!(de?q.gasFee<=z:m==="user-transfer"?p.feeAmountsWithinTolerance(z,q.gasFee,e.feeToleranceBps):q.gasFee===z))throw new Error("Source gas changed. Prepare a fresh fee quote.");const W=m==="user-transfer"?Co(ke,J,de?100n:0n):ke,_=p.getSupplyFeePreview(W,D)??p.getEscrowFreeFeePreview(pe,D,Q);if(!_)return null;const ce=Fr(_,se,o,m,e.externalGasReserve?.feeAmount,e.quotedInclusivePlatformFee);if(JSON.stringify(K,($,te)=>typeof te=="bigint"?te.toString():te)===JSON.stringify(ce,($,te)=>typeof te=="bigint"?te.toString():te)||!de&&m==="user-transfer"&&p.feeBreakdownsWithinTolerance(K.feeBreakdown,ce.feeBreakdown,e.feeToleranceBps)){const $=m==="user-transfer"?ee:_,te=U?sn(z,F.source.decimals,F.destination.decimals,"ceil"):0n;return{batches:pe,feePricingBatches:xe,fundingAmount:Q,actionContext:K,sourceSpendCap:ve,sourceAllocation:N,destinationAmount:we,destinationSwap:Z,swapInputAmount:Y,actionDefinition:G,feeEstimate:m==="user-transfer"?J:W,sourceGasSkim:z,preview:{...$,grossAmount:Q+te,netAmount:K.netAmount,gasFee:$.gasFee+te,spicenetFee:K.feeBreakdown.spicenetFee,totalFee:K.combinedFeeAmount+te}}}J=W,E=pe}throw new Error("Fees did not converge. Refresh the quote before submitting.")}class Er extends Error{constructor(t){super("Amount is too small to cover fees. Increase the amount and retry."),this.preview=t,this.name="FeeShortfallError"}}function Fr(e,t,n,s,o=0n,r=!1){const i=e.gasFee+(e.bridgeFee??0n)+o;if(e.gasQuoteSource==="static_zero"&&o===0n)return{grossAmount:t,netAmount:t,combinedFeeAmount:0n,feeExecutionMode:s??"backend-transfer",feeBreakdown:{gasFee:0n,bridgeFee:0n,spicenetFee:0n}};if(n&&r){const d=i+e.spicenetFee;if(t<=d)throw new Er({...e,grossAmount:t,netAmount:0n,totalFee:d});return{grossAmount:t,netAmount:t-d,combinedFeeAmount:d,feeExecutionMode:s??"backend-transfer",feeBreakdown:{gasFee:e.gasFee,bridgeFee:e.bridgeFee??0n,spicenetFee:e.spicenetFee}}}const l=n?p.splitFeeInclusiveAmount(t,i,10n):null;if(l&&!l.coversFees)throw new Er({...e,grossAmount:t,netAmount:0n,spicenetFee:0n,totalFee:i});const c=l?.spicenetFee??(s==="user-transfer"?p.calculateBpsFee(t,10n):e.spicenetFee);return{grossAmount:l?.grossAmount??t+c+i,netAmount:l?.netAmount??t,combinedFeeAmount:c+i,feeExecutionMode:s??"backend-transfer",feeBreakdown:{gasFee:e.gasFee,bridgeFee:e.bridgeFee??0n,spicenetFee:c}}}async function sp(e,t){if(e.feeQuote?.sourceAllocation){e.validateFeeQuote?.();const c=e.feeQuote.sourceAllocation;Cr(c,c.positions.map(d=>d.asset),e.embeddedWalletAddress??e.providerEmbeddedAddress??void 0,e.resolvedChainId);return}const n=e.selectedAsset?.asset;if(!n||n?._source!=="wallet")return;const s=rn(n,e.resolvedChainId);if(!s||!p.addressesEqual(s,e.executionTokenAddress))return;const o=await Sn(n,e.executionTokenAddress,e.resolvedChainId,e.destinationToken),r=rs(t,o,n.decimals);if(r<=n.balance)return;const i=B.formatUnits(r,n.decimals),l=B.formatUnits(n.balance,n.decimals);throw new Error(`Insufficient ${n.symbol} for this total amount. Required ${i} ${n.symbol}; available ${l} ${n.symbol}.`)}function op(e){const t=S.getTokenByAddress(e.executionTokenAddress,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:e.executionTokenAddress,symbol:t?.symbol??e.destinationToken.symbol,decimals:t?.decimals??e.destinationToken.decimals}}function rp(e){const t=e.selectedAsset.asset,n=Xt(e.selectedAsset.amount,t.decimals);if(n<=t.balance)return n;throw new Error(`Insufficient ${t.symbol} for this total amount. Required ${B.formatUnits(n,t.decimals)} ${t.symbol}; available ${B.formatUnits(t.balance,t.decimals)} ${t.symbol}.`)}function xl(e,t,n,s){const o=op(t),r=p.getSupplyFeePreview(e,o)??p.getEscrowFreeFeePreview(s,o,n);if(r)return Fr(r,n,!!t.isFeeInclusiveInput,t.feeExecutionMode,0n,t.quotedInclusivePlatformFee)}function yl(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(l.to.toLowerCase()===r)try{const c=B.decodeFunctionData({abi:B.erc20Abi,data:l.data});if(c.functionName!=="transfer")continue;const d=c.args[0].toLowerCase(),f=c.args[1];d===S.SPICE_PLATFORM_FEE_RECIPIENT.toLowerCase()?s+=f:d===S.SPICE_GAS_FEE_RECIPIENT.toLowerCase()&&(o+=f)}catch{continue}}return{spicenetFee:s,gasFee:o}}function ap(e,t,n,s){const o=t.feeExecutionMode==="user-transfer"&&t.needsSwap&&t.resolvedTokenIn?t.resolvedTokenIn:t.executionTokenAddress,r=yl(e,t.resolvedChainId,o);return r.spicenetFee===0n&&n.feeBreakdown.spicenetFee>0n||r.gasFee===0n&&n.feeBreakdown.gasFee>0n?!1:p.feeAmountsWithinTolerance(r.spicenetFee,n.feeBreakdown.spicenetFee,t.feeToleranceBps)&&p.feeAmountsWithinTolerance(r.gasFee,n.feeBreakdown.gasFee,t.feeToleranceBps)&&p.feeAmountsWithinTolerance(s.feeBreakdown.bridgeFee,n.feeBreakdown.bridgeFee,t.feeToleranceBps)}function ip(e,t,n){return e?p.amountsWithinBps(e.grossAmount,t.grossAmount,100n)&&p.feeBreakdownsWithinTolerance(e.feeBreakdown,t.feeBreakdown,n):!1}function lp(e,t){const n=S.getTokenByAddress(t,e.resolvedChainId);return{chainId:e.resolvedChainId,tokenAddress:t,symbol:n?.symbol??e.selectedAsset?.asset.symbol??"",decimals:n?.decimals??e.selectedAsset?.asset.decimals??e.destinationToken.decimals}}async function cp(e,t){const n=e.feeQuote;return n?.feeEstimate&&n.grossFundingAmount!==void 0?{grossFundingAmount:n.grossFundingAmount,feeEstimate:n.feeEstimate}:ml({...t,feeOnlyAction:e.feeOnlyAction,estimate:e.execution.estimate,tokenDescriptor:lp(e,t.fundingToken)})}function wl(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 bl(e,t){const n=p.sanitizeError(t,"Payment failed. Please try again.");e.ui.setError(n),e.ui.setPaymentResult({status:"failed",error:n})}async function vl(e){e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setStep("executing"),e.ui.setStatusMsg("Confirm the transaction in your external wallet..."),e.ui.setTxHash(null),e.isPayMode&&(e.ui.setShowStatusPanel(!0),e.ui.setPaymentResult({status:"processing"}));try{if(e.validateFeeQuote?.(),!e.feeQuote?.batches||!e.feeQuote.actionDefinition)throw new Error("Review the direct action plan before submitting.");const t=await e.execution.execute(e.feeQuote.batches,e.destinationToken.address,0n,e.execution.onProgress);e.ui.setTxHash(t),e.ui.setStep("success"),e.ui.setStatusMsg("Transaction confirmed"),e.isPayMode&&e.ui.setPaymentResult({status:"success",txHash:t})}catch(t){e.isPayMode?bl(e,t):wl(e,t,!1)}finally{e.ui.setIsExecuting(!1)}}async function Cl(e,t,n){e.validateFeeQuote?.();const s=e.feeQuote;if(!s.batches||s.sourceSpendCap===void 0||!s.fundingSource)throw new Error("Refresh the action before submitting.");const o=s.fundedFeeToken,r=s.grossFundingAmount??0n,i=el({...e,signal:n,feeOnlyAction:!0,destinationToken:o,actionProceeds:e.actionProceeds??{token:s.fundingSource.token,resolve:async()=>s.proceedsAvailable??0n}},o.address,r);return e.execution.execute(s.batches,s.fundingConversion?.tokenIn??s.fundingSource.token,r,t,n,{...i,userOverride:e.embeddedWalletAddress||e.providerEmbeddedAddress,useCustomTransfers:!0,feeExecutionMode:"backend-transfer",skipPreSubmitFeeEstimate:!0})}async function kl(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");return}if(e.directExternalAction)return vl(e);if(!e.embeddedWalletAddress){e.ui.setError("Wallet not ready");return}e.ui.setIsExecuting(!0),e.ui.setError(null),e.ui.setStep("signing-delegation"),e.ui.setStatusMsg("Building transaction..."),e.ui.setTxHash(null),e.refs.spiceDepositSubmittedRef.current=!1;const t=new AbortController;e.refs.abortControllerRef.current=t;try{const n=e.embeddedWalletAddress||e.providerEmbeddedAddress;if(e.feeQuote?.fundedFeeToken){const w=await Cl(e,e.execution.onProgress,t.signal);e.ui.setTxHash(w),e.ui.setStep("success"),e.ui.setStatusMsg("Transaction confirmed");return}const s=Ir(e);s&&rp(e);const o=e.feeQuote?.batches?e.feeQuote:await Wn({...e,feeExecutionMode:e.feeExecutionMode,isDirect:!e.needsSwap,isQuoting:!1,resolvedSwap:null,buildPayChainBatches:e.execution.buildPayChainBatches,buildSupplyChainBatches:e.execution.buildSupplyChainBatches,estimate:e.execution.estimate});if(!o?.batches||o.fundingAmount===void 0||!o.actionContext)throw new Error("A current action plan is required. Refresh the quote before submitting.");const r=e.isFeeInclusiveInput?o.actionContext.grossAmount:o.actionContext.netAmount;let i=o.batches;const l=i.some(w=>w.tokenTransfers?.length),c={userOverride:n,useCustomTransfers:l,feeExecutionMode:e.feeExecutionMode,...s?{skipUserFundingPreflight:!0}:{}},d=o.fundingAmount,f=o.actionContext;await sp(e,d);const m=f,h=await e.execution.execute(i,e.executionTokenAddress,l?d:0n,e.execution.onProgress,t.signal,e.feeExecutionMode==="user-transfer"?{...c,skipUserFundingPreflight:!0,adjustBatchesForEstimate:async({feeEstimate:w,chainBatches:g})=>{if(o.feePricingBatches){e.validateFeeQuote?.();const v=await fl({estimate:e.execution.estimate,batches:g,pricingBatches:o.feePricingBatches,tokenAddress:e.executionTokenAddress,fundingAmount:d,options:{...c,signal:t.signal},signedEstimate:w});e.validateFeeQuote?.();const C=xl(v,e,r,g),k=m.feeBreakdown,I=yl(g,e.resolvedChainId,e.executionTokenAddress);if(!C||C.feeBreakdown.spicenetFee!==k.spicenetFee||C.feeBreakdown.gasFee>k.gasFee||C.feeBreakdown.bridgeFee>k.bridgeFee||I.spicenetFee!==k.spicenetFee||I.gasFee!==k.gasFee+k.bridgeFee)throw new Error("Transaction fees changed. Refresh the quote before submitting.");return null}const y=xl(o.feeEstimate?Co(w,o.feeEstimate):w,e,r,g);if(!y)throw new Error("Unable to validate the accepted fees. Refresh the quote before submitting.");const x=ip(m,y,e.feeToleranceBps),b=ap(g,e,y,m);if(x||b)return null;throw new Error("Transaction fees changed. Refresh the quote before submitting.")}}:{...c,skipPreSubmitFeeEstimate:!0});e.ui.setTxHash(h),e.ui.setStep("success"),e.ui.setStatusMsg("Deposit confirmed")}catch(n){wl(e,n,t.signal.aborted)}finally{e.ui.setIsExecuting(!1)}}async function Sl(e){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.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.directExternalAction)return vl(e);const n=rl(e)&&!t,s=n?e.feeQuote?.sourceGasSkim??0n:0n,o=r=>e.execution.buildPayChainBatches(n?{...r,sourceGasSkimOverride:s}:r);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{if(e.feeQuote?.fundedFeeToken){const C=await Cl(e,k=>{k.txHash&&(e.ui.setTxHash(k.txHash),e.ui.setPaymentResult({status:"processing",txHash:k.txHash}))});e.ui.setPaymentResult(k=>({status:"success",txHash:k?.txHash||C}));return}const r=Xt(e.currentPaymentAmount,e.destinationToken.decimals),i={useCustomTransfers:!0,feeExecutionMode:e.feeExecutionMode,...n?{skipUserFundingPreflight:!0}:{}};if(t&&!e.feeOnlyAction){const C=await o(),k=await e.execution.execute(C,e.executionTokenAddress,0n,I=>{I.txHash&&(e.ui.setPaymentResult(A=>({...A??{status:"processing"},txHash:I.txHash})),e.ui.setTxHash(I.txHash))},void 0,i);e.ui.setPaymentResult(I=>({status:"success",txHash:I?.txHash||k}));return}const l=e.selectedAsset?.asset,c=e.feeQuote?.fundingSource;if(!l&&!e.actionProceeds&&!c)throw new Error("Select a payment source");const d=e.feeQuote?.fundingConversion?.tokenIn||c?.token||e.resolvedTokenIn||l?.address||e.destinationToken.address,f=e.needsSwap?e.exactOutputSwap?.amountInMax??0n:r,m=e.embeddedWalletAddress||e.providerEmbeddedAddress||e.address,h=!!e.feeQuote?.fundingConversion||!!c&&(c.kind!=="balance"||c.asset?._source==="wallet"),{grossFundingAmount:w,feeEstimate:g}=h?{grossFundingAmount:e.feeQuote.grossFundingAmount??0n,feeEstimate:void 0}:await cp(e,{requiredNetFunding:f,buildBatches:C=>e.execution.buildPayChainBatches({fundingAmountOverride:C}).then(k=>On(k,m)),fundingToken:d,executionOptions:i});let y=e.feeQuote?.fundingBatches??e.feeQuote?.batches??On(await o({fundingAmountOverride:w}),m,e.actionProceeds?void 0:g,{payoutAlreadyGross:!0});const x=el(e,e.feeQuote?.fundingConversion?.tokenOut??d,w);x.prepareForSigning&&(y=await x.prepareForSigning(y));const b=y.some(C=>C.tokenTransfers?.length),v=await e.execution.execute(y,d,b?w:0n,C=>{C.txHash&&(e.ui.setPaymentResult(k=>({...k,txHash:C.txHash})),e.ui.setTxHash(C.txHash))},void 0,{...i,...x,skipPreSubmitFeeEstimate:!0});e.ui.setPaymentResult(C=>({status:"success",txHash:C?.txHash||v}))}catch(r){bl(e,r)}finally{e.ui.setIsExecuting(!1)}}async function Il(e){const{quote:t,recipient:n,chainId:s,token:o}=e,r=t.batches?Al(t.batches,o,s,n):0n;if(r<=0n)throw new Error("The route does not deliver the action amount to the external wallet.");const i={userAddress:n,executorAddress:n,beneficiary:e.beneficiary??n,chainId:s,destinationToken:o,feeToken:o,grossAmount:r,netAmount:r,combinedFeeAmount:0n,feeExecutionMode:e.feeExecutionMode,feeBreakdown:{spicenetFee:0n,gasFee:0n,bridgeFee:0n}},l=await e.buildCalls(r,i);if(!l.length)throw new Error("No action calls configured.");return{amount:r,context:i,calls:l.map(c=>({...c}))}}function dp(e,t,n){const s=[],o=(r,i,l)=>{l>0n&&s.push(S.isNativeToken(r)?{to:i,value:l,data:"0x"}:{to:r,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"transfer",args:[i,l]})})};return t.feeExecutionMode==="user-transfer"&&t.feeBreakdown&&(o(t.feeToken??t.destinationToken,S.SPICE_PLATFORM_FEE_RECIPIENT,t.feeBreakdown.spicenetFee),o(t.feeToken??t.destinationToken,S.SPICE_GAS_FEE_RECIPIENT,t.feeBreakdown.gasFee+t.feeBreakdown.bridgeFee)),o(t.destinationToken,n,e),s}function Al(e,t,n,s){let o=0n;for(const r of e)if(r.chainId===n){for(const i of r.calls)if(p.addressesEqual(i.to,t))try{const l=B.decodeFunctionData({abi:B.erc20Abi,data:i.data});l.functionName==="transfer"&&p.addressesEqual(l.args[0],s)&&(o+=l.args[1])}catch{}}return o}async function up(e){if(!/^0x[0-9a-f]{64}$/i.test(e.hash))throw new Error("The external delivery receipt is unavailable.");const t=p.getClientForChain(e.chainId),n=await t.getTransactionReceipt({hash:e.hash});if(n.status!=="success"||!p.addressesEqual(n.transactionHash,e.hash))throw new Error("The external delivery receipt was not successful.");let s=0n;for(const o of n.logs)if(p.addressesEqual(o.address,e.token))try{const r=B.decodeEventLog({abi:B.erc20Abi,eventName:"Transfer",data:o.data,topics:o.topics});p.addressesEqual(r.args.to,e.recipient)&&p.addressesEqual(r.args.from,e.sender)&&(s+=r.args.value)}catch{}if(s!==e.amount)throw new Error("The received external amount does not match the accepted action.");if(await t.readContract({address:e.token,abi:B.erc20Abi,functionName:"balanceOf",args:[e.recipient]})<e.amount)throw new Error("The external wallet no longer holds the delivered action amount.")}async function El(e){const{definition:t,account:n,chainId:s}=e,{calls:o}=t;if(!p.addressesEqual(t.context.executorAddress,n)||t.context.chainId!==s||!o.length)throw new Error("The direct action no longer matches its wallet or chain.");const r=p.getClientForChain(s);let i;for(const l of o){await e.assertCurrent();const[c,d]=await Promise.all([Ti({client:r,account:n,calls:[l]}),r.getBalance({address:n})]);if(d<l.value+c)throw new Error("The external wallet has insufficient native balance for this transaction and network gas.");await e.assertCurrent();const{extWc:f,viemChain:m}=await ir({wallet:e.wallet,account:n,chainId:s});await e.assertCurrent(),i=await ou({extWc:f,viemChain:m,client:r,calls:[l],errorMessage:"The external transaction reverted. Retry the unfinished action when ready."})}if(!i)throw new Error("The direct action has no confirmed receipt.");return i}async function Fl(e){const{asset:t,embedded:n,external:s,amount:o}=e;if(!s||!e.externalWallet)throw new Error("Connect the source wallet before funding.");if(o<=0n)return;const r=p.getClientForChain(t.chainId),i=t.isNative||S.isNativeToken(t.address),[l,c]=await Promise.all([Bi({client:r,account:s,recipient:n,token:t.address,isNative:i,amount:o}),r.getBalance({address:s})]);if(c<l+(i?o:0n))throw new Error("The source wallet has insufficient native balance for funding and gas.");const{extWc:d,viemChain:f}=await ir({wallet:e.externalWallet,account:s,chainId:t.chainId});await ru({extWc:d,sourceClient:r,recipient:n,tokenAddr:t.address,isNative:i,amount:o,viemChain:f,observer:{onSending:()=>e.assertCurrent()}})}function Tl(e){const t=u.useContext(p.SpiceFlowProviderContext),n=p.getChainConfig(e.chainId),s=e.address??n?.supportedTokens?.find(g=>g.symbol.toLowerCase()===e.symbol?.toLowerCase())?.address,o=e.symbol??(s&&S.isNativeToken(s)?n?.nativeCurrency?.symbol:n?.supportedTokens?.find(g=>!!s&&p.addressesEqual(g.address,s))?.symbol),r=p.getRpcUrlForChain(e.chainId,t?.rpcOverrides),[i,l]=u.useState(0),c=`${e.chainId}:${s?.toLowerCase()}:${r}:${e.decimals??""}:${o??""}:${i}`,[d,f]=u.useState(null);u.useEffect(()=>{let g=!1;if(!(!e.enabled||!s||!r?.trim()))return Promise.all([e.decimals??p.getTokenDecimals(e.chainId,s,t?.rpcOverrides),o??pn.readContract(p.getClientForChain(e.chainId,t?.rpcOverrides),{address:s,abi:B.erc20Abi,functionName:"symbol"}).catch(()=>{})]).then(([y,x])=>{if(!Number.isInteger(y)||y<0||y>255)throw new Error("Invalid destination token decimals");g||f({key:c,decimals:y,symbol:x})}).catch(y=>{g||f({key:c,error:y.message})}),()=>{g=!0}},[e.enabled,c]);const m=d?.key===c?d:null,h=u.useMemo(()=>({address:s??S.ZERO_ADDRESS,chainId:e.chainId,decimals:m?.decimals??0,symbol:o??m?.symbol??(s?p.truncateAddress(s):""),logoURI:e.logoURI}),[s,e.chainId,m?.decimals,m?.symbol,o,e.logoURI]),w=e.enabled?s?r?.trim()?m?.error??null:`Configure SpiceFlowProvider rpcOverrides[${e.chainId}] before continuing.`:"Configure the destination token address before continuing.":null;return{token:h,error:w,ready:e.enabled&&!!s&&!!r?.trim()&&m?.decimals!==void 0,refresh:u.useCallback(()=>l(g=>g+1),[])}}function Bl(e,t){const n=!!e&&e.symbol!==void 0&&e.decimals!==void 0,s=Tl({enabled:t&&!!e&&!n,chainId:e?.chainId??0,address:e?.address,decimals:e?.decimals,symbol:e?.symbol,logoURI:e?.logoURI});return{token:e?n?e:s.ready?s.token:void 0:void 0,error:s.error}}const Tr={address:S.ZERO_ADDRESS,symbol:"",decimals:18,chainId:0};function Rl(e,t,n){return p.addressesEqual(e.address,t)&&e.chainId===n?e._source==="wallet"?0:1:2}function pp(e,t,n,s){const o=Rl(e,n,s)-Rl(t,n,s);return o!==0?o:(t.balanceUsd||0)-(e.balanceUsd||0)}const fp=Pa;function jl(e){const t=u.useContext(p.SpiceFlowProviderContext),n=p.useProviderWallets(),s=t?.embeddedWalletAddress||n.embeddedAddress,o=t?.externalWalletAddress||n.externalAddress,r=(t?.mode||"7702")!=="7702",i=e.destinationToken??Tr,l=e.enabled&&!!e.destinationToken,c=Xn({...e,owner:s,enabled:l&&!!s&&(!r||e.includeCrossChainEmbeddedAssets!==!1),role:"spend-source",destination:e.destinationToken}),d=Xn({...e,owner:o,enabled:l&&!!o&&(r||e.includeExternalWalletAssets!==!1),role:"spend-source",destination:e.destinationToken});return{displayAssets:u.useMemo(()=>[...c.assets,...d.assets].sort((f,m)=>pp(f,m,i.address,i.chainId)),[c.assets,d.assets,i.address,i.chainId]),filteredSpiceAssets:c.rollupAssets,walletAssets:[...c.walletAssets,...d.walletAssets],embeddedWalletAddress:s,externalAddress:o,isNon7702:r,refreshSpiceAssets:c.refresh,refreshWalletAssets:c.refresh,loading:c.loading||d.loading,refreshing:c.refreshing||d.refreshing,error:c.error||d.error}}function mp(e,t){return!e||e._source!=="wallet"?null:zo(e,t)}function Br(e){return ga({aerodrome:!1,oneInch:{chainIds:[]},customVenues:e})}const Rr=Pn(),hp=Br(Rr.input);function Ol(e){return{venue:"mapped-transfer",amountOut:e,amountOutMinimum:e,calls:[]}}function Dl(e){return{venue:"mapped-transfer",amountIn:e,amountInMax:e,amountOut:e,calls:[]}}async function jr(e){if(p.addressesEqual(e.tokenIn,e.tokenOut))return Ol(e.amountIn);if(e.resolveInputSwap){const n=await e.resolveInputSwap({type:"swap",tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountIn:e.amountIn,maxSlippage:e.maxSlippage},e.chainId,e.recipient);if(n)return n}const t=await(e.liquidityVenues?Br(Pn(e.liquidityVenues).input):hp).resolveSwap({type:"swap",tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountIn:e.amountIn,maxSlippage:e.maxSlippage},e.chainId,e.recipient,e.selectedSwap);if(!t)throw new Error("No liquidity for this pair.");return t}async function gp(e){return p.addressesEqual(e.tokenIn,e.tokenOut)?Dl(e.amountOut):Os({customVenues:e.liquidityVenues?Pn(e.liquidityVenues).output:Rr.output}).getQuote({tokenIn:e.tokenIn,tokenOut:e.tokenOut,amountOut:e.amountOut,maxSlippage:e.maxSlippage},e.chainId,e.recipient)}function Nl(e){const{enabled:t=!0,direction:n,selectedAsset:s,destinationToken:o,chainId:r=o.chainId,recipient:i,paymentAmount:l,maxSlippage:c,refreshIntervalMs:d,resolveInputSwap:f,resolveExactOutputSwap:m}=e,h=u.useContext(p.SpiceFlowProviderContext),w=h?.liquidityVenues,g=JSON.stringify([h?.network,h?.apiUrl,h?.rpcOverrides]),[y,x]=u.useState(!1),[b,v]=u.useState(null),[C,k]=u.useState(null),[I,A]=u.useState(null),[F,R]=u.useState(null),[j,T]=u.useState(null),[P,O]=u.useState(null),[M,U]=u.useState(null),[E,D]=u.useState(null),[L,z]=u.useState(null),[se,de]=u.useState(null),[oe,Q]=u.useState(null),[J,X]=u.useState(null),[ee,K]=u.useState(null),[we,ve]=u.useState(0),[N,Z]=u.useState(null),[Y,G]=u.useState(null),pe=u.useRef(null),xe=u.useRef(null),ke=u.useRef(0),q=u.useRef(new Map),W=u.useCallback(()=>{ke.current++,q.current.clear(),G(null),ve(Pe=>Pe+1)},[]),_=d&&d>0?d:null,ce=w?JSON.stringify(w):"",$=u.useMemo(()=>w?Pn(w):Rr,[ce]),te=u.useMemo(()=>Br($.input),[$]),Ie=u.useMemo(()=>Os({customVenues:[...m?[{name:"consumer-exact-output",chainIds:[r],preferred:!0,resolve:m}]:[],...$.output]}),[m,r,$]);u.useEffect(()=>{q.current.clear()},[Ie]);const he=u.useMemo(()=>t?mp(s?.asset,r):null,[t,s?.asset,r]),fe=u.useMemo(()=>{if(!t||!s?.asset)return null;if(he)return he.destination.address;const Pe=rn(s.asset,r);if(Pe)return Pe;const lt=En(s.asset.address,r,s.asset.chainId);return lt?lt.address:null},[t,s?.asset,r,he]),Ae=u.useMemo(()=>t&&s?.asset?Kn(s.asset,r):[],[t,s?.asset,r]),We=u.useMemo(()=>Ae.map(Pe=>Pe.toLowerCase()).join(","),[Ae]),Ce=JSON.stringify([t,g,s?.asset.owner,s?.asset.location,s?.asset.receiptTokenId,s?.asset.address,s?.asset.chainId,s?.asset.decimals,s?.amount,r,We,n,l]);u.useEffect(()=>{let Pe=!1;if(xe.current&&(clearTimeout(xe.current),xe.current=null),!t||!s?.asset||he||Ae.length<=1){X(null),K(null);return}return xe.current=setTimeout(async()=>{const lt=n==="input"?s.amount:l||"0";let nt=0n;try{nt=n==="input"?Xt(lt,s.asset.decimals):0n}catch{nt=0n}try{const ot=await Da(s.asset,r,{requiredAmount:nt});Pe||(X(ot),K(Ce))}catch{Pe||X(null)}},400),()=>{Pe=!0,xe.current&&(clearTimeout(xe.current),xe.current=null)}},[Ce]);const ze=u.useMemo(()=>(ee===Ce?J:null)??fe,[J,ee,Ce,fe]),He=u.useMemo(()=>!s?.asset||!ze?[]:[ze,...Ae.filter(Pe=>Pe.toLowerCase()!==ze.toLowerCase())],[s?.asset,ze,Ae]),tt=u.useMemo(()=>!s?.asset||!xs(s.asset.address,s.asset.chainId,o.address,o.chainId)||!ze?!1:p.addressesEqual(ze,o.address),[s,o.address,o.chainId,ze]),_e=ze?p.addressesEqual(ze,o.address):!1,st=n==="output"&&parseFloat(l||"0")===0,ut=t&&!!s?.asset&&!tt&&!_e&&!st,pt=JSON.stringify([t,ce,n,ut,g,s?.asset.owner,s?.asset.location,s?.asset.receiptTokenId,s?.asset.address,s?.asset.chainId,s?.asset.decimals,n==="input"?s?.amount:l,He.map(Pe=>Pe.toLowerCase()),r,o.address.toLowerCase(),o.chainId,o.decimals,i?.toLowerCase(),c,_,he?.source.address.toLowerCase()??""]),Ye=u.useMemo(()=>({}),[pt,te,Ie,f,we]),it=Y?.request===Ye&&(!_||Y.expiresAt>Date.now());return u.useEffect(()=>{if(!_||Y?.request!==Ye)return;const Pe=setTimeout(W,Math.max(0,Y.expiresAt-Date.now()));return()=>clearTimeout(Pe)},[_,Y,Ye,W]),u.useEffect(()=>{pe.current&&clearTimeout(pe.current),Z(Ye),G(null),v(null);const Pe=n==="input"?s?.amount:l,lt=parseFloat(Pe||"0");if(!t||!Number.isFinite(lt)||lt<=0||!s?.asset||!i||He.length===0){ke.current++,k(null),A(null),R(null),T(null),O(null),U(null),D(null),Q(null),v(null),x(!1);return}const nt=s.asset.decimals;let ot;try{ot=n==="input"?Xt(s.amount,nt):Xt(l||"0",o.decimals)}catch(De){ke.current++,v(De instanceof Error?De.message:"Invalid amount or token precision"),x(!1);return}const kt=++ke.current,Xe=()=>kt!==ke.current;x(!0);const ht=n==="output"?150:100,je=async(De,ae,ue,Fe={chainId:r,tokenOut:o.address,amountIn:ot},Te=He)=>{for(const le of Te){const Le=`${g}:${ce}:${n}:${Fe.chainId}:${le.toLowerCase()}:${Fe.tokenOut.toLowerCase()}:${Fe.amountIn.toString()}:${i.toLowerCase()}:${c??"default"}:${_??"default"}`,Ve=q.current.get(Le),re=Ve&&Ve.expiresAt>Date.now()?De(Ve):void 0;if(re)return{quote:re,tokenIn:le,expiresAt:Ve.expiresAt};const ge=await ue(le);if(Xe())return"stale";if(!ge)continue;const Oe=Date.now()+Math.min(_??3e4,3e4);return q.current.set(Le,{expiresAt:Oe,direction:n,...ae(ge)}),{quote:ge,tokenIn:le,expiresAt:Oe}}return null},ct=De=>je(ae=>ae.resolvedSwap,ae=>({resolvedSwap:ae}),async ae=>{const ue=!he&&De.chainId===r&&s.asset._source!=="wallet",Fe=ue?await Sn(s.asset,ae,De.chainId,o):nt;if(Xe())return null;const Te=ue?_n(De.amountIn,nt,Fe):De.amountIn;if(p.addressesEqual(ae,De.tokenOut))return Ol(Te);const le={type:"swap",tokenIn:ae,tokenOut:De.tokenOut,amountIn:Te,maxSlippage:c};if(f){const Le=await f(le,De.chainId,i);if(Le)return Le}return te.resolveSwap(le,De.chainId,i)},De,De.candidates);return pe.current=setTimeout(async()=>{try{if(n==="input"){let De=null,ae=ot;if(he){if(De=await ct({chainId:he.source.chainId,tokenOut:he.source.address,amountIn:ot,candidates:[s.asset.address]}),De==="stale"||Xe())return;if(!De)throw new Error("No liquidity for this pair");ae=sn(De.quote.amountOutMinimum,he.source.decimals,he.destination.decimals,"floor")}const ue=ut||!he?await ct({chainId:r,tokenOut:o.address,amountIn:ae,candidates:He}):null;if(ue==="stale"||Xe())return;if(ut&&!ue)throw new Error("No liquidity for this pair");const Fe=ue?ue.quote.amountOut:ae,Te=Math.min(ue?.expiresAt??1/0,De?.expiresAt??1/0),le=he?.destination.decimals??await Sn(s.asset,ue.tokenIn,r,o),Le=!he&&s.asset._source!=="wallet"?_n(ae,nt,le):ae;if(Xe())return;Q(ue?.tokenIn??he?.destination.address??null),G({request:Ye,key:`${B.keccak256(B.toHex(pt))}:${kt}`,expiresAt:Te}),D(Fe),z(Le),de(le),R(ut?ue?.quote??null:null),T(De?.quote??null),O(null),U(null);const Ve=parseFloat(B.formatUnits(Fe,o.decimals));k(Ve<.01?Ve.toPrecision(4):Ve.toLocaleString(void 0,{maximumFractionDigits:6})),A(null),v(null)}else{const De=Le=>je(Ve=>Ve.exactOutputSwap,Ve=>({exactOutputSwap:Ve}),async Ve=>{try{return p.addressesEqual(Ve,Le.tokenOut)?Dl(Le.amountOut):await Ie.getQuote({tokenIn:Ve,tokenOut:Le.tokenOut,amountOut:Le.amountOut,maxSlippage:c},Le.chainId,i)}catch{return null}},{chainId:Le.chainId,tokenOut:Le.tokenOut,amountIn:Le.amountOut},Le.candidates),ae=!he||ut,ue=ae?await De({chainId:r,tokenOut:o.address,amountOut:ot,candidates:He}):null;if(ue==="stale"||Xe())return;if(ae&&!ue)throw new Error("No liquidity for this pair");let Fe=null;if(he){const Le=ue?ue.quote.amountInMax:ot;if(Fe=await De({chainId:he.source.chainId,tokenOut:he.source.address,amountOut:sn(Le,he.destination.decimals,he.source.decimals,"ceil"),candidates:[s.asset.address]}),Fe==="stale"||Xe())return;if(!Fe)throw new Error("No liquidity for this pair")}const Te=Fe?nt:await Sn(s.asset,ue.tokenIn,r,o);if(Xe())return;Q(ue?.tokenIn??he?.destination.address??null),G({request:Ye,key:`${B.keccak256(B.toHex(pt))}:${kt}`,expiresAt:Math.min(ue?.expiresAt??1/0,Fe?.expiresAt??1/0)}),U(ue?.quote??null),O(Fe?.quote??null),R(null),T(null),D(null);const le=Fe?.quote.amountIn??ue.quote.amountIn;A(B.formatUnits(le,Te)),k(null),v(null)}}catch(De){if(Xe())return;const ae=De instanceof Error?De.message:"Failed to get quote";v(ae),k(null),A(null),R(null),T(null),O(null),U(null),D(null),Q(null)}finally{Xe()||x(!1)}},ut||he?ht:0),()=>{ke.current++,pe.current&&clearTimeout(pe.current)}},[Ye]),{inputAmount:it&&n==="input"?L:null,inputDecimals:it&&n==="input"?se:null,quoteKey:it?Y.key:null,quoteExpiresAt:it?Y.expiresAt:null,refreshQuote:W,isQuoting:N===Ye?y:ut||!!he,quoteError:N===Ye?b:null,estimatedOutput:it?C:null,estimatedInput:it?I:null,resolvedSwap:it?F:null,exactOutputSwap:it?M:null,quoteAmountOut:it?E:null,resolvedTokenIn:ut&&it?oe??ze:ze,isDirect:_e,needsSwap:ut,selectedIsEquivalent:tt,sourceSwap:it?j:null,sourceExactOutputSwap:it?P:null,pivot:he}}function Ns(e){const{enabled:t=!0,destinationToken:n,selectedAsset:s,paymentAmount:o="0",sourceChains:r,supportedSourceAssets:i,buildActionCalls:l,feeExecutionMode:c="user-transfer",buildSpicenetBatch:d,onPayExecute:f,resolveExactOutputSwap:m,amountDirection:h=e.feeOnlyAction?"output":"input",onSuccess:w,onError:g}=e,y=Bl(n,t),x=y.token??Tr,b=t&&!!y.token,v=h==="output",C=h==="input-inclusive",k=e.feeFunding?.length!==0&&(e.actionProceeds==="output"||!!e.feeFunding?.length),I=v?"output":"input",A=x.chainId,F=u.useContext(p.SpiceFlowProviderContext),R=p.resolveFeeToleranceBps(F?.feeToleranceBps),j=F?.mode||"7702",T=!1,P=!!F?.isWhitelistGateActive,O=!!F?.isWhitelistConfigured&&F?.isUserWhitelisted!==!0,M=u.useMemo(()=>r??F?.supportedChainIds??[],[r,F?.supportedChainIds]),U=i,{address:E,isConnected:D,isReady:L,isAuthenticated:z,provider:se}=p.useWallet(),{execute:de,estimate:oe}=Is(),{externalWallet:Q,embeddedAddress:J,activeWallet:X,activeAddress:ee}=p.useProviderWallets(),K=F?.externalWalletAddress,we=F?.embeddedWalletAddress||J,ve=mr(we,t),N=s,Z=_s(N?.asset,j!=="7702"),Y=!!N&&N.asset.chainId===x.chainId&&p.addressesEqual(S.normalizeNativeTokenAddress(N.asset.address),S.normalizeNativeTokenAddress(x.address)),G=(j!=="7702"||e.actionExecution?.wallet==="external")&&Z&&Y&&(!v||Number(o)>0)&&!e.feeOnlyAction&&!e.actionProceeds,pe=Z&&!G,xe=e.actionExecution?.wallet==="external"&&!G,ke=xe?[x.chainId,...N?.asset._source==="wallet"?[N.asset.chainId]:[]].find(V=>!F?.rpcOverrides?.[V]):void 0,q=y.error?y.error:f?"Move onPayExecute protocol calls to buildActionCalls and application updates to onSuccess before continuing.":xe&&(v&&!(Number(o)>0)||e.feeOnlyAction||e.actionProceeds||e.prependSourceEscrow||S.isNativeToken(x.address))?"External wallet execution requires a positive ERC20 supply or payment with SDK-managed funding.":ke!==void 0?`Configure rpcOverrides for chain ${ke} before routing to the external caller.`:null,W=u.useMemo(()=>xe&&K?(V,me)=>dp(V,me,K):l,[xe,K,l]),{displayAssets:_,filteredSpiceAssets:ce,walletAssets:$,embeddedWalletAddress:te,refreshSpiceAssets:Ie,refreshWalletAssets:he,loading:fe,refreshing:Ae,error:We}=jl({address:E,destinationToken:x,supportedSourceAssets:U,sourceChains:M,additionalSourceTokens:[...e.additionalSourceTokens??[],...N?.asset._source==="wallet"?[{address:N.asset.address,chainId:N.asset.chainId,decimals:N.asset.decimals,symbol:N.asset.symbol,name:N.asset.name,logoURI:N.asset.logoURI}]:[]],includeExternalWalletAssets:e.includeExternalWalletAssets,includeCrossChainEmbeddedAssets:e.includeCrossChainEmbeddedAssets,enabled:b&&(j!=="7702"?!!K:!!we)}),Ce=!!e.combineSourceBalances,ze=JSON.stringify([...$,...ce],(V,me)=>typeof me=="bigint"?me.toString():me),He=u.useMemo(()=>[...$,...ce],[ze]),tt=Ce?JSON.stringify([we,A,ze]):"",_e=u.useCallback((V,me)=>{if(!Ce)return;const Ke=He.find(Ze=>ye(Ze)===ye(V));return Ke?Zi(Ke,He,we??void 0,A,void 0,me):void 0},[Ce,He,we,A]),st=u.useCallback(V=>!Ce||V.owner?.toLowerCase()!==we?.toLowerCase()||V.chainId!==A?!1:He.some(me=>me.owner?.toLowerCase()===V.owner?.toLowerCase()&&me.chainId===A&&(V.location==="embedded"&&me.location==="rollup"&&Object.keys(me.chainTokens??{}).some(Ke=>Ke.toLowerCase()===`evm:${A}:${V.address.toLowerCase()}`)||V.location==="rollup"&&me.location==="embedded"&&Object.keys(V.chainTokens??{}).some(Ke=>Ke.toLowerCase()===`evm:${A}:${me.address.toLowerCase()}`))),[Ce,we,A,He]),ut=u.useCallback(V=>{if(!Ce)return V.balance;const me=He.find(Ke=>ye(Ke)===ye(V));if(!(!me||me.balanceError||me.balanceStatus==="stale"))return st(me)?_e(me)?.availableBalance:me.balance},[Ce,He,st,_e]),pt=u.useMemo(()=>{if(!Ce)return _;const V=new Set;return _.filter(me=>{const Ke=_e(me);if(!Ke)return!0;const Ze=ye(Ke.escrow);return V.has(Ze)?!1:(V.add(Ze),!0)})},[_,Ce,_e]),Ye=k||e.feeFunding?.length!==0&&v&&!!N&&!!_e(N.asset),it=u.useMemo(()=>e.feeOnlyAction||Ye?_.filter(V=>V.balance>0n&&V.location!=="external"&&(V._source==="spice"||V._source==="wallet"&&V.chainId===A)):[],[_,e.feeOnlyAction,Ye,A]),Pe=N?[...$,...ce].find(V=>ye(V)===ye(N.asset)):void 0,lt=u.useMemo(()=>N&&Pe?{...N,asset:Pe}:N,[N,Pe]),nt=N?Tn(Pe??N.asset,"spend-source",{allowedTokens:F?.allowedTokens,rpcOverrides:F?.rpcOverrides,liquidityVenues:F?.liquidityVenues,isWhitelistGateActive:P},x,U):null,ot=Pe?_e(Pe):void 0,kt=Ce?Pe?ut(Pe):void 0:N?.asset.balance,Xe=N&&st(N.asset)?kt??0n:Pe?Pe.balance<(N?.asset.balance??0n)?Pe.balance:N.asset.balance:0n,[ht,je]=u.useState(!1),[ct,De]=u.useState(!1),ae=u.useRef(!1),ue=u.useRef(!1),Fe=u.useRef(!0);u.useLayoutEffect(()=>(Fe.current=!0,()=>{Fe.current=!1}),[]);const[Te,le]=u.useState(null),Le=u.useRef(g);Le.current=g;const Ve=u.useCallback(V=>{le(V),typeof V=="string"&&V&&Le.current?.(new Error(V),p.getRelayerErrorDetail(V))},[]),[re,ge]=u.useState("idle"),[Oe,Re]=u.useState(""),[jt,Ft]=u.useState(null),[Ne,ft]=u.useState(!1),[wt,vt]=u.useState(null),[Je,Tt]=u.useState(null),[Nn,xt]=u.useState(!1),[gn,Bt]=u.useState(!1),[on,bt]=u.useState(null),Ut=u.useRef(N),Vt=u.useRef(!1),$t=u.useRef(null),Qt=u.useRef(null),mt=u.useRef(null),Be=u.useRef(null),St=u.useRef(null),_t=u.useRef(null),Gt=u.useRef(w),Nt=u.useRef(null),Wt=u.useRef(!1),[Qe,Mt]=u.useState(null),[Ot,en]=u.useState(null),[cn,xn]=u.useState(!1),[yn,wn]=u.useState(0),Kt=wt?.status==="success"?wt.txHash:re==="success"?jt:null,Lt=!!Kt&&Qe!==Kt,ie=u.useRef(Lt);ie.current=Lt,u.useEffect(()=>{Ut.current=N},[N]);const ne=G?K:te||J||E,Se=b&&!ht&&re==="idle"&&!q&&!O&&!!ne&&!G&&!v&&C&&c==="user-transfer"&&!e.feeOnlyAction&&!e.actionInput&&!e.actionProceeds&&!!N&&Number(N.amount||"0")===0&&!!nt?.eligible&&Xe>0n,et=u.useMemo(()=>{if(!Se||!N)return N;const V=10n**BigInt(N.asset.decimals);return{...N,amount:B.formatUnits(Xe<V?Xe:V,N.asset.decimals)}},[Se,N,Xe]),Ue=Nl({enabled:b&&!O&&!G,direction:I,selectedAsset:et,destinationToken:x,chainId:A,recipient:ne,paymentAmount:o,resolveExactOutputSwap:m,resolveInputSwap:e.resolveInputSwap,maxSlippage:e.maxSlippage}),Ge=G?{...Ue,quoteKey:"direct-external",quoteExpiresAt:null,quoteAmountOut:null,inputAmount:null,inputDecimals:N?.asset.decimals??null,isQuoting:!1,quoteError:null,isDirect:!0,needsSwap:!1,selectedIsEquivalent:!0,resolvedTokenIn:x.address,resolvedSwap:null,exactOutputSwap:null,sourceSwap:null,sourceExactOutputSwap:null,pivot:null,estimatedInput:v?o:N?.amount??null,estimatedOutput:v?o:N?.amount??null}:Ue,Me=Ge,{isQuoting:Zt,resolvedSwap:Rt,exactOutputSwap:Pt,quoteAmountOut:tn,resolvedTokenIn:At,isDirect:qn,needsSwap:qt,selectedIsEquivalent:zn,sourceSwap:dn,sourceExactOutputSwap:bn,pivot:dt}=Ge,H=v?parseFloat(o||"0"):parseFloat(N?.amount||"")||0,be=N?.asset?._source==="wallet",$e=!!N?.asset&&be&&N.asset.chainId!==A,Ee=N?Number(B.formatUnits(Xe,N.asset.decimals)):0,Ct=u.useMemo(()=>{if(!N||v)return!1;try{return Xt(N.amount||"0",N.asset.decimals)>Xe}catch{return!0}},[N,v,Xe]);u.useEffect(()=>{b||(Ve(null),je(!1),Lt||(ge("idle"),Re(""),Ft(null),ft(!1),vt(null)),Tt(null),xt(!1),Bt(!1),bt(null),Vt.current=!1,$t.current&&($t.current.abort(),$t.current=null))},[b,Lt]);const gt=u.useCallback(V=>{ge({building:"building","signing-delegation":"signing-delegation","signing-intent":"signing-intent",submitting:"submitting",executing:"executing",success:"success",error:"error"}[V.step]||"executing"),Re(V.message),V.txHash&&Ft(V.txHash)},[]),Yt=u.useMemo(()=>({currentPaymentAmount:o,isFeeInclusiveInput:C,feeOnlyAction:e.feeOnlyAction,swapInputAmount:Ge.inputAmount,destinationToken:x,embeddedWalletAddress:te,providerEmbeddedAddress:J,externalWalletAddress:K,address:E,recipient:e.recipient??(j!=="7702"?K:void 0),isNon7702:T,isPayMode:v,resolvedChainId:A,buildActionCalls:W,feeExecutionMode:c,buildSpicenetBatch:d,selectedAsset:N,combinedSourceGroup:ot,needsSwap:qt,resolvedSwap:Rt,exactOutputSwap:Pt,quoteAmountOut:tn,resolvedTokenIn:At,sourceSwap:dn,sourceExactOutputSwap:bn,pivot:dt,resolveSourceExactOutputSwap:async V=>{if(!dt||!ne)throw new Error("Swap route is not ready.");const me=await gp({chainId:dt.source.chainId,recipient:ne,tokenIn:N.asset.address,tokenOut:dt.source.address,amountOut:V,liquidityVenues:F?.liquidityVenues,maxSlippage:e.maxSlippage}).catch(()=>null);if(!me)throw new Error("No liquidity for this pair.");return me},resolveInputSwap:async(V,me)=>{if(!At||!ne)throw new Error("Swap route is not ready.");return jr({chainId:A,recipient:ne,tokenIn:At,tokenOut:x.address,amountIn:V,selectedSwap:me,liquidityVenues:F?.liquidityVenues,maxSlippage:e.maxSlippage,resolveInputSwap:e.resolveInputSwap})}}),[o,x,te,J,K,E,e.recipient,e.feeOnlyAction,e.maxSlippage,e.resolveInputSwap,Ge.inputAmount,C,j,T,v,A,W,c,d,N,ot,qt,Rt,Pt,tn,At,dn,bn,dt,ne,F?.liquidityVenues]),Fn=u.useMemo(()=>N?.asset?dt?dt.destination.address:qt&&At?At:N.asset.chainId===A?N.asset.address:At??rn(N.asset,A)??x.address:x.address,[N,x.address,qt,A,At,dt]),zt=JSON.stringify([N&&ye(N.asset),h,e.actionExecution?.wallet,x.address,x.chainId,x.decimals,e.recipient,j,K,G?K:te,F?.apiUrl,F?.rpcOverrides,e.maxSlippage,c,R,e.feeOnlyAction,Ce,e.actionProceeds==="output"?"output":e.actionProceeds?.token,e.feeFunding,e.quotedInclusivePlatformFee,e.actionInput?.map(V=>[V.token,V.amount.toString()]),e.feeFundingReserve&&ye(e.feeFundingReserve.asset),e.feeFundingReserve?.amount.toString(),F?.liquidityVenues,F?.allowedTokens,P,U,M,e.actionInput,e.actionProceeds,e.feeFunding,A,Fn,Me.pivot?.source.address,Me.pivot?.destination.address],(V,me)=>typeof me=="bigint"?me.toString():me),Ps=u.useRef(null);Ps.current=b&&!ht&&!q&&!O?zt:null,u.useEffect(()=>()=>{St.current?.controller.abort(),St.current=null},[zt,b,ht,q,O]);const Ht=B.keccak256(B.stringToHex(JSON.stringify([zt,N?.amount,o]))),is=JSON.stringify([E,we,J,K,ee,L,z,D,se]),Dt=u.useRef({key:Ht,enabled:b,sourceBalance:Xe,physicalAssets:He,sourceEligible:nt?.eligible,externalSignerReady:!!Q&&!!K,owner:ne,walletScope:is,policyAvailable:!q&&!O}),ls=u.useRef(0);(Dt.current.key!==Ht||Dt.current.enabled!==b||Dt.current.owner!==ne||Dt.current.walletScope!==is||Dt.current.policyAvailable!==(!q&&!O))&&ls.current++,Dt.current={key:Ht,enabled:b,sourceBalance:Xe,physicalAssets:He,sourceEligible:nt?.eligible,externalSignerReady:!!Q&&!!K,owner:ne,walletScope:is,policyAvailable:!q&&!O};const cs=u.useRef(null),Us=u.useRef(!1),Ur=u.useRef(e.onSubmit);Ur.current=e.onSubmit;const Wr=u.useRef(e.beforeSubmit);Wr.current=e.beforeSubmit;const Ws=u.useCallback(async V=>{if(!Us.current||ae.current)return;ae.current=!0,Us.current=!1;const me=_t.current,Ke=Dt.current,Ze=ls.current,qe=me.feeQuote,yt=qe?.fundingSource,rt=vn=>JSON.stringify([vn?.fundingSource,vn?.sourceAllocation,vn?.feeSourceAllocation],(Qn,Eo)=>typeof Eo=="bigint"?Eo.toString():Eo),Et=rt(qe),un=Ur.current,nn=Le.current,ac={operationKey:Ke.key,feeQuote:qe,selectedAsset:me.selectedAsset};De(!0),le(null);try{try{await Wr.current?.(ac);const vn=Dt.current,Qn=_t.current;if(!Fe.current||Ze!==ls.current||!vn.enabled||vn.key!==Ke.key||vn.owner!==Ke.owner||!ue.current||Qn?.feeQuote!==qe||qe?.fundingSource!==yt||rt(qe)!==Et)throw new Error("The wallet, policy or accepted action quote changed. Review again before submitting.");me.validateFeeQuote?.(),un?.(),Gt.current=me.onSuccess,cs.current={key:Ke.key,quote:qe}}catch(vn){const Qn=p.sanitizeError(vn,"Unable to prepare this action");Fe.current&&(le(Qn),ge("idle")),nn?.(new Error(Qn),p.getRelayerErrorDetail(Qn));return}await(V?Sl(me):kl(me))}finally{ae.current=!1,Fe.current&&De(!1)}},[]),Lr=u.useCallback(()=>Ws(!1),[Ws]),Ls=G,qr=O,zr=!mt.current?.quote.fundedFeeToken&&(C||!!dt)&&!!Je&&Je.netAmount===0n,ds=u.useMemo(()=>!!e.feeOnlyAction||(!!N?.asset||!!e.actionProceeds)&&H>0,[N,H,e.actionProceeds,e.feeOnlyAction]),Mn=u.useMemo(()=>!b||!ds||!N?.asset&&!e.actionProceeds&&!e.feeOnlyAction?null:[Ht,tt,v?"pay":"supply",h,N?ye(N.asset):"sdk-funded",e.actionInput?.map(V=>`${V.token.toLowerCase()}:${V.amount}`).join(",")??"",e.feeFunding?.join(",")??"",e.quotedInclusivePlatformFee?"quoted-inclusive-fee":"split-inclusive-fee",JSON.stringify(F?.rpcOverrides),F?.apiUrl,e.recipient,N?.asset.address.toLowerCase(),N?.asset.chainId,N?.amount,o,x.address.toLowerCase(),x.chainId,A,Me.resolvedTokenIn?.toLowerCase()??"",Me.quoteKey,Me.needsSwap?"swap":"direct",Me.isDirect?"direct-token":"routed-token","7702",Y?"source-dest":"cross-chain",Me.isQuoting?"quoting":"quoted",Me.exactOutputSwap?.amountIn?.toString()??"",Me.exactOutputSwap?.amountInMax?.toString()??"",Me.exactOutputSwap?.venue??"",Me.resolvedSwap?.amountOut?.toString()??"",Me.quoteAmountOut?.toString()??"",Me.sourceSwap?.amountOutMinimum?.toString()??"",Me.sourceExactOutputSwap?.amountInMax?.toString()??"",Me.pivot?.source.address.toLowerCase()??"",te??"",J??"",E??""].join("|"),[b,Ht,tt,e.actionProceeds,e.feeOnlyAction,e.actionInput,e.feeFunding,e.quotedInclusivePlatformFee,ht,re,ds,Ls,N,v,h,o,x,A,Me,T,Y,te,J,E]),us=u.useCallback(async(V,me,Ke)=>{if(G){if(!K||!N)throw new Error("Connect the external wallet before continuing.");return ep({selectedAsset:me?.selectedAsset??N,destinationToken:x,paymentAmount:v?o:void 0,account:K,beneficiary:e.recipient,buildActionCalls:W,feeExecutionMode:c})}const Ze={...Ke??{...Yt,selectedAsset:et},requestTimestampMs:Date.now()};if(N&&st(N.asset)&&!ot)throw new Error("This source is unavailable.");const qe={combinedSourceGroup:ot,getCombinedSourceGroup:_e,signal:V,feeToleranceBps:R,externalGasRecipient:xe?K:void 0,externalGasCalls:xe?async rt=>(await Il({quote:rt,recipient:K,beneficiary:e.recipient,chainId:x.chainId,token:x.address,feeExecutionMode:c,buildCalls:l})).calls:void 0,feeOnlyAction:e.feeOnlyAction,actionInput:e.actionInput,actionProceeds:e.actionProceeds==="output"?void 0:e.actionProceeds,feeFunding:e.feeFunding,feeFundingBalances:it,feeFundingReserve:e.feeFundingReserve,liquidityVenues:F?.liquidityVenues,maxSlippage:e.maxSlippage,resolveExactOutputSwap:m,selectedAsset:et,isPayMode:v,isFeeInclusiveInput:C,quotedInclusivePlatformFee:e.quotedInclusivePlatformFee,parsedAmount:Se?Number(et.amount):H,needsSwap:Me.needsSwap,exactOutputSwap:Me.exactOutputSwap,isNon7702:T,isSourceDestToken:Y,currentPaymentAmount:o,destinationToken:x,feeExecutionMode:c,resolvedTokenIn:Me.resolvedTokenIn,embeddedWalletAddress:te,providerEmbeddedAddress:J,resolvedChainId:A,isConnected:D,address:E,ready:L,authenticated:z,isDirect:Me.isDirect,resolvedSwap:Me.resolvedSwap,sourceSwap:Me.sourceSwap,sourceExactOutputSwap:Me.sourceExactOutputSwap,pivot:Me.pivot,isQuoting:Me.isQuoting,executionTokenAddress:Fn,buildPayChainBatches:rt=>yo(Ze,rt),buildSupplyChainBatches:rt=>wo(Ze,rt),estimate:oe,...me},yt=!qe.feeOnlyAction&&qe.selectedAsset&&Ye&&(qe.selectedAsset.asset._source==="wallet"||!!qe.combinedSourceGroup)&&qe.selectedAsset.asset.chainId===A;if(Ye&&!qe.feeOnlyAction&&qe.selectedAsset&&!yt&&e.feeFunding&&e.feeFunding.join(",")!==bo.join(","))throw new Error("Fee-source overrides require a wallet source on the action chain.");return yt||Ye&&e.actionProceeds==="output"?$u(qe,Ze,Wn,e.actionProceeds==="output"):Wn(qe)},[N,Ye,ot,_e,st,et,Se,G,xe,l,K,e.recipient,W,e.feeOnlyAction,e.actionInput,e.actionProceeds,e.feeFunding,e.quotedInclusivePlatformFee,it,e.feeFundingReserve,e.maxSlippage,m,R,F?.liquidityVenues,v,C,H,Me,T,Y,o,x,c,te,J,Yt,oe,A,D,E,L,z,Fn]);u.useEffect(()=>{Qt.current=us},[us]);const Io=u.useCallback(async V=>{if(v)return null;if(!N||ye(V)!==ye(N.asset)||!ne||!At)throw new Error("Select a source before calculating Max.");let me=ut(V);if(me===void 0)throw new Error("This source is unavailable.");if(G){if(!V.isNative&&!S.isNativeToken(V.address))return B.formatUnits(me,V.decimals);const Ke=p.getClientForChain(V.chainId),Ze=K;let qe=me;for(let yt=0;yt<8;yt++){const rt=await us(void 0,{selectedAsset:{asset:V,amount:B.formatUnits(yt===0?1n:qe,V.decimals)}});if(!rt?.actionDefinition)throw new Error("The direct action could not be sized.");const Et=await Ti({client:Ke,account:Ze,calls:rt.actionDefinition.calls}),un=me>Et?me-Et:0n;if(un===0n)return"0";if(yt>0&&qe<=un)return B.formatUnits(qe,V.decimals);qe=un}throw new Error("Network gas could not be reserved for Max. Enter a smaller amount.")}if(pe&&(V.isNative||S.isNativeToken(V.address))){if(!K)throw new Error("Connect the source wallet before calculating Max.");const Ke=await Bi({client:p.getClientForChain(V.chainId),account:K,recipient:ne,token:V.address,isNative:!0,amount:1n});me-=Ke}return Ye&&C&&V._source==="wallet"&&V.chainId===A?B.formatUnits(me>0n?me:0n,V.decimals):hl({balance:me,decimals:V.decimals,planForAmount:async Ke=>{const Ze={...Yt,requestTimestampMs:Date.now(),selectedAsset:{asset:V,amount:B.formatUnits(Ke,V.decimals)}};let qe=Ke;dt?(Ze.sourceSwap=await jr({chainId:V.chainId,recipient:ne,tokenIn:V.address,tokenOut:dt.source.address,amountIn:Ke,maxSlippage:e.maxSlippage,liquidityVenues:F?.liquidityVenues,resolveInputSwap:e.resolveInputSwap}),qe=sn(Ze.sourceSwap.amountOutMinimum,dt.source.decimals,dt.destination.decimals,"floor")):qe=_n(Ke,V.decimals,await Sn(V,At,A,x)),Ze.resolvedSwap=qt?await Ze.resolveInputSwap(qe):null,Ze.swapInputAmount=qe,Ze.quoteAmountOut=Ze.resolvedSwap?.amountOut??qe;const yt=Ye&&V._source==="wallet"&&V.chainId===A,rt=await us(void 0,{selectedAsset:Ze.selectedAsset,...yt?{isFeeInclusiveInput:!0}:{},parsedAmount:Number(Ze.selectedAsset.amount),sourceSwap:Ze.sourceSwap,resolvedSwap:Ze.resolvedSwap,isQuoting:!1,buildSupplyChainBatches:Et=>wo(Ze,Et)},Ze);return yt&&rt?.fundingSource?.kind==="input"&&!C?{...rt,sourceSpendCap:Ke+(Ke-rt.swapInputAmount)}:rt}})},[N,Ye,Yt,v,G,ne,At,A,x,pe,K,dt,qt,us,ut,e.maxSlippage,e.resolveInputSwap,e.actionProceeds,e.feeFunding,e.quotedInclusivePlatformFee,C,F?.liquidityVenues]),$l=JSON.stringify([zt,is,ze,N?.asset,e.feeFundingReserve,e.actionExecution?.recoveryKey,qt,At,dt,b,q,O],(V,me)=>typeof me=="bigint"?me.toString():me),Hr=u.useRef(Io);u.useLayoutEffect(()=>{Hr.current=Io},[Io]);const Vr=u.useCallback(V=>Hr.current(V),[$l,W,d,m,e.resolveInputSwap,typeof e.actionProceeds=="object"?e.actionProceeds.resolve:void 0,oe]);er({shouldRun:b&&!ht&&re==="idle"&&(ds||Se)&&!Me.isQuoting&&(!!Mn||Se),deps:[b,ht,re,ds,Ls,Me.isQuoting,Mn,Se,zt],onSkip:()=>{if(!b){Be.current=null,xt(!1),Bt(!1),bt(null),Tt(null);return}if(ht||re!=="idle"){xt(!1);return}if(!ds){Tt(null),xt(!1),Bt(!1),bt(null);return}Me.isQuoting&&(xt(!1),Bt(!1))},onCleanup:()=>xt(!1),delayMs:Me.needsSwap||Me.pivot?0:100,backgroundIntervalMs:3e4,run:async({isBackground:V,isCurrent:me,signal:Ke})=>{if(Se){const qe=Be.current;if(qe?.scope===zt&&Date.now()-qe.at<3e4||St.current?.scope===zt&&Date.now()-St.current.at<3e4)return;St.current?.controller.abort();const yt=new AbortController,rt=Qt.current?.(yt.signal).then(Et=>{yt.signal.aborted||Ps.current!==zt||!Et?.feeEstimate||(Be.current={scope:zt,at:Date.now(),feeEstimate:Et.feeEstimate,sourceGasSkim:Et.sourceGasSkim})}).catch(Et=>{yt.signal.aborted||console.debug("[SpiceSupply] fee prewarm unavailable:",Et)})??Promise.resolve();St.current={scope:zt,at:Date.now(),controller:yt,promise:rt},await rt;return}const Ze=Mn;V||(bt(null),xt(!0));try{if(St.current?.scope===zt&&await St.current.promise,Ke.aborted||!me())return;const qe=Be.current,yt=!v&&qe?.scope===zt&&Date.now()-qe.at<3e4?qe:void 0;let rt;try{rt=await Qt.current?.(Ke,yt?{initialFeeEstimate:yt.feeEstimate,initialSourceGasSkim:yt.sourceGasSkim}:void 0)}catch(Et){if(!yt||Ke.aborted||!me())throw Et;rt=await Qt.current?.(Ke)}if(!me())return;if(rt&&Ze){const Et=xe?await Il({quote:rt,recipient:K,beneficiary:e.recipient,chainId:x.chainId,token:x.address,feeExecutionMode:c,buildCalls:l}):void 0;if(Et&&rt.externalGasReserve?.nativeAmount&&(Et.calls.length>rt.externalGasReserve.currentTransactions||Et.calls.reduce((un,nn)=>un+nn.value,0n)>rt.externalGasReserve.currentValue))throw new Error("The external action gas requirement changed. Refresh the quote.");if(Ke.aborted||!me())return;mt.current={key:Ze,quote:rt,externalAction:Et},rt.feeEstimate&&(Be.current={scope:zt,at:Date.now(),feeEstimate:rt.feeEstimate,sourceGasSkim:rt.sourceGasSkim}),Tt(rt.preview),Bt(!0)}else mt.current=null,Tt(null),Bt(!1);bt(null)}catch(qe){if(!me())return;if(V&&mt.current?.key===Ze){console.warn("[SpiceSupply] fee refresh failed:",qe);return}const yt=p.sanitizeError(qe,"Unable to calculate fees for this action.");mt.current=null,Tt(qe instanceof Er?qe.preview:null),Bt(!1),bt(yt)}finally{me()&&xt(!1)}}});const Qr=u.useCallback(()=>Ws(!0),[Ws]);u.useEffect(()=>{if(!Kt||Nt.current===Kt)return;Nt.current=Kt;const V=Gt.current;Wt.current=!0,xn(!0),en(null),Promise.resolve().then(()=>V?.(Kt)).then(()=>{Mt(Kt),Ie(),he()}).catch(me=>{en(`Transaction confirmed; application update needs retry: ${p.sanitizeError(me,"Unable to finalize the action")}`)}).finally(()=>{Wt.current=!1,xn(!1)})},[Kt,yn]);const Gr=Lt&&!Ot,_l=u.useCallback(()=>{!ie.current||Wt.current||(Nt.current=null,wn(V=>V+1))},[]),ec=u.useCallback(()=>{ie.current||(ft(!1),vt(null),Vt.current=!1,Ie(),he())},[Ie,he]),at=Mn&&mt.current?.key===Mn?mt.current.quote:null,ps=at?mt.current?.externalAction:void 0,tc=ls.current,qs=(V=!0)=>{if(q)throw new Error(q);if(!Fe.current||!Dt.current.enabled||Dt.current.key!==Ht||ls.current!==tc||Dt.current.walletScope!==is||!Dt.current.policyAvailable)throw new Error("The source, amount, beneficiary or configuration changed. Review the form before continuing.");if(xe&&!Dt.current.externalSignerReady)throw new Error("Connect the external wallet before funding.");if((N||e.feeOnlyAction)&&!at)throw new Error("A current action plan is required. Refresh the quote before submitting.");if(G&&N?.asset.owner&&!p.addressesEqual(N.asset.owner,K))throw new Error("Reconnect the external wallet that owns the selected asset.");if(V&&N&&(at?.sourceSpendCap??0n)>Dt.current.sourceBalance)throw new Error("The source balance changed. Review the available amount before continuing.");if(V&&N&&!Dt.current.sourceEligible)throw new Error(nt?.reason??"This source is unavailable.");if(V)for(const me of[at?.sourceAllocation,at?.feeSourceAllocation])me&&Cr(me,Dt.current.physicalAssets,Dt.current.owner??void 0,A)},Hn=async()=>{qs();for(const V of[at?.sourceAllocation,at?.feeSourceAllocation]){if(!V)continue;const me=V.positions.find(Ze=>Ze.asset.location==="embedded"),Ke=await p.getClientForChain(V.chainId).readContract({address:V.token,abi:B.erc20Abi,functionName:"balanceOf",args:[V.owner]});qs(),Cr(V,Dt.current.physicalAssets.map(Ze=>me&&ye(Ze)===me.positionId?{...Ze,balance:Ke}:Ze),V.owner,V.chainId)}},Kr=V=>({...V,sourceSpendCap:at?.sourceSpendCap,minimumDestinationAmount:at?.destinationAmount}),zs=at?.sourceAllocation?.insufficient||at?.feeSourceAllocation?.insufficient?!0:N&&at?.sourceSpendCap!==void 0?at.sourceSpendCap>Xe:Ct,Zr={...Yt,resolvedSwap:at?.destinationSwap??Yt.resolvedSwap,swapInputAmount:at?.swapInputAmount??Yt.swapInputAmount};let Hs=!1;_t.current={selectedAsset:N,parsedAmount:H,currentPaymentAmount:o,isInsufficientBalance:zs,isPayMode:v,isFeeInclusiveInput:C,quotedInclusivePlatformFee:e.quotedInclusivePlatformFee,feeOnlyAction:e.feeOnlyAction,actionProceeds:e.actionProceeds==="output"?void 0:e.actionProceeds,validateFeeQuote:()=>qs(!Hs),isNon7702:T,directExternalAction:G,isSourceDestToken:Y,needsSwap:qt,exactOutputSwap:Pt,selectedIsEquivalent:zn,resolvedTokenIn:At,sourceSwap:dn,sourceExactOutputSwap:bn,pivot:dt,embeddedWalletAddress:te,providerEmbeddedAddress:J,externalWallet:Q,externalWalletAddress:K,activeSignerWallet:X,activeSignerAddress:ee,address:E,isConnected:D,ready:L,authenticated:z,provider:se,resolvedChainId:A,executionTokenAddress:Fn,destinationToken:x,buildActionCalls:W,feeExecutionMode:c,feeToleranceBps:R,buildSpicenetBatch:d,onPayExecute:f,onSuccess:w,feeQuote:at,execution:{estimate:(V,me,Ke,Ze)=>oe(V,me,Ke,{...Ze,userOverride:ne}),execute:async(V,me,Ke,Ze,qe,yt)=>{const rt=async()=>Hs?qs(!1):Hn();if(await Hn(),await ul(at?.externalGasReserve),xe&&!ps)throw new Error("The external action plan is unavailable.");if(G){if(!at?.actionDefinition)throw new Error("The direct action plan is unavailable.");return El({definition:at.actionDefinition,account:K,chainId:x.chainId,wallet:Q,assertCurrent:Hn})}pe&&N&&(Re("Transfer the selected source to your embedded wallet"),await Fl({asset:N.asset,embedded:ne,external:K,externalWallet:Q,amount:at?.sourceSpendCap??0n,assertCurrent:Hn}),Hs=!0,await rt());const Et=await de(V,me,Ke,xe?nn=>Ze?.(nn.step==="success"?{...nn,step:"executing",message:"Funds delivered. Confirm the action in your external wallet.",txHash:void 0}:{...nn,txHash:void 0}):Ze,qe,{...yt,userOverride:ne,requireDestinationReceipt:!0,resolveActionOutputCredits:async()=>[...await yt?.resolveActionOutputCredits?.()??[],...at?.externalGasReserve?.nativeAmount&&!S.isNativeToken(Fn)?[{chainId:A,token:S.ZERO_ADDRESS,amount:at.externalGasReserve.nativeAmount}]:[]],walletFundingRequirement:at?.sourceAllocation?{chainId:at.sourceAllocation.chainId,token:at.sourceAllocation.token,amount:at.sourceAllocation.positions.find(nn=>nn.asset.location==="embedded")?.amount??0n}:N?.asset._source==="wallet"&&at?.sourceSpendCap!==void 0?{chainId:N.asset.chainId,token:N.asset.address,amount:at.sourceSpendCap}:void 0,validateBeforeSubmit:async nn=>{if(await rt(),await ul(at?.externalGasReserve,nn),await yt?.validateBeforeSubmit?.(nn),xe&&Al(nn,x.address,x.chainId,K)!==ps.amount)throw new Error("The external delivery changed. Review the quote before continuing.")}});if(!xe)return Et;Hs=!0;const un=async()=>{if(qe?.aborted)throw new Error("Execution transaction aborted");await rt()};return await un(),await up({hash:Et,token:x.address,chainId:x.chainId,recipient:K,sender:ne,amount:ps.amount}),await un(),El({definition:ps,account:K,chainId:x.chainId,wallet:Q,assertCurrent:un})},buildPayChainBatches:async V=>vo(await yo(Zr,Kr(V)),at?.externalGasReserve),buildSupplyChainBatches:async V=>vo(await wo(Zr,Kr(V)),at?.externalGasReserve),onProgress:gt},ui:{setError:Ve,setStep:ge,setStatusMsg:Re,setTxHash:Ft,setIsExecuting:je,setShowStatusPanel:ft,setPaymentResult:vt},refs:{spiceDepositSubmittedRef:Vt,abortControllerRef:$t}};const Vn=!!e.isZeroAmountPay&&!e.feeOnlyAction&&v&&H===0,nc=v?(Vn||!!N?.asset||!!e.actionProceeds||!!e.feeOnlyAction)&&H>=0&&!zs&&!ht&&(Vn||Ls||gn)&&!on&&(Vn||e.feeOnlyAction||!qt||!!Pt)&&(Vn||e.feeOnlyAction||!dt||!!bn)&&!qr:!!N?.asset&&H>0&&!zs&&!ht&&(G||gn)&&!on&&!zr&&(dt?!!dn&&!Zt&&(qn||!!Rt):$e||qn||!!Rt&&!Zt)&&!qr,Yr=(G||L&&z&&D&&!!E)&&!q&&!!ne&&(!xe||!!ps&&!!Q&&!!K)&&(!G||!!Q&&(!N?.asset.owner||p.addressesEqual(N.asset.owner,K)))&&(j==="7702"||!!K)&&!Lt&&!cn&&!Ot&&b&&nc&&(Vn||!N&&(!!e.actionProceeds||!!e.feeOnlyAction)||!!nt?.eligible)&&re!=="success"&&wt?.status!=="success"&&!Ge.quoteError&&(Vn||!!Mn&&mt.current?.key===Mn);ue.current=Yr;const Xr=Yr&&!e.submitDisabled&&!ct&&!ae.current;Us.current=Xr;const Ao=u.useCallback(()=>{ie.current||(Us.current=!1,mt.current=null,Bt(!1),Ue.refreshQuote(),ge("idle"),Ve(null),Re(""),vt(null),ft(!1))},[Ue.refreshQuote,Ve]),Jr=u.useRef(Ht);u.useEffect(()=>{const V=Jr.current!==Ht;Jr.current=Ht,(V||p.isUserRejection(Te))&&re==="error"&&!ht&&cs.current&&cs.current.key!==Ht&&Ao()},[Ht,re,ht,Te,Ao]);const sc=u.useCallback(()=>{ft(!1)},[]),oc=u.useCallback(()=>{ie.current||(ge("idle"),Ft(null),Ie())},[Ie]),It=at??(mt.current?.key.startsWith(`${Ht}|`)?mt.current.quote:null)??(cs.current?.key===Ht?cs.current.quote:null),rc=async V=>{if(G)throw new Error("This source executes directly from the external wallet; submit the action without embedded funding.");if(!(!pe||!N)){if(!at||V!==at.sourceSpendCap)throw new Error("Use the displayed source funding maximum before preparing this action.");await Hn(),await Fl({asset:N.asset,embedded:ne,external:K,externalWallet:Q,amount:V,assertCurrent:Hn})}};return{operationKey:Ht,feeQuote:It,selectedAsset:lt,capability:nt,assets:{getAvailableBalance:ut,selectable:pt,displayAssets:pt,filteredSpiceAssets:ce,embeddedWalletAddress:te,externalAddress:K,isNon7702:j!=="7702",refreshSpiceAssets:Ie,refreshWalletAssets:he,loading:fe,refreshing:Ae,error:We},quote:{...Ge,...Se?{quoteKey:null,quoteExpiresAt:null,quoteError:null,isQuoting:!1,estimatedInput:null,estimatedOutput:null,quoteAmountOut:null,inputAmount:null,resolvedSwap:null,sourceSwap:null,exactOutputSwap:null,sourceExactOutputSwap:null}:{},hasSourceConversion:!!dt,executionInput:dt&&It?{address:dt.destination.address,chainId:dt.destination.chainId,decimals:dt.destination.decimals,amount:It.preview.netAmount}:null,...It?.destinationSwap?{resolvedSwap:It.destinationSwap,inputAmount:It.swapInputAmount,estimatedOutput:B.formatUnits(It.destinationSwap.amountOut,x.decimals)}:{},...It?.fundedFeeToken&&It.destinationAmount!==void 0?{estimatedOutput:B.formatUnits(It.destinationAmount+(It.destinationSwap?It.destinationSwap.amountOut-It.destinationSwap.amountOutMinimum:0n),x.decimals)}:{}},fees:{fundingConversion:It?.fundingConversion,fundingSource:It?.fundingSource,proceedsUsed:It?.proceedsUsed,fundingShortfall:It?.grossFundingAmount,source:dt&&It?{address:dt.source.address,chainId:dt.source.chainId,symbol:dt.source.symbol,decimals:dt.source.decimals,gasFee:It.sourceGasSkim??0n,spicenetFee:0n}:null,destinationAmount:It?.destinationAmount,sourceSpendCap:It?.sourceSpendCap,preview:Se?null:It?.preview??Je,isLoading:!Se&&Nn,ready:!Se&&!!at,error:Se?null:on},amount:{availableBalance:kt,sourceRequiredAmount:It?.sourceSpendCap??null,parsed:H,isInsufficientBalance:zs,sourceBalance:Ee,feesExceedAmount:zr},status:{activity:ve,finalizing:cn||Gr,finalizationError:Ot,step:Lt&&re==="success"?"executing":re,statusMsg:Lt?Ot??"Transaction confirmed. Updating application...":Oe,txHash:jt,isExecuting:ht||ct||Gr,error:q||Ot||Te||nt?.reason||null,showStatusPanel:Ne,paymentResult:Lt&&wt?.status==="success"?{...wt,status:"processing"}:wt},flags:{directExecutionFeeNote:Ls},retryFinalization:_l,fundEmbeddedSource:rc,canExecute:Xr,submit:v?Qr:Lr,submitSupply:Lr,submitPay:Qr,retrySupply:Ao,dismissPaymentStatus:sc,resolveMaxAmount:Vr,max:()=>N?Vr(N.asset):Promise.resolve(null),resetAfterSuccess:oc,resetPaymentState:ec}}function xp(e){const{asset:t,amount:n,recipient:s,owner:o,onSuccess:r}=e,i=!!t&&!!e.destination&&e.destination.chainId!==t.chainId,l=e.destination?.chainId??t?.chainId??e.sourceChains?.[0]??0,c=u.useMemo(()=>S.getTokensForChain(l).find(v=>v.equivalenceGroup==="USDC"),[l]),d=u.useCallback((v,C)=>{const k=!i&&v===0n?n:v;if(!t||n<=0n||n>t.balance||!i&&k>n||!s||!o||p.addressesEqual(o,s))throw new Error("Enter a valid withdrawal amount and recipient.");if(C.chainId!==l||!p.addressesEqual(C.executorAddress??C.userAddress,o))throw new Error("The withdrawal wallet or network changed. Review the withdrawal again.");if(i&&(!e.destination||e.destination.symbol!=="USDC"||v<=0n))throw new Error("A USDC withdrawal quote is required for this network.");return xo(l,i?e.destination.address:t.address,[{recipient:s,amount:k}]).calls},[t?.address,t?.chainId,t?.balance,n,s,o,l,i,e.destination?.address,e.destination?.symbol]),f=u.useMemo(()=>t?[{address:t.address,chainId:t.chainId,symbol:t.symbol,decimals:t.decimals,logoURI:t.logoURI}]:void 0,[t?.address,t?.chainId,t?.symbol,t?.decimals,t?.logoURI]),m=Ns({enabled:e.enabled&&!!c&&!!t&&n>0n&&!!s&&!!o&&!p.addressesEqual(o,s),amountDirection:"input-inclusive",quotedInclusivePlatformFee:!0,feeFunding:bo,destinationToken:e.destination??{address:t?.address??S.ZERO_ADDRESS,symbol:t?.symbol??"",decimals:t?.decimals??6,chainId:l},recipient:s,selectedAsset:t?{asset:t,amount:B.formatUnits(n,t.decimals)}:null,additionalSourceTokens:f,sourceChains:e.sourceChains,includeCrossChainEmbeddedAssets:!0,includeExternalWalletAssets:!1,feeExecutionMode:i?"user-transfer":"backend-transfer",buildActionCalls:d,buildSpicenetBatch:Ts,onError:(v,C)=>e.onError?.(v.message,C),onSuccess:async()=>{if(!t)return;const v=m.fees.destinationAmount;if(i&&(v==null||v<=0n))throw new Error("The confirmed withdrawal amount is unavailable.");window.dispatchEvent(new CustomEvent("withdraw-completed")),await r?.({token:i?"USDC":t.symbol,amount:B.formatUnits(i?v:n,i?e.destination.decimals:t.decimals),chainId:l})}}),h=`${e.enabled}:${t?.chainId}:${t?.address}:${n}:${s}:${o}:${l}:${e.destination?.address}`,w=u.useRef(h);u.useEffect(()=>{w.current===h||m.status.isExecuting||(w.current=h,(m.status.step==="success"||m.status.paymentResult?.status==="success")&&m.resetAfterSuccess())},[h,m.status.isExecuting,m.status.step,m.status.paymentResult?.status,m.resetAfterSuccess]);const g=m.fees.fundingSource,y=g?.kind==="input"?m.fees.fundingConversion?.amountInMax??m.fees.proceedsUsed??0n:0n,x=g?.kind==="input"?t:g?.asset,b=x?x._source==="wallet"?m.fees.fundingConversion?.amountInMax??m.fees.proceedsUsed:m.amount.sourceRequiredAmount:null;return{supply:m,source:x,maximumFeeFunding:b,feeFromAmount:y}}const Ml=p.font.ui,yp=({label:e,loading:t,balance:n,dark:s,dk:o})=>{const r=s?o.textSecondary:"#7D7C7B",i=s?o.textSecondary:"#71757A";return a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsx("span",{style:{fontFamily:Ml,fontSize:"17px",fontWeight:500,color:r,lineHeight:"24px"},children:e}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontFamily:Ml,fontSize:"13px",fontWeight:500,color:i,lineHeight:"16px"},children:["Balance:"," ",t?"...":n===null?"\u2014":p.formatBalance(n)]})]})},Pl=({isOpen:e,position:t,title:n,items:s,selectedId:o,onSelect:r,portalAttribute:i})=>{const{dark:l,dk:c,primaryColor:d}=p.useSpiceBrand(),[f,m]=u.useState(null),[h,w]=u.useState(!1);return u.useEffect(()=>{if(!e){w(!1);return}const g=requestAnimationFrame(()=>{requestAnimationFrame(()=>w(!0))});return()=>cancelAnimationFrame(g)},[e]),!e||!t||s.length===0?null:Gn.createPortal(a.jsxs("div",{[`data-${i}-popover`]:"true",style:{position:"fixed",top:`${t.top}px`,left:`${t.left}px`,opacity:h?1:0,transform:h?"scale(1) translateY(0)":"scale(0.96) translateY(-6px)",transition:`opacity 200ms ${p.easing.out}, transform 200ms ${p.easing.out}`,backgroundColor:l?c.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 ${c.cardBorder}`,minWidth:"220px",zIndex:p.z.dropdown,fontFamily:p.font.mono},children:[a.jsx("div",{style:{marginBottom:"6px"},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:l?c.textPrimary:"#0e0d0b",textTransform:"uppercase",letterSpacing:"1px"},children:n})}),a.jsx("div",{style:{borderBottom:`1px solid ${c.cardBorder}`,marginBottom:"6px"}}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:s.map(g=>{const y=o===g.id,x=f===g.id;return a.jsxs("button",{onClick:b=>{b.stopPropagation(),r(g.id)},onMouseEnter:()=>m(g.id),onMouseLeave:()=>m(null),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 4px",borderRadius:"8px",border:"none",cursor:"pointer",backgroundColor:y?l?c.hoverBg:"#f3f4f6":x?l?c.cardBg:"#f9fafb":"transparent",transition:"background-color 0.15s",width:"100%",fontFamily:p.font.mono},children:[g.icon&&a.jsx("img",{src:g.icon,alt:g.label,style:{width:"22px",height:"22px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:y?700:500,textTransform:"uppercase",color:l?c.textPrimary:"#0e0d0b",letterSpacing:"0.5px",flex:1,textAlign:"left"},children:g.label}),g.detail&&a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:c.textSecondary},children:g.detail}),y&&a.jsx(vi,{color:d,style:{flexShrink:0}})]},g.id)})})]}),document.body)},ko=p.font.ui,wp=p.font.mono,bp=170,vp=({header:e,amount:t,receiveAmountDisplay:n,receiveUsdEstimate:s,selectedDestToken:o,destTokenSymbol:r,destChainName:i,destChainLogo:l,compatibleDestinationChains:c,networkSwitchRef:d,onOpenNetworkPopover:f,showNetworkPopover:m,setShowNetworkPopover:h,networkPopoverPos:w,selectedChainId:g,setSelectedChainId:y,dark:x,dk:b})=>{const v=x?b.cardBg:"#E9E9E9",C=x?b.cardBorder:"#C6C6C6",k=x?b.textSecondary:"#71757A",I=x?b.textPrimary:"#0E0D0B",A=x?b.cardBorder:"#C5C5C4",F=x?"rgba(255,255,255,0.08)":"#D4D3D3",R=r.length>8?"14px":r.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:v,border:`1px solid ${C}`,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(Un,{element:"div",value:n,title:n,fontFamily:ko,color:t?I:"#A8A8A7",lineHeight:"0.95",maxFontSize:54,minFontSize:32,overflow:"wrap"}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:k,fontFamily:ko,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 ${A}`,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||td,alt:r,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:R,fontWeight:500,color:I,lineHeight:"1.3",fontFamily:ko,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 ${A}`},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:I,fontFamily:ko,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:i})]}),a.jsx("button",{ref:d,onClick:j=>{j.stopPropagation(),f(d.current)},style:{background:"none",border:"none",cursor:c.length>1?"pointer":"not-allowed",padding:"0 0 0 8px",fontSize:"9.5px",fontFamily:wp,color:k,textDecoration:"underline",fontWeight:600,opacity:c.length>1?1:.45},children:"Switch"}),a.jsx(Pl,{isOpen:m,position:w,title:"SELECT NETWORK",portalAttribute:"network",items:c.map(j=>{const T=p.getChainConfig(j);return{id:String(j),label:T?.displayName||String(j),icon:Bn[j]||ws}}),selectedId:g!==null?String(g):null,onSelect:j=>{y(Number(j)),h(!1)}})]})]}),a.jsx("div",{style:{minHeight:"14px"}})]})]})]})},Cp=p.font.ui,Dn=p.font.mono,kp=({show:e,onToggle:t,showCustomAddress:n,setShowCustomAddress:s,customRecipient:o,setCustomRecipient:r,externalAddress:i,recipientAddress:l,destChainName:c,destChainLogo:d,compatibleDestinationChains:f,txDetailsChainSwitchRef:m,onOpenNetworkPopover:h,sourceChainLabel:w,sourceDetailsLogo:g,sourceTokenLabel:y,amount:x,totalSourceDebitDisplay:b,receiveAmountDisplay:v,destTokenSymbol:C,shouldQuoteWithdrawGas:k,estimatingFee:I,feeError:A,displayedGasFee:F,selectedDestToken:R,theme:j,styles:T,dark:P,dk:O})=>{const M=P?O.textSecondary:"#71757A",U=P?O.textPrimary:"#0E0D0B",E=f.length>1,D=n&&o?B.isAddress(o)?p.truncateAddress(o):o:l?p.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:Cp,fontWeight:600},children:"Transaction Details"}),a.jsx(tu,{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:Dn,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:U,fontFamily:Dn,fontWeight:500},children:D}),a.jsx("button",{onClick:()=>{s(L=>!L),!n&&i&&r(i)},style:{background:"none",border:"none",cursor:"pointer",padding:"0",fontSize:"9.5px",fontFamily:Dn,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:Dn,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&&!B.isAddress(o)?!0:void 0,"data-spiceflow-focus":!0,value:o,onChange:L=>r(L.target.value),placeholder:"0x...",style:{width:"100%",padding:"8px 10px",borderRadius:"6px",border:`1px solid ${o&&!B.isAddress(o)?P?O.errorBorder:"#fca5a5":P?O.inputBorder:"#d1d5db"}`,backgroundColor:P?O.inputBg:"#f9fafb",color:P?O.inputText:"#111827",fontSize:"12px",fontFamily:Dn,outline:"none",boxSizing:"border-box"}}),o&&!B.isAddress(o)&&a.jsx("span",{style:{fontSize:"11px",color:O.errorText,marginTop:"3px",display:"block"},children:"Invalid address"})]})]}),a.jsx(ln,{palette:O,labelColor:M,valueColor:U,label:"RECEIVING CHAIN",value:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"7px"},children:[d&&a.jsx("img",{src:d,alt:c,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:"13px",color:U,fontWeight:500,fontFamily:Dn,textTransform:"uppercase"},children:c}),a.jsx("button",{ref:m,onClick:L=>{L.stopPropagation(),h(m.current)},style:{background:"none",border:"none",cursor:E?"pointer":"not-allowed",padding:"0",fontSize:"9.5px",fontFamily:Dn,color:M,textDecoration:"underline",fontWeight:600,opacity:E?1:.45},children:"Switch"})]})}),a.jsx(ln,{palette:O,labelColor:M,valueColor:U,label:"REQUESTED WITHDRAWAL",value:a.jsxs(Or,{logo:g||null,alt:w,primaryText:U,children:[x||"0"," ",y]})}),k&&a.jsx(ln,{palette:O,labelColor:M,valueColor:U,label:"TOTAL SOURCE DEBIT",value:a.jsxs(Or,{logo:g||null,alt:w,primaryText:U,children:[b," ",y]})}),a.jsx(ln,{palette:O,labelColor:M,valueColor:U,label:"YOU RECEIVE",value:a.jsxs(Or,{logo:d,alt:c,primaryText:U,gap:"4px",children:[v," ",C]})}),k&&a.jsxs(a.Fragment,{children:[a.jsx(ln,{palette:O,labelColor:M,label:"EST. NETWORK FEE",valueColor:A?"#f87171":U,value:I?"Estimating...":A?"Unavailable":F!==null&&R?`${yr(F,R.decimals)} ${R.symbol}`:"Estimating..."}),A&&a.jsx(Jt,{variant:"error",size:"compact",palette:O,fontFamily:T?.fontFamily||j.typography.fontFamily,children:A})]})]})]})},Sp=u.memo(kp),Or=({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:Dn},children:o})]}),Ms=p.font.ui,Ip=170,Ap=({header:e,amount:t,setAmount:n,isInsufficient:s,sourceAmountDecimals:o,selectedSourceAsset:r,resolvedSelectedSourceAsset:i,spiceAssets:l,setSelectedSourceAsset:c,sourceUsdEstimate:d,sourceTokenLabel:f,sourceChainLabel:m,totalSelectedBalance:h,showSourceTokenPopover:w,setShowSourceTokenPopover:g,tokenPopoverPos:y,setTokenPopoverPos:x,tokenTriggerRef:b,primaryColor:v,dark:C,dk:k})=>{const I=p.useAssetDisplay(),A=i?I({...i,logoURI:i._source==="wallet"?i.logoURI:ys}).logoURI:ys,F=C?k.cardBg:"#E9E9E9",R=C?k.cardBorder:"#C6C6C6",j=C?k.textSecondary:"#71757A",T=C?k.textPrimary:"#0E0D0B",P=C?k.cardBorder:"#C5C5C4",O=C?"rgba(255,255,255,0.08)":"#D4D3D3",M=f.length>8?"14px":f.length>6?"16px":"18px";return a.jsxs("div",{style:{backgroundColor:F,border:`1px solid ${R}`,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(Un,{element:"input",ariaLabel:"Withdraw amount",ariaInvalid:s,dataSpiceflowFocus:!0,value:t,onChange:U=>{const E=U.target.value;if(E===""){n("");return}/^\d*\.?\d*$/.test(E)&&n(p.parseNumericInput(E.startsWith(".")?`0${E}`:E,o??r?.decimals))},placeholder:"0.0",fontFamily:Ms,color:s?"#ef4444":t?T:"#A8A8A7",lineHeight:"0.95",maxFontSize:54,minFontSize:32,style:{width:"100%"}}),a.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:j,fontFamily:Ms,marginTop:"10px"},children:d})]}),a.jsx("div",{style:{width:`${Ip}px`,flexShrink:0},children:a.jsxs("div",{style:{backgroundColor:"transparent",border:`1px solid ${P}`,borderRadius:"8px",overflow:"hidden",width:"100%",display:"flex",flexDirection:"column",boxSizing:"border-box"},children:[a.jsxs("div",{ref:b,onClick:U=>{if(U.stopPropagation(),!w&&b.current){const E=b.current.getBoundingClientRect(),D=220,L=16;x({top:E.bottom+8,left:Math.min(Math.max(L,E.right-D),window.innerWidth-D-L)})}g(E=>!E)},style:{display:"flex",alignItems:"center",gap:"6px",padding:"9px 10px 8px 10px",cursor:"pointer"},children:[A&&a.jsx("img",{src:A,alt:f,style:{width:"24px",height:"24px",borderRadius:"50%"}}),a.jsx("span",{style:{fontSize:M,fontWeight:500,color:T,lineHeight:"1.3",fontFamily:Ms,flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",letterSpacing:0},children:f}),a.jsx(Jn,{size:15,color:T,strokeWidth:2.25})]}),a.jsx(Pl,{isOpen:w,position:y,title:"SELECT TOKEN",portalAttribute:"token",items:(l||[]).map(U=>({id:ye(U),label:I({...U,displaySymbol:U.displaySymbol||(U._source==="wallet"?U.symbol:U.receiptTokenName)}).symbol,icon:I({...U,logoURI:U._source==="wallet"?U.logoURI:ys}).logoURI||void 0,detail:`${p.formatBalance(U.balanceFormatted)} \xB7 ${U._source==="wallet"?p.getChainConfig(U.chainId)?.displayName||U.chainId:"Spicenet"}`})),selectedId:i?ye(i):null,onSelect:U=>{const E=(l||[]).find(D=>ye(D)===U);E&&(c(E),n("")),g(!1)}}),a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 10px",backgroundColor:O,borderTop:`1px solid ${P}`},children:a.jsx("span",{style:{fontSize:"11px",fontWeight:400,color:T,fontFamily:Ms,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textTransform:"uppercase"},children:m})})]})})]}),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:Ms,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((U,E)=>{const D=E===4,L=parseFloat(t)||0,z=h>0&&Math.abs(L/h*100-U)<1;return a.jsx("button",{type:"button","aria-label":`Set amount to ${U}%`,"aria-pressed":z,onClick:()=>{const se=i?.balance??0n;n(U===0?"":B.formatUnits(se*BigInt(U)/100n,o??r?.decimals??6))},title:`${U}%`,disabled:h===0,"data-spiceflow-focus":!0,style:{width:"32px",height:"32px",padding:"9px",border:"none",backgroundColor:"transparent",cursor:h===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(dr,{pct:U,isMax:D,primaryColor:v,dark:C,fillColor:C?k.textSecondary:"#3C3E42"})},U)})})]})]})},Ep=({dark:e,dk:t})=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[a.jsx("img",{src:_o,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:p.font.ui},children:"Withdraw collateral from your account to 10+ EVM blockchains."})]}),Fp=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,onWithdrawExecute:o,onWithdrawSuccess:r,onWithdrawError:i,availableTokens:l,initialSourceAssetId:c,walletAssets:d,buildSpicenetBatch:f=Ts})=>{const m=u.useContext(p.SpiceFlowProviderContext);if(!m)return a.jsx("div",{children:"Error: SpiceWithdraw must be used within SpiceFlowProvider"});const h=m.mode||"7702",w=h==="presign"||h==="ondemand",g=m.supportedChainIds,y=m.allowedTokens,x=d?.initialAsset,b=u.useMemo(()=>[...d?.extraAssets??[],...x?[x]:[]].map(ie=>({address:ie.address,chainId:ie.chainId,symbol:ie.symbol,decimals:ie.decimals})),[d?.extraAssets,x]),v=m.isWhitelistGateActive,{theme:C,dark:k,dk:I}=p.useSpiceBrand(s),A=p.useAssetDisplay(),F=m.network,R=()=>w?"select":"provider-login",[j,T]=u.useState(R()),[P,O]=u.useState(!1),[M,U]=u.useState(null),[E,D]=u.useState(null),[L,z]=u.useState(""),[se,de]=u.useState(!1),[oe,Q]=u.useState(!1),[J,X]=u.useState(!1),[ee,K]=u.useState(""),[we,ve]=u.useState(!0),N=u.useRef(null),Z=u.useRef(null),Y=u.useRef(null),[G,pe]=u.useState(null),[xe,ke]=u.useState(null),q=p.useWallet(),{isReady:W,isAuthenticated:_,address:ce}=q,$=m?.embeddedWalletAddress,{address:te,chainId:Ie}=Cn.useAccount(),he=m.externalWalletAddress||te,[fe,Ae]=u.useState(!1),[We,Ce]=u.useState(null),ze=u.useRef(i);ze.current=i;const He=u.useCallback(ie=>{Ce(ie),typeof ie=="string"&&ie&&ze.current?.(ie,p.getRelayerErrorDetail(ie))},[]),[tt,_e]=u.useState(null),st=u.useRef(null),ut=u.useRef(!0),pt=u.useRef(null);u.useEffect(()=>(ut.current=!0,()=>{ut.current=!1}),[]);const{execute:Ye,estimate:it}=Is(),Pe=mr(ce,e),[lt,nt]=u.useState(null),[ot,kt]=u.useState(null),[Xe,ht]=u.useState(!1),[je,ct]=u.useState(null),{assets:De,loading:ae,error:ue,refresh:Fe}=Xn({owner:$,role:"holding",includeWalletAssets:!0,additionalSourceTokens:b,enabled:e&&!!$}),Te=u.useMemo(()=>{if(v)return[];const ie=(ne,Se)=>(Se.balanceUsd||0)-(ne.balanceUsd||0);return(De??[]).filter(ne=>ne.balance>0n&&Tn(ne,"holding",{allowedTokens:y,isWhitelistGateActive:v}).eligible).sort(ie)},[De,y,v]),le=u.useMemo(()=>[...new Set([...g??[],...Object.keys(l??{}).map(Number),...(Te||[]).map(ie=>ie.chainId),...(Te||[]).flatMap(ie=>Object.keys(ie.chainTokens??{}).map(ne=>{const[,Se]=ne.split(":"),et=Number(Se);return Number.isFinite(et)?et:null}).filter(ne=>ne!==null))])].filter(ie=>p.getChainConfig(ie)?.network===F),[g,l,Te,F]),Le=u.useMemo(()=>{if(l)return l;const ie={};for(const ne of Te||[]){const Se=Object.entries(ne.chainTokens??{});if(Se.length>0){for(const[et,Ue]of Se){const[Ge,Me,Zt]=et.split(":");if(Ge!=="evm"||!Me||!Zt)continue;const Rt=Number(Me);if(!Number.isFinite(Rt))continue;const Pt=Zt.startsWith("0x")?Zt.toLowerCase():`0x${Zt.toLowerCase()}`,tn=p.getChainConfig(Rt)?.supportedTokens?.find(At=>p.addressesEqual(At.address,Pt));tn&&Lo(ne,Pt,Rt)&&(ie[Rt]||(ie[Rt]=[]),ie[Rt].find(At=>p.addressesEqual(At.address,Pt))||ie[Rt].push({address:Pt,symbol:tn?.symbol||Ue?.name||ne.symbol,name:tn?.name||Ue?.name||ne.displayName||ne.name||ne.symbol,decimals:tn?.decimals??Ue?.decimals??ne.decimals,logoURI:tn?.logo||ne.logoURI}))}continue}ie[ne.chainId]||(ie[ne.chainId]=[]),ie[ne.chainId].find(et=>p.addressesEqual(et.address,ne.address))||ie[ne.chainId].push({address:ne.address,symbol:ne.symbol,name:ne.displayName||ne.name||ne.symbol,decimals:ne.decimals,logoURI:ne.logoURI})}return ie},[l,Te]),Ve=u.useCallback((ie,ne)=>{const Se=Fu(ie,ne,ne?ie?._source==="wallet"?l?.[ne]??[]:Le[ne]??[]:[]);return!ie||!Se||!ne?null:ie._source==="wallet"||Tn(ie,"withdraw-destination",m,{...Se,chainId:ne}).eligible?Se:null},[Le,l,m.allowedTokens,m.rpcOverrides,m.isWhitelistGateActive]),re=u.useMemo(()=>M?Te.find(ie=>ye(ie)===ye(M))??null:null,[M,Te]),ge=re?re.balanceError:ue,Oe=re?._source==="wallet",Re=u.useMemo(()=>{if(!re)return[];const ie=Object.keys(re.chainTokens??{}).map(ne=>hn(ne)?.chainId??null).filter(ne=>ne!==null);return Array.from(new Set([...ie,re.chainId,...le].filter(Number.isFinite))).filter(ne=>p.getChainConfig(ne)?.network===F&&(re._source==="wallet"||Ve(re,ne)!==null))},[re,le,Ve,F]),jt=u.useMemo(()=>{if(!re||typeof window>"u")return null;const ie=`spiceflow:withdraw-chain:${re.receiptTokenId||re.address.toLowerCase()}`,ne=window.localStorage.getItem(ie),Se=ne?Number(ne):null;return Se!==null&&Number.isFinite(Se)&&Re.includes(Se)?Se:null},[re,Re]),Ft=u.useMemo(()=>re?re._source==="wallet"?re.chainId:jt!==null?jt:Ie&&Re.includes(Ie)?Ie:re.chainId&&Re.includes(re.chainId)?re.chainId:Re[0]??null:le[0]??null,[re,jt,Ie,Re,le]),Ne=u.useMemo(()=>Ve(re,E),[Ve,re,E]);u.useEffect(()=>{e&&(U(null),z(""))},[e,c,x?.address,x?.chainId]),u.useEffect(()=>{if(!e||!Te.length||M)return;const ie=x?Te.find(ne=>ne.chainId===x.chainId&&p.addressesEqual(ne.address,x.address)&&ne._source==="wallet"):c?Te.find(ne=>ne.receiptTokenId===c):Te[0];U(ie??null),z("")},[e,Te,M,c,x]);const ft=u.useRef(null);u.useEffect(()=>{if(!re){ft.current=null;return}const ie=ye(re),ne=ft.current!==ie;ft.current=ie,(ne&&re._source==="wallet"||E===null||!Re.includes(E))&&D(Ft)},[re,E,Ft,Re]),u.useEffect(()=>{if(!se&&!oe)return;const ie=ne=>{const Se=ne.target;se&&!N.current?.contains(Se)&&!Z.current?.contains(Se)&&!Se?.closest?.("[data-network-popover]")&&de(!1),oe&&!Y.current?.contains(Se)&&!Se?.closest?.("[data-token-popover]")&&Q(!1)};return document.addEventListener("mousedown",ie),()=>document.removeEventListener("mousedown",ie)},[se,oe]);const wt=u.useCallback(ie=>{if(!ie||Re.length<=1)return;const ne=ie.getBoundingClientRect(),Se=220,et=16;pe({top:ne.bottom+8,left:Math.min(Math.max(et,ne.right-Se),window.innerWidth-Se-et)}),de(Ue=>!Ue)},[Re.length]),vt=u.useCallback(()=>ve(ie=>!ie),[]);u.useEffect(()=>{if(!re||E===null||typeof window>"u")return;const ie=`spiceflow:withdraw-chain:${re.receiptTokenId||re.address.toLowerCase()}`;window.localStorage.setItem(ie,String(E))},[re,E]);const Je=J?B.isAddress(ee)?ee:void 0:he||(Oe?void 0:$),Tt=Xn({owner:Je,role:"holding",includeRollupAssets:!1,sourceChains:E?[E]:[],additionalSourceTokens:Ne&&E?[{...Ne,chainId:E}]:[],enabled:e&&!!Je&&!!Ne&&!!E}),Nn=Tt.walletAssets.find(ie=>p.addressesEqual(ie.owner,Je)&&ie.chainId===E&&p.addressesEqual(ie.address,Ne?.address)),xt=re?.balanceFormatted??0,gn=re?A(Oe?re:{...re,displaySymbol:re.displaySymbol||re.receiptTokenName,logoURI:ys}):void 0,Bt=gn?.symbol||"Select token",on=re?.displayChainName||(Oe?p.getChainConfig(re.chainId)?.displayName:"Spicenet")||"Network",bt=re?.receiptTokenDecimals??re?.decimals,Ut=u.useMemo(()=>{if(!Ne||bt===void 0)return 0n;try{return Xt(L||"0",bt)}catch{return 0n}},[L,Ne,bt]),Vt=u.useMemo(()=>!Ne||bt===void 0?0n:Nu(Ut,bt,Ne.decimals),[Ne,bt,Ut]),$t=ot??lt,Qt=Ut,mt=xp({enabled:e&&Oe&&!!Ne,destination:Ne&&E?{...Ne,chainId:E}:null,asset:Oe?re:null,amount:Ut,recipient:Je,owner:$,sourceChains:g,onSuccess:r,onError:i}),Be=mt.supply,St=Oe&&E!==re?.chainId,_t=Oe?Be.fees.ready?Be.fees.destinationAmount??0n:0n:Vt>($t??0n)?Vt-($t??0n):0n,Gt=Oe&&E?Ne?Tn(re,"spend-source",m,{...Ne,chainId:E}).reason:"USDC withdrawal is unavailable on this network. Choose another network.":null,Nt=fe||Oe&&(Be.status.isExecuting||Be.status.finalizing),Wt=Be.status.step==="success"||Be.status.paymentResult?.status==="success",Qe=u.useCallback(ie=>{if(Oe||!E||!Ne)return[];if(Ut===0n||Vt===0n||!Je)return[];const ne=Array.isArray(ie)?ie.filter(Ge=>Ge.amount>0n):[{token:Ne.address,recipient:Je,amount:ie??Vt}],Se=ne.reduce((Ge,Me)=>Ge+Me.amount,0n);if(Se<=0n)return[];const et={chainId:E,calls:[],tokenTransfers:ne.map(Ge=>({from:"escrow",to:Ge.recipient,token:Ge.token,amount:Ge.amount}))},Ue=f({destinationChainId:E,deliveryToken:Ne.address,deliveryAmount:Se,deliveryRecipient:Je,deliveryTransfers:ne,requestTimestampMs:pt.current??Date.now()});return Ue?[Ue,et]:[et]},[Oe,E,Ne,Ut,Vt,Je,f]),Mt=u.useMemo(()=>Qe(),[Qe]),Ot=u.useMemo(()=>Mu(Mt,Ne?.address),[Mt,Ne?.address]),en=u.useRef(null),cn=!Oe&&e&&!w&&!fe&&!!Ne&&!!E&&Ut!==0n;er({shouldRun:cn&&Mt.length>0&&!!Ot,deps:[cn,Mt.length>0,Ot],delayMs:500,onSkip:()=>{en.current=null,nt(null),ct(null),ht(cn&&Mt.length===0)},onCleanup:()=>ht(!1),run:async({isCurrent:ie,signal:ne})=>{const Se=Ot;ht(!0),ct(null);try{const et=await Du({batches:Mt,tokenAddress:Ne.address,chainId:E,estimate:it,signal:ne});if(!ie())return;en.current={key:Se,quote:et},nt(et.gasFee)}catch(et){if(!ie())return;en.current=null,nt(null),ct(et instanceof Error?et.message:"Failed to estimate gas fee")}finally{ie()&&ht(!1)}}}),u.useEffect(()=>{fe||kt(null)},[fe,L,E,Ne?.address]);const xn=u.useCallback(()=>{O(!0),T("select")},[]),yn=u.useCallback(()=>{Nt||t()},[t,Nt]),wn=u.useRef(null);wn.current={batches:Mt,walletAddress:ce,recipient:Je,token:Ne,chainId:E,amount:L,grossAmountRaw:Vt,gasFee:lt,feeEstimate:Ot&&en.current?.key===Ot?en.current.quote.feeEstimate:null,isNon7702:w,buildWithdrawBatches:Qe,execution:{estimate:it,execute:Ye},ui:{setIsExecuting:Ae,setExecutionError:He,setExecutionProgress:_e,setLockedGasFee:kt},executionContextRef:st,isMountedRef:ut,onWithdrawExecute:o,onWithdrawSuccess:r,buildSpicenetBatch:f};const Kt=u.useCallback(()=>(pt.current=Date.now(),Qi(wn.current)),[]),Lt=u.useCallback(()=>Gi(wn.current),[]);if(u.useEffect(()=>{if(!e){const ie=setTimeout(()=>{T(R()),O(!1),U(null),D(null),z(""),de(!1),Q(!1),X(!1),K(""),Ae(!1),He(null),_e(null),st.current=null},300);return()=>clearTimeout(ie)}},[e,w]),u.useEffect(()=>{if(!w&&e&&j==="provider-login"&&W&&_&&$&&!P){const ie=setTimeout(()=>{O(!0),T("select")},100);return()=>clearTimeout(ie)}},[w,e,j,W,_,$,P]),!e)return null;if(j==="provider-login"&&!w)return a.jsx(hr,{onAuthSuccess:xn,autoTrigger:!0});if(j==="select"){const ie=parseFloat(L)||0,ne=bt?yr(Qt,bt):L||"0",Se=!!re&&Qt>re.balance,et=(E?p.getChainConfig(E):null)?.displayName||"Network",Ue=E?Bn[E]||ws:null,Ge=Ne?.symbol||"\u2014",Me=Bt,Zt=Ne?yr(_t,Ne.decimals):"0",Rt=re&&re.balanceFormatted>0?re.balanceUsd/re.balanceFormatted:void 0,Pt=re?.priceStatus==="stale",tn=Ki(ie,Rt,Pt),At=Ki(parseFloat(Zt)||0,St?void 0:Rt,Pt),qn=(!J||B.isAddress(ee))&&(!Oe||!p.addressesEqual(Je,$)),qt=!w&&!Oe&&ie>0&&Ne!==null,zn=!qt||lt!==null&&!Xe&&!je,dn=ie>0&&!Se&&!ae&&!ge&&re!==null&&E!==null&&Ne!==null&&!Gt&&Je&&qn&&zn&&_t>0n&&(!Oe||Be.canExecute&&!Wt),bn=!dn,dt=ae?"LOADING BALANCES":ge?"BALANCES UNAVAILABLE":re===null?"NO BALANCE":ie===0?"ENTER AMOUNT":Se?"INSUFFICIENT BALANCE":qt&&!zn?je?"GAS UNAVAILABLE":"ESTIMATING GAS":qt&&_t===0n?"AMOUNT TOO SMALL":Oe&&!Be.canExecute?"REVIEW FEES":"WITHDRAW",H=!!tt&&(tt.step==="success"||tt.step==="error"),be=s?.primaryColor||C.colors.primary,$e=402,Ee=(Ct,gt,Yt)=>a.jsx(yp,{label:Ct,loading:Yt,balance:gt,dark:k,dk:I});return a.jsx(an,{isOpen:!0,onClose:yn,title:"Withdraw",subtitle:a.jsx(Ep,{dark:k,dk:I}),styles:s,theme:C,dark:k,maxWidth:"486px",footerLinkText:"Spicenet accounts \u2192",overlayDimmed:!1,closeOnBackdropClick:n,overlayContent:H?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(gr,{type:"withdraw",isOpen:!0,isProcessing:Nt,onRetryTx:()=>{Lt()},onNewTx:()=>{_e(null),z(""),He(null),st.current=null},onClose:()=>{_e(null),He(null),Ae(!1),st.current=null},onComplete:()=>{_e(null),He(null),Ae(!1),st.current=null},results:[{asset:{symbol:Ne?.symbol||"Token",address:Ne?.address||""},txHash:tt?.txHash||"",success:tt?.step==="success",error:tt?.error,amount:L}],chainId:E??void 0,theme:C})})}):null,children:a.jsxs("fieldset",{disabled:Nt,style:{border:0,minWidth:0,width:"calc(100% - 32px)",maxWidth:`${$e}px`,margin:"0 auto",padding:"0 0 4px 0",position:"relative"},children:[a.jsx(ho,{activity:Pe,palette:I,onRefresh:()=>{Fe()}}),a.jsxs("div",{style:{marginTop:"16px",marginBottom:"16px",display:"flex",flexDirection:"column",gap:"16px"},children:[a.jsx(Ap,{header:Ee("Source",xt,ae),amount:L,setAmount:z,isInsufficient:Se,sourceAmountDecimals:bt,selectedSourceAsset:re,resolvedSelectedSourceAsset:re,spiceAssets:Te,setSelectedSourceAsset:U,sourceUsdEstimate:tn,sourceTokenLabel:Me,sourceChainLabel:on,totalSelectedBalance:xt,showSourceTokenPopover:oe,setShowSourceTokenPopover:Q,tokenPopoverPos:xe,setTokenPopoverPos:ke,tokenTriggerRef:Y,primaryColor:be,dark:k,dk:I}),a.jsx(vp,{header:Ee("Destination",Nn?.balanceFormatted??null,Tt.loading),amount:L,receiveAmountDisplay:Zt,receiveUsdEstimate:At,selectedDestToken:Ne,destTokenSymbol:Ge,destChainName:et,destChainLogo:Ue,compatibleDestinationChains:Re,networkSwitchRef:N,onOpenNetworkPopover:wt,showNetworkPopover:se,setShowNetworkPopover:de,networkPopoverPos:G,selectedChainId:E,setSelectedChainId:D,dark:k,dk:I})]}),a.jsxs("div",{style:{marginBottom:C.spacing.sm},children:[a.jsx(Sp,{show:we,onToggle:vt,showCustomAddress:J,setShowCustomAddress:X,customRecipient:ee,setCustomRecipient:K,externalAddress:he,recipientAddress:Je,destChainName:et,destChainLogo:Ue,compatibleDestinationChains:Re,txDetailsChainSwitchRef:Z,onOpenNetworkPopover:wt,sourceChainLabel:on,sourceDetailsLogo:re?gn?.logoURI:ys,sourceTokenLabel:Me,amount:L,totalSourceDebitDisplay:ne,receiveAmountDisplay:Zt,destTokenSymbol:Ge,shouldQuoteWithdrawGas:qt,estimatingFee:Xe,feeError:je,displayedGasFee:$t,selectedDestToken:Ne,theme:C,styles:s,dark:k,dk:I}),St&&a.jsx(Jt,{variant:"info",size:"compact",palette:I,children:Be.fees.ready?`You receive ${Zt} USDC on ${et}`:`USDC on ${et} \u2014 ${Gt||Be.fees.error||Be.quote.quoteError||"waiting for quote"}`}),Oe&&Be.fees.ready&&a.jsxs(a.Fragment,{children:[a.jsx(ln,{palette:I,label:"TOTAL SOURCE DEBIT",value:`${ne} ${Me}`}),a.jsx(ln,{palette:I,label:"MINIMUM RECEIVED",value:`${Zt} ${Ge}`}),a.jsx(ln,{palette:I,label:St?"DESTINATION FEES":"EST. FEE",value:Be.fees.preview?.totalFee!==void 0?`${B.formatUnits(Be.fees.preview.totalFee,Be.fees.preview.decimals)} ${Be.fees.preview.symbol}`:"Unavailable"})]}),St&&Be.fees.ready&&Be.fees.source&&a.jsx(ln,{palette:I,label:"SOURCE NETWORK FEE",value:`${B.formatUnits(Be.fees.source.gasFee,Be.fees.source.decimals)} ${Be.fees.source.symbol}`}),Gt&&a.jsx(Jt,{variant:"warning",size:"compact",palette:I,children:Gt}),Oe&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[!St&&a.jsx(ln,{palette:I,label:"FEE ASSET",value:Be.fees.isLoading?"Estimating...":mt.source?`${A(mt.source).symbol} \xB7 ${mt.source._source==="spice"?"Spicenet":p.getChainConfig(mt.source.chainId)?.displayName}`:"Unavailable"}),!St&&a.jsx(ln,{palette:I,label:"MAXIMUM FEE FUNDING",value:Be.fees.isLoading?"Estimating...":Be.fees.ready&&mt.source&&mt.maximumFeeFunding!=null?`${B.formatUnits(mt.maximumFeeFunding,mt.source.decimals)} ${A(mt.source).symbol}`:"Unavailable"}),!Wt&&(Be.status.error||Be.fees.error||Be.quote?.quoteError)&&a.jsx(Jt,{variant:"error",size:"compact",palette:I,children:Be.status.error||Be.fees.error||Be.quote?.quoteError}),!Wt&&Be.status.finalizationError&&a.jsx(p.Button,{variant:"outline",dark:k,disabled:Be.status.finalizing,onClick:()=>void Be.retryFinalization(),children:"Retry application update"}),!Wt&&Be.status.step==="error"&&Be.status.error==="Transaction fees changed. Refresh the quote before submitting."&&a.jsx(p.Button,{variant:"outline",dark:k,disabled:Be.status.isExecuting,onClick:Be.retrySupply,children:"Refresh quote"}),Be.status.statusMsg&&a.jsx("span",{role:"status",children:Be.status.statusMsg})]}),re&&!ae&&Re.length===0&&a.jsx(Jt,{variant:"warning",size:"compact",palette:I,children:"No withdrawal networks are available for this asset."}),We&&a.jsx(Jt,{variant:"error",size:"compact",palette:I,fontFamily:s?.fontFamily||C.typography.fontFamily,style:{marginBottom:"12px"},children:We}),ue&&a.jsxs(Jt,{variant:ge?"error":"warning",size:"compact",palette:I,children:[ge?"Unable to load this balance. Please try again.":"Some other balances could not be refreshed."," ",a.jsx("button",{type:"button",onClick:()=>void Fe(),children:"Retry"})]}),a.jsx(p.Button,{variant:"outline",fullWidth:!0,onClick:()=>{if(dn)if(Oe){if(St&&_t<=0n)return;Be.submitSupply()}else Kt()},disabled:bn||Nt,theme:C,dark:k,styles:s,style:{marginTop:"8px"},children:Nt?"EXECUTING...":Oe&&Wt?"WITHDRAWN":dt})]})]})})}return null},Dr=Fp,Tp=({onDepositClick:e,onWithdrawClick:t,depositDisabled:n=!1,withdrawDisabled:s=!1,primaryColor:o="#EA4B4B",buttonStyles:r,dark:i=!1})=>{if(!e&&!t)return null;const l={button:{backgroundColor:o,...r}};return a.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e&&a.jsx(p.Button,{variant:"outline",onClick:e,disabled:n,dark:i,styles:l,style:{flex:1,height:"44px",fontSize:"12px"},children:"Deposit"}),t&&a.jsx(p.Button,{variant:"outline",onClick:()=>t(),disabled:s,dark:i,styles:l,style:{flex:1,height:"44px",fontSize:"12px"},children:"Withdraw"})]})},Bp=u.memo(Tp),Rp=({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",{role:o.onClick?"button":void 0,tabIndex:o.onClick?0:void 0,onClick:o.onClick,onKeyDown:o.onClick?i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),o.onClick?.())}:void 0,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))})]})},jp=u.memo(Rp);var Op="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 Dp=({appName:e,status:t,statusLabel:n,totalUsdValue:s,breakdownSubtitle:o,showUsdSummary:r=!0,address:i,dk:l,dark:c=!1,showModeToggle:d,isEmbeddedMode:f=!0,onModeToggle:m})=>{const[h,w]=u.useState(!1),g=async()=>{i&&await p.copyToClipboard(i)&&(w(!0),setTimeout(()=>w(!1),2e3))},y=t==="active",x=n||(y?"Active":"Inactive"),b=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:l.textPrimary},children:[e," Account"]}),d?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?l.hoverBg:"#f3f4f6",border:c?`1px solid ${l.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"11px",fontWeight:600,fontFamily:p.font.mono,color:l.textSecondary,transition:"background-color 150ms ease, border-color 150ms ease, color 150ms ease",letterSpacing:"0.02em"},children:[a.jsx("span",{children:f?"Embedded":"External"}),a.jsx("img",{src:Op,alt:"","aria-hidden":"true",style:{width:"11px",height:"11px",display:"block",...c?{filter:"invert(0.65)"}:{}}})]}),a.jsx(bi,{content:v,label:"Account mode info",textColor:c?l.textPrimary:"#f9fafb",backgroundColor:c?l.cardBg:"#111827",borderColor:c?l.cardBorder:"rgba(255,255,255,0.08)",accentColor:c?l.textSecondary:"#6b7280",children:a.jsx("img",{src:_o,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?l.hoverBg:y?"#ecfdf5":"#f3f4f6",border:c?`1px solid ${l.cardBorder}`:y?"1px solid #a7f3d0":"1px solid #e5e7eb"},children:[a.jsx("div",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:b}}),a.jsx("span",{style:{fontSize:"11px",fontWeight:500,color:c?l.textSecondary:y?"#065f46":"#6b7280"},children:x})]})]}),r&&a.jsx("div",{style:{fontSize:"28px",fontWeight:700,color:l.textPrimary,lineHeight:1.2,marginBottom:"2px"},children:p.formatUsd(s)}),r&&o&&a.jsx("div",{style:{fontSize:"12px",color:l.textSecondary,marginBottom:"8px"},children:o}),i&&a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"12px",fontFamily:p.font.mono,color:c?l.textSecondary:"#9ca3af"},children:p.truncateAddress(i)}),a.jsx("button",{onClick:g,style:{padding:"2px 6px",fontSize:"10px",fontWeight:500,backgroundColor:"transparent",color:c?l.textSecondary:"#9ca3af",border:"none",cursor:"pointer",borderRadius:"4px",transition:"background-color 150ms ease, color 150ms ease"},title:"Copy address",children:h?"Copied":"Copy"})]})]})},Np=u.memo(Dp),Mp=({asset:e,label:t,logo:n,dk:s,dark:o})=>{const r=ur(n,e.chainId,e.tokenAddress),[i,l]=u.useState();return n===null?null:r&&r!==i?a.jsx("img",{src:r,alt:t,onError:()=>l(r),style:{width:"24px",height:"24px",borderRadius:"50%"}}):a.jsx("div",{style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:o?s.hoverBg:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:600,color:s.textSecondary},children:t.charAt(0)})},Pp=e=>`${e.tokenAddress}-${e.chainId}`,Up=({spiceAssets:e,loading:t,dk:n,dark:s=!1,canDirectWithdraw:o=!1,onDirectWithdraw:r,directWithdrawState:i,onWithdrawClick:l,limit:c})=>{const d=p.useAssetDisplay(),[f,m]=u.useState(!1),h=c!==void 0&&!f?Math.max(e.length-c,0):0,w=h>0?e.slice(0,c):e,g={fontSize:"11px",fontWeight:600,letterSpacing:"1px",color:n.textSecondary,marginBottom:"8px",textTransform:"uppercase"},y={backgroundColor:n.cardBg,border:s?`1px solid ${n.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px"};return t?a.jsxs("div",{children:[a.jsx("div",{style:g,children:"Idle Balances"}),[1,2].map(x=>a.jsx("div",{style:{...y,padding:"12px",marginBottom:"6px",height:"48px",animation:"pulse 1.5s ease-in-out infinite",opacity:.5}},x))]}):e.length===0?a.jsxs("div",{children:[a.jsx("div",{style:g,children:"Idle Balances"}),a.jsx("div",{style:{...y,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:g,children:"Idle Balances"}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[w.map(x=>{const b=p.getChainConfig(x.chainId),v=x.chainDisplayName||b?.displayName||`Chain ${x.chainId}`,C=d({symbol:x.tokenSymbol,displaySymbol:x.tokenDisplaySymbol||x.tokenDisplayName,displayName:x.tokenDisplayName,receiptTokenId:x.receiptTokenId,receiptTokenName:x.receiptTokenName,location:x.location,logoURI:x.logoURI}),k=C.symbol,I=Pp(x),A=x.receiptTokenId&&l,F=A||o&&x.directWithdraw&&!!r,R=!A&&i?.key===I?i:null,j=R?.step==="pending";return a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",...y},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx(Mp,{asset:x,label:k,logo:C.logoURI,dk:n,dark:s}),a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:n.textPrimary},children:k}),a.jsx("div",{style:{fontSize:"11px",color:s?n.textSecondary:"#9ca3af"},children:v})]})]}),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:p.formatAssetBalance({balance:BigInt(x.balance),decimals:x.tokenDecimals})}),a.jsx("div",{style:{fontSize:"11px",color:R?.step==="error"?n.errorText:s?n.textSecondary:"#9ca3af"},children:R?.step==="error"?R.message||"Withdraw failed":!Number.isFinite(x.usdValue)||x.usdValue<=0?"\u2014":`${p.formatUsd(x.usdValue)}${x.priceStatus==="stale"?" (stale)":""}`})]}),F&&a.jsx("button",{onClick:()=>{j||(A?A(x.receiptTokenId):r(x))},disabled:j,title:A?"Choose withdrawal network":"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:j?"default":"pointer",opacity:j?.6:1,whiteSpace:"nowrap"},children:j?"Withdrawing\u2026":"Withdraw"})]})]},x.positionId??`${x.owner??""}:${x.location??""}:${x.receiptTokenId??`${x.tokenAddress}-${x.chainId}`}`)}),c!==void 0&&e.length>c&&a.jsxs("button",{onClick:()=>m(!f),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"6px",width:"100%",padding:"8px 12px",...y,cursor:"pointer",color:n.textSecondary,fontSize:"12px",fontWeight:500},children:[a.jsx("span",{children:f?"Show less":`Show ${h} more`}),a.jsx("span",{style:{transform:f?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease",fontSize:"10px"},children:"\u25BE"})]})]})]})},Wp=u.memo(Up),Lp=({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=p.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}`)})})]}),qp=u.memo(Lp),zp=({appName:e,status:t,statusLabel:n,totalUsdValue:s,breakdownSubtitle:o,showUsdSummary:r,address:i,spiceAssets:l,spiceAssetsLoading:c,pendingDeposits:d,customSections:f,notice:m,onDepositClick:h,onWithdrawClick:w,depositDisabled:g,onCompleteDeposit:y,primaryColor:x,buttonStyles:b,dk:v,dark:C=!1,showModeToggle:k,isEmbeddedMode:I,onModeToggle:A,showConnectExternalCta:F,onConnectExternalWallet:R,connectExternalError:j,showHowItWorks:T=!0,canDirectWithdraw:P,onDirectWithdraw:O,directWithdrawState:M,idleBalancesLimit:U})=>{const[E,D]=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(Np,{appName:e,status:t,statusLabel:n,totalUsdValue:s,breakdownSubtitle:o,showUsdSummary:r,address:i,dk:v,dark:C,showModeToggle:k,isEmbeddedMode:I,onModeToggle:A}),m&&a.jsx("div",{style:{padding:"10px 12px",borderRadius:"8px",backgroundColor:m.tone==="warning"?C?"rgba(245, 158, 11, 0.12)":"#fffbeb":m.tone==="success"?C?"rgba(16, 185, 129, 0.12)":"#ecfdf5":v.cardBg,border:m.tone==="warning"?C?"1px solid rgba(245, 158, 11, 0.35)":"1px solid #fde68a":m.tone==="success"?C?"1px solid rgba(16, 185, 129, 0.35)":"1px solid #a7f3d0":C?`1px solid ${v.cardBorder}`:"1px solid #e5e7eb",color:m.tone==="warning"?C?"#fbbf24":"#92400e":m.tone==="success"?C?"#34d399":"#047857":v.textSecondary,fontSize:"12px",lineHeight:1.45,fontWeight:500},children:m.message}),F&&a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[a.jsx("button",{onClick:R,style:{width:"100%",padding:"10px 14px",borderRadius:"8px",backgroundColor:x||"#EA4B4B",color:"#ffffff",border:"none",cursor:"pointer",fontSize:"13px",fontWeight:600,fontFamily:p.font.ui,transition:"opacity 150ms ease"},children:"Connect External Wallet"}),j&&a.jsx("span",{style:{fontSize:"11px",color:C?v.errorText:"#b91c1c",lineHeight:1.4},children:j})]}),a.jsx("div",{style:{height:"1px",backgroundColor:C?"#2d2d2d":"#e5e7eb"}}),a.jsx(Bp,{onDepositClick:h,onWithdrawClick:w,depositDisabled:g,primaryColor:x,buttonStyles:b,dark:C}),T&&a.jsxs("div",{children:[a.jsxs("button",{onClick:()=>D(!E),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",padding:"8px 12px",backgroundColor:v.cardBg,border:C?`1px solid ${v.cardBorder}`:"1px solid #e5e7eb",borderRadius:"8px",cursor:"pointer",color:v.textSecondary,fontSize:"12px",fontWeight:500},children:[a.jsx("span",{children:"How It Works"}),a.jsx("span",{style:{transform:E?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease",fontSize:"10px"},children:"\u25BE"})]}),E&&a.jsxs("div",{style:{marginTop:"6px",padding:"10px 12px",backgroundColor:C?v.cardBg:"#f0fdf4",border:C?`1px solid ${v.cardBorder}`:"1px solid #bbf7d0",borderRadius:"8px",fontSize:"12px",lineHeight:1.5,color:C?v.textSecondary:"#374151"},children:["Fund your ",e," Account from any supported chain. Once funded, transact gas-free and asset-abstracted on ",e,"."]})]}),a.jsx(qp,{pendingDeposits:d,onCompleteDeposit:y,dk:v,dark:C}),a.jsx(Wp,{spiceAssets:l,loading:c,dk:v,dark:C,canDirectWithdraw:P,onDirectWithdraw:O,directWithdrawState:M,onWithdrawClick:w,limit:U}),f.map((L,z)=>a.jsx(jp,{section:L,dk:v,dark:C},z))]})},Hp=u.memo(zp);function Vp({dark:e,onSuccess:t,onError:n}){const{disconnect:s}=Cn.useDisconnect(),{logout:o}=fs.usePrivy(),[r,i]=u.useState(!1);return a.jsx(p.Button,{variant:"ghost",fullWidth:!0,dark:e,loading:r,onClick:async()=>{i(!0);try{s(),await o(),t()}catch(l){n(p.sanitizeError(l,"Unable to disconnect. Please try again."))}finally{i(!1)}},children:"Disconnect"})}const Nr=380,Ln=8,Qp=[],Gp={};function Ul(e){return e?.trim().replace(/^spice/i,"").replace(/[^a-z0-9]/gi,"").toUpperCase()||void 0}function Kp(e,t){const n=new Map;Object.entries(t).forEach(([o,r])=>{if(!Number.isFinite(r)||r<=0)return;n.set(o,r),n.set(o.toUpperCase(),r);const i=Ul(o);i&&n.set(i,r)});const s=[e.symbol,e.displaySymbol,e.receiptTokenName,e.name,e.displayName];for(const o of s){if(!o)continue;const r=n.get(o)??n.get(o.toUpperCase());if(r!==void 0)return r;const i=Ul(o);if(!i)continue;const l=n.get(i);if(l!==void 0)return l}return 0}const Wl=({appName:e,status:t="active",statusLabel:n,customSections:s=Qp,extraAssets:o=[],tokenPrices:r={},tokenLogos:i=Gp,breakdownLabels:l=[],notice:c,styles:d,dark:f,onDepositSuccess:m,onDepositClick:h,onWithdrawClick:w,onCompleteDeposit:g,showModeToggle:y=!1,defaultMode:x,showUsdSummary:b=!0,alwaysShowEmbeddedIdle:v=!1,idleBalancesLimit:C,showDisconnect:k=!1})=>{const I=u.useContext(p.SpiceFlowProviderContext),A=I?.mode!=="7702",F=!!I?.isWhitelistGateActive,R=!!I?.isWhitelistConfigured&&I?.isUserWhitelisted!==!0,j=u.useRef(!1);u.useEffect(()=>{if(!j.current){if(p.hasStoredSpiceFlowMode()){j.current=!0;return}x&&I?.setMode&&(I.setMode(x==="non7702"?"ondemand":"7702"),j.current=!0)}},[I,x]);const[T,P]=u.useState(!1),[O,M]=u.useState(null),[U,E]=u.useState({top:0,bottom:0,left:0,placement:"below"}),D=u.useRef(null),L=u.useRef(null),{address:z,isConnected:se}=p.useWallet(),de=I?.embeddedWalletAddress,oe=I?.externalWalletAddress,{embeddedAddress:Q}=p.useProviderWallets(),{brand:J,dark:X,primaryColor:ee,dk:K}=p.useSpiceBrand(d,f),we=e??J?.appName??"Spice",ve=A&&!oe,N=!A||v,Z=N?de||Q:z,Y=u.useMemo(()=>I?.supportedChainIds??S.getChainIdsByNetwork("mainnet"),[I?.supportedChainIds]),G=Xn({owner:N?Z:oe,role:"holding",sourceChains:Y,additionalSourceTokens:o.filter(ae=>!ae.receiptTokenId&&(!ae.owner||p.addressesEqual(ae.owner,N?Z:oe))).map(ae=>({address:ae.tokenAddress,chainId:ae.chainId,decimals:ae.tokenDecimals,symbol:ae.tokenSymbol,logoURI:ae.logoURI})),includeRollupAssets:N,enabled:N?!!Z:!!oe}),pe=G.assets.filter(ae=>ae._source==="spice"),xe=G.walletAssets,ke=G.loading,q=G.refresh,W=N?Z:oe,_=u.useMemo(()=>o.filter(ae=>!ae.owner||ae.owner.toLowerCase()===W?.toLowerCase()).map(ae=>({...ae,owner:ae.owner??W,location:ae.location??(ae.receiptTokenId?"rollup":N?"embedded":"external")})),[o,W,N]),ce=u.useMemo(()=>{const ae=new Map(Object.entries(r).filter(([,ue])=>Number.isFinite(ue)&&ue>0).map(([ue,Fe])=>[ue.toLowerCase(),Fe]));return xe.map(ue=>({owner:ue.owner,location:ue.location,positionId:ye(ue),tokenAddress:ue.address,tokenSymbol:ue.symbol,tokenDecimals:ue.decimals,chainId:ue.chainId,chainDisplayName:p.getChainName(ue.chainId),balance:ue.balance.toString(),balanceFormatted:ue.balanceFormatted,usdValue:ue.balanceUsd||(ae.get(`${ue.chainId}:${ue.address.toLowerCase()}`)??0)*ue.balanceFormatted,logoURI:ue.logoURI||i[ue.symbol],directWithdraw:N}))},[xe,_,i,r,N]),$=u.useMemo(()=>{const ae=N?pe.map(le=>{const Le=le.balanceUsd||0,Ve=Number.isFinite(le.balanceFormatted)?le.balanceFormatted:0,re=Kp(le,r),ge=le.priceStatus&&re>0?re*Ve:Le>0?Le:re*Ve;return{owner:le.owner,location:le.location,positionId:ye(le),tokenAddress:le.address,tokenSymbol:le.symbol,tokenDisplaySymbol:p.getAssetDisplaySymbol(le),tokenDisplayName:p.getAssetDisplayName(le),tokenDecimals:le.decimals,chainId:le.chainId,chainDisplayName:p.getAssetDisplayChainName(le),balance:le.balance.toString(),balanceFormatted:le.balanceFormatted,usdValue:ge,priceStatus:re>0?void 0:le.priceStatus,logoURI:le.logoURI,receiptTokenId:le.receiptTokenId,receiptTokenName:le.receiptTokenName}}):[],ue=le=>`${le.owner?.toLowerCase()}:${le.location}:${le.chainId}:${le.receiptTokenId??S.normalizeNativeTokenAddress(le.tokenAddress).toLowerCase()}`,Fe=new Map([...G.rollupAssets,...xe].map(le=>[ue({...le,tokenAddress:le.address}),le])),Te=new Map([...ae,...ce].map(le=>[ue(le),le]));for(const le of ve?[]:_){const Le=ue(le),Ve=Te.get(Le);Te.set(Le,Ve?{...le,...Ve,logoURI:le.logoURI??Ve.logoURI,tokenDisplayName:le.tokenDisplayName??Ve.tokenDisplayName,tokenDisplaySymbol:le.tokenDisplaySymbol??Ve.tokenDisplaySymbol}:le)}return[...Te.values()].filter(le=>BigInt(le.balance)>0n&&Ma({isDiscovered:Fe.get(ue(le))?.isDiscovered,balanceUsd:le.usdValue},!0)&&p.isAssetAllowed(Fe.get(ue(le))??{address:le.tokenAddress,symbol:le.tokenSymbol,displaySymbol:le.tokenDisplaySymbol},I?.allowedTokens)).sort((le,Le)=>Le.usdValue-le.usdValue)},[N,ve,pe,G.rollupAssets,r,ce,_,I?.allowedTokens]),te=u.useMemo(()=>$.reduce((ae,ue)=>ae+ue.usdValue,0),[$]),{pendingDeposits:Ie,refresh:he}=si({chainIds:Y,enabled:!!z,discoverWalletBalances:!0}),fe=u.useMemo(()=>s.reduce((ae,ue)=>ae+(ue.totalValue??0),0),[s]),Ae=te+fe,We=u.useMemo(()=>{const ae=[];te>0&&ae.push(`${p.formatUsd(te)} idle`);for(const ue of s){const Fe=l.find(Te=>Te.sectionTitle===ue.title)?.label||ue.title.toLowerCase();ae.push(`${p.formatUsd(ue.totalValue??0)} ${Fe}`)}return ae.join(" \xB7 ")},[te,s,l]),Ce=u.useCallback(ae=>{g?g(ae):M(ae)},[g]),ze=u.useCallback(()=>{M(null)},[]),He=u.useCallback(()=>{M(null),m?.()},[m]),tt=u.useCallback(()=>{if(!D.current)return;const ae=D.current.getBoundingClientRect(),ue=window.innerHeight-ae.bottom-Ln,Fe=ae.top-Ln,Te=ue>=400||ue>=Fe?"below":"above",le=Math.max(Ln,Math.min(ae.right-Nr,window.innerWidth-Nr-Ln)),Le=Te==="below"?ae.bottom+Ln:ae.top-Ln,Ve=Te==="above"?window.innerHeight-Le:0;E({top:Le,bottom:Ve,left:le,placement:Te})},[]);u.useLayoutEffect(()=>{T&&tt()},[T,tt]),u.useEffect(()=>{if(!T)return;const ae=Te=>{D.current&&!D.current.contains(Te.target)&&L.current&&!L.current.contains(Te.target)&&P(!1)},ue=Te=>{Te.key==="Escape"&&P(!1)},Fe=()=>tt();return document.addEventListener("mousedown",ae),document.addEventListener("keydown",ue),window.addEventListener("scroll",Fe,{passive:!0}),window.addEventListener("resize",tt),()=>{document.removeEventListener("mousedown",ae),document.removeEventListener("keydown",ue),window.removeEventListener("scroll",Fe),window.removeEventListener("resize",tt)}},[T,tt]);const _e=N?de||Q||z:oe||z,st=u.useCallback(()=>{I?.setMode&&I.setMode(A?"7702":"ondemand")},[I,A]),[ut,pt]=u.useState(null);let Ye=null;try{Ye=fs.useConnectWallet({onSuccess:()=>pt(null),onError:ae=>pt(p.sanitizeError(ae,"Failed to connect wallet."))}).connectWallet}catch{Ye=null}const it=u.useCallback(()=>{Ye&&(P(!1),pt(null),Ye({walletChainType:"ethereum-only"}))},[Ye]),Pe=!oe&&!!Ye,lt=u.useCallback(()=>{P(!1),h?.()},[h]),nt=u.useCallback(ae=>{P(!1),w?.(ae)},[w]),ot=u.useCallback(ae=>{P(!1),Ce(ae)},[Ce]),[kt,Xe]=u.useState(null),ht=N&&!!oe&&!p.addressesEqual(W,oe),je=u.useCallback(ae=>{const ue=xe.find(Fe=>Fe.chainId===ae.chainId&&p.addressesEqual(Fe.address,ae.tokenAddress));ue&&(P(!1),Xe(ue))},[xe]);if(typeof window>"u")return null;const ct=a.jsxs("button",{ref:D,onClick:()=>P(!T),style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 14px",borderRadius:"9999px",backgroundColor:X?K.hoverBg:"#ffffff",border:X?`1px solid ${K.cardBorder}`:"1px solid #e5e7eb",cursor:"pointer",fontSize:"13px",fontWeight:500,fontFamily:p.font.ui,color:X?K.textPrimary:"#111827",transition:"background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease",boxShadow:X?"none":"0 1px 2px rgba(0,0,0,0.05)"},children:[a.jsxs("span",{children:[we," Account"]}),se&&b&&a.jsxs("span",{style:{color:X?K.textSecondary:"#6b7280"},children:["\xB7 ",p.formatUsd(Ae)]}),a.jsx("span",{style:{fontSize:"10px",color:X?K.textSecondary:"#9ca3af",transform:T?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease"},children:"\u25BE"})]}),De=T?Gn.createPortal(a.jsxs(a.Fragment,{children:[a.jsx("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.08)",zIndex:p.z.popover},onClick:()=>P(!1)}),a.jsxs("div",{ref:L,style:{position:"fixed",top:U.placement==="below"?`${U.top}px`:"auto",bottom:U.placement==="above"?`${U.bottom}px`:"auto",left:`${U.left}px`,width:`${Nr}px`,maxWidth:`calc(100vw - ${Ln*2}px)`,maxHeight:"80vh",backgroundColor:X?K.shell:"#ffffff",border:X?`1px solid ${K.cardBorder}`:"1px solid #e5e7eb",borderRadius:"12px",boxShadow:X?"0 10px 40px rgba(0, 0, 0, 0.5)":"0 10px 40px rgba(0, 0, 0, 0.12)",zIndex:p.z.popover+1,overflow:"hidden",animation:`accountDisplayFadeIn 200ms ${p.easing.out}`},children:[a.jsx(Hp,{appName:we,status:t,statusLabel:n,totalUsdValue:Ae,breakdownSubtitle:We,showUsdSummary:b,address:N?_e:z,spiceAssets:$,spiceAssetsLoading:ke,pendingDeposits:Ie,customSections:s,notice:c,onDepositClick:h?lt:void 0,onWithdrawClick:w?nt:void 0,depositDisabled:R,onCompleteDeposit:ot,primaryColor:ee,buttonStyles:d?.button,dk:K,dark:X,showModeToggle:y,isEmbeddedMode:!A,onModeToggle:st,showConnectExternalCta:Pe,onConnectExternalWallet:it,connectExternalError:ut,showHowItWorks:!F,canDirectWithdraw:ht,onDirectWithdraw:je,idleBalancesLimit:C}),k&&se&&a.jsx("div",{style:{padding:"0 16px 16px"},children:a.jsx(Vp,{dark:X,onSuccess:()=>P(!1),onError:pt})})]}),a.jsx("style",{children:`
|
|
45
45
|
@keyframes accountDisplayFadeIn {
|
|
46
46
|
from { opacity: 0; transform: translateY(-4px); }
|
|
47
47
|
to { opacity: 1; transform: translateY(0); }
|
|
48
48
|
}
|
|
49
|
-
`})]}),document.body):null;return a.jsxs(a.Fragment,{children:[rt,We,wt&&Gn.createPortal(a.jsx(Or,{isOpen:!0,onClose:()=>$e(null),styles:d,walletAssets:{initialAsset:wt},onWithdrawSuccess:()=>{_(),W(),$e(null)}}),document.body),D&&Gn.createPortal(a.jsx(Pi,{isOpen:!0,onClose:Ve,supportedChains:[D.chainId],escrowOnly:!0,escrowTokenAddress:D.tokenAddress,escrowAmount:D.amount,escrowTokenDecimals:D.tokenDecimals,escrowTokenSymbol:D.tokenSymbol,styles:d,onDepositSuccess:Ne}),document.body)]})};function Zp({asset:e,showLogo:t=!0,showLabel:n=!0,denomination:s="token",className:o,style:r}){const i=u.useAssetDisplay()(e),l=s==="token"?u.formatAssetBalance(e):Number.isFinite(e.balanceUsd)&&(e.balanceUsd>0||e.balance===0n)?u.formatUsd(e.balanceUsd):"\u2014";return a.jsxs("span",{className:o,style:{display:"inline-flex",alignItems:"center",gap:6,...r},children:[t&&a.jsx(po,{symbol:e.symbol,label:i.symbol,logoURI:i.logoURI,chainId:e.chainId,address:e.address}),n&&a.jsx("span",{children:i.symbol}),a.jsx("span",{children:l})]})}var Yp="data:image/png;base64,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",Ll="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",Xp="data:image/png;base64,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";const Jp=({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"})]}),ql=({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:u.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"})})}),$p=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onTokenSelect:s,walletAddress:o,supportedChainIds:r,network:i,prefetchedAssets:l,styles:c,dark:d})=>{const[f,m]=p.useState(""),[h,y]=p.useState(null),[g,w]=p.useState(null),[x,b]=p.useState(!1),[C,v]=p.useState(new Set),k=p.useContext(u.SpiceFlowProviderContext),I=i||k?.network||"testnet",A=k?.allowedTokens,E=(k?.mode||"7702")!=="7702",j=!!k?.isWhitelistGateActive,{dark:R,primaryColor:B,dk:M}=u.useSpiceBrand(c,d),D=R?M.cardBg:"white",U=R?`${B}55`:"#F4A5A5",O=R?"0 4px 12px rgba(0, 0, 0, 0.4)":"0 4px 12px rgba(0, 0, 0, 0.15)",F=R?M.hoverBg:"#E9E9E9",P=R?M.hoverBg:"#f9fafb",z=R?M.textPrimary:"#374151",q=R?M.textPrimary:"#111827",ne=R?M.textSecondary:"#9ca3af",de=R?`${B}22`:"#FBDBDB",ie=R?`${B}55`:"#F4A5A5",Y=p.useMemo(()=>r||k?.supportedChainIds||S.getChainIdsByNetwork(I),[r,k?.supportedChainIds,I]),Q=p.useMemo(()=>Y.map(W=>{const L=u.getChainConfig(W);return L?{id:W,name:L.displayName,icon:Fn[W]||ws}:null}).filter(Boolean),[Y]),G=l===void 0,{assets:fe,loading:X}=ks({address:G?o:void 0,supportedChains:Y,fetchBalances:Yn,enabled:e&&G&&!!o,refreshInterval:e?5e3:0}),be=l??(G?fe:[]),we=l===null||G&&X,N=p.useMemo(()=>(be??[]).filter(W=>En(W,"deposit-source",{allowedTokens:A,rpcOverrides:k?.rpcOverrides,liquidityVenues:k?.liquidityVenues,isWhitelistGateActive:j},void 0,void 0,{requiresEscrow:E}).eligible),[be,A,k?.rpcOverrides,j,E]),J=p.useMemo(()=>{let W=N.filter(L=>L.balance>0n);if(C.size>0&&(W=W.filter(L=>C.has(L.chainId))),f.trim()){const L=f.toLowerCase();W=W.filter($=>$.name.toLowerCase().includes(L)||$.symbol.toLowerCase().includes(L)||$.address.toLowerCase().includes(L))}return W=[...new Map(W.map(L=>[ye(L),L])).values()],W.sort((L,$)=>{const le=L.balanceFormatted>0?1:0,se=$.balanceFormatted>0?1:0;return se!==le?se-le:$.balanceUsd!==L.balanceUsd?$.balanceUsd-L.balanceUsd:$.balanceFormatted-L.balanceFormatted}),W},[N,f,C]),ee=ye;p.useEffect(()=>{const W=document.createElement("link");return W.href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@100;200;300;400;500;600;700&display=swap",W.rel="stylesheet",document.head.appendChild(W),()=>{document.head.removeChild(W)}},[]),p.useEffect(()=>{e||(m(""),y(null),b(!1),v(new Set))},[e]);const V=W=>{s(W)},me=W=>{v(L=>{const $=new Set(L);return $.has(W)?$.delete(W):$.add(W),$})},he=()=>{v(new Set)},Re=C.size===0;return a.jsxs(on,{isOpen:e,onClose:t,title:"Select a Token",bannerSrc:Xp,bannerAlt:"Select token banner",styles:c,dark:R,closeOnBackdropClick:n,children:[a.jsx("div",{style:{padding:"20px 20px"},children:a.jsx(pr,{value:f,onChange:m,ariaLabel:"Search tokens",placeholder:"Search token name, symbol or address",dark:R,styles:c,endAdornment:a.jsxs("div",{style:{position:"relative",flexShrink:0},children:[a.jsx("button",{onClick:()=>b(W=>!W),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"5px",borderRadius:"3px",backgroundColor:x||!Re?F:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},children:a.jsx(Jp,{size:20,active:!Re,dark:R})}),x&&a.jsxs("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,backgroundColor:D,borderRadius:"8px",border:`1px solid ${U}`,boxShadow:O,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:W=>W.currentTarget.style.backgroundColor=P,onMouseLeave:W=>W.currentTarget.style.backgroundColor="transparent",children:[a.jsx(ql,{checked:Re,primaryColor:B,dark:R}),a.jsx("img",{src:Yp,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:u.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:z},children:"ALL NETWORKS"})]}),Q.map(W=>a.jsxs("button",{onClick:()=>me(W.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:L=>L.currentTarget.style.backgroundColor=P,onMouseLeave:L=>L.currentTarget.style.backgroundColor="transparent",children:[a.jsx(ql,{checked:C.has(W.id),primaryColor:B,dark:R}),a.jsx("img",{src:W.icon,alt:W.name,loading:"lazy",decoding:"async",width:20,height:20,style:{width:"20px",height:"20px",borderRadius:"50%"}}),a.jsx("span",{style:{fontFamily:u.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:z},children:W.name.toUpperCase()})]},W.id))]})]})})}),a.jsxs("div",{style:{padding:"0 32px 20px",display:"flex",flexDirection:"column",gap:"8px",maxHeight:"400px",overflowY:"auto"},children:[we&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:u.font.mono,fontSize:"13px",color:ne},children:"Loading balances..."}),!we&&J.length===0&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:u.font.mono,fontSize:"13px",color:ne},children:"No tokens found"}),J.map(W=>{const L=ee(W),$=h===L,le=g===L,se=u.getChainConfig(W.chainId)?.displayName||`Chain ${W.chainId}`;return a.jsxs("button",{onClick:()=>V(W),onMouseEnter:()=>w(L),onMouseLeave:()=>w(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:$?de:"transparent",border:$||le?`1px solid ${ie}`:"1px solid transparent",cursor:"pointer",transition:u.transition.interactive},children:[a.jsx("div",{style:{flexShrink:0},children:a.jsx(po,{symbol:W.symbol,logoURI:W.logoURI,chainId:W.chainId,address:W.address,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:u.font.mono,fontSize:"15px",fontWeight:500,letterSpacing:"0.4px",color:q,textAlign:"left"},children:W.name}),a.jsx("img",{src:Ll,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:[Fn[W.chainId]&&a.jsx("img",{src:Fn[W.chainId],alt:"",loading:"lazy",decoding:"async",width:14,height:14,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsxs("span",{style:{fontFamily:u.font.mono,fontSize:"12px",fontWeight:400,color:ne,textAlign:"left"},children:[W.symbol," \xB7 ",se]})]})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"2px",flexShrink:0},children:[W.balanceUsd>0&&a.jsx("span",{style:{fontFamily:u.font.mono,fontSize:"16px",fontWeight:600,color:q},children:u.formatUsd(W.balanceUsd)}),a.jsxs("span",{style:{fontFamily:u.font.mono,fontSize:"12px",fontWeight:400,color:ne},children:[u.formatBalance(W.balanceFormatted)," ",W.symbol]})]})]},L)})]})]})};var _p="data:image/png;base64,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";const Nr=e=>{const t=(e.id||"").toLowerCase(),n=(e.name||"").toLowerCase();return t.startsWith("io.privy.wallet")||n.includes("privy wallet")};async function Pr(e,t){let n;try{return await Promise.race([e,new Promise((s,o)=>{n=setTimeout(()=>{const r=new Error("Wallet network read timed out. Please try again.");r.name="WalletReadTimeout",o(r)},Math.max(0,t-Date.now()))})])}finally{n!==void 0&&clearTimeout(n)}}const ef=({dark:e,dk:t,primaryColor:n,disabled:s,hidden:o,onConnecting:r,onError:i})=>{const[l,c]=p.useState(!1),d=yn.useAccount(),{embeddedAddress:f}=u.useProviderWallets(),m=p.useRef({account:d,embeddedAddress:f});m.current={account:d,embeddedAddress:f};const{ready:h,authenticated:y,user:g}=fs.usePrivy(),w={ready:h,authenticated:y,userId:g?.id},x=p.useRef(w);x.current=w;const b=p.useRef(0),C=()=>{const A=x.current;return A.ready===w.ready&&A.authenticated===w.authenticated&&A.userId===w.userId};p.useLayoutEffect(()=>(b.current++,c(!1),r(!1),()=>{b.current++}),[h,y,g?.id,r]);const{disconnectAsync:v}=yn.useDisconnect(),{setActiveWallet:k}=fs.useActiveWallet(),{connectWallet:I}=fs.useConnectWallet({onSuccess:async({wallet:A})=>{if(!h||!C())return;const E=++b.current,j=()=>E===b.current&&C();c(!0),r(!0);try{if(A.type!=="ethereum"||A.connectorType==="embedded")throw new Error("Choose an external Ethereum wallet.");k(A);const R=m.current.account;R.address&&R.connector&&!Nr(R.connector)&&!u.addressesEqual(R.address,m.current.embeddedAddress)&&!u.addressesEqual(R.address,A.address)&&await v({connector:R.connector})}catch(R){j()&&i(u.sanitizeError(R,"Failed to connect wallet."))}finally{j()&&(c(!1),r(!1))}},onError:A=>{C()&&(b.current++,c(!1),r(!1),i(u.sanitizeError(A,"Failed to connect wallet.")))}});return o?null:a.jsxs("button",{onClick:()=>{s||l||(b.current++,c(!0),r(!0),I({walletChainType:"ethereum-only"}))},disabled:s||l,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:l?e?t.hoverBg:"#f3f4f6":"transparent",border:`2px solid ${e?`${n}33`:`${n}55`}`,cursor:s||l?"not-allowed":"pointer",opacity:s?.6:1,transition:u.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:bs.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:u.font.mono},children:l?"Opening wallet picker...":"MetaMask / Browser Wallet"})]})},tf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onWalletSelect:s,onContinue:o,requiredChainId:r,styles:i})=>{const{dark:l,primaryColor:c,dk:d,theme:f}=u.useSpiceBrand(i),m=p.useContext(u.SpiceFlowProviderContext),[h,y]=p.useState(null),[g,w]=p.useState(!1),[x,b]=p.useState(null),[C,v]=p.useState(!1),[k,I]=p.useState(null),[A,E]=p.useState(!1);p.useEffect(()=>{e||(b(null),v(!1),w(!1),I(null))},[e]);const{address:j,chain:R,connector:B,isConnected:M}=yn.useAccount(),{externalWallet:D,externalAddress:U}=u.useProviderWallets(),O=!!D&&!!U,F=D?.wallet.connector||D?.wallet.meta,P=Number(String(D?.wallet.chainId??"").replace(/^eip155:/,"")),z=D?.wallet.connector===B&&M&&u.addressesEqual(U,j)?R:u.getChainConfig(P)?.viemChain,{connectors:q,connectAsync:ne}=yn.useConnect(),{disconnectAsync:de}=yn.useDisconnect(),ie=S.getChainIdsByNetwork(m?.network||"testnet"),Y=p.useRef(D);Y.current=D;const Q=p.useRef(0),G=D?.wallet.connector||D?.wallet;p.useEffect(()=>(Q.current++,w(!1),b(null),()=>{Q.current++}),[U,G,e]);const fe=(r?u.getChainConfig(r):null)?.displayName||z?.name||`Chain ${z?.id||r}`,X=L=>L.type==="announced"||typeof L.ready=="boolean"&&L.ready?!0:L.type==="injected"?typeof window<"u"&&!!window.ethereum:!0,be=q.filter(L=>{const $=L.name.toLowerCase(),le=(L.id||"").toLowerCase();return m?.provider==="privy"&&Nr(L)||["safe"].includes(L.type)?!1:L.type==="walletConnect"?!!L?.options?.projectId:L.type==="announced"?!0:L.type==="injected"||["metamask","rabby","phantom","coinbase","trust","rainbow"].some(se=>$.includes(se)||le.includes(se))?X(L):!1}),we=async L=>{if(!(C||g))try{if(v(!0),I(L.uid),b(null),await ne({connector:L}),await pn(500),Y.current?.wallet.connector!==L)throw new Error("Wallet changed. Please try again.");s&&s(L.id),r&&await ee(r),await pn(800)}catch($){console.error("Connection error:",$),u.isUserRejection($)?b("Connection rejected. Please try again."):b(u.sanitizeError($,"Failed to connect wallet."))}finally{v(!1),I(null)}},N=L=>{if(L.icon)return L.icon;const $=(L.name||"").toLowerCase();for(const[le,se]of Object.entries(bs))if($.includes(le.toLowerCase()))return se;if(!Nr(L)&&(L.type==="injected"||L.type==="announced")&&typeof window<"u"&&window.ethereum){const le=window.ethereum;if(le.isMetaMask)return bs.metamask;if(le.isRabby)return bs.rabby;if(le.isPhantom)return bs.phantom}return null},J=async(L,$,le)=>{const se=$.wallet.connector||$.wallet,oe=Date.now()+2e3;for(;Date.now()<oe;){if(await pn(Math.min(100,oe-Date.now())),le!==Q.current||!u.addressesEqual(Y.current?.address,$.address)||(Y.current?.wallet.connector||Y.current?.wallet)!==se)return!1;try{const Ie=await Pr((async()=>{const _=await $.getEthereumProvider();return parseInt(await _.request({method:"eth_chainId"}),16)})(),oe);if(le!==Q.current||!u.addressesEqual(Y.current?.address,$.address)||(Y.current?.wallet.connector||Y.current?.wallet)!==se)return!1;if(Ie===L)return!0}catch{}}return!1},ee=async L=>{const $=++Q.current,le=Y.current,se=le?.wallet.connector||le?.wallet,oe=()=>$===Q.current&&u.addressesEqual(Y.current?.address,le?.address)&&(Y.current?.wallet.connector||Y.current?.wallet)===se;w(!0),b(null);try{if(!le)throw new Error("Wallet not available");const Ie=Date.now()+2e3,_=await Pr(le.getEthereumProvider(),Ie);let je;const Fe=()=>{if(!oe())throw new Error("Wallet changed. Please try again.");if(je)throw je};Fe(),await Ai({request:async st=>{if(st.method!=="eth_chainId")return _.request(st);try{return await Pr(_.request(st),Ie)}catch(ve){throw ve instanceof Error&&ve.name==="WalletReadTimeout"&&(je=ve),ve}}},L,Fe),!await J(L,le,$)&&oe()&&b("Unable to switch to the correct network. Please switch manually in your wallet to continue.")}catch(Ie){oe()&&(console.error("Manual chain switch error:",Ie),b(u.describeChainSwitchError(Ie)))}finally{oe()&&w(!1)}},V=async L=>{g||(E(!1),await ee(L))},me=async()=>{if(!g){if(!r){E(L=>!L);return}await ee(r)}},he=async()=>{try{const L=D?.wallet;L&&typeof L.disconnect=="function"&&L.disconnect(),B&&u.addressesEqual(U,j)&&await de({connector:B})}finally{b(null),v(!1),w(!1),I(null),E(!1)}},Re=O&&!g&&!C&&(!r||z?.id===r),W=O&&!g&&!C&&r&&z?.id!==r;return a.jsxs(on,{isOpen:e,onClose:t,title:"Connect Wallet",styles:i,dark:l,bannerSrc:_p,bannerAlt:"Connect wallet banner",closeOnBackdropClick:n,children:[a.jsxs("div",{style:{padding:"0 24px 20px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"20px"},children:[x&&a.jsx(Si,{dk:d,dark:l,message:x,buttonLabel:g?"Switching...":"Try Switch Again",onAction:me,disabled:g}),g&&a.jsxs("div",{style:{padding:"12px",backgroundColor:l?d.infoBg:"#dbeafe",borderRadius:"8px",display:"flex",alignItems:"center",gap:"10px",marginTop:"20px"},children:[a.jsx(u.Spinner,{size:20,color:l?d.infoText:"#3b82f6"}),a.jsx("p",{style:{margin:0,color:l?d.infoText:"#1e40af",fontSize:"14px"},children:"Switching network..."})]}),m?.provider==="privy"&&a.jsx(ef,{dark:l,dk:d,primaryColor:c,disabled:C||g,hidden:O,onConnecting:v,onError:b}),O&&U?a.jsxs("div",{style:{border:`1px solid ${l?d.successBorder:"#02974F"}`,borderRadius:"8px",overflow:"hidden",marginTop:"20px"},children:[a.jsxs("div",{style:{backgroundColor:l?d.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?d.successText:"#02974F",fontWeight:600,fontSize:"14px",letterSpacing:"0.5px"},children:"WALLET CONNECTED"})]}),a.jsx("div",{style:{width:"38px",height:"38px",borderRadius:"50%",backgroundColor:l?d.cardBg:"#f3f4f6",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:F&&N(F)?a.jsx("img",{src:N(F),alt:F.name,style:{width:"24px",height:"24px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?d.textPrimary:"inherit"},children:F?.name?.charAt(0)||"W"})})]}),a.jsxs("div",{style:{padding:"18px",backgroundColor:l?d.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?d.textSecondary:"#939291",fontSize:"13px",fontWeight:500,letterSpacing:"0.3px"},children:"ADDRESS:"}),a.jsx("span",{className:"ibm-plex-mono",style:{color:l?d.textPrimary:"black",fontSize:"14px",fontWeight:600,fontFamily:u.font.mono,letterSpacing:"0.3px"},children:u.truncateAddress(U)})]}),A&&a.jsx("div",{style:{marginBottom:"12px",border:`1px solid ${l?d.inputBorder:"#E5E7EB"}`,borderRadius:"8px",overflow:"hidden",backgroundColor:d.cardBg},children:ie.map(L=>{const $=u.getChainConfig(L);if(!$)return null;const le=z?.id===L;return a.jsxs("button",{onClick:()=>{le?E(!1):V(L)},style:{width:"100%",display:"flex",alignItems:"center",gap:"8px",padding:"10px 12px",backgroundColor:le?l?`${c}15`:`${c}10`:"transparent",border:"none",borderBottom:`1px solid ${l?d.inputBorder:"#E5E7EB"}`,cursor:le?"default":"pointer",transition:"background-color 0.15s"},onMouseEnter:se=>{le||(se.currentTarget.style.backgroundColor=l?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.03)")},onMouseLeave:se=>{se.currentTarget.style.backgroundColor=le?l?`${c}15`:`${c}10`:"transparent"},children:[a.jsx("img",{src:Fn[L]||ws,alt:$.displayName,style:{width:"20px",height:"20px",borderRadius:"50%",objectFit:"contain"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:le?600:400,color:l?d.textPrimary:"#1f2937",fontFamily:u.font.mono},children:$.displayName}),le&&a.jsx("span",{style:{marginLeft:"auto",fontSize:"11px",color:c,fontWeight:500},children:"Connected"})]},L)})}),a.jsxs("button",{className:"ibm-plex-mono",onClick:he,style:{width:"100%",padding:"10px",backgroundColor:"transparent",border:`1px solid ${l?d.inputBorder:"#E5E7EB"}`,borderRadius:"6px",cursor:"pointer",fontSize:"13px",fontWeight:500,color:l?d.textSecondary:"#9CA3AF",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"16px"},children:"\u27F2"}),"DISCONNECT"]})]})]}):a.jsx(a.Fragment,{children:be.map(L=>{const $=X(L),le=k===L.uid,se=!$||C||le;return a.jsxs("button",{onClick:()=>{se||we(L)},onMouseEnter:()=>!se&&y(L.uid),onMouseLeave:()=>y(null),disabled:se,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:le?l?d.hoverBg:"#f3f4f6":"transparent",border:h===L.uid&&!se?`2px solid ${l?`${c}44`:`${c}66`}`:"2px solid transparent",cursor:se?"not-allowed":"pointer",opacity:se?.6:1,transition:u.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:l?d.cardBg:"#f3f4f6"},children:N(L)?a.jsx("img",{src:N(L),alt:L.name,style:{width:"26px",height:"26px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?d.textPrimary:"inherit"},children:L.name.charAt(0)})}),a.jsxs("span",{className:"ibm-plex-mono",style:{fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:se?l?d.inputPlaceholder:"#9ca3af":l?d.textPrimary:"#111827",flex:1,textAlign:"left",fontFamily:u.font.mono},children:[le?"Connecting...":L.name,!$&&!le&&a.jsx("span",{style:{fontSize:"12px",marginLeft:"8px"},children:"(Not detected)"})]})]},L.uid)})})]}),W&&!x&&a.jsx("div",{style:{padding:"0 24px 20px"},children:a.jsx(Si,{dk:d,dark:l,message:`Please switch to ${fe} to continue.`,buttonLabel:g?"Switching...":"Switch Network",onAction:me,disabled:g})}),a.jsx("div",{style:{padding:"0 24px 25px"},children:a.jsx(u.Button,{variant:"outline",fullWidth:!0,onClick:async()=>{Re&&(await pn(300),o?await o():t())},disabled:!Re,theme:f,dark:l,styles:i,children:C?"CONNECTING...":g?"SWITCHING NETWORK...":"CONTINUE"})})]})},nf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,deposits:s,onComplete:o,onCancel:r,onSkip:i,onChangeWallet:l,isProcessing:c,isVerifying:d=!1,onRefresh:f,error:m,styles:h})=>{const{dark:y,dk:g,theme:w}=u.useSpiceBrand(h);if(!e)return null;if(s.length===0)return a.jsx(on,{isOpen:e,onClose:t,title:"Incomplete Deposit",styles:h,closeOnBackdropClick:n,children:a.jsx("p",{role:"status",style:{padding:"18px 24px",color:g.textSecondary},children:c?"Returning funds\u2026":"Checking your wallet\u2026"})});const x=s[0],b=x.verifiedBalance<=0n,C=c||d||b,v=h?.fontFamily||u.font.ui,k=u.font.mono,I=u.getChainName(x.chainId),A=parseFloat(x.amount).toPrecision(6).replace(/\.?0+$/,""),E=T.formatUnits(x.verifiedBalance,x.tokenDecimals);return a.jsx(on,{isOpen:e,onClose:t,title:"Incomplete Deposit",styles:h,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"18px 24px 24px",fontFamily:v},children:[a.jsx("p",{style:{fontSize:"14px",color:g.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:y?g.cardBg:"#f8fafc",border:`1px solid ${g.cardBorder}`,borderRadius:y?"14px":"10px",boxShadow:y?"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:g.textSecondary,fontFamily:k,letterSpacing:"0.8px"},children:"NETWORK"}),a.jsx("span",{style:{fontSize:"18px",fontWeight:600,color:g.textPrimary,fontFamily:v,lineHeight:1.2},children:I})]}),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:g.textSecondary,fontFamily:k,letterSpacing:"0.8px"},children:"DEPOSITED AMOUNT"}),a.jsxs("span",{style:{fontSize:"24px",fontWeight:700,color:g.successText,fontFamily:k,lineHeight:1.1},children:[A," ",x.tokenSymbol]}),a.jsx("span",{style:{fontSize:"12px",color:g.textSecondary,fontWeight:500,fontFamily:v},children:"Sent to embedded wallet"})]})]}),!x.hasFullBalance&&x.verifiedBalance>0n&&a.jsxs("div",{style:{marginBottom:"16px",padding:"8px 12px",backgroundColor:g.warningBg,border:`1px solid ${y?g.warningBorder:"#fcd34d"}`,borderRadius:"8px",fontSize:"13px",color:g.warningText,lineHeight:"1.4"},children:["Partial balance \u2014 only ",parseFloat(E).toFixed(4)," ",x.tokenSymbol," available."]}),(d||b)&&a.jsxs("div",{style:{marginBottom:"16px",color:g.textSecondary},children:[a.jsx("p",{role:"status",children:d?"Checking your wallet\u2026":"Balance unavailable. Try again."}),b&&f&&a.jsx(u.Button,{variant:"ghost",fullWidth:!0,disabled:c||d,onClick:f,theme:w,dark:y,children:"TRY AGAIN"})]}),m&&a.jsx("div",{style:{marginBottom:"16px",padding:"10px 12px",backgroundColor:g.errorBg,border:`1px solid ${y?g.errorBorder:"#fca5a5"}`,borderRadius:"8px",fontSize:"13px",color:y?g.errorText:"#991b1b",lineHeight:"1.4"},children:m}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[a.jsx(u.Button,{variant:"outline",fullWidth:!0,disabled:C,onClick:()=>o(x),theme:w,dark:y,styles:h,children:"CONFIRM DEPOSIT"}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[a.jsx(u.Button,{variant:"ghost",fullWidth:!0,disabled:C,onClick:()=>r(x),theme:w,dark:y,style:{height:"48px",fontSize:"13px",letterSpacing:"0.4px",color:y?g.textPrimary:"#374151",border:`1px solid ${y?g.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:y?"rgba(255,255,255,0.02)":"#ffffff"},children:c?"RETURNING...":"RETURN FUNDS"}),a.jsxs("div",{style:{display:"grid",gridTemplateColumns:l?"1fr 1fr":"1fr",gap:"10px"},children:[a.jsx(u.Button,{variant:"ghost",fullWidth:!0,disabled:c,onClick:i,theme:w,dark:y,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:g.textSecondary,border:`1px solid ${y?g.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"START OVER"}),l&&a.jsx(u.Button,{variant:"ghost",fullWidth:!0,disabled:c,onClick:l,theme:w,dark:y,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:g.textSecondary,border:`1px solid ${y?g.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"CHANGE WALLET"})]})]})]}),s.length>1&&a.jsxs("p",{style:{fontSize:"12px",color:g.textSecondary,textAlign:"center",marginTop:"14px",marginBottom:0,lineHeight:"1.5"},children:[s.length," incomplete deposits found \u2014 resolving one at a time."]})]})})},sf=[{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"}],of=({isOpen:e,onClose:t,closeOnBackdropClick:n,onSelect:s,styles:o})=>{const{dark:r,dk:i}=u.useSpiceBrand(o),[l,c]=p.useState(null);return a.jsx(on,{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:sf.map(({source:d,title:f,description:m})=>a.jsxs("button",{onClick:()=>s(d),onMouseEnter:()=>c(d),onMouseLeave:()=>c(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===d?r?i.hoverBg:"#f9fafb":r?i.cardBg:"white",cursor:"pointer",textAlign:"left",transition:u.transition.color},children:[a.jsx("span",{style:{fontSize:"15px",fontWeight:600,fontFamily:u.font.ui,color:r?i.textPrimary:"#111827"},children:f}),a.jsx("span",{style:{fontSize:"13px",fontFamily:u.font.ui,color:r?i.textSecondary:"#6b7280"},children:m})]},d))})})},rf=({isOpen:e,onClose:t,onBack:n,closeOnBackdropClick:s,source:o,destinationChainId:r,onShowWidget:i,onHideWidget:l,verifying:c,verifyError:d,onRetryVerify:f,funded:m,styles:h})=>{const{dark:y,dk:g,primaryColor:w,theme:x}=u.useSpiceBrand(h),b=u.getChainName(r),C=p.useRef(null),v=p.useRef(i);v.current=i;const k=p.useRef(l);k.current=l;const I=c||!!d||!!m;return p.useEffect(()=>{if(!e)return;const A=C.current;if(A){if(I){k.current();return}return v.current(A,o),()=>k.current()}},[e,o,I]),a.jsx(on,{isOpen:e,onClose:t,title:o==="card"?"Deposit with Card":"Deposit from Exchange",styles:h,dark:y,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:c,style:{alignSelf:"flex-start",padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:u.font.ui,color:y?g.textSecondary:"#6b7280",cursor:c?"default":"pointer",opacity:c?.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(u.Spinner,{size:28,color:w})}),a.jsx("div",{ref:C,style:{position:"relative",width:"100%",height:"560px"}}),I&&a.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"16px",padding:"24px",borderRadius:"9px",backgroundColor:y?"rgba(0, 0, 0, 0.82)":"rgba(255, 255, 255, 0.94)"},children:c?a.jsxs(a.Fragment,{children:[a.jsx(u.Spinner,{size:28,color:w}),a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:u.font.ui,color:y?g.textPrimary:"#111827",textAlign:"center"},children:["Confirming your deposit arrived on ",b,"\u2026"]})]}):m?a.jsxs(a.Fragment,{children:[a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:u.font.ui,color:y?g.textPrimary:"#111827",textAlign:"center"},children:[m.amount," ",m.symbol," is in your wallet on"," ",b,"."]}),a.jsx(u.Button,{variant:"outline",onClick:t,theme:x,dark:y,styles:h,children:"DONE"})]}):a.jsxs(a.Fragment,{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontFamily:u.font.ui,color:y?g.textPrimary:"#111827",textAlign:"center"},children:d}),a.jsx(u.Button,{variant:"outline",onClick:f,theme:x,dark:y,styles:h,children:"RETRY"}),a.jsx("button",{onClick:t,style:{padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:u.font.ui,color:y?g.textSecondary:"#6b7280",cursor:"pointer",textDecoration:"underline"},children:"Close \u2014 we'll detect your funds later"})]})})]})]})})},af="692fb8af264069ca12a9",as=42161,lf=[8453,as];function cf(e){const{targetKind:t,appChainId:n}=e;return t!=="external"||n===void 0||!lf.includes(n)?as:S.getTokenBySymbol("USDC",n)?n:as}function ko(e=as){return S.getTokenBySymbol("USDC",e)}function df(e){const t=e?.integratorId??af;return{integratorId:t,enabled:e?.enabled===!0&&t!=="",embedFactory:e?.embedFactory}}const uf=e=>import("@swapper-finance/deposit-sdk").then(t=>new t.SwapperEmbed(e));function pf(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 zl(e){return e==="card"?["depositWithCash"]:e==="exchange"?["transferCrypto"]:["depositWithCash","transferCrypto"]}function ff(e){const t=e.destinationChainId??as,n=ko(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:zl(e.source),styles:e.styles,actionLabel:"deposit",flexibleHeight:!0,iframeAttributes:{borderRadius:"9px"}}}async function Hl(e,t=as){const n=ko(t);if(!n)throw new Error("USDC is not configured for the Swapper destination chain");return u.getClientForChain(t).readContract({address:n.address,abi:T.erc20Abi,functionName:"balanceOf",args:[e]})}async function mf(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 Hl(e,n?.chainId);if(i>t)return i}catch{}await new Promise(i=>setTimeout(i,o))}return null}function hf({enabled:e,integratorId:t,depositWalletAddress:n,destinationChainId:s,brand:o,embedFactory:r,onTransactionSuccess:i,onCloseRequest:l}){const c=p.useRef(null),d=p.useRef(null),f=p.useRef(i);f.current=i;const m=p.useRef(l);m.current=l;const h=p.useRef(o);h.current=o;const y=p.useRef(r);y.current=r;const g=p.useCallback((b,C,v)=>{if(!C.isConnected)return;const k=b.getIframe();k.updateConfig({supportedDepositOptions:zl(v)}),k.sendConfig(),b.showIn(C)},[]);p.useEffect(()=>{if(!e||!n)return;let b=!1;return Promise.resolve().then(()=>{const{dk:C,dark:v,primaryColor:k}=h.current;return(y.current??uf)(ff({integratorId:t,depositWalletAddress:n,destinationChainId:s,source:null,styles:pf(C,v,k)}))}).then(C=>{if(b){C.destroy();return}const v=C.getIframe();v.on("transaction_success",I=>f.current(I)),v.on("close_request",()=>m.current()),c.current=C;const k=d.current;k&&g(C,k.placeholder,k.source)}).catch(C=>{console.error("[useSwapperEmbed] Failed to preload Swapper widget:",C)}),()=>{b=!0,d.current=null,c.current?.destroy(),c.current=null}},[e,t,n,s,g]);const w=p.useCallback((b,C)=>{d.current={placeholder:b,source:C};const v=c.current;v&&g(v,b,C)},[g]),x=p.useCallback(()=>{d.current=null,c.current?.hide()},[]);return{showWidget:w,hideWidget:x}}function gf(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:S.isNativeToken(t)}}const xf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,depositBatches:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:c,depositActionLabel:d,sponsorGas:f=!1,escrowRecovery:m,skipTokenSelection:h=!1,onSubmit:y,onDepositSuccess:g,onDepositError:w,skipRecovery:x=!0})=>{const b=p.useContext(u.SpiceFlowProviderContext);if(!b)return a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"});const C=(b.mode||"7702")!="7702",v=C,k=b.nativeChainId,I=b.network||"testnet",{dark:A,dk:E,primaryColor:j}=u.useSpiceBrand(s),R=!!m,B=u.useWallet(),{isReady:M,isAuthenticated:D,actions:U}=B,O=b?.embeddedWalletAddress,F=b.externalWalletAddress,P=!!F,z=df(b.swapper),q=v?{address:F,kind:"external"}:{address:O,kind:"embedded"},ne=cf({targetKind:q.kind,appChainId:i||k}),de=z.enabled&&!R&&I==="mainnet"&&!!ko(ne),ie=()=>h?"deposit":"select-token",Y=()=>de?"select-source":v?P?ie():"connect-wallet":"provider-login",[Q,G]=p.useState(Y()),[fe,X]=p.useState(null),[be,we]=p.useState(!1),[N,J]=p.useState(null),[ee,V]=p.useState(!1),[me,he]=p.useState(null),[Re,W]=p.useState(null),[L,$]=p.useState(null),le=p.useRef(null),se=p.useRef(null),{pendingDeposits:oe,loading:Ie,refresh:_}=ni(O,{enabled:e&&!x,network:I,chainIds:b.supportedChainIds}),je=p.useMemo(()=>oe.filter(H=>H.embeddedWalletAddress.toLowerCase()===O?.toLowerCase()),[oe,O]),[Fe,st]=p.useState(null),[ve,Ve]=p.useState(!1),[Ne,ot]=p.useState(null),[Pe,ht]=p.useState(!1),[Je,gt]=p.useState("idle");p.useEffect(()=>{if(e&&Q==="recovery"&&!ve&&!Ie&&je.length===0){G(Y());return}e&&!x&&!R&&!Fe&&!Pe&&Je==="idle"&&D&&O&&P&&F&&!Ie&&je.length>0&&Q!=="recovery"&&Q!=="deposit"&&Q!=="swapper"&&G("recovery")},[e,x,R,D,O,P,F,Ie,je,Q,Fe,Pe,Je,ve,de,v,h]);const Qe=p.useCallback(H=>{const Ze={address:H.tokenAddress,symbol:H.tokenSymbol,name:H.tokenSymbol,decimals:H.tokenDecimals,chainId:H.chainId,balance:H.verifiedBalance,balanceFormatted:parseFloat(H.amount),balanceUsd:0,isNative:H.isNative};X(Ze),st(H),G("deposit")},[]),lt=p.useCallback(H=>{if(J(H),v){G(P?H==="wallet"?ie():"swapper":"connect-wallet");return}const Ze=D&&!!O;G(H==="wallet"?Ze?P?ie():"connect-wallet":"provider-login":Ze?"swapper":"provider-login")},[v,D,O,P,h]),Ae=p.useCallback(()=>{se.current?.abort(),V(!1),he(null),W(null),J(null),le.current=null,$(null),G("select-source")},[]);p.useEffect(()=>{Q==="swapper"&&(L||!q.address||$({address:q.address,kind:q.kind}))},[Q,L,q.address,q.kind]);const xt=L??q,qe=xt.address,ut=xt.kind,wt=p.useCallback(async H=>{if(!e||Q!=="swapper"||!qe)return;se.current?.abort();const Ze=new AbortController;se.current=Ze,he(null),V(!0);const Se=ko(ne);if(!Se){V(!1);return}const ct=et=>{V(!1);const yt=T.formatUnits(et,Se.decimals);if(ut==="external"){W({amount:yt,symbol:Se.symbol});const Ct={type:"wallet-funding",status:"success",amount:yt,asset:Se.address,sourceChain:String(ne)};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:Ct})),g?.(Ct);return}Qe({chainId:ne,tokenAddress:Se.address,tokenSymbol:Se.symbol,tokenDecimals:Se.decimals,amount:yt,rawAmount:et.toString(),embeddedWalletAddress:qe,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:et,hasFullBalance:!0})},jt=le.current,Et=await jt;if(Ze.signal.aborted||le.current!==jt)return;if(Et===null){V(!1),he("Unable to confirm your starting balance. Go back and reopen the deposit to try again.");return}const De=await mf(qe,Et,{signal:Ze.signal,chainId:ne});if(!Ze.signal.aborted){if(De===null){V(!1);const et=u.getChainConfig(ne)?.viemChain?.name??`chain ${ne}`;he(`We haven't seen your funds arrive on ${et} yet \u2014 they may still be in transit.`);return}ct(De)}},[e,Q,qe,ut,ne,Qe,g]);p.useEffect(()=>{if(!e||Q!=="swapper"||!qe)return;const H=Hl(qe,ne).catch(()=>null);return le.current=H,()=>{le.current===H&&(le.current=null),se.current?.abort()}},[e,Q,qe,ne]);const{showWidget:$e,hideWidget:at}=hf({enabled:e&&de,integratorId:z.integratorId,depositWalletAddress:qe,destinationChainId:ne,brand:{dk:E,dark:A,primaryColor:j},embedFactory:z.embedFactory,onTransactionSuccess:wt,onCloseRequest:()=>{ee||Ae()}}),Ue=p.useCallback(()=>{ht(!0),G(D&&O&&P&&F?h?"deposit":"select-token":D&&O?"connect-wallet":"provider-login")},[D,O,P,F,h]),rt=p.useCallback(()=>{ot(null),gt("awaiting-disconnect"),G("connect-wallet")},[]),We=p.useCallback(async H=>{Ve(!0),ot(null);try{if(!O)throw new Error("Embedded wallet not available");const Ze=await U.getEthereumProvider(),Se=u.getChainConfig(H.chainId);await u.ensureWalletOnChain(Ze,H.chainId);const ct=u.getClientForChain(H.chainId),jt=await un.getBalance(ct,{address:O}),Et=Se?.viemChain?.name||`chain ${H.chainId}`;if(jt===0n)throw new Error(`Your embedded wallet has no ETH on ${Et} to pay for gas. We recommend completing the deposit instead \u2014 it doesn't require gas.`);const De=T.createWalletClient({account:O,transport:T.custom(Ze),chain:Se?.viemChain}),et=H.externalWalletAddress&&T.isAddress(H.externalWalletAddress)?H.externalWalletAddress:F;if(!et||!T.isAddress(et))throw new Error("Connect the external wallet that should receive these funds, then try again.");const yt={recipient:et,tokenAddr:H.tokenAddress,isNative:H.isNative||S.isNativeToken(H.tokenAddress),amount:H.verifiedBalance,viemChain:Se?.viemChain},Ct=await ir(De,yt),{receipt:it}=await ro({client:ct,hash:Ct,call:co(yt.recipient,yt.tokenAddr,yt.isNative,yt.amount),confirmations:1});if(it.status!=="success")throw new Error("The return transaction failed. Please try again.");Jo(H.embeddedWalletAddress,H.chainId,H.tokenAddress),_(),oe.length<=1&&G(Y())}catch(Ze){const Se=Ze?.message||"Couldn't return your funds. Please try again.",ct=/insufficient funds for gas/i.test(Se);ot(ct?"Not enough ETH in your embedded wallet to cover gas fees. Complete the deposit instead \u2014 it doesn't require gas.":Se)}finally{Ve(!1)}},[U,O,F,oe,_]);p.useEffect(()=>{e||(st(null),ot(null),Ve(!1),ht(!1),gt("idle"),se.current?.abort(),J(null),V(!1),he(null),W(null),le.current=null,$(null))},[e]),p.useEffect(()=>{if(!(x||Je==="idle")){if(Je==="awaiting-disconnect"){(!P||!F)&>("awaiting-reconnect");return}e&&!Ie&&oe.length>0&&D&&O&&(gt("idle"),G("recovery"))}},[x,Je,P,F,e,Ie,oe,D,O]),p.useEffect(()=>{!R||!e||(D&&O?(we(!0),!fe&&m?.chainId&&m?.tokenAddress&&X(gf(m.chainId,m.tokenAddress,m.tokenSymbol,m.tokenDecimals,m.amount)),G("deposit")):G("provider-login"))},[R,e,Q,D,O]);const{assets:ae,loading:ue}=ks({address:F,supportedChains:b.supportedChainIds,fetchBalances:Yn,enabled:e&&!!F,refreshInterval:e?5e3:0}),Te=p.useCallback(()=>{we(!0),G(R?"deposit":N==="card"||N==="exchange"?"swapper":P?h?"deposit":"select-token":"connect-wallet")},[R,N,P,h]),Be=p.useCallback(async()=>{if((!P||!F)&&(await pn(500),!P||!F)){alert("Please connect your wallet first");return}G(h?"deposit":"select-token")},[P,F,h]),ce=p.useCallback(H=>{X(H),G("deposit")},[]),ze=p.useCallback(()=>{if(X(null),r?.(""),!F){G("connect-wallet");return}G("select-token")},[F,r]),Oe=p.useCallback(()=>{t()},[t]);if(p.useEffect(()=>{if(!e){const H=setTimeout(()=>{R||(G(Y()),X(null)),we(!1)},300);return()=>clearTimeout(H)}},[e,R,m?.chainId]),p.useEffect(()=>{e&&Q==="deposit"&&!fe&&!R&&!Fe&&!h&&G("select-token")},[e,Q,fe,R,Fe,h]),p.useEffect(()=>{if(e&&Q==="connect-wallet"&&P&&F&&Je==="idle"){if(de&&!N){G("select-source");return}if(de&&N&&N!=="wallet"){G("swapper");return}G(h?"deposit":"select-token")}},[e,Q,P,F,Je,h,de,N]),p.useEffect(()=>{if(!v&&e&&Q==="provider-login"&&M&&D&&O&&!be){const H=setTimeout(()=>{we(!0),G(N==="card"||N==="exchange"?"swapper":P?h?"deposit":"select-token":"connect-wallet")},100);return()=>clearTimeout(H)}},[v,e,Q,M,D,O,N,P,h,be]),!e)return null;if(Q==="recovery")return a.jsx(nf,{isOpen:e,onClose:Oe,closeOnBackdropClick:n,deposits:je,onComplete:Qe,onCancel:We,onSkip:Ue,onChangeWallet:rt,isProcessing:ve,isVerifying:Ie,onRefresh:_,error:Ne,styles:s});if(Q==="select-source")return de?a.jsx(of,{isOpen:e,onClose:Oe,closeOnBackdropClick:n,onSelect:lt,styles:s}):(G("provider-login"),null);if(Q==="swapper")return N!=="card"&&N!=="exchange"?(G(Y()),null):qe?a.jsx(rf,{isOpen:e,onClose:Oe,onBack:Ae,closeOnBackdropClick:n,source:N,destinationChainId:ne,onShowWidget:$e,onHideWidget:at,verifying:ee,verifyError:me,onRetryVerify:wt,funded:Re,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:A?E.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%",textAlign:"center",fontFamily:'"Helvetica Neue", sans-serif',fontSize:"14px",color:A?E.textPrimary:"#111827"},children:"Preparing your account..."})});if(Q==="provider-login"&&!v)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:A?E.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%"},children:a.jsx(mr,{onAuthSuccess:Te,autoTrigger:!0})})});if(Q==="connect-wallet")return a.jsx(tf,{isOpen:e,onClose:Oe,closeOnBackdropClick:n,onContinue:Be,requiredChainId:C?k:void 0,styles:s});if(Q==="select-token")return F?a.jsx($p,{isOpen:e,onClose:Oe,closeOnBackdropClick:n,onTokenSelect:ce,walletAddress:F,supportedChainIds:b.supportedChainIds,network:I,prefetchedAssets:ue?null:ae??null,styles:s,dark:A}):(G("connect-wallet"),null);if(Q==="deposit"){if(!fe&&!h)return null;const H=!!Fe;return a.jsx(Pi,{isOpen:e,onClose:Oe,closeOnBackdropClick:n,supportedChains:fe?[fe.chainId]:b.supportedChainIds??[],styles:s,externalWalletAddress:F,depositBatches:H?void 0:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:c,depositActionLabel:d,nativeChainId:k,sponsorGas:f,preSelectedAsset:fe??void 0,escrowOnly:R||H,escrowTokenAddress:H?Fe.tokenAddress:m?.tokenAddress,escrowAmount:H?Fe.amount:m?.amount,escrowTokenDecimals:H?Fe.tokenDecimals:m?.tokenDecimals,escrowTokenSymbol:H?Fe.tokenSymbol:m?.tokenSymbol,onSubmit:y,onDepositSuccess:g,onDepositError:w,embeddedWalletAddress:O,onViewAllAssets:h?void 0:ze})}return null},Vl=e=>p.useContext(u.SpiceFlowProviderContext)?a.jsx(xf,{...e}):a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"}),yf=({depositProps:e,withdrawProps:t,...n})=>{const[s,o]=p.useState(!1),[r,i]=p.useState(null);return a.jsxs(a.Fragment,{children:[a.jsx(Wl,{...n,onDepositClick:()=>o(!0),onWithdrawClick:l=>i({assetId:l})}),a.jsx(Vl,{styles:n.styles,onDepositSuccess:n.onDepositSuccess,...e,isOpen:s,onClose:()=>o(!1)}),a.jsx(Or,{styles:n.styles,...t,isOpen:!!r,onClose:()=>i(null),initialSourceAssetId:r?.assetId})]})},wf=({isOpen:e,onClose:t,onChainSelect:n,supportedChains:s,closeOnSelect:o=!0,styles:r})=>{const{theme:i,dark:l,primaryColor:c,dk:d}=u.useSpiceBrand(r),[f,m]=p.useState(""),[h,y]=p.useState(null),[g,w]=p.useState(null),[x,b]=p.useState(!1),[C,v]=p.useState(null),{switchChainAsync:k}=yn.useSwitchChain(),I=p.useMemo(()=>new Set(s||[]),[s]),A=p.useMemo(()=>{if(!s||s.length===0)return[];const B=[];return s.forEach((M,D)=>{if(typeof M!="number")return;const U=u.getChainConfig(M);U&&B.push({id:M.toString(),name:U.displayName,icon:Fn[M]||ws,chainId:M,verified:!0,order:D})}),B},[s]);p.useEffect(()=>{h&&!I.has(parseInt(h,10))&&y(null)},[h,I]);const E=p.useMemo(()=>A.filter(B=>B.name.toLowerCase().includes(f.toLowerCase())).sort((B,M)=>B.order-M.order),[A,f]),j=async()=>{if(!h)return;const B=parseInt(h,10);b(!0),v(null);try{await k({chainId:B}),n&&n(h),o&&t()}catch(M){console.error("Failed to switch chain:",M),v(u.sanitizeError(M,"Failed to switch chain."))}finally{b(!1)}},R=!h||x;return a.jsxs(on,{isOpen:e,onClose:t,title:"Select Chain",styles:r,theme:i,dark:l,children:[a.jsx("div",{style:{padding:"24px 20px"},children:a.jsx(pr,{value:f,onChange:m,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?d.cardBg:"#E9E9E9",color:l?d.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:E.map(B=>{const M=h===B.id,D=g===B.id;return a.jsxs("button",{onClick:()=>y(B.id),onMouseEnter:()=>w(B.id),onMouseLeave:()=>w(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:M?l?`${c}15`:`${c}12`:"transparent",border:M?l?`1px solid ${c}66`:`1px solid ${c}88`:D?l?`1px solid ${c}44`:`1px solid ${c}66`:"1px solid transparent",cursor:"pointer",transition:u.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:B.icon,alt:B.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:u.font.mono,fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:d.textPrimary,textAlign:"left"},children:B.name}),B.verified&&a.jsx("img",{src:Ll,alt:"","aria-hidden":"true",loading:"lazy",decoding:"async",width:16,height:16,style:{width:"16px",height:"16px",filter:l?"brightness(0) invert(1)":"none"}})]})]},B.id)})}),C&&a.jsx("div",{style:{padding:"0 25px 12px"},children:a.jsx(Xt,{variant:"error",size:"compact",palette:d,children:C})}),a.jsx("div",{style:{padding:"0 25px 25px"},children:a.jsxs(u.Button,{variant:"outline",onClick:j,disabled:R,fullWidth:!0,theme:i,styles:r,dark:l,children:["SELECT",a.jsx(nu,{size:20})]})})]})};function Ql(e){const t=Tl({enabled:e.enabled,chainId:e.lockChainId,address:e.destinationTokenAddress,decimals:e.destinationTokenDecimals,symbol:e.lockTokenSymbol,logoURI:e.lockTokenLogoURI}),n=t.token,s=p.useCallback((i,l)=>{if(!t.ready)throw new Error("Lock token metadata is unavailable.");const c={...n,name:n.symbol,isNative:S.isNativeToken(n.address),balance:0n,balanceFormatted:0,balanceUsd:0},d=typeof e.lockBatches=="function"?e.lockBatches({asset:c,amount:T.formatUnits(i,c.decimals),amountWei:i,feeAdjusted:!0,beneficiary:l.beneficiary??l.userAddress,executorAddress:l.executorAddress}):e.lockBatches;if(d.some(f=>f.chainId!==e.lockChainId||f.domain==="spicenet"||f.tokenTransfers?.some(m=>m.from!=="escrow"||!u.addressesEqual(m.token,n.address))))throw new Error("Lock action definitions must contain destination contract calls; the SDK supplies conversion and delivery.");return d.flatMap(f=>f.calls)},[t.ready,n,e.lockBatches,e.lockChainId]),o=Ns({enabled:t.ready,destinationToken:t.ready?n:void 0,selectedAsset:e.selectedAsset,amountDirection:"input-inclusive",feeFunding:e.feeFunding,combineSourceBalances:e.combineSourceBalances,recipient:e.beneficiary,buildActionCalls:s,buildSpicenetBatch:e.buildSpicenetBatch,onSubmit:e.onSubmit,onSuccess:e.onLockSuccess,onError:(i,l)=>e.onLockError?.(i.message,l)}),r=p.useCallback(()=>{t.refresh(),o.quote.refreshQuote()},[t.refresh,o.quote.refreshQuote]);return{...o,quote:{...o.quote,refreshQuote:r},destination:n,metadataError:t.error,canExecute:t.ready&&o.canExecute}}function bf(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 vf=({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:u.font.mono,letterSpacing:"0.3px"},children:t})]}),Gl=p.memo(vf),Cf=({options:e,selectedIndex:t,onSelect:n,primaryColor:s,dark:o=!1,textPrimary:r="#111827",textSecondary:i="#6b7280",trackColor:l})=>{const c=e.length-1,d=l||(o?"#3a3a3a":"#d1d5db"),f=o?"4px":"50%",m=o?"none":"2px solid white",h=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:d,borderRadius:"2px",transform:"translateY(-50%)",pointerEvents:"none"}}),a.jsx("div",{style:{position:"absolute",top:"50%",left:0,width:`${t/c*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:c,step:1,value:t,onChange:y=>n(Number(y.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((y,g)=>a.jsxs("div",{onClick:()=>n(g),style:{display:"flex",flexDirection:"column",alignItems:g===0?"flex-start":g===c?"flex-end":"center",cursor:"pointer",flex:1},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:g===t?700:400,color:g===t?r:i,whiteSpace:"nowrap",transition:"color 0.15s, font-weight 0.15s"},children:y.label}),y.highlight&&a.jsx("span",{style:{fontSize:"10px",color:i,whiteSpace:"nowrap"},children:"(most common)"})]},g))}),a.jsx("style",{children:`
|
|
49
|
+
`})]}),document.body):null;return a.jsxs(a.Fragment,{children:[ct,De,kt&&Gn.createPortal(a.jsx(Dr,{isOpen:!0,onClose:()=>Xe(null),styles:d,walletAssets:{initialAsset:kt},onWithdrawSuccess:()=>{he(),q(),Xe(null)}}),document.body),O&&Gn.createPortal(a.jsx(Mi,{isOpen:!0,onClose:ze,supportedChains:[O.chainId],escrowOnly:!0,escrowTokenAddress:O.tokenAddress,escrowAmount:O.amount,escrowTokenDecimals:O.tokenDecimals,escrowTokenSymbol:O.tokenSymbol,styles:d,onDepositSuccess:He}),document.body)]})};function Zp({asset:e,showLogo:t=!0,showLabel:n=!0,denomination:s="token",className:o,style:r}){const i=p.useAssetDisplay()(e),l=s==="token"?p.formatAssetBalance(e):Number.isFinite(e.balanceUsd)&&(e.balanceUsd>0||e.balance===0n)?p.formatUsd(e.balanceUsd):"\u2014";return a.jsxs("span",{className:o,style:{display:"inline-flex",alignItems:"center",gap:6,...r},children:[t&&a.jsx(fo,{symbol:e.symbol,label:i.symbol,logoURI:i.logoURI,chainId:e.chainId,address:e.address}),n&&a.jsx("span",{children:i.symbol}),a.jsx("span",{children:l})]})}var Yp="data:image/png;base64,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",Ll="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",Xp="data:image/png;base64,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";const Jp=({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"})]}),ql=({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:p.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"})})}),$p=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onTokenSelect:s,walletAddress:o,supportedChainIds:r,network:i,prefetchedAssets:l,styles:c,dark:d})=>{const[f,m]=u.useState(""),[h,w]=u.useState(null),[g,y]=u.useState(null),[x,b]=u.useState(!1),[v,C]=u.useState(new Set),k=u.useContext(p.SpiceFlowProviderContext),I=i||k?.network||"testnet",A=k?.allowedTokens,F=(k?.mode||"7702")!=="7702",R=!!k?.isWhitelistGateActive,{dark:j,primaryColor:T,dk:P}=p.useSpiceBrand(c,d),O=j?P.cardBg:"white",M=j?`${T}55`:"#F4A5A5",U=j?"0 4px 12px rgba(0, 0, 0, 0.4)":"0 4px 12px rgba(0, 0, 0, 0.15)",E=j?P.hoverBg:"#E9E9E9",D=j?P.hoverBg:"#f9fafb",L=j?P.textPrimary:"#374151",z=j?P.textPrimary:"#111827",se=j?P.textSecondary:"#9ca3af",de=j?`${T}22`:"#FBDBDB",oe=j?`${T}55`:"#F4A5A5",Q=u.useMemo(()=>r||k?.supportedChainIds||S.getChainIdsByNetwork(I),[r,k?.supportedChainIds,I]),J=u.useMemo(()=>Q.map(q=>{const W=p.getChainConfig(q);return W?{id:q,name:W.displayName,icon:Bn[q]||ws}:null}).filter(Boolean),[Q]),X=l===void 0,{assets:ee,loading:K}=ks({address:X?o:void 0,supportedChains:Q,fetchBalances:Yn,enabled:e&&X&&!!o,refreshInterval:e?5e3:0}),we=l??(X?ee:[]),ve=l===null||X&&K,N=u.useMemo(()=>(we??[]).filter(q=>Tn(q,"deposit-source",{allowedTokens:A,rpcOverrides:k?.rpcOverrides,liquidityVenues:k?.liquidityVenues,isWhitelistGateActive:R},void 0,void 0,{requiresEscrow:F}).eligible),[we,A,k?.rpcOverrides,R,F]),Z=u.useMemo(()=>{let q=N.filter(W=>W.balance>0n);if(v.size>0&&(q=q.filter(W=>v.has(W.chainId))),f.trim()){const W=f.toLowerCase();q=q.filter(_=>_.name.toLowerCase().includes(W)||_.symbol.toLowerCase().includes(W)||_.address.toLowerCase().includes(W))}return q=[...new Map(q.map(W=>[ye(W),W])).values()],q.sort((W,_)=>{const ce=W.balanceFormatted>0?1:0,$=_.balanceFormatted>0?1:0;return $!==ce?$-ce:_.balanceUsd!==W.balanceUsd?_.balanceUsd-W.balanceUsd:_.balanceFormatted-W.balanceFormatted}),q},[N,f,v]),Y=ye;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||(m(""),w(null),b(!1),C(new Set))},[e]);const G=q=>{s(q)},pe=q=>{C(W=>{const _=new Set(W);return _.has(q)?_.delete(q):_.add(q),_})},xe=()=>{C(new Set)},ke=v.size===0;return a.jsxs(an,{isOpen:e,onClose:t,title:"Select a Token",bannerSrc:Xp,bannerAlt:"Select token banner",styles:c,dark:j,closeOnBackdropClick:n,children:[a.jsx("div",{style:{padding:"20px 20px"},children:a.jsx(fr,{value:f,onChange:m,ariaLabel:"Search tokens",placeholder:"Search token name, symbol or address",dark:j,styles:c,endAdornment:a.jsxs("div",{style:{position:"relative",flexShrink:0},children:[a.jsx("button",{onClick:()=>b(q=>!q),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"5px",borderRadius:"3px",backgroundColor:x||!ke?E:"transparent",border:"none",cursor:"pointer",transition:"background-color 0.15s"},children:a.jsx(Jp,{size:20,active:!ke,dark:j})}),x&&a.jsxs("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,backgroundColor:O,borderRadius:"8px",border:`1px solid ${M}`,boxShadow:U,padding:"8px",minWidth:"220px",zIndex:100},children:[a.jsxs("button",{onClick:xe,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=D,onMouseLeave:q=>q.currentTarget.style.backgroundColor="transparent",children:[a.jsx(ql,{checked:ke,primaryColor:T,dark:j}),a.jsx("img",{src:Yp,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:p.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:L},children:"ALL NETWORKS"})]}),J.map(q=>a.jsxs("button",{onClick:()=>pe(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:W=>W.currentTarget.style.backgroundColor=D,onMouseLeave:W=>W.currentTarget.style.backgroundColor="transparent",children:[a.jsx(ql,{checked:v.has(q.id),primaryColor:T,dark:j}),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:p.font.mono,fontSize:"12px",fontWeight:600,letterSpacing:"0.5px",color:L},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:[ve&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:p.font.mono,fontSize:"13px",color:se},children:"Loading balances..."}),!ve&&Z.length===0&&a.jsx("div",{style:{padding:"24px 8px",textAlign:"center",fontFamily:p.font.mono,fontSize:"13px",color:se},children:"No tokens found"}),Z.map(q=>{const W=Y(q),_=h===W,ce=g===W,$=p.getChainConfig(q.chainId)?.displayName||`Chain ${q.chainId}`;return a.jsxs("button",{onClick:()=>G(q),onMouseEnter:()=>y(W),onMouseLeave:()=>y(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:_?de:"transparent",border:_||ce?`1px solid ${oe}`:"1px solid transparent",cursor:"pointer",transition:p.transition.interactive},children:[a.jsx("div",{style:{flexShrink:0},children:a.jsx(fo,{symbol:q.symbol,logoURI:q.logoURI,chainId:q.chainId,address:q.address,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:p.font.mono,fontSize:"15px",fontWeight:500,letterSpacing:"0.4px",color:z,textAlign:"left"},children:q.name}),a.jsx("img",{src:Ll,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:[Bn[q.chainId]&&a.jsx("img",{src:Bn[q.chainId],alt:"",loading:"lazy",decoding:"async",width:14,height:14,style:{width:"14px",height:"14px",borderRadius:"50%"}}),a.jsxs("span",{style:{fontFamily:p.font.mono,fontSize:"12px",fontWeight:400,color:se,textAlign:"left"},children:[q.symbol," \xB7 ",$]})]})]}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"2px",flexShrink:0},children:[q.balanceUsd>0&&a.jsx("span",{style:{fontFamily:p.font.mono,fontSize:"16px",fontWeight:600,color:z},children:p.formatUsd(q.balanceUsd)}),a.jsxs("span",{style:{fontFamily:p.font.mono,fontSize:"12px",fontWeight:400,color:se},children:[p.formatBalance(q.balanceFormatted)," ",q.symbol]})]})]},W)})]})]})};var _p="data:image/png;base64,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";const Mr=e=>{const t=(e.id||"").toLowerCase(),n=(e.name||"").toLowerCase();return t.startsWith("io.privy.wallet")||n.includes("privy wallet")};async function Pr(e,t){let n;try{return await Promise.race([e,new Promise((s,o)=>{n=setTimeout(()=>{const r=new Error("Wallet network read timed out. Please try again.");r.name="WalletReadTimeout",o(r)},Math.max(0,t-Date.now()))})])}finally{n!==void 0&&clearTimeout(n)}}const ef=({dark:e,dk:t,primaryColor:n,disabled:s,hidden:o,onConnecting:r,onError:i})=>{const[l,c]=u.useState(!1),d=Cn.useAccount(),{embeddedAddress:f}=p.useProviderWallets(),m=u.useRef({account:d,embeddedAddress:f});m.current={account:d,embeddedAddress:f};const{ready:h,authenticated:w,user:g}=fs.usePrivy(),y={ready:h,authenticated:w,userId:g?.id},x=u.useRef(y);x.current=y;const b=u.useRef(0),v=()=>{const A=x.current;return A.ready===y.ready&&A.authenticated===y.authenticated&&A.userId===y.userId};u.useLayoutEffect(()=>(b.current++,c(!1),r(!1),()=>{b.current++}),[h,w,g?.id,r]);const{disconnectAsync:C}=Cn.useDisconnect(),{setActiveWallet:k}=fs.useActiveWallet(),{connectWallet:I}=fs.useConnectWallet({onSuccess:async({wallet:A})=>{if(!h||!v())return;const F=++b.current,R=()=>F===b.current&&v();c(!0),r(!0);try{if(A.type!=="ethereum"||A.connectorType==="embedded")throw new Error("Choose an external Ethereum wallet.");k(A);const j=m.current.account;j.address&&j.connector&&!Mr(j.connector)&&!p.addressesEqual(j.address,m.current.embeddedAddress)&&!p.addressesEqual(j.address,A.address)&&await C({connector:j.connector})}catch(j){R()&&i(p.sanitizeError(j,"Failed to connect wallet."))}finally{R()&&(c(!1),r(!1))}},onError:A=>{v()&&(b.current++,c(!1),r(!1),i(p.sanitizeError(A,"Failed to connect wallet.")))}});return o?null:a.jsxs("button",{onClick:()=>{s||l||(b.current++,c(!0),r(!0),I({walletChainType:"ethereum-only"}))},disabled:s||l,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:l?e?t.hoverBg:"#f3f4f6":"transparent",border:`2px solid ${e?`${n}33`:`${n}55`}`,cursor:s||l?"not-allowed":"pointer",opacity:s?.6:1,transition:p.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:bs.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:p.font.mono},children:l?"Opening wallet picker...":"MetaMask / Browser Wallet"})]})},tf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,onWalletSelect:s,onContinue:o,requiredChainId:r,styles:i})=>{const{dark:l,primaryColor:c,dk:d,theme:f}=p.useSpiceBrand(i),m=u.useContext(p.SpiceFlowProviderContext),[h,w]=u.useState(null),[g,y]=u.useState(!1),[x,b]=u.useState(null),[v,C]=u.useState(!1),[k,I]=u.useState(null),[A,F]=u.useState(!1);u.useEffect(()=>{e||(b(null),C(!1),y(!1),I(null))},[e]);const{address:R,chain:j,connector:T,isConnected:P}=Cn.useAccount(),{externalWallet:O,externalAddress:M}=p.useProviderWallets(),U=!!O&&!!M,E=O?.wallet.connector||O?.wallet.meta,D=Number(String(O?.wallet.chainId??"").replace(/^eip155:/,"")),L=O?.wallet.connector===T&&P&&p.addressesEqual(M,R)?j:p.getChainConfig(D)?.viemChain,{connectors:z,connectAsync:se}=Cn.useConnect(),{disconnectAsync:de}=Cn.useDisconnect(),oe=S.getChainIdsByNetwork(m?.network||"testnet"),Q=u.useRef(O);Q.current=O;const J=u.useRef(0),X=O?.wallet.connector||O?.wallet;u.useEffect(()=>(J.current++,y(!1),b(null),()=>{J.current++}),[M,X,e]);const ee=(r?p.getChainConfig(r):null)?.displayName||L?.name||`Chain ${L?.id||r}`,K=W=>W.type==="announced"||typeof W.ready=="boolean"&&W.ready?!0:W.type==="injected"?typeof window<"u"&&!!window.ethereum:!0,we=z.filter(W=>{const _=W.name.toLowerCase(),ce=(W.id||"").toLowerCase();return m?.provider==="privy"&&Mr(W)||["safe"].includes(W.type)?!1:W.type==="walletConnect"?!!W?.options?.projectId:W.type==="announced"?!0:W.type==="injected"||["metamask","rabby","phantom","coinbase","trust","rainbow"].some($=>_.includes($)||ce.includes($))?K(W):!1}),ve=async W=>{if(!(v||g))try{if(C(!0),I(W.uid),b(null),await se({connector:W}),await fn(500),Q.current?.wallet.connector!==W)throw new Error("Wallet changed. Please try again.");s&&s(W.id),r&&await Y(r),await fn(800)}catch(_){console.error("Connection error:",_),p.isUserRejection(_)?b("Connection rejected. Please try again."):b(p.sanitizeError(_,"Failed to connect wallet."))}finally{C(!1),I(null)}},N=W=>{if(W.icon)return W.icon;const _=(W.name||"").toLowerCase();for(const[ce,$]of Object.entries(bs))if(_.includes(ce.toLowerCase()))return $;if(!Mr(W)&&(W.type==="injected"||W.type==="announced")&&typeof window<"u"&&window.ethereum){const ce=window.ethereum;if(ce.isMetaMask)return bs.metamask;if(ce.isRabby)return bs.rabby;if(ce.isPhantom)return bs.phantom}return null},Z=async(W,_,ce)=>{const $=_.wallet.connector||_.wallet,te=Date.now()+2e3;for(;Date.now()<te;){if(await fn(Math.min(100,te-Date.now())),ce!==J.current||!p.addressesEqual(Q.current?.address,_.address)||(Q.current?.wallet.connector||Q.current?.wallet)!==$)return!1;try{const Ie=await Pr((async()=>{const he=await _.getEthereumProvider();return parseInt(await he.request({method:"eth_chainId"}),16)})(),te);if(ce!==J.current||!p.addressesEqual(Q.current?.address,_.address)||(Q.current?.wallet.connector||Q.current?.wallet)!==$)return!1;if(Ie===W)return!0}catch{}}return!1},Y=async W=>{const _=++J.current,ce=Q.current,$=ce?.wallet.connector||ce?.wallet,te=()=>_===J.current&&p.addressesEqual(Q.current?.address,ce?.address)&&(Q.current?.wallet.connector||Q.current?.wallet)===$;y(!0),b(null);try{if(!ce)throw new Error("Wallet not available");const Ie=Date.now()+2e3,he=await Pr(ce.getEthereumProvider(),Ie);let fe;const Ae=()=>{if(!te())throw new Error("Wallet changed. Please try again.");if(fe)throw fe};Ae(),await Ai({request:async We=>{if(We.method!=="eth_chainId")return he.request(We);try{return await Pr(he.request(We),Ie)}catch(Ce){throw Ce instanceof Error&&Ce.name==="WalletReadTimeout"&&(fe=Ce),Ce}}},W,Ae),!await Z(W,ce,_)&&te()&&b("Unable to switch to the correct network. Please switch manually in your wallet to continue.")}catch(Ie){te()&&(console.error("Manual chain switch error:",Ie),b(p.describeChainSwitchError(Ie)))}finally{te()&&y(!1)}},G=async W=>{g||(F(!1),await Y(W))},pe=async()=>{if(!g){if(!r){F(W=>!W);return}await Y(r)}},xe=async()=>{try{const W=O?.wallet;W&&typeof W.disconnect=="function"&&W.disconnect(),T&&p.addressesEqual(M,R)&&await de({connector:T})}finally{b(null),C(!1),y(!1),I(null),F(!1)}},ke=U&&!g&&!v&&(!r||L?.id===r),q=U&&!g&&!v&&r&&L?.id!==r;return a.jsxs(an,{isOpen:e,onClose:t,title:"Connect Wallet",styles:i,dark:l,bannerSrc:_p,bannerAlt:"Connect wallet banner",closeOnBackdropClick:n,children:[a.jsxs("div",{style:{padding:"0 24px 20px",display:"flex",flexDirection:"column",gap:"12px",marginTop:"20px"},children:[x&&a.jsx(Si,{dk:d,dark:l,message:x,buttonLabel:g?"Switching...":"Try Switch Again",onAction:pe,disabled:g}),g&&a.jsxs("div",{style:{padding:"12px",backgroundColor:l?d.infoBg:"#dbeafe",borderRadius:"8px",display:"flex",alignItems:"center",gap:"10px",marginTop:"20px"},children:[a.jsx(p.Spinner,{size:20,color:l?d.infoText:"#3b82f6"}),a.jsx("p",{style:{margin:0,color:l?d.infoText:"#1e40af",fontSize:"14px"},children:"Switching network..."})]}),m?.provider==="privy"&&a.jsx(ef,{dark:l,dk:d,primaryColor:c,disabled:v||g,hidden:U,onConnecting:C,onError:b}),U&&M?a.jsxs("div",{style:{border:`1px solid ${l?d.successBorder:"#02974F"}`,borderRadius:"8px",overflow:"hidden",marginTop:"20px"},children:[a.jsxs("div",{style:{backgroundColor:l?d.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?d.successText:"#02974F",fontWeight:600,fontSize:"14px",letterSpacing:"0.5px"},children:"WALLET CONNECTED"})]}),a.jsx("div",{style:{width:"38px",height:"38px",borderRadius:"50%",backgroundColor:l?d.cardBg:"#f3f4f6",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:E&&N(E)?a.jsx("img",{src:N(E),alt:E.name,style:{width:"24px",height:"24px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?d.textPrimary:"inherit"},children:E?.name?.charAt(0)||"W"})})]}),a.jsxs("div",{style:{padding:"18px",backgroundColor:l?d.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?d.textSecondary:"#939291",fontSize:"13px",fontWeight:500,letterSpacing:"0.3px"},children:"ADDRESS:"}),a.jsx("span",{className:"ibm-plex-mono",style:{color:l?d.textPrimary:"black",fontSize:"14px",fontWeight:600,fontFamily:p.font.mono,letterSpacing:"0.3px"},children:p.truncateAddress(M)})]}),A&&a.jsx("div",{style:{marginBottom:"12px",border:`1px solid ${l?d.inputBorder:"#E5E7EB"}`,borderRadius:"8px",overflow:"hidden",backgroundColor:d.cardBg},children:oe.map(W=>{const _=p.getChainConfig(W);if(!_)return null;const ce=L?.id===W;return a.jsxs("button",{onClick:()=>{ce?F(!1):G(W)},style:{width:"100%",display:"flex",alignItems:"center",gap:"8px",padding:"10px 12px",backgroundColor:ce?l?`${c}15`:`${c}10`:"transparent",border:"none",borderBottom:`1px solid ${l?d.inputBorder:"#E5E7EB"}`,cursor:ce?"default":"pointer",transition:"background-color 0.15s"},onMouseEnter:$=>{ce||($.currentTarget.style.backgroundColor=l?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.03)")},onMouseLeave:$=>{$.currentTarget.style.backgroundColor=ce?l?`${c}15`:`${c}10`:"transparent"},children:[a.jsx("img",{src:Bn[W]||ws,alt:_.displayName,style:{width:"20px",height:"20px",borderRadius:"50%",objectFit:"contain"}}),a.jsx("span",{style:{fontSize:"13px",fontWeight:ce?600:400,color:l?d.textPrimary:"#1f2937",fontFamily:p.font.mono},children:_.displayName}),ce&&a.jsx("span",{style:{marginLeft:"auto",fontSize:"11px",color:c,fontWeight:500},children:"Connected"})]},W)})}),a.jsxs("button",{className:"ibm-plex-mono",onClick:xe,style:{width:"100%",padding:"10px",backgroundColor:"transparent",border:`1px solid ${l?d.inputBorder:"#E5E7EB"}`,borderRadius:"6px",cursor:"pointer",fontSize:"13px",fontWeight:500,color:l?d.textSecondary:"#9CA3AF",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},children:[a.jsx("span",{style:{fontSize:"16px"},children:"\u27F2"}),"DISCONNECT"]})]})]}):a.jsx(a.Fragment,{children:we.map(W=>{const _=K(W),ce=k===W.uid,$=!_||v||ce;return a.jsxs("button",{onClick:()=>{$||ve(W)},onMouseEnter:()=>!$&&w(W.uid),onMouseLeave:()=>w(null),disabled:$,style:{width:"100%",display:"flex",alignItems:"center",gap:"14px",padding:"10px",borderRadius:"8px",backgroundColor:ce?l?d.hoverBg:"#f3f4f6":"transparent",border:h===W.uid&&!$?`2px solid ${l?`${c}44`:`${c}66`}`:"2px solid transparent",cursor:$?"not-allowed":"pointer",opacity:$?.6:1,transition:p.transition.interactive},children:[a.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:l?d.cardBg:"#f3f4f6"},children:N(W)?a.jsx("img",{src:N(W),alt:W.name,style:{width:"26px",height:"26px",objectFit:"contain"}}):a.jsx("span",{style:{fontSize:"16px",fontWeight:"bold",color:l?d.textPrimary:"inherit"},children:W.name.charAt(0)})}),a.jsxs("span",{className:"ibm-plex-mono",style:{fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:$?l?d.inputPlaceholder:"#9ca3af":l?d.textPrimary:"#111827",flex:1,textAlign:"left",fontFamily:p.font.mono},children:[ce?"Connecting...":W.name,!_&&!ce&&a.jsx("span",{style:{fontSize:"12px",marginLeft:"8px"},children:"(Not detected)"})]})]},W.uid)})})]}),q&&!x&&a.jsx("div",{style:{padding:"0 24px 20px"},children:a.jsx(Si,{dk:d,dark:l,message:`Please switch to ${ee} to continue.`,buttonLabel:g?"Switching...":"Switch Network",onAction:pe,disabled:g})}),a.jsx("div",{style:{padding:"0 24px 25px"},children:a.jsx(p.Button,{variant:"outline",fullWidth:!0,onClick:async()=>{ke&&(await fn(300),o?await o():t())},disabled:!ke,theme:f,dark:l,styles:i,children:v?"CONNECTING...":g?"SWITCHING NETWORK...":"CONTINUE"})})]})},nf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,deposits:s,onComplete:o,onCancel:r,onSkip:i,onChangeWallet:l,isProcessing:c,isVerifying:d=!1,onRefresh:f,error:m,styles:h})=>{const{dark:w,dk:g,theme:y}=p.useSpiceBrand(h);if(!e)return null;if(s.length===0)return a.jsx(an,{isOpen:e,onClose:t,title:"Incomplete Deposit",styles:h,closeOnBackdropClick:n,children:a.jsx("p",{role:"status",style:{padding:"18px 24px",color:g.textSecondary},children:c?"Returning funds\u2026":"Checking your wallet\u2026"})});const x=s[0],b=x.verifiedBalance<=0n,v=c||d||b,C=h?.fontFamily||p.font.ui,k=p.font.mono,I=p.getChainName(x.chainId),A=parseFloat(x.amount).toPrecision(6).replace(/\.?0+$/,""),F=B.formatUnits(x.verifiedBalance,x.tokenDecimals);return a.jsx(an,{isOpen:e,onClose:t,title:"Incomplete Deposit",styles:h,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"18px 24px 24px",fontFamily:C},children:[a.jsx("p",{style:{fontSize:"14px",color:g.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:w?g.cardBg:"#f8fafc",border:`1px solid ${g.cardBorder}`,borderRadius:w?"14px":"10px",boxShadow:w?"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:g.textSecondary,fontFamily:k,letterSpacing:"0.8px"},children:"NETWORK"}),a.jsx("span",{style:{fontSize:"18px",fontWeight:600,color:g.textPrimary,fontFamily:C,lineHeight:1.2},children:I})]}),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:g.textSecondary,fontFamily:k,letterSpacing:"0.8px"},children:"DEPOSITED AMOUNT"}),a.jsxs("span",{style:{fontSize:"24px",fontWeight:700,color:g.successText,fontFamily:k,lineHeight:1.1},children:[A," ",x.tokenSymbol]}),a.jsx("span",{style:{fontSize:"12px",color:g.textSecondary,fontWeight:500,fontFamily:C},children:"Sent to embedded wallet"})]})]}),!x.hasFullBalance&&x.verifiedBalance>0n&&a.jsxs("div",{style:{marginBottom:"16px",padding:"8px 12px",backgroundColor:g.warningBg,border:`1px solid ${w?g.warningBorder:"#fcd34d"}`,borderRadius:"8px",fontSize:"13px",color:g.warningText,lineHeight:"1.4"},children:["Partial balance \u2014 only ",parseFloat(F).toFixed(4)," ",x.tokenSymbol," available."]}),(d||b)&&a.jsxs("div",{style:{marginBottom:"16px",color:g.textSecondary},children:[a.jsx("p",{role:"status",children:d?"Checking your wallet\u2026":"Balance unavailable. Try again."}),b&&f&&a.jsx(p.Button,{variant:"ghost",fullWidth:!0,disabled:c||d,onClick:f,theme:y,dark:w,children:"TRY AGAIN"})]}),m&&a.jsx("div",{style:{marginBottom:"16px",padding:"10px 12px",backgroundColor:g.errorBg,border:`1px solid ${w?g.errorBorder:"#fca5a5"}`,borderRadius:"8px",fontSize:"13px",color:w?g.errorText:"#991b1b",lineHeight:"1.4"},children:m}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[a.jsx(p.Button,{variant:"outline",fullWidth:!0,disabled:v,onClick:()=>o(x),theme:y,dark:w,styles:h,children:"CONFIRM DEPOSIT"}),a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[a.jsx(p.Button,{variant:"ghost",fullWidth:!0,disabled:v,onClick:()=>r(x),theme:y,dark:w,style:{height:"48px",fontSize:"13px",letterSpacing:"0.4px",color:w?g.textPrimary:"#374151",border:`1px solid ${w?g.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:w?"rgba(255,255,255,0.02)":"#ffffff"},children:c?"RETURNING...":"RETURN FUNDS"}),a.jsxs("div",{style:{display:"grid",gridTemplateColumns:l?"1fr 1fr":"1fr",gap:"10px"},children:[a.jsx(p.Button,{variant:"ghost",fullWidth:!0,disabled:c,onClick:i,theme:y,dark:w,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:g.textSecondary,border:`1px solid ${w?g.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"START OVER"}),l&&a.jsx(p.Button,{variant:"ghost",fullWidth:!0,disabled:c,onClick:l,theme:y,dark:w,style:{height:"44px",fontSize:"12px",letterSpacing:"0.4px",color:g.textSecondary,border:`1px solid ${w?g.cardBorder:"#d1d5db"}`,borderRadius:"12px",backgroundColor:"transparent"},children:"CHANGE WALLET"})]})]})]}),s.length>1&&a.jsxs("p",{style:{fontSize:"12px",color:g.textSecondary,textAlign:"center",marginTop:"14px",marginBottom:0,lineHeight:"1.5"},children:[s.length," incomplete deposits found \u2014 resolving one at a time."]})]})})},sf=[{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"}],of=({isOpen:e,onClose:t,closeOnBackdropClick:n,onSelect:s,styles:o})=>{const{dark:r,dk:i}=p.useSpiceBrand(o),[l,c]=u.useState(null);return a.jsx(an,{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:sf.map(({source:d,title:f,description:m})=>a.jsxs("button",{onClick:()=>s(d),onMouseEnter:()=>c(d),onMouseLeave:()=>c(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===d?r?i.hoverBg:"#f9fafb":r?i.cardBg:"white",cursor:"pointer",textAlign:"left",transition:p.transition.color},children:[a.jsx("span",{style:{fontSize:"15px",fontWeight:600,fontFamily:p.font.ui,color:r?i.textPrimary:"#111827"},children:f}),a.jsx("span",{style:{fontSize:"13px",fontFamily:p.font.ui,color:r?i.textSecondary:"#6b7280"},children:m})]},d))})})},rf=({isOpen:e,onClose:t,onBack:n,closeOnBackdropClick:s,source:o,destinationChainId:r,onShowWidget:i,onHideWidget:l,verifying:c,verifyError:d,onRetryVerify:f,funded:m,styles:h})=>{const{dark:w,dk:g,primaryColor:y,theme:x}=p.useSpiceBrand(h),b=p.getChainName(r),v=u.useRef(null),C=u.useRef(i);C.current=i;const k=u.useRef(l);k.current=l;const I=c||!!d||!!m;return u.useEffect(()=>{if(!e)return;const A=v.current;if(A){if(I){k.current();return}return C.current(A,o),()=>k.current()}},[e,o,I]),a.jsx(an,{isOpen:e,onClose:t,title:o==="card"?"Deposit with Card":"Deposit from Exchange",styles:h,dark:w,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:c,style:{alignSelf:"flex-start",padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:p.font.ui,color:w?g.textSecondary:"#6b7280",cursor:c?"default":"pointer",opacity:c?.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(p.Spinner,{size:28,color:y})}),a.jsx("div",{ref:v,style:{position:"relative",width:"100%",height:"560px"}}),I&&a.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"16px",padding:"24px",borderRadius:"9px",backgroundColor:w?"rgba(0, 0, 0, 0.82)":"rgba(255, 255, 255, 0.94)"},children:c?a.jsxs(a.Fragment,{children:[a.jsx(p.Spinner,{size:28,color:y}),a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:p.font.ui,color:w?g.textPrimary:"#111827",textAlign:"center"},children:["Confirming your deposit arrived on ",b,"\u2026"]})]}):m?a.jsxs(a.Fragment,{children:[a.jsxs("p",{style:{margin:0,fontSize:"14px",fontFamily:p.font.ui,color:w?g.textPrimary:"#111827",textAlign:"center"},children:[m.amount," ",m.symbol," is in your wallet on"," ",b,"."]}),a.jsx(p.Button,{variant:"outline",onClick:t,theme:x,dark:w,styles:h,children:"DONE"})]}):a.jsxs(a.Fragment,{children:[a.jsx("p",{style:{margin:0,fontSize:"14px",fontFamily:p.font.ui,color:w?g.textPrimary:"#111827",textAlign:"center"},children:d}),a.jsx(p.Button,{variant:"outline",onClick:f,theme:x,dark:w,styles:h,children:"RETRY"}),a.jsx("button",{onClick:t,style:{padding:0,border:"none",background:"none",fontSize:"13px",fontFamily:p.font.ui,color:w?g.textSecondary:"#6b7280",cursor:"pointer",textDecoration:"underline"},children:"Close \u2014 we'll detect your funds later"})]})})]})]})})},af="692fb8af264069ca12a9",as=42161,lf=[8453,as];function cf(e){const{targetKind:t,appChainId:n}=e;return t!=="external"||n===void 0||!lf.includes(n)?as:S.getTokenBySymbol("USDC",n)?n:as}function So(e=as){return S.getTokenBySymbol("USDC",e)}function df(e){const t=e?.integratorId??af;return{integratorId:t,enabled:e?.enabled===!0&&t!=="",embedFactory:e?.embedFactory}}const uf=e=>import("@swapper-finance/deposit-sdk").then(t=>new t.SwapperEmbed(e));function pf(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 zl(e){return e==="card"?["depositWithCash"]:e==="exchange"?["transferCrypto"]:["depositWithCash","transferCrypto"]}function ff(e){const t=e.destinationChainId??as,n=So(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:zl(e.source),styles:e.styles,actionLabel:"deposit",flexibleHeight:!0,iframeAttributes:{borderRadius:"9px"}}}async function Hl(e,t=as){const n=So(t);if(!n)throw new Error("USDC is not configured for the Swapper destination chain");return p.getClientForChain(t).readContract({address:n.address,abi:B.erc20Abi,functionName:"balanceOf",args:[e]})}async function mf(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 Hl(e,n?.chainId);if(i>t)return i}catch{}await new Promise(i=>setTimeout(i,o))}return null}function hf({enabled:e,integratorId:t,depositWalletAddress:n,destinationChainId:s,brand:o,embedFactory:r,onTransactionSuccess:i,onCloseRequest:l}){const c=u.useRef(null),d=u.useRef(null),f=u.useRef(i);f.current=i;const m=u.useRef(l);m.current=l;const h=u.useRef(o);h.current=o;const w=u.useRef(r);w.current=r;const g=u.useCallback((b,v,C)=>{if(!v.isConnected)return;const k=b.getIframe();k.updateConfig({supportedDepositOptions:zl(C)}),k.sendConfig(),b.showIn(v)},[]);u.useEffect(()=>{if(!e||!n)return;let b=!1;return Promise.resolve().then(()=>{const{dk:v,dark:C,primaryColor:k}=h.current;return(w.current??uf)(ff({integratorId:t,depositWalletAddress:n,destinationChainId:s,source:null,styles:pf(v,C,k)}))}).then(v=>{if(b){v.destroy();return}const C=v.getIframe();C.on("transaction_success",I=>f.current(I)),C.on("close_request",()=>m.current()),c.current=v;const k=d.current;k&&g(v,k.placeholder,k.source)}).catch(v=>{console.error("[useSwapperEmbed] Failed to preload Swapper widget:",v)}),()=>{b=!0,d.current=null,c.current?.destroy(),c.current=null}},[e,t,n,s,g]);const y=u.useCallback((b,v)=>{d.current={placeholder:b,source:v};const C=c.current;C&&g(C,b,v)},[g]),x=u.useCallback(()=>{d.current=null,c.current?.hide()},[]);return{showWidget:y,hideWidget:x}}function gf(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:S.isNativeToken(t)}}const xf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,styles:s,depositBatches:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:c,depositActionLabel:d,sponsorGas:f=!1,escrowRecovery:m,skipTokenSelection:h=!1,directSubmit:w=!1,onSubmit:g,onDepositSuccess:y,onDepositError:x,skipRecovery:b=!0})=>{const v=u.useContext(p.SpiceFlowProviderContext);if(!v)return a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"});const C=(v.mode||"7702")!="7702",k=C,I=v.nativeChainId,A=v.network||"testnet",{dark:F,dk:R,primaryColor:j}=p.useSpiceBrand(s),T=!!m,P=p.useWallet(),{isReady:O,isAuthenticated:M,actions:U}=P,E=v?.embeddedWalletAddress,D=v.externalWalletAddress,L=!!D,z=df(v.swapper),se=k?{address:D,kind:"external"}:{address:E,kind:"embedded"},de=cf({targetKind:se.kind,appChainId:i||I}),oe=z.enabled&&!T&&A==="mainnet"&&!!So(de),Q=()=>h?"deposit":"select-token",J=()=>oe?"select-source":k?L?Q():"connect-wallet":"provider-login",[X,ee]=u.useState(J()),[K,we]=u.useState(null),[ve,N]=u.useState(!1),[Z,Y]=u.useState(null),[G,pe]=u.useState(!1),[xe,ke]=u.useState(null),[q,W]=u.useState(null),[_,ce]=u.useState(null),$=u.useRef(null),te=u.useRef(null),{pendingDeposits:Ie,loading:he,refresh:fe}=ni(E,{enabled:e&&!b,network:A,chainIds:v.supportedChainIds}),Ae=u.useMemo(()=>Ie.filter(ge=>ge.embeddedWalletAddress.toLowerCase()===E?.toLowerCase()),[Ie,E]),[We,Ce]=u.useState(null),[ze,He]=u.useState(!1),[tt,_e]=u.useState(null),[st,ut]=u.useState(!1),[pt,Ye]=u.useState("idle");u.useEffect(()=>{if(e&&X==="recovery"&&!ze&&!he&&Ae.length===0){ee(J());return}e&&!b&&!T&&!We&&!st&&pt==="idle"&&M&&E&&L&&D&&!he&&Ae.length>0&&X!=="recovery"&&X!=="deposit"&&X!=="swapper"&&ee("recovery")},[e,b,T,M,E,L,D,he,Ae,X,We,st,pt,ze,oe,k,h]);const it=u.useCallback(ge=>{const Oe={address:ge.tokenAddress,symbol:ge.tokenSymbol,name:ge.tokenSymbol,decimals:ge.tokenDecimals,chainId:ge.chainId,balance:ge.verifiedBalance,balanceFormatted:parseFloat(ge.amount),balanceUsd:0,isNative:ge.isNative};we(Oe),Ce(ge),ee("deposit")},[]),Pe=u.useCallback(ge=>{if(Y(ge),k){ee(L?ge==="wallet"?Q():"swapper":"connect-wallet");return}const Oe=M&&!!E;ee(ge==="wallet"?Oe?L?Q():"connect-wallet":"provider-login":Oe?"swapper":"provider-login")},[k,M,E,L,h]),lt=u.useCallback(()=>{te.current?.abort(),pe(!1),ke(null),W(null),Y(null),$.current=null,ce(null),ee("select-source")},[]);u.useEffect(()=>{X==="swapper"&&(_||!se.address||ce({address:se.address,kind:se.kind}))},[X,_,se.address,se.kind]);const nt=_??se,ot=nt.address,kt=nt.kind,Xe=u.useCallback(async ge=>{if(!e||X!=="swapper"||!ot)return;te.current?.abort();const Oe=new AbortController;te.current=Oe,ke(null),pe(!0);const Re=So(de);if(!Re){pe(!1);return}const jt=wt=>{pe(!1);const vt=B.formatUnits(wt,Re.decimals);if(kt==="external"){W({amount:vt,symbol:Re.symbol});const Je={type:"wallet-funding",status:"success",amount:vt,asset:Re.address,sourceChain:String(de)};window.dispatchEvent(new CustomEvent("spiceflow:action",{detail:Je})),y?.(Je);return}it({chainId:de,tokenAddress:Re.address,tokenSymbol:Re.symbol,tokenDecimals:Re.decimals,amount:vt,rawAmount:wt.toString(),embeddedWalletAddress:ot,externalWalletAddress:"",timestamp:0,isNative:!1,verifiedBalance:wt,hasFullBalance:!0})},Ft=$.current,Ne=await Ft;if(Oe.signal.aborted||$.current!==Ft)return;if(Ne===null){pe(!1),ke("Unable to confirm your starting balance. Go back and reopen the deposit to try again.");return}const ft=await mf(ot,Ne,{signal:Oe.signal,chainId:de});if(!Oe.signal.aborted){if(ft===null){pe(!1);const wt=p.getChainConfig(de)?.viemChain?.name??`chain ${de}`;ke(`We haven't seen your funds arrive on ${wt} yet \u2014 they may still be in transit.`);return}jt(ft)}},[e,X,ot,kt,de,it,y]);u.useEffect(()=>{if(!e||X!=="swapper"||!ot)return;const ge=Hl(ot,de).catch(()=>null);return $.current=ge,()=>{$.current===ge&&($.current=null),te.current?.abort()}},[e,X,ot,de]);const{showWidget:ht,hideWidget:je}=hf({enabled:e&&oe,integratorId:z.integratorId,depositWalletAddress:ot,destinationChainId:de,brand:{dk:R,dark:F,primaryColor:j},embedFactory:z.embedFactory,onTransactionSuccess:Xe,onCloseRequest:()=>{G||lt()}}),ct=u.useCallback(()=>{ut(!0),ee(M&&E&&L&&D?h?"deposit":"select-token":M&&E?"connect-wallet":"provider-login")},[M,E,L,D,h]),De=u.useCallback(()=>{_e(null),Ye("awaiting-disconnect"),ee("connect-wallet")},[]),ae=u.useCallback(async ge=>{He(!0),_e(null);try{if(!E)throw new Error("Embedded wallet not available");const Oe=await U.getEthereumProvider(),Re=p.getChainConfig(ge.chainId);await p.ensureWalletOnChain(Oe,ge.chainId);const jt=p.getClientForChain(ge.chainId),Ft=await pn.getBalance(jt,{address:E}),Ne=Re?.viemChain?.name||`chain ${ge.chainId}`;if(Ft===0n)throw new Error(`Your embedded wallet has no ETH on ${Ne} to pay for gas. We recommend completing the deposit instead \u2014 it doesn't require gas.`);const ft=B.createWalletClient({account:E,transport:B.custom(Oe),chain:Re?.viemChain}),wt=ge.externalWalletAddress&&B.isAddress(ge.externalWalletAddress)?ge.externalWalletAddress:D;if(!wt||!B.isAddress(wt))throw new Error("Connect the external wallet that should receive these funds, then try again.");const vt={recipient:wt,tokenAddr:ge.tokenAddress,isNative:ge.isNative||S.isNativeToken(ge.tokenAddress),amount:ge.verifiedBalance,viemChain:Re?.viemChain},Je=await lr(ft,vt),{receipt:Tt}=await ao({client:jt,hash:Je,call:uo(vt.recipient,vt.tokenAddr,vt.isNative,vt.amount),confirmations:1});if(Tt.status!=="success")throw new Error("The return transaction failed. Please try again.");$o(ge.embeddedWalletAddress,ge.chainId,ge.tokenAddress),fe(),Ie.length<=1&&ee(J())}catch(Oe){const Re=Oe?.message||"Couldn't return your funds. Please try again.",jt=/insufficient funds for gas/i.test(Re);_e(jt?"Not enough ETH in your embedded wallet to cover gas fees. Complete the deposit instead \u2014 it doesn't require gas.":Re)}finally{He(!1)}},[U,E,D,Ie,fe]);u.useEffect(()=>{e||(Ce(null),_e(null),He(!1),ut(!1),Ye("idle"),te.current?.abort(),Y(null),pe(!1),ke(null),W(null),$.current=null,ce(null))},[e]),u.useEffect(()=>{if(!(b||pt==="idle")){if(pt==="awaiting-disconnect"){(!L||!D)&&Ye("awaiting-reconnect");return}e&&!he&&Ie.length>0&&M&&E&&(Ye("idle"),ee("recovery"))}},[b,pt,L,D,e,he,Ie,M,E]),u.useEffect(()=>{!T||!e||(M&&E?(N(!0),!K&&m?.chainId&&m?.tokenAddress&&we(gf(m.chainId,m.tokenAddress,m.tokenSymbol,m.tokenDecimals,m.amount)),ee("deposit")):ee("provider-login"))},[T,e,X,M,E]);const{assets:ue,loading:Fe}=ks({address:D,supportedChains:v.supportedChainIds,fetchBalances:Yn,enabled:e&&!!D,refreshInterval:e?5e3:0}),Te=u.useCallback(()=>{N(!0),ee(T?"deposit":Z==="card"||Z==="exchange"?"swapper":L?h?"deposit":"select-token":"connect-wallet")},[T,Z,L,h]),le=u.useCallback(async()=>{if((!L||!D)&&(await fn(500),!L||!D)){alert("Please connect your wallet first");return}ee(h?"deposit":"select-token")},[L,D,h]),Le=u.useCallback(ge=>{we(ge),ee("deposit")},[]),Ve=u.useCallback(()=>{if(we(null),r?.(""),!D){ee("connect-wallet");return}ee("select-token")},[D,r]),re=u.useCallback(()=>{t()},[t]);if(u.useEffect(()=>{if(!e){const ge=setTimeout(()=>{T||(ee(J()),we(null)),N(!1)},300);return()=>clearTimeout(ge)}},[e,T,m?.chainId]),u.useEffect(()=>{e&&X==="deposit"&&!K&&!T&&!We&&!h&&ee("select-token")},[e,X,K,T,We,h]),u.useEffect(()=>{if(e&&X==="connect-wallet"&&L&&D&&pt==="idle"){if(oe&&!Z){ee("select-source");return}if(oe&&Z&&Z!=="wallet"){ee("swapper");return}ee(h?"deposit":"select-token")}},[e,X,L,D,pt,h,oe,Z]),u.useEffect(()=>{if(!k&&e&&X==="provider-login"&&O&&M&&E&&!ve){const ge=setTimeout(()=>{N(!0),ee(Z==="card"||Z==="exchange"?"swapper":L?h?"deposit":"select-token":"connect-wallet")},100);return()=>clearTimeout(ge)}},[k,e,X,O,M,E,Z,L,h,ve]),!e)return null;if(X==="recovery")return a.jsx(nf,{isOpen:e,onClose:re,closeOnBackdropClick:n,deposits:Ae,onComplete:it,onCancel:ae,onSkip:ct,onChangeWallet:De,isProcessing:ze,isVerifying:he,onRefresh:fe,error:tt,styles:s});if(X==="select-source")return oe?a.jsx(of,{isOpen:e,onClose:re,closeOnBackdropClick:n,onSelect:Pe,styles:s}):(ee("provider-login"),null);if(X==="swapper")return Z!=="card"&&Z!=="exchange"?(ee(J()),null):ot?a.jsx(rf,{isOpen:e,onClose:re,onBack:lt,closeOnBackdropClick:n,source:Z,destinationChainId:de,onShowWidget:ht,onHideWidget:je,verifying:G,verifyError:xe,onRetryVerify:Xe,funded:q,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:F?R.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%",textAlign:"center",fontFamily:'"Helvetica Neue", sans-serif',fontSize:"14px",color:F?R.textPrimary:"#111827"},children:"Preparing your account..."})});if(X==="provider-login"&&!k)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:F?R.cardBg:"white",borderRadius:"9px",padding:"32px 24px",maxWidth:"400px",width:"100%"},children:a.jsx(hr,{onAuthSuccess:Te,autoTrigger:!0})})});if(X==="connect-wallet")return a.jsx(tf,{isOpen:e,onClose:re,closeOnBackdropClick:n,onContinue:le,requiredChainId:C?I:void 0,styles:s});if(X==="select-token")return D?a.jsx($p,{isOpen:e,onClose:re,closeOnBackdropClick:n,onTokenSelect:Le,walletAddress:D,supportedChainIds:v.supportedChainIds,network:A,prefetchedAssets:Fe?null:ue??null,styles:s,dark:F}):(ee("connect-wallet"),null);if(X==="deposit"){if(!K&&!h)return null;const ge=!!We;return a.jsx(Mi,{isOpen:e,onClose:re,closeOnBackdropClick:n,supportedChains:K?[K.chainId]:v.supportedChainIds??[],styles:s,externalWalletAddress:D,depositBatches:ge?void 0:o,onDepositAmountChange:r,destinationChainId:i,destinationTokenAddress:l,onDepositExecute:c,depositActionLabel:d,nativeChainId:I,sponsorGas:f,preSelectedAsset:K??void 0,escrowOnly:T||ge,escrowTokenAddress:ge?We.tokenAddress:m?.tokenAddress,escrowAmount:ge?We.amount:m?.amount,escrowTokenDecimals:ge?We.tokenDecimals:m?.tokenDecimals,escrowTokenSymbol:ge?We.tokenSymbol:m?.tokenSymbol,onSubmit:g,directSubmit:w,onDepositSuccess:y,onDepositError:x,embeddedWalletAddress:E,onViewAllAssets:h?void 0:Ve})}return null},Vl=e=>u.useContext(p.SpiceFlowProviderContext)?a.jsx(xf,{...e}):a.jsx("div",{children:"Error: SpiceDeposit must be used within SpiceFlowProvider"}),yf=({depositProps:e,withdrawProps:t,...n})=>{const[s,o]=u.useState(!1),[r,i]=u.useState(null);return a.jsxs(a.Fragment,{children:[a.jsx(Wl,{...n,onDepositClick:()=>o(!0),onWithdrawClick:l=>i({assetId:l})}),a.jsx(Vl,{styles:n.styles,onDepositSuccess:n.onDepositSuccess,...e,isOpen:s,onClose:()=>o(!1)}),a.jsx(Dr,{styles:n.styles,...t,isOpen:!!r,onClose:()=>i(null),initialSourceAssetId:r?.assetId})]})},wf=({isOpen:e,onClose:t,onChainSelect:n,supportedChains:s,closeOnSelect:o=!0,styles:r})=>{const{theme:i,dark:l,primaryColor:c,dk:d}=p.useSpiceBrand(r),[f,m]=u.useState(""),[h,w]=u.useState(null),[g,y]=u.useState(null),[x,b]=u.useState(!1),[v,C]=u.useState(null),{switchChainAsync:k}=Cn.useSwitchChain(),I=u.useMemo(()=>new Set(s||[]),[s]),A=u.useMemo(()=>{if(!s||s.length===0)return[];const T=[];return s.forEach((P,O)=>{if(typeof P!="number")return;const M=p.getChainConfig(P);M&&T.push({id:P.toString(),name:M.displayName,icon:Bn[P]||ws,chainId:P,verified:!0,order:O})}),T},[s]);u.useEffect(()=>{h&&!I.has(parseInt(h,10))&&w(null)},[h,I]);const F=u.useMemo(()=>A.filter(T=>T.name.toLowerCase().includes(f.toLowerCase())).sort((T,P)=>T.order-P.order),[A,f]),R=async()=>{if(!h)return;const T=parseInt(h,10);b(!0),C(null);try{await k({chainId:T}),n&&n(h),o&&t()}catch(P){console.error("Failed to switch chain:",P),C(p.sanitizeError(P,"Failed to switch chain."))}finally{b(!1)}},j=!h||x;return a.jsxs(an,{isOpen:e,onClose:t,title:"Select Chain",styles:r,theme:i,dark:l,children:[a.jsx("div",{style:{padding:"24px 20px"},children:a.jsx(fr,{value:f,onChange:m,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?d.cardBg:"#E9E9E9",color:l?d.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 P=h===T.id,O=g===T.id;return a.jsxs("button",{onClick:()=>w(T.id),onMouseEnter:()=>y(T.id),onMouseLeave:()=>y(null),style:{width:"100%",display:"flex",alignItems:"center",gap:"16px",padding:"8px",borderRadius:"8px",backgroundColor:P?l?`${c}15`:`${c}12`:"transparent",border:P?l?`1px solid ${c}66`:`1px solid ${c}88`:O?l?`1px solid ${c}44`:`1px solid ${c}66`:"1px solid transparent",cursor:"pointer",transition:p.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:p.font.mono,fontSize:"17px",fontWeight:500,letterSpacing:"0.4px",color:d.textPrimary,textAlign:"left"},children:T.name}),T.verified&&a.jsx("img",{src:Ll,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)})}),v&&a.jsx("div",{style:{padding:"0 25px 12px"},children:a.jsx(Jt,{variant:"error",size:"compact",palette:d,children:v})}),a.jsx("div",{style:{padding:"0 25px 25px"},children:a.jsxs(p.Button,{variant:"outline",onClick:R,disabled:j,fullWidth:!0,theme:i,styles:r,dark:l,children:["SELECT",a.jsx(nu,{size:20})]})})]})};function Ql(e){const t=Tl({enabled:e.enabled,chainId:e.lockChainId,address:e.destinationTokenAddress,decimals:e.destinationTokenDecimals,symbol:e.lockTokenSymbol,logoURI:e.lockTokenLogoURI}),n=t.token,s=u.useCallback((i,l)=>{if(!t.ready)throw new Error("Lock token metadata is unavailable.");const c={...n,name:n.symbol,isNative:S.isNativeToken(n.address),balance:0n,balanceFormatted:0,balanceUsd:0},d=typeof e.lockBatches=="function"?e.lockBatches({asset:c,amount:B.formatUnits(i,c.decimals),amountWei:i,feeAdjusted:!0,beneficiary:l.beneficiary??l.userAddress,executorAddress:l.executorAddress}):e.lockBatches;if(d.some(f=>f.chainId!==e.lockChainId||f.domain==="spicenet"||f.tokenTransfers?.some(m=>m.from!=="escrow"||!p.addressesEqual(m.token,n.address))))throw new Error("Lock action definitions must contain destination contract calls; the SDK supplies conversion and delivery.");return d.flatMap(f=>f.calls)},[t.ready,n,e.lockBatches,e.lockChainId]),o=Ns({enabled:t.ready,destinationToken:t.ready?n:void 0,selectedAsset:e.selectedAsset,amountDirection:"input-inclusive",feeFunding:e.feeFunding,combineSourceBalances:e.combineSourceBalances,recipient:e.beneficiary,buildActionCalls:s,buildSpicenetBatch:e.buildSpicenetBatch,onSubmit:e.onSubmit,onSuccess:e.onLockSuccess,onError:(i,l)=>e.onLockError?.(i.message,l)}),r=u.useCallback(()=>{t.refresh(),o.quote.refreshQuote()},[t.refresh,o.quote.refreshQuote]);return{...o,quote:{...o.quote,refreshQuote:r},destination:n,metadataError:t.error,canExecute:t.ready&&o.canExecute}}function bf(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 vf=({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:p.font.mono,letterSpacing:"0.3px"},children:t})]}),Gl=u.memo(vf),Cf=({options:e,selectedIndex:t,onSelect:n,primaryColor:s,dark:o=!1,textPrimary:r="#111827",textSecondary:i="#6b7280",trackColor:l})=>{const c=e.length-1,d=l||(o?"#3a3a3a":"#d1d5db"),f=o?"4px":"50%",m=o?"none":"2px solid white",h=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:d,borderRadius:"2px",transform:"translateY(-50%)",pointerEvents:"none"}}),a.jsx("div",{style:{position:"absolute",top:"50%",left:0,width:`${t/c*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:c,step:1,value:t,onChange:w=>n(Number(w.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((w,g)=>a.jsxs("div",{onClick:()=>n(g),style:{display:"flex",flexDirection:"column",alignItems:g===0?"flex-start":g===c?"flex-end":"center",cursor:"pointer",flex:1},children:[a.jsx("span",{style:{fontSize:"12px",fontWeight:g===t?700:400,color:g===t?r:i,whiteSpace:"nowrap",transition:"color 0.15s, font-weight 0.15s"},children:w.label}),w.highlight&&a.jsx("span",{style:{fontSize:"10px",color:i,whiteSpace:"nowrap"},children:"(most common)"})]},g))}),a.jsx("style",{children:`
|
|
50
50
|
input[type='range']::-webkit-slider-thumb {
|
|
51
51
|
-webkit-appearance: none;
|
|
52
52
|
width: 20px;
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
input[type='range']::-webkit-slider-thumb:hover {
|
|
71
71
|
transform: scale(1.12);
|
|
72
72
|
}
|
|
73
|
-
`})]})},kf=p.memo(Cf),Sf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,lockBatches:s,lockTokenSymbol:o,lockTokenLogoURI:r,destinationInputHook:i,sourceAssetInputHook:l,lockDurationHook:c,lockChainId:d,durationOptions:f,votingPowerEstimate:m,destinationTokenAddress:h,destinationTokenDecimals:y,beneficiary:g,onSubmit:w,onLockSuccess:x,onLockError:b,onLockExecute:C,sourceToDestinationConversionRate:v,onAddFunds:k,buildSpicenetBatch:I,feeFunding:A,combineSourceBalances:E,styles:j,dark:R})=>{const{theme:B,dark:M,primaryColor:D,dk:U}=u.useSpiceBrand(j,R),O=B.typography.fontFamily,F=M?U.cardBg:j?.assetSelector?.backgroundColor||j?.secondaryBackground||"#e9e9e9",P=M?`1px solid ${U.cardBorder}`:"0.5px solid #A8A8A7",z=M?"12px":"6px",q=M?U.textPrimary:"#111827",ne=M?U.textSecondary:"#6b7280",de=p.useMemo(()=>({...j,assetSelector:{...j?.assetSelector,backgroundColor:M?U.cardBg:j?.assetSelector?.backgroundColor,borderRadius:M?"12px":j?.assetSelector?.borderRadius},secondaryBackground:M?U.cardBg:j?.secondaryBackground}),[j,M]),ie=p.useMemo(()=>M?{...B,colors:{...B.colors,secondary:U.cardBg,surfaceHover:U.hoverBg,border:U.cardBorder,borderHover:U.inputBorder}}:B,[M,B]),[Y,Q]=p.useState(null),G=p.useRef(!1);p.useEffect(()=>{e||(G.current=!1)},[e]);const[fe,X]=p.useState(0),be=c?.selectedDurationIdx??fe,we=c?.setSelectedDurationIdx??X,N=c?.selectedDuration??f[be]??f[0],J=Ql({enabled:e&&!C,selectedAsset:Y,lockBatches:s,lockChainId:d,lockTokenSymbol:o,lockTokenLogoURI:r,destinationTokenAddress:h,destinationTokenDecimals:y,beneficiary:g,onSubmit:w,onLockSuccess:x,onLockError:b,buildSpicenetBatch:I,feeFunding:A,combineSourceBalances:E}),ee=J.assets.selectable,{isExecuting:V,step:me,txHash:he}=J.status,[Re,W]=p.useState(!1),L=Number(Y?.amount||"0"),$=J.quote.isDirect,le=!$,se=J.fees.error,oe=J.fees.isLoading,Ie=J.fees.preview,_=L>0,je={error:J.quote.quoteError,isQuoting:J.quote.isQuoting},Fe=C?"Move onLockExecute protocol calls to lockBatches and application updates to onLockSuccess before continuing.":J.metadataError||J.status.error||se||je.error,st=J.canExecute,ve=J.fees.destinationAmount,Ve=ve===void 0?"0":T.formatUnits(ve,J.destination.decimals),Ne=Number(Ve),ot=Ne>0?Ne.toLocaleString(void 0,{maximumSignificantDigits:6}):null,Pe=ee.find(Ue=>Ue.chainId===d&&Ue.address.toLowerCase()===J.destination.address.toLowerCase()),ht=Pe&&Pe.balanceFormatted>0&&Pe.balanceUsd>0?Pe.balanceUsd/Pe.balanceFormatted:v&&v>0?v:null,Je=ht===null?null:(Ne*ht).toFixed(2),gt=Y&&Y.asset.balanceFormatted>0&&Y.asset.balanceUsd>0?Y.asset.balanceUsd/Y.asset.balanceFormatted:$?ht:null,Qe=gt===null?void 0:`$${(L*gt).toFixed(2)}`,lt=m&&Ne>0&&N?m(Ne,N.months):void 0,Ae=p.useCallback(Ue=>{Q(rt=>({asset:Ue,amount:rt&&ye(rt.asset)===ye(Ue)?rt.amount:""})),J.retrySupply(),l?.setSelectedAsset({address:Ue.address,symbol:Ue.symbol,decimals:Ue.decimals,chainId:Ue.chainId})},[l?.setSelectedAsset,J.retrySupply]),xt=p.useCallback(Ue=>{Q(rt=>rt&&{...rt,amount:Ue}),l?.setAssetAmount(Ue),J.retrySupply()},[l?.setAssetAmount,J.retrySupply]);p.useEffect(()=>{if(J.capability?.policyExcluded){Q(null);return}V||J.assets.loading||J.assets.refreshing||J.assets.error||Q(Ue=>{if(!Ue)return G.current||!ee[0]?null:(G.current=!0,{asset:ee[0],amount:l?.assetAmount??""});const rt=ee.find(We=>ye(We)===ye(Ue.asset));return rt?rt===Ue.asset?Ue:{...Ue,asset:rt}:Ue.asset.balance===0n?Ue:{...Ue,asset:{...Ue.asset,balance:0n,balanceFormatted:0,balanceUsd:0}}})},[ee,V,J.assets.loading,J.assets.refreshing,J.assets.error,J.capability?.policyExcluded]),p.useEffect(()=>{i&&(i.setSelectedAsset(J.destination),i.setAssetAmount(Ve))},[J.destination,Ve,i?.setSelectedAsset,i?.setAssetAmount]);const qe=async()=>{W(!0),await J.submitSupply()},ut=()=>{W(!1),J.retrySupply()},wt=()=>{W(!1),Q(null),J.resetAfterSuccess()},$e=a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"6px"},children:[a.jsx(sr,{color:ne}),a.jsxs("p",{style:{fontSize:"13px",color:ne,margin:0,lineHeight:"1.5"},children:["Add ",o," by converting assets from your account"]})]});if(!e)return null;const at={backgroundColor:F,border:P,borderRadius:z,padding:"16px",marginBottom:"16px"};return a.jsx(on,{isOpen:e,onClose:t,title:`Add ${o} to your account`,subtitle:$e,styles:j,dark:M,footerLinkText:"Spicenet accounts \u2192",closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"0 24px 8px 24px",position:"relative"},children:[a.jsx(mo,{activity:J.status.activity,palette:U,onRefresh:()=>{J.assets.refreshSpiceAssets(),J.assets.refreshWalletAssets()}}),a.jsxs("div",{style:{marginBottom:"12px"},children:[k&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(ur,{onClick:k,color:D,fontFamily:O})}),a.jsx("div",{style:{marginTop:"10px",fontSize:"13px",color:ne,fontFamily:O},children:a.jsx($n,{assets:ee,selectedAsset:Y??void 0,onAssetSelect:Ae,onAmountChange:xt,label:"Amount",showBalance:!0,getAvailableBalance:J.assets.getAvailableBalance,showMaxButton:!0,disabled:V||J.status.finalizing,maxAmount:Y&&J.amount.availableBalance!==void 0?T.formatUnits(J.amount.availableBalance,Y.asset.decimals):void 0,resolveMaxAmount:J.resolveMaxAmount,theme:ie,styles:de})}),a.jsx("div",{style:{marginTop:"6px",paddingLeft:"4px",fontSize:"13px",color:ne,fontFamily:O},children:Qe})]}),a.jsxs("div",{style:at,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"16px",borderBottom:M?`1px solid ${U.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:M?U.inputBg:"#d1d5db",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:700,color:q},children:o.slice(0,2)}),a.jsx("span",{style:{fontSize:"16px",fontWeight:600,color:q,fontFamily:O},children:o})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"22px",fontWeight:700,color:q,fontFamily:O,lineHeight:1.1},children:ot??"0.00"}),(!le||Je!==null)&&a.jsxs("div",{style:{fontSize:"12px",color:ne,fontFamily:O,marginTop:"2px"},children:["~$",Je??"0.00"]})]})]}),a.jsxs("div",{style:{paddingTop:"16px",paddingBottom:"16px",borderBottom:M?`1px solid ${U.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:ne,fontFamily:O},children:"Lock Duration"}),a.jsx(Jn,{color:ne})]}),a.jsx(kf,{options:f,selectedIndex:be,onSelect:Ue=>{!V&&!J.status.finalizing&&we(Ue)},primaryColor:D,dark:M,textPrimary:q,textSecondary:ne})]}),a.jsxs("div",{style:{paddingTop:"12px",display:"flex",flexDirection:"column",gap:"8px"},children:[a.jsx(Gl,{label:"Estimated Lock Expiry",value:N?.months!==void 0?bf(N.months):"\u2014",fontFamily:O,dark:M,textPrimary:q,textSecondary:ne}),m&&a.jsx(Gl,{label:"Estimated voting power",value:lt!==void 0?`${lt} votes/epoch`:"\u2014",fontFamily:O,dark:M,textPrimary:q,textSecondary:ne})]})]}),_&&a.jsx(rr,{fontFamily:O,textPrimary:q,textSecondary:ne,cardBg:F,cardBorder:P,resolvedDark:M,darkCardBorder:U.cardBorder,primaryColor:D,feePreview:Ie,asset:Y?.asset,directExecutionFeeNote:J.flags.directExecutionFeeNote,isLoading:oe||je.isQuoting,errorText:se}),J.status.finalizationError&&a.jsx(u.Button,{onClick:J.retryFinalization,disabled:J.status.finalizing,children:"Retry application update"}),Fe&&a.jsx(Xt,{variant:"error",palette:U,fontFamily:O,style:{marginBottom:"12px"},children:Fe}),a.jsx(u.Button,{variant:"outline",fullWidth:!0,onClick:()=>{je.error?J.retrySupply():qe()},disabled:V||!st&&!je.error,loading:V,dark:M,styles:{...j,button:{...j?.button,backgroundColor:D}},children:V?$?"LOCKING...":"CONVERTING...":je.error?"RETRY QUOTE":je.isQuoting?"GETTING SWAP QUOTE...":oe&&_?"CALCULATING FEES...":$?`LOCK ${o}`:`CONVERT TO ${o}`}),Re&&!J.status.finalizationError&&(me==="success"||me==="error"||V)&&a.jsx(hr,{type:"lock",isOpen:!V,isProcessing:V,closeOnComplete:!1,chainId:d,showStepBreakdown:!1,onRetryTx:ut,onNewTx:wt,onClose:()=>W(!1),onComplete:wt,results:me==="success"||me==="error"?[{asset:{symbol:o,address:J.destination.address},txHash:he??"",success:me==="success",error:Fe??void 0,amount:Y?.amount}]:void 0,theme:B,styles:j,dark:M})]})})},If=({variant:e,destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:c,cardBorder:d,dk:f,dark:m,isQuoting:h,quoteError:y,estimatedOutput:g,paymentAmount:w,needsSwap:x,exactOutputSwap:b,adjustable:C=!1,maxAmount:v,onAmountChange:k})=>e==="supply"?a.jsxs("div",{style:{backgroundColor:c,border:`1px solid ${d}`,borderRadius:m?"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:m?"#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 ${d}`,borderRadius:"8px",padding:"8px 10px",minHeight:"42px"},children:[a.jsx(Zl,{symbol:t,logoURI:n,primaryColor:o,size:24}),a.jsx("span",{style:{fontSize:"16px",fontWeight:500,color:m?"#f3f4f6":"#3C3E42",lineHeight:"1.3",fontFamily:r,letterSpacing:0},children:t})]})]}),a.jsx("div",{style:{textAlign:"right",minWidth:0},children:h?a.jsx("span",{style:{fontSize:"18px",color:l,fontFamily:r},children:"Quoting..."}):y?a.jsx("span",{style:{fontSize:"13px",color:m?"#f87171":"#dc2626",fontFamily:r},children:"Quote failed"}):g?a.jsx(Mn,{value:g,title:g,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(Af,{destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:c,cardBorder:d,dk:f,dark:m,paymentAmount:w||"0",needsSwap:x,exactOutputSwap:b,isQuoting:h,adjustable:C,maxAmount:v,onAmountChange:k}),Kl=p.memo(If),Zl=({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)}),Af=({destinationSymbol:e,destinationLogoURI:t,destinationDecimals:n,primaryColor:s,fontFamily:o,textPrimary:r,textSecondary:i,cardBg:l,cardBorder:c,dk:d,dark:f,paymentAmount:m,needsSwap:h,exactOutputSwap:y,isQuoting:g,adjustable:w,maxAmount:x,onAmountChange:b})=>{const C=u.font.mono,v=parseFloat(m||"0"),k=x?parseFloat(x):0,[I,A]=p.useState(m||""),E=p.useRef(null),[j,R]=p.useState(null),[B,M]=p.useState(null);p.useEffect(()=>{w||A(m||"")},[m,w]);const D=F=>{let P=F;P.startsWith(".")&&(P="0"+P);const z=u.parseNumericInput(P);let q=z;x&&parseFloat(z)>parseFloat(x)&&(q=x),A(q),E.current&&clearTimeout(E.current),E.current=setTimeout(()=>b?.(q),300)},U=F=>{if(!k)return;if(F===100){A(x||k.toString()),E.current&&clearTimeout(E.current),b?.(x||k.toString());return}const P=10**n,z=Math.floor(k*F/100*P)/P,q=u.formatDecimalInput(z,n);A(q),E.current&&clearTimeout(E.current),b?.(q)},O=k>0?parseFloat(I||"0")/k*100:0;return p.useEffect(()=>()=>{E.current&&clearTimeout(E.current)},[]),a.jsxs("div",{style:{backgroundColor:l,border:`1px solid ${c}`,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(Zl,{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:[w?a.jsx(Mn,{element:"input",ariaLabel:`${e} amount`,dataSpiceflowFocus:!0,value:I,onChange:F=>D(F.target.value),placeholder:"0.0",fontFamily:C,color:r,lineHeight:1.1,textAlign:"right",maxFontSize:20,minFontSize:12,style:{width:"120px"}}):a.jsx(Mn,{element:"div",value:v>0?m:"0.00",title:v>0?m:"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}),w&&k>0&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px",marginTop:"6px"},children:[0,25,50,75,100].map((F,P)=>{const z=Math.abs(O-F)<1,q=P===4,ne=j===F,de=B===F;return a.jsx("button",{onClick:()=>U(F),onMouseEnter:()=>R(F),onMouseLeave:()=>{R(null),M(null)},onMouseDown:()=>M(F),onMouseUp:()=>M(null),title:`${F}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:"pointer",opacity:z?1:ne?.8:.5,transform:de?"scale(0.85)":ne?"scale(1.15)":"scale(1)",transition:u.transition.interactive},children:a.jsx(cr,{pct:F,isMax:q,primaryColor:s,dark:f,fillColor:f?d?.textSecondary||"#9ca3af":"#3C3E42"})},F)})})]})]}),h&&y&&!g&&a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:f?`1px solid ${d?.cardBorder||c}`:"1px solid #e5e7eb",display:"flex",justifyContent:"flex-end"},children:a.jsxs("span",{style:{fontSize:"11px",color:i,fontFamily:o,opacity:.7},children:["via ",y.venue]})})]})},Yl={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"},Xl=["building","signing-delegation","signing-intent","submitting","executing"],Ef=({step:e,statusMsg:t,txHash:n,explorerUrl:s,currentStepIdx:o,palette:r,cardBg:i,cardBorder:l,textPrimary:c,textSecondary:d,fontFamily:f,primaryColor:m,onRetry:h})=>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(u.Spinner,{size:14,color:m}),a.jsx("span",{style:{fontSize:"13px",fontWeight:500,color:e==="success"?c:e==="error"?r.errorText:c,fontFamily:f,flex:1},children:e==="success"?"Deposit confirmed":e==="error"?t||"Transaction failed":t||Yl[e]}),e==="success"&&n&&a.jsx("a",{href:`${s}/tx/${n}`,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",color:m,fontFamily:f,textDecoration:"none",whiteSpace:"nowrap",flexShrink:0},children:"View tx \u2192"}),e==="error"&&a.jsx("button",{onClick:h,style:{background:"none",border:"none",fontSize:"12px",color:m,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:`${d}22`,overflow:"hidden"},children:a.jsx("div",{style:{height:"100%",width:"100%",borderRadius:"2px",backgroundColor:m,transformOrigin:"left center",transform:`scaleX(${(o+1)/Xl.length})`,transition:"transform 400ms ease"}})})]}),Ff=()=>{},Tf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,destinationToken:s,sourceChains:o,supportedSourceAssets:r,additionalSourceTokens:i,includeExternalWalletAssets:l,includeCrossChainEmbeddedAssets:c,combineSourceBalances:d,recipient:f,feeOnlyAction:m,actionInput:h,actionProceeds:y,feeFunding:g,feeFundingReserve:w,maxSlippage:x,resolveInputSwap:b,buildActionCalls:C,feeExecutionMode:v="user-transfer",buildSpicenetBatch:k,onPayExecute:I,resolveExactOutputSwap:A,actionLabel:E,amountDirection:j=m?"output":"input",swapDescription:R,directDescription:B,paymentAmount:M,amountInputMode:D="fixed",maxPaymentAmount:U,onAmountChange:O,styles:F,dark:P,title:z,subtitle:q,onAddFunds:ne,onSubmit:de,beforeSubmit:ie,submitDisabled:Y,onStateChange:Q,onSuccess:G,onError:fe})=>{const X=j==="output",be=u.useAssetDisplay(),we=j==="input-inclusive",{theme:N,dark:J,primaryColor:ee,dk:V,palette:me,fontFamily:he,monoFont:Re,inputDark:W,cardBg:L,cardBorder:$,textPrimary:le,textSecondary:se,subtitleText:oe}=u.useSpiceBrand(F,P),Ie=p.useMemo(()=>W?{...N,colors:{...N.colors,secondary:V.cardBg,surfaceHover:V.hoverBg,border:"#2d2d2d",borderHover:"#3a3a3a"}}:N,[W,N,V.cardBg,V.hoverBg]),_=Bl(s,e),je=_.token??Fr,Fe=p.useMemo(()=>je.logoURI?je:{...je,logoURI:Ho[je.symbol.toUpperCase()]},[je]),st=Fe.chainId,[ve,Ve]=p.useState(null),[Ne,ot]=p.useState(M||""),Pe=D==="adjustable"?Ne:M||"0",ht=M?.trim(),Je=X&&D==="fixed"&&ht!==void 0&&ht!==""&&parseFloat(Pe||"0")===0,{operationKey:gt,feeQuote:Qe,selectedAsset:lt,capability:Ae,retryFinalization:xt,assets:{selectable:qe,loading:ut,refreshing:wt,error:$e,getAvailableBalance:at},quote:{isQuoting:Ue,quoteError:rt,estimatedOutput:We,exactOutputSwap:ae,isDirect:ue,needsSwap:Te,pivot:Be},fees:{preview:ce,isLoading:ze,error:Oe},amount:{sourceRequiredAmount:H,parsed:Ze,isInsufficientBalance:Se,availableBalance:ct},status:{activity:jt,finalizationError:Et,finalizing:De,step:et,statusMsg:yt,txHash:Ct,isExecuting:it,error:Ot,showStatusPanel:On,paymentResult:pt},flags:{directExecutionFeeNote:an},canExecute:Ft,submitSupply:Lt,retrySupply:kt,dismissPaymentStatus:Qt,submitPay:Mt,resolveMaxAmount:Ut,resetAfterSuccess:Gt,resetPaymentState:ft}=Ns({enabled:e,destinationToken:_.token&&Fe,selectedAsset:ve,paymentAmount:Pe,amountDirection:j,sourceChains:o,supportedSourceAssets:r,additionalSourceTokens:i,includeExternalWalletAssets:l,includeCrossChainEmbeddedAssets:c,combineSourceBalances:d,recipient:f,feeOnlyAction:m,actionInput:h,actionProceeds:y,feeFunding:g,feeFundingReserve:w,maxSlippage:x,resolveInputSwap:b,buildActionCalls:C,feeExecutionMode:v,buildSpicenetBatch:k,onPayExecute:I,resolveExactOutputSwap:A,isZeroAmountPay:Je,onSubmit:de,beforeSubmit:ie,submitDisabled:Y,onSuccess:G,onError:fe}),Ee=p.useMemo(()=>({operationKey:gt,feeQuote:Qe,selectedAsset:lt,canExecute:Ft&&!Y,isExecuting:it,finalizing:De,finalizationError:Et,feePreview:ce,txHash:Ct,error:Ot,statusStep:et,statusMsg:yt}),[gt,Qe,lt,Ft,Y,it,De,Et,ce,Ct,Ot,et,yt]),St=p.useRef(Q);St.current=Q,p.useEffect(()=>{St.current?.(Ee)},[Ee]);const qt=!!m||!!ve?.asset&&Ze>0,Kt=_.error||Ot,Dt=Et?a.jsx(u.Button,{onClick:xt,disabled:De,children:"Retry application update"}):null;p.useEffect(()=>{e||(Ve(null),D==="adjustable"&&ot(M||""))},[e]),p.useEffect(()=>{if(Ae?.policyExcluded){Ve(null);return}if(it||ut||wt||$e||!ve)return;const tt=qe.find(Xe=>ye(Xe)===ye(ve.asset));tt&&tt!==ve.asset?Ve({...ve,asset:tt}):!tt&&ve.asset.balance>0n&&Ve({...ve,asset:{...ve.asset,balance:0n,balanceFormatted:0,balanceUsd:0}})},[qe,ut,wt,$e,it,Ae?.policyExcluded]);const Me=p.useCallback(tt=>{Ve(Xe=>({asset:tt,amount:Xe?.asset&&ye(Xe.asset)===ye(tt)&&Xe.amount||""}))},[]),Jt=p.useCallback(tt=>{Ve(Xe=>Xe&&{...Xe,amount:tt})},[]),zt=p.useCallback(tt=>{let Xe=tt;U&&parseFloat(Xe)>parseFloat(U)&&(Xe=U),ot(Xe),O?.(Xe)},[U,O]),Nt=p.useCallback(()=>{ft(),Ve(null)},[ft]),$t=ue?B||`Your ${Fe.symbol} will be used directly.`:R||"Your assets will be swapped and used in a single atomic transaction.",ln=(st?u.getChainConfig(st):void 0)?.viemChain?.blockExplorers?.default?.url??"",Sn=Xl.indexOf(et),In=it?(Yl[et]||"EXECUTING...").toUpperCase():et==="success"?"DONE":Se?"INSUFFICIENT BALANCE":(Te||Be)&&rt&&!Ue?"QUOTE ERROR":E.toUpperCase(),fn=p.useMemo(()=>{if(pt?.status==="success")return"DONE";if(it)return"PAYING...";if(Se&&ve?.asset)return`INSUFFICIENT ${be(ve.asset).symbol}`;if((Te||Be)&&rt&&!Ue)return"QUOTE ERROR";if(E)return E.toUpperCase();const tt=Ze>0?` ${Pe} ${Fe.symbol}`:"";return Te?`SWAP & PAY${tt}`:`PAY${tt}`},[it,Se,ve,E,be,Ze,Pe,Fe.symbol,Te,rt,Ue,pt?.status]),Ht=et==="success"?()=>{Gt(),Ve(null)}:Lt,Tt=et==="success"?!1:!!Y||!Ft;if(!e)return null;const re=X?z||`Pay ${Fe.symbol}`:E,te=X?q:a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"3px"},children:[a.jsx("span",{style:{marginTop:"3px",flexShrink:0},children:a.jsx(sr,{color:oe})}),a.jsx("p",{style:{fontSize:"12px",color:oe,margin:0,lineHeight:"1.4",fontFamily:he},children:$t})]}),ke={...F,button:{...F?.button,backgroundColor:ee}},Ye=qt&&a.jsx(rr,{fontFamily:he,textPrimary:le,textSecondary:se,cardBg:L,cardBorder:$,resolvedDark:J,darkCardBorder:V.cardBorder,primaryColor:ee,feePreview:ce,feeOnlyAction:m,asset:ve?.asset,isLoading:ze,errorText:Oe,directExecutionFeeNote:an});if(X){const tt=pt&&(pt.status==="success"||pt.status==="failed")?[{asset:{symbol:ve?.asset?be(ve.asset).symbol:Fe.symbol,address:ve?.asset?.address||""},amount:Pe,txHash:pt.txHash||"",success:pt.status==="success",error:pt.status==="failed"?pt.error:void 0}]:void 0;return a.jsx(on,{isOpen:e,onClose:t,title:re,subtitle:te,styles:F,dark:J,footerLinkText:"Spicenet accounts \u2192",closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"16px 24px 8px 24px",position:"relative"},children:[a.jsx(mo,{activity:jt,palette:V}),ne&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(ur,{onClick:ne,color:ee,fontFamily:he})}),!Je&&a.jsx("div",{style:{marginBottom:"12px"},children:a.jsx($n,{assets:qe,selectedAsset:ve??void 0,disabled:it,onAssetSelect:Me,onAmountChange:Ff,label:"Pay with",showBalance:!0,getAvailableBalance:at,showMaxButton:!1,hideAmountInput:!0,displayAmount:ve&&H!==null?T.formatUnits(H,ve.asset.decimals):ve?"...":void 0,dark:J,theme:Ie,styles:F})}),!m&&a.jsx(Kl,{variant:"pay",destinationSymbol:Fe.symbol,destinationLogoURI:Fe.logoURI,destinationDecimals:Fe.decimals,primaryColor:ee,fontFamily:he,textPrimary:le,textSecondary:se,cardBg:L,cardBorder:$,dk:V,dark:J,isQuoting:Ue,quoteError:rt,estimatedOutput:We,paymentAmount:Pe,needsSwap:Te,exactOutputSwap:ae,adjustable:D==="adjustable",maxAmount:U,onAmountChange:zt}),Ye,Dt,Kt&&a.jsx(Xt,{variant:"error",palette:me,fontFamily:he,style:{marginBottom:"12px"},children:Kt}),a.jsx(u.Button,{variant:"outline",fullWidth:!0,onClick:pt?.status==="success"?t:Mt,disabled:pt?.status==="success"?!1:!!Y||!Ft,loading:it,dark:J,styles:ke,children:fn}),pt&&On&&!Et&&a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:10,backgroundColor:J?V.shell:"white",borderRadius:J?"12px":"6px",padding:"16px 0"},children:a.jsx(hr,{type:"payment",isOpen:pt.status!=="processing",isProcessing:it||pt.status==="processing",closeOnComplete:!1,chainId:st,onRetryTx:()=>{Qt(),Mt()},onNewTx:Nt,onClose:()=>{Qt()},onComplete:Nt,results:tt,styles:F,dark:J})})]})})}return a.jsx(on,{isOpen:e,onClose:t,title:re,subtitle:te,dark:J,styles:F,theme:N,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px",position:"relative"},children:[a.jsx(mo,{activity:jt,palette:V}),a.jsx("div",{style:{marginBottom:"16px"},children:a.jsx($n,{assets:qe,selectedAsset:ve||void 0,onAssetSelect:Me,onAmountChange:Jt,disabled:it||et==="success",showBalance:!0,getAvailableBalance:at,showMaxButton:!0,label:d?"From":"From Wallet",placeholder:"0.00",theme:Ie,styles:F,dark:W,resolveMaxAmount:we?void 0:Ut,maxAmount:ve?.asset&&ct!==void 0?T.formatUnits(ct,ve.asset.decimals):void 0})}),ve?.asset&&(!ue||!!Be)&&!(we&&Be)&&a.jsx(Kl,{variant:"supply",destinationSymbol:Fe.symbol,destinationLogoURI:Fe.logoURI,destinationDecimals:Fe.decimals,primaryColor:ee,fontFamily:he,textPrimary:le,textSecondary:se,cardBg:L,cardBorder:$,dark:J,isQuoting:Ue,quoteError:rt,estimatedOutput:We}),Ye,et!=="idle"&&a.jsx(Ef,{step:et,statusMsg:yt,txHash:Ct,explorerUrl:ln,currentStepIdx:Sn,palette:me,cardBg:L,cardBorder:$,textPrimary:le,textSecondary:se,fontFamily:he,primaryColor:ee,onRetry:()=>{kt()}}),Dt,Ot&&(et==="idle"||!!Et)&&a.jsx(Xt,{variant:"error",palette:me,fontFamily:he,style:{marginBottom:"16px"},children:Ot}),a.jsx(u.Button,{variant:"outline",fullWidth:!0,disabled:Tt,onClick:Ht,theme:N,dark:J,styles:ke,style:{fontSize:"20px",fontWeight:600,letterSpacing:"1.5px",fontFamily:Re},children:In})]})})},Bf=()=>{const[e,t]=p.useState("0"),[n,s]=p.useState(null);return{assetAmount:e,setAssetAmount:t,selectedAsset:n,setSelectedAsset:s}};function Rf(e,t=0){const[n,s]=p.useState(t),o=e[n]??e[0],r=p.useMemo(()=>o?BigInt(Math.round(o.months*30*24*3600)):0n,[o?.months]);return{selectedDurationIdx:n,setSelectedDurationIdx:s,selectedDuration:o,durationSeconds:r}}function jf(){const{actions:e,isReady:t,isAuthenticated:n}=u.useWallet(),s=p.useContext(u.SpiceFlowProviderContext)?.embeddedWalletAddress,o=p.useRef(!1),r=p.useRef(0),i=p.useRef(null),l=p.useRef(e),[c,d]=p.useState(0);l.current=e,p.useEffect(()=>{o.current=!1,r.current=0,i.current&&(clearTimeout(i.current),i.current=null)},[s]),p.useEffect(()=>{if(!s||!t||!n||o.current)return;o.current=!0;let f=!1;return(async()=>{await pn(2e3);try{await u.ensureSmartWallet(s,l.current.signMessage),r.current=0}catch(m){console.warn("[SmartWallet] Registration failed:",m),o.current=!1,!f&&r.current<3&&(r.current+=1,i.current=setTimeout(()=>{d(h=>h+1)},5e3))}})(),()=>{f=!0,i.current&&(clearTimeout(i.current),i.current=null)}},[s,t,n,c])}function Of(){const e=p.useContext(u.SpiceFlowProviderContext),t=(e?.mode??"7702")==="7702"?"embedded":"external",n=e?.setMode,s=p.useCallback(o=>n?.(o==="embedded"?"7702":"ondemand"),[n]);return{mode:t,setMode:s,ownerAddress:t==="embedded"?e?.embeddedWalletAddress:e?.externalWalletAddress,embeddedAddress:e?.embeddedWalletAddress,externalAddress:e?.externalWalletAddress,isUserWhitelisted:e?.isUserWhitelisted??null,isWhitelistChecking:e?.isWhitelistChecking??!1,isWhitelistGateActive:e?.isWhitelistGateActive??!1,whitelistCheck:e?.whitelistCheck}}function Df({amount:e,enabled:t=!0,...n}){const s=p.useContext(u.SpiceFlowProviderContext),[o,r]=p.useState(null);p.useEffect(()=>{r(d=>d&&d.amount!==e?{...d,amount:e}:d)},[e]);const i=p.useMemo(()=>{if(!o)return null;const d=o.asset,f=d.location??(d._source==="spice"?"rollup":d._fundingWallet??((s?.mode??"7702")==="7702"?"embedded":"external"));return{...o,asset:{...d,location:f,owner:d.owner??(f==="external"?s?.externalWalletAddress:s?.embeddedWalletAddress),...d._wrapFromNative?{address:S.ZERO_ADDRESS,isNative:!0,positionId:void 0}:{}}}},[o,s?.mode,s?.embeddedWalletAddress,s?.externalWalletAddress]),l=Ns({...n,enabled:t,selectedAsset:i,paymentAmount:n.amountDirection==="output"?e:void 0}),c=p.useCallback(d=>r({asset:d,amount:e}),[e]);return{sources:l.assets.selectable,getAvailableBalance:l.assets.getAvailableBalance,availableBalance:l.amount.availableBalance,selectedAsset:l.selectedAsset,setSelectedAsset:r,selectAsset:c,quote:{isQuoting:l.quote.isQuoting,error:l.quote.quoteError,estimatedInput:l.quote.estimatedInput,estimatedOutput:l.quote.estimatedOutput,estimatedMinOutput:l.fees.destinationAmount===void 0||!n.destinationToken?null:T.formatUnits(l.fees.destinationAmount,n.destinationToken.decimals),isDirect:l.quote.isDirect,needsSwap:l.quote.needsSwap},feePreview:l.fees.preview,isFeePreviewLoading:l.fees.isLoading,feePreviewError:l.fees.error||l.status.error,canSubmit:l.canExecute,execute:l.submit,isExecuting:l.status.isExecuting,step:l.status.step,statusMsg:l.status.statusMsg,txHash:l.status.txHash,refreshAssets:l.assets.refreshSpiceAssets,resolveMaxAmount:l.resolveMaxAmount,retryFinalization:l.retryFinalization}}const Nf="spiceflow-limit-order:v1",Jl=T.parseAbi(["function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]);function Pf(e){if(!/^ord_[0-9a-f]{64}$/.test(e))throw new Error("Invalid limit order ID");return`Spice Flow limit order cancellation v1
|
|
74
|
-
Order: ${e}`}function Mf(e){const t=e.intents[0];if(e.intents.length!==1||t.mode!=="7702")throw new Error("Invalid order intent");return`ord_${ci(t.chainBatches,BigInt(t.exp)).slice(2)}`}function Uf(e){if(!Number.isSafeInteger(e.expiresAt)||e.minimumOutput<=0n||e.amountIn<=0n||e.platformFee<0n||e.gasBridgeFee<0n||e.amountIn+e.platformFee+e.gasBridgeFee!==e.grossAmount)throw new Error("Invalid limit order amounts or expiry");const t=Ts({userAddress:e.user,destinationChainId:e.chainId,deliveryToken:e.tokenIn,deliveryAmount:e.grossAmount,deliveryRecipient:e.user,requestTimestampMs:e.requestTimestampMs,expiresAt:e.expiresAt,metadata:Nf,requestNonce:e.requestNonce});if(!t)throw new Error("Order requires a positive cash balance");const n=[...go(e.chainId,e.tokenIn,[{recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:e.platformFee},{recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:e.gasBridgeFee}]).calls,{to:e.tokenIn,value:0n,data:T.encodeFunctionData({abi:T.erc20Abi,functionName:"approve",args:[e.router,e.amountIn]})},{to:e.router,value:0n,data:T.encodeFunctionData({abi:Jl,functionName:"exactInput",args:[{path:e.path,recipient:e.user,deadline:BigInt(e.expiresAt),amountIn:e.amountIn,amountOutMinimum:e.minimumOutput}]})}],s=S.hashChainBatches([t,{chainId:e.chainId,calls:n}]);return{user:e.user,amountMode:"gross_input",intents:[{mode:"7702",signatureType:"ecdsa",signature:"0x00",nbf:0,exp:e.expiresAt,chainBatches:s.map((o,r)=>({...o,chainId:Number(o.chainId),tokenTransfers:r===0?[]:[{from:"escrow",to:e.user,token:e.tokenIn,amount:e.grossAmount}]}))}]}}function Wf(e){const t=u.useWallet(),n=p.useContext(u.SpiceFlowProviderContext),s=Is(),o=p.useRef(s);o.current=s;const r=p.useRef(e?.combineSourceBalances);r.current=e?.combineSourceBalances;const i=p.useRef({wallet:t,provider:n});i.current={wallet:t,provider:n};const l=p.useRef(!1),c=p.useRef(!0),d=p.useRef(0);p.useEffect(()=>(c.current=!0,()=>{c.current=!1,d.current++}),[]);const f=p.useRef(new WeakMap),m=p.useRef(new WeakMap),h=()=>{if(!c.current)throw new Error("Order hook is no longer mounted");return JSON.stringify([d.current,i.current.wallet.address,u.relayerService.getBaseUrl(),i.current.provider?.rpcOverrides,i.current.provider?.provider,i.current.provider?.network,i.current.provider?.mode])},y=p.useCallback(async b=>{b=structuredClone(b);const C=T.bytesToHex(crypto.getRandomValues(new Uint8Array(32))),v=i.current.wallet.address;if(!v)throw new Error("Connect a wallet before preparing an order");if(i.current.provider?.mode!=="7702")throw new Error("Limit orders require the 7702 wallet mode");if(!i.current.provider?.rpcOverrides?.[b.chainId])throw new Error(`Configure rpcOverrides[${b.chainId}] before preparing an order`);const k=h(),I=Date.now();if(!Number.isSafeInteger(b.expiresAt)||b.expiresAt<=Math.floor(I/1e3)||b.expiresAt>Math.floor(I/1e3)+30*86400||b.grossAmount<=0n||b.minimumOutput<=0n)throw new Error("Enter a positive amount, minimum output and expiry within 30 days");let A,E;if(r.current){const U=Qo(await u.getWalletBalanceEntries(v),b.chainId,b.tokenIn);if(U<b.grossAmount){const O=S.getTokenByAddress(b.tokenIn,b.chainId);if(!O||S.isNativeToken(b.tokenIn))throw new Error("This source is unavailable.");const F=b.grossAmount-U,P=await u.getClientForChain(b.chainId,i.current.provider?.rpcOverrides).readContract({address:b.tokenIn,abi:T.erc20Abi,functionName:"balanceOf",args:[v]});if(P<F)E="insufficient_balance";else{const z=await lr({address:v,escrowOnly:!0,depositQuote:{asset:{address:b.tokenIn,chainId:b.chainId,owner:v,location:"embedded",_source:"wallet",symbol:O.symbol,name:O.name,decimals:O.decimals,balance:P,balanceFormatted:Number(T.formatUnits(P,O.decimals)),balanceUsd:0,isNative:!1},amount:F,token:b.tokenIn,chainId:b.chainId}});if(z.fee>=F)throw new Error("Cash amount does not cover order fees");A={sourceSpendCap:F,depositAmount:z.net,feeAmount:z.fee},b.grossAmount-=z.fee}}if(h()!==k)throw new Error("Wallet or provider changed while preparing the order")}const j=b.venue??Vs;if(!(j.chainIds??[8453]).includes(b.chainId))throw new Error("Venue does not support the destination chain");const R=Qs(j);let B=b.grossAmount,M=0n,D=0n;for(let U=0;U<5;U++){const O=await R.resolve({type:"swap",tokenIn:b.tokenIn,tokenOut:b.tokenOut,amountIn:B},b.chainId,v);if(!O)throw new Error("No supported route for this order");const F=O.calls.find(fe=>u.addressesEqual(fe.to,j.swapRouter));if(!F)throw new Error("Order route is missing its swap");const{path:P}=T.decodeFunctionData({abi:Jl,data:F.data}).args[0],z=Uf({user:v,chainId:b.chainId,tokenIn:b.tokenIn,router:j.swapRouter,path:P,grossAmount:b.grossAmount,amountIn:B,minimumOutput:b.minimumOutput,expiresAt:b.expiresAt,platformFee:M,gasBridgeFee:D,requestTimestampMs:I,requestNonce:C});if(z.intents[0].mode!=="7702")throw new Error("Unsupported order mode");const q=structuredClone(z),ne=q.intents[0];if(ne.mode!=="7702")throw new Error("Unsupported order mode");const de=oo(ne.chainBatches,v);de[1].calls=O.calls;const ie=S.hashChainBatches(de);ne.chainBatches=de.map((fe,X)=>({...ne.chainBatches[X],calls:fe.calls,hash:ie[X].hash}));const Y=(await u.relayerService.estimateActionFees(q)).intents[0]?.batches.find(fe=>fe.chainId===b.chainId);if(!Y)throw new Error("Order fee quote is unavailable");const Q=u.getBatchFees(Y),G=b.grossAmount-Q.totalFee;if(G<=0n)throw new Error("Cash amount does not cover order fees");if(h()!==k)throw new Error("Wallet or provider changed while preparing the order");if(G===B&&M===Q.spicenetFee&&D===Q.gasFee+Q.bridgeFee){const fe={user:v,request:z,amountIn:B,minimumOutput:b.minimumOutput,feeAmount:Q.totalFee,funding:A,fundingWarning:E,path:P};return f.current.set(fe,{scope:k,request:structuredClone(z),funding:A&&{...A,chainId:b.chainId,token:b.tokenIn}}),fe}B=G,M=Q.spicenetFee,D=Q.gasFee+Q.bridgeFee}throw new Error("Order fees did not converge; prepare the order again")},[]),g=p.useCallback(async b=>{if(l.current)throw new Error("An order signature is already in progress");const C=f.current.get(b),v=C?.scope,k=()=>{if(!v||h()!==v||!u.addressesEqual(i.current.wallet.address,C?.request.user))throw new Error("Prepare the order again for the current wallet and provider")};k();const I=structuredClone(C.request),A=I.intents[0];if(A.mode!=="7702"||A.exp<=Date.now()/1e3)throw new Error("Order expired before signing");l.current=!0;try{const E=i.current.wallet.actions;if(I.chainAuthorizations=await ui({chainBatches:A.chainBatches,signingAddress:I.user,actions:E}),k(),A.signature=await di(E,A.chainBatches,BigInt(A.exp)),k(),A.exp<=Date.now()/1e3)throw new Error("Order expired during signing");return m.current.set(I,{scope:v,request:structuredClone(I),funding:C.funding}),I}finally{l.current=!1}},[]),w=p.useCallback(async b=>{const C=h(),{signature:v}=await i.current.wallet.actions.signMessage(Pf(b));if(h()!==C)throw new Error("Wallet or provider changed during cancellation");return u.relayerService.cancelLimitOrder(b,v)},[]),x=p.useCallback(b=>{const C=m.current.get(b),v=()=>{if(!C||h()!==C.scope)throw new Error("Sign the order for the current wallet and provider before placing it");const A=C.request.intents[0];if(A.mode!=="7702"||A.exp<=Date.now()/1e3)throw new Error("Order expired before placement")};v();const{user:k}=C.request,I=C.funding;return I?(async()=>{const{chainId:A,token:E}=I,j=await u.getWalletBalanceEntries(k);if(v(),await o.current.execute([{chainId:A,tokenTransfers:[],calls:Ri({escrowAddress:S.getEscrowContractAddress(A),tokenAddress:E,isNative:!1,amount:I.depositAmount,gasFeeAmount:I.feeAmount})}],E,0n,void 0,void 0,{userOverride:k,useCustomTransfers:!0,skipPreSubmitFeeEstimate:!0,skipUserFundingPreflight:!0,walletFundingRequirement:{chainId:A,token:E,amount:I.sourceSpendCap},validateBeforeSubmit:async()=>v()}),!await li({deposits:[{chainId:A,token:E,amount:I.depositAmount}],baseline:j,fetchEntries:()=>u.getWalletBalanceEntries(k)}))throw new Error("Your deposit is still waiting for Spice credit. Check this transaction's status before trying again.");return v(),u.relayerService.createLimitOrder(structuredClone(C.request))})():u.relayerService.createLimitOrder(structuredClone(C.request))},[]);return{prepareOrder:y,signOrder:g,placeOrder:x,getOrder:b=>u.relayerService.getLimitOrder(b),listOrders:b=>{if(!t.address)throw new Error("Connect a wallet to list orders");return u.relayerService.listLimitOrders(t.address,b)},cancelOrder:w}}yc(),exports.SpiceFlowProvider=u.SpiceFlowProvider,exports.SpiceFlowProviderContext=u.SpiceFlowProviderContext,exports.SpiceflowError=u.SpiceflowError,exports.Spinner=u.Spinner,exports.buildDarkPalette=u.buildDarkPalette,exports.buildLightPalette=u.buildLightPalette,exports.calculateBpsFee=u.calculateBpsFee,exports.duration=u.duration,exports.easing=u.easing,exports.font=u.font,exports.getChainConfig=u.getChainConfig,exports.getChainName=u.getChainName,exports.isSpiceflowError=u.isSpiceflowError,exports.radius=u.radius,exports.relayerService=u.relayerService,exports.resolveTheme=u.resolveTheme,exports.transition=u.transition,exports.useAssetDisplay=u.useAssetDisplay,exports.useIsUserWhitelisted=u.useIsUserWhitelisted,exports.useSpiceBrand=u.useSpiceBrand,exports.useWallet=u.useWallet,exports.z=u.z,Object.defineProperty(exports,"NATIVE_TOKEN_ADDRESS",{enumerable:!0,get:function(){return S.ZERO_ADDRESS}}),Object.defineProperty(exports,"SPICENET_NATIVE_CHAIN_ID",{enumerable:!0,get:function(){return S.SPICENET_NATIVE_CHAIN_ID}}),Object.defineProperty(exports,"SPICE_COMBINED_FEE_RECIPIENT",{enumerable:!0,get:function(){return S.SPICE_COMBINED_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_GAS_FEE_RECIPIENT",{enumerable:!0,get:function(){return S.SPICE_GAS_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_PLATFORM_FEE_RECIPIENT",{enumerable:!0,get:function(){return S.SPICE_PLATFORM_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_SOLVER_ADDRESS",{enumerable:!0,get:function(){return S.SPICE_SOLVER_ADDRESS}}),Object.defineProperty(exports,"applySlippage",{enumerable:!0,get:function(){return S.applySlippage}}),Object.defineProperty(exports,"buildUniV3SwapCalls",{enumerable:!0,get:function(){return S.buildUniV3SwapCalls}}),Object.defineProperty(exports,"getChainIdsByNetwork",{enumerable:!0,get:function(){return S.getChainIdsByNetwork}}),Object.defineProperty(exports,"getEscrowContractAddress",{enumerable:!0,get:function(){return S.getEscrowContractAddress}}),Object.defineProperty(exports,"isNativeToken",{enumerable:!0,get:function(){return S.isNativeToken}}),Object.defineProperty(exports,"isSpicenetChainId",{enumerable:!0,get:function(){return S.isSpicenetChainId}}),Object.defineProperty(exports,"normalizeNativeTokenAddress",{enumerable:!0,get:function(){return S.normalizeNativeTokenAddress}}),Object.defineProperty(exports,"spicenetAbi",{enumerable:!0,get:function(){return S.spicenetAbi}}),Object.defineProperty(exports,"spicenetWithdrawalAbi",{enumerable:!0,get:function(){return S.spicenetAbi}}),exports.AERODROME_BASE_CONFIG=Vs,exports.AccountDisplay=Wl,exports.AddFundsLink=ur,exports.AssetBalance=Zp,exports.AssetSelector=$n,exports.CheckIcon=vi,exports.ChevronIcon=Jn,exports.CloseIcon=Es,exports.DEFAULT_LIQUIDITY_VENUES=Mo,exports.DetailRow=rn,exports.ProviderLogin=mr,exports.SATSUMA_CITREA_CONFIG=Oo,exports.SPICE_PLATFORM_FEE_BPS=Qd,exports.SearchInput=pr,exports.SelectChainModal=wf,exports.SpiceAccount=yf,exports.SpiceDeposit=Vl,exports.SpiceLock=Sf,exports.SpiceSupply=Tf,exports.SpiceWithdraw=Or,exports.StatusBanner=Xt,exports.UNIV3_ARBITRUM_CONFIG=ca,exports.UNIV3_BASE_CONFIG=ia,exports.UNIV3_ETHEREUM_CONFIG=la,exports.UNIV3_ROBINHOOD_CONFIG=da,exports.UNIV3_ROBINHOOD_SUSHI_CONFIG=ua,exports.UNIV4_BASE_CONFIG=wa,exports.UNIV4_ROBINHOOD_CONFIG=ba,exports.V4_NATIVE_CURRENCY=hn,exports.areEquivalentOnChains=xs,exports.assetCapability=En,exports.assetPositionId=ye,exports.buildLiquidityVenues=Pn,exports.buildPayChainBatches=xo,exports.buildRoutedBatches=Eu,exports.buildSpicenetWithdrawalBatch=Ts,exports.buildSupplyChainBatches=yo,exports.createAerodromeExactOutputVenue=ha,exports.createAerodromeVenue=Qs,exports.createExactOutputRegistry=Os,exports.createLiquidityRegistry=ga,exports.createSatsumaExactOutputVenue=No,exports.createSatsumaVenue=gs,exports.createUniV3ExactOutputVenue=No,exports.createUniV3Venue=gs,exports.createUniV4ExactOutputVenue=Ta,exports.createUniV4Venue=Fa,exports.encodeUniV3ExactOutputCall=sa,exports.estimateFeePreview=Un,exports.estimateRequiredGrossFunding=Zu,exports.estimateSupplyMaxAmount=np,exports.executePay=Sl,exports.executeSupply=kl,exports.fetchBalances=Yn,exports.findEquivalentOnChain=kn,exports.getAssetChainTokenCandidates=Kn,exports.getBestUniV3ExactOutputQuote=ra,exports.getBestUniV3Quote=oa,exports.isExternalSource=$s,exports.isSupportedSupplyAsset=fp,exports.limitOrderId=Mf,exports.resolveAssetTokenAddressOnChain=sn,exports.resolveFundedToken=Da,exports.resolveInputSupplySwapQuote=Rr,exports.resolveRoute=Au,exports.reverseUniV3Path=na,exports.scaleTokenAmount=rs,exports.useAssetInput=Bf,exports.useLockDuration=Rf,exports.useSmartWallet=jf,exports.useSpiceAccount=Of,exports.useSpiceAction=Df,exports.useSpiceActionActivity=fr,exports.useSpiceAssets=Ka,exports.useSpiceExecution=Is,exports.useSpiceInventory=Xn,exports.useSpiceLimitOrders=Wf,exports.useSpiceLock=Ql,exports.useSpicePendingDeposits=si,exports.useSpiceSupply=Ns,exports.useSupplyAssets=jl,exports.useSupplyQuote=Nl,exports.useTokenLogo=dr,exports.useWalletBalances=ks;
|
|
73
|
+
`})]})},kf=u.memo(Cf),Sf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,lockBatches:s,lockTokenSymbol:o,lockTokenLogoURI:r,destinationInputHook:i,sourceAssetInputHook:l,lockDurationHook:c,lockChainId:d,durationOptions:f,votingPowerEstimate:m,destinationTokenAddress:h,destinationTokenDecimals:w,beneficiary:g,onSubmit:y,onLockSuccess:x,onLockError:b,onLockExecute:v,sourceToDestinationConversionRate:C,onAddFunds:k,buildSpicenetBatch:I,feeFunding:A,combineSourceBalances:F,styles:R,dark:j})=>{const{theme:T,dark:P,primaryColor:O,dk:M}=p.useSpiceBrand(R,j),U=T.typography.fontFamily,E=P?M.cardBg:R?.assetSelector?.backgroundColor||R?.secondaryBackground||"#e9e9e9",D=P?`1px solid ${M.cardBorder}`:"0.5px solid #A8A8A7",L=P?"12px":"6px",z=P?M.textPrimary:"#111827",se=P?M.textSecondary:"#6b7280",de=u.useMemo(()=>({...R,assetSelector:{...R?.assetSelector,backgroundColor:P?M.cardBg:R?.assetSelector?.backgroundColor,borderRadius:P?"12px":R?.assetSelector?.borderRadius},secondaryBackground:P?M.cardBg:R?.secondaryBackground}),[R,P]),oe=u.useMemo(()=>P?{...T,colors:{...T.colors,secondary:M.cardBg,surfaceHover:M.hoverBg,border:M.cardBorder,borderHover:M.inputBorder}}:T,[P,T]),[Q,J]=u.useState(null),X=u.useRef(!1);u.useEffect(()=>{e||(X.current=!1)},[e]);const[ee,K]=u.useState(0),we=c?.selectedDurationIdx??ee,ve=c?.setSelectedDurationIdx??K,N=c?.selectedDuration??f[we]??f[0],Z=Ql({enabled:e&&!v,selectedAsset:Q,lockBatches:s,lockChainId:d,lockTokenSymbol:o,lockTokenLogoURI:r,destinationTokenAddress:h,destinationTokenDecimals:w,beneficiary:g,onSubmit:y,onLockSuccess:x,onLockError:b,buildSpicenetBatch:I,feeFunding:A,combineSourceBalances:F}),Y=Z.assets.selectable,{isExecuting:G,step:pe,txHash:xe}=Z.status,[ke,q]=u.useState(!1),W=Number(Q?.amount||"0"),_=Z.quote.isDirect,ce=!_,$=Z.fees.error,te=Z.fees.isLoading,Ie=Z.fees.preview,he=W>0,fe={error:Z.quote.quoteError,isQuoting:Z.quote.isQuoting},Ae=v?"Move onLockExecute protocol calls to lockBatches and application updates to onLockSuccess before continuing.":Z.metadataError||Z.status.error||$||fe.error,We=Z.canExecute,Ce=Z.fees.destinationAmount,ze=Ce===void 0?"0":B.formatUnits(Ce,Z.destination.decimals),He=Number(ze),tt=He>0?He.toLocaleString(void 0,{maximumSignificantDigits:6}):null,_e=Y.find(je=>je.chainId===d&&je.address.toLowerCase()===Z.destination.address.toLowerCase()),st=_e&&_e.balanceFormatted>0&&_e.balanceUsd>0?_e.balanceUsd/_e.balanceFormatted:C&&C>0?C:null,ut=st===null?null:(He*st).toFixed(2),pt=Q&&Q.asset.balanceFormatted>0&&Q.asset.balanceUsd>0?Q.asset.balanceUsd/Q.asset.balanceFormatted:_?st:null,Ye=pt===null?void 0:`$${(W*pt).toFixed(2)}`,it=m&&He>0&&N?m(He,N.months):void 0,Pe=u.useCallback(je=>{J(ct=>({asset:je,amount:ct&&ye(ct.asset)===ye(je)?ct.amount:""})),Z.retrySupply(),l?.setSelectedAsset({address:je.address,symbol:je.symbol,decimals:je.decimals,chainId:je.chainId})},[l?.setSelectedAsset,Z.retrySupply]),lt=u.useCallback(je=>{J(ct=>ct&&{...ct,amount:je}),l?.setAssetAmount(je),Z.retrySupply()},[l?.setAssetAmount,Z.retrySupply]);u.useEffect(()=>{if(Z.capability?.policyExcluded){J(null);return}G||Z.assets.loading||Z.assets.refreshing||Z.assets.error||J(je=>{if(!je)return X.current||!Y[0]?null:(X.current=!0,{asset:Y[0],amount:l?.assetAmount??""});const ct=Y.find(De=>ye(De)===ye(je.asset));return ct?ct===je.asset?je:{...je,asset:ct}:je.asset.balance===0n?je:{...je,asset:{...je.asset,balance:0n,balanceFormatted:0,balanceUsd:0}}})},[Y,G,Z.assets.loading,Z.assets.refreshing,Z.assets.error,Z.capability?.policyExcluded]),u.useEffect(()=>{i&&(i.setSelectedAsset(Z.destination),i.setAssetAmount(ze))},[Z.destination,ze,i?.setSelectedAsset,i?.setAssetAmount]);const nt=async()=>{q(!0),await Z.submitSupply()},ot=()=>{q(!1),Z.retrySupply()},kt=()=>{q(!1),J(null),Z.resetAfterSuccess()},Xe=a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"6px"},children:[a.jsx(or,{color:se}),a.jsxs("p",{style:{fontSize:"13px",color:se,margin:0,lineHeight:"1.5"},children:["Add ",o," by converting assets from your account"]})]});if(!e)return null;const ht={backgroundColor:E,border:D,borderRadius:L,padding:"16px",marginBottom:"16px"};return a.jsx(an,{isOpen:e,onClose:t,title:`Add ${o} to your account`,subtitle:Xe,styles:R,dark:P,footerLinkText:"Spicenet accounts \u2192",closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"0 24px 8px 24px",position:"relative"},children:[a.jsx(ho,{activity:Z.status.activity,palette:M,onRefresh:()=>{Z.assets.refreshSpiceAssets(),Z.assets.refreshWalletAssets()}}),a.jsxs("div",{style:{marginBottom:"12px"},children:[k&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(pr,{onClick:k,color:O,fontFamily:U})}),a.jsx("div",{style:{marginTop:"10px",fontSize:"13px",color:se,fontFamily:U},children:a.jsx($n,{assets:Y,selectedAsset:Q??void 0,onAssetSelect:Pe,onAmountChange:lt,label:"Amount",showBalance:!0,getAvailableBalance:Z.assets.getAvailableBalance,showMaxButton:!0,disabled:G||Z.status.finalizing,maxAmount:Q&&Z.amount.availableBalance!==void 0?B.formatUnits(Z.amount.availableBalance,Q.asset.decimals):void 0,resolveMaxAmount:Z.resolveMaxAmount,theme:oe,styles:de})}),a.jsx("div",{style:{marginTop:"6px",paddingLeft:"4px",fontSize:"13px",color:se,fontFamily:U},children:Ye})]}),a.jsxs("div",{style:ht,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"16px",borderBottom:P?`1px solid ${M.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:P?M.inputBg:"#d1d5db",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:700,color:z},children:o.slice(0,2)}),a.jsx("span",{style:{fontSize:"16px",fontWeight:600,color:z,fontFamily:U},children:o})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"22px",fontWeight:700,color:z,fontFamily:U,lineHeight:1.1},children:tt??"0.00"}),(!ce||ut!==null)&&a.jsxs("div",{style:{fontSize:"12px",color:se,fontFamily:U,marginTop:"2px"},children:["~$",ut??"0.00"]})]})]}),a.jsxs("div",{style:{paddingTop:"16px",paddingBottom:"16px",borderBottom:P?`1px solid ${M.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:se,fontFamily:U},children:"Lock Duration"}),a.jsx(Jn,{color:se})]}),a.jsx(kf,{options:f,selectedIndex:we,onSelect:je=>{!G&&!Z.status.finalizing&&ve(je)},primaryColor:O,dark:P,textPrimary:z,textSecondary:se})]}),a.jsxs("div",{style:{paddingTop:"12px",display:"flex",flexDirection:"column",gap:"8px"},children:[a.jsx(Gl,{label:"Estimated Lock Expiry",value:N?.months!==void 0?bf(N.months):"\u2014",fontFamily:U,dark:P,textPrimary:z,textSecondary:se}),m&&a.jsx(Gl,{label:"Estimated voting power",value:it!==void 0?`${it} votes/epoch`:"\u2014",fontFamily:U,dark:P,textPrimary:z,textSecondary:se})]})]}),he&&a.jsx(ar,{fontFamily:U,textPrimary:z,textSecondary:se,cardBg:E,cardBorder:D,resolvedDark:P,darkCardBorder:M.cardBorder,primaryColor:O,feePreview:Ie,asset:Q?.asset,directExecutionFeeNote:Z.flags.directExecutionFeeNote,isLoading:te||fe.isQuoting,errorText:$}),Z.status.finalizationError&&a.jsx(p.Button,{onClick:Z.retryFinalization,disabled:Z.status.finalizing,children:"Retry application update"}),Ae&&a.jsx(Jt,{variant:"error",palette:M,fontFamily:U,style:{marginBottom:"12px"},children:Ae}),a.jsx(p.Button,{variant:"outline",fullWidth:!0,onClick:()=>{fe.error?Z.retrySupply():nt()},disabled:G||!We&&!fe.error,loading:G,dark:P,styles:{...R,button:{...R?.button,backgroundColor:O}},children:G?_?"LOCKING...":"CONVERTING...":fe.error?"RETRY QUOTE":fe.isQuoting?"GETTING SWAP QUOTE...":te&&he?"CALCULATING FEES...":_?`LOCK ${o}`:`CONVERT TO ${o}`}),ke&&!Z.status.finalizationError&&(pe==="success"||pe==="error"||G)&&a.jsx(gr,{type:"lock",isOpen:!G,isProcessing:G,closeOnComplete:!1,chainId:d,showStepBreakdown:!1,onRetryTx:ot,onNewTx:kt,onClose:()=>q(!1),onComplete:kt,results:pe==="success"||pe==="error"?[{asset:{symbol:o,address:Z.destination.address},txHash:xe??"",success:pe==="success",error:Ae??void 0,amount:Q?.amount}]:void 0,theme:T,styles:R,dark:P})]})})},If=({variant:e,destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:c,cardBorder:d,dk:f,dark:m,isQuoting:h,quoteError:w,estimatedOutput:g,paymentAmount:y,needsSwap:x,exactOutputSwap:b,adjustable:v=!1,maxAmount:C,onAmountChange:k})=>e==="supply"?a.jsxs("div",{style:{backgroundColor:c,border:`1px solid ${d}`,borderRadius:m?"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:m?"#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 ${d}`,borderRadius:"8px",padding:"8px 10px",minHeight:"42px"},children:[a.jsx(Zl,{symbol:t,logoURI:n,primaryColor:o,size:24}),a.jsx("span",{style:{fontSize:"16px",fontWeight:500,color:m?"#f3f4f6":"#3C3E42",lineHeight:"1.3",fontFamily:r,letterSpacing:0},children:t})]})]}),a.jsx("div",{style:{textAlign:"right",minWidth:0},children:h?a.jsx("span",{style:{fontSize:"18px",color:l,fontFamily:r},children:"Quoting..."}):w?a.jsx("span",{style:{fontSize:"13px",color:m?"#f87171":"#dc2626",fontFamily:r},children:"Quote failed"}):g?a.jsx(Un,{value:g,title:g,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(Af,{destinationSymbol:t,destinationLogoURI:n,destinationDecimals:s,primaryColor:o,fontFamily:r,textPrimary:i,textSecondary:l,cardBg:c,cardBorder:d,dk:f,dark:m,paymentAmount:y||"0",needsSwap:x,exactOutputSwap:b,isQuoting:h,adjustable:v,maxAmount:C,onAmountChange:k}),Kl=u.memo(If),Zl=({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)}),Af=({destinationSymbol:e,destinationLogoURI:t,destinationDecimals:n,primaryColor:s,fontFamily:o,textPrimary:r,textSecondary:i,cardBg:l,cardBorder:c,dk:d,dark:f,paymentAmount:m,needsSwap:h,exactOutputSwap:w,isQuoting:g,adjustable:y,maxAmount:x,onAmountChange:b})=>{const v=p.font.mono,C=parseFloat(m||"0"),k=x?parseFloat(x):0,[I,A]=u.useState(m||""),F=u.useRef(null),[R,j]=u.useState(null),[T,P]=u.useState(null);u.useEffect(()=>{y||A(m||"")},[m,y]);const O=E=>{let D=E;D.startsWith(".")&&(D="0"+D);const L=p.parseNumericInput(D);let z=L;x&&parseFloat(L)>parseFloat(x)&&(z=x),A(z),F.current&&clearTimeout(F.current),F.current=setTimeout(()=>b?.(z),300)},M=E=>{if(!k)return;if(E===100){A(x||k.toString()),F.current&&clearTimeout(F.current),b?.(x||k.toString());return}const D=10**n,L=Math.floor(k*E/100*D)/D,z=p.formatDecimalInput(L,n);A(z),F.current&&clearTimeout(F.current),b?.(z)},U=k>0?parseFloat(I||"0")/k*100:0;return u.useEffect(()=>()=>{F.current&&clearTimeout(F.current)},[]),a.jsxs("div",{style:{backgroundColor:l,border:`1px solid ${c}`,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(Zl,{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(Un,{element:"input",ariaLabel:`${e} amount`,dataSpiceflowFocus:!0,value:I,onChange:E=>O(E.target.value),placeholder:"0.0",fontFamily:v,color:r,lineHeight:1.1,textAlign:"right",maxFontSize:20,minFontSize:12,style:{width:"120px"}}):a.jsx(Un,{element:"div",value:C>0?m:"0.00",title:C>0?m:"0.00",fontFamily:v,color:r,lineHeight:1.1,textAlign:"right",maxFontSize:20,minFontSize:12}),a.jsx("div",{style:{fontSize:"12px",color:i,fontFamily:v,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((E,D)=>{const L=Math.abs(U-E)<1,z=D===4,se=R===E,de=T===E;return a.jsx("button",{onClick:()=>M(E),onMouseEnter:()=>j(E),onMouseLeave:()=>{j(null),P(null)},onMouseDown:()=>P(E),onMouseUp:()=>P(null),title:`${E}%`,style:{width:"14px",height:"14px",padding:0,border:"none",backgroundColor:"transparent",cursor:"pointer",opacity:L?1:se?.8:.5,transform:de?"scale(0.85)":se?"scale(1.15)":"scale(1)",transition:p.transition.interactive},children:a.jsx(dr,{pct:E,isMax:z,primaryColor:s,dark:f,fillColor:f?d?.textSecondary||"#9ca3af":"#3C3E42"})},E)})})]})]}),h&&w&&!g&&a.jsx("div",{style:{marginTop:"12px",paddingTop:"12px",borderTop:f?`1px solid ${d?.cardBorder||c}`:"1px solid #e5e7eb",display:"flex",justifyContent:"flex-end"},children:a.jsxs("span",{style:{fontSize:"11px",color:i,fontFamily:o,opacity:.7},children:["via ",w.venue]})})]})},Yl={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"},Xl=["building","signing-delegation","signing-intent","submitting","executing"],Ef=({step:e,statusMsg:t,txHash:n,explorerUrl:s,currentStepIdx:o,palette:r,cardBg:i,cardBorder:l,textPrimary:c,textSecondary:d,fontFamily:f,primaryColor:m,onRetry:h})=>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(p.Spinner,{size:14,color:m}),a.jsx("span",{style:{fontSize:"13px",fontWeight:500,color:e==="success"?c:e==="error"?r.errorText:c,fontFamily:f,flex:1},children:e==="success"?"Deposit confirmed":e==="error"?t||"Transaction failed":t||Yl[e]}),e==="success"&&n&&a.jsx("a",{href:`${s}/tx/${n}`,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"12px",color:m,fontFamily:f,textDecoration:"none",whiteSpace:"nowrap",flexShrink:0},children:"View tx \u2192"}),e==="error"&&a.jsx("button",{onClick:h,style:{background:"none",border:"none",fontSize:"12px",color:m,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:`${d}22`,overflow:"hidden"},children:a.jsx("div",{style:{height:"100%",width:"100%",borderRadius:"2px",backgroundColor:m,transformOrigin:"left center",transform:`scaleX(${(o+1)/Xl.length})`,transition:"transform 400ms ease"}})})]}),Ff=()=>{},Tf=({isOpen:e,onClose:t,closeOnBackdropClick:n=!1,destinationToken:s,sourceChains:o,supportedSourceAssets:r,additionalSourceTokens:i,includeExternalWalletAssets:l,includeCrossChainEmbeddedAssets:c,combineSourceBalances:d,recipient:f,feeOnlyAction:m,actionInput:h,actionProceeds:w,feeFunding:g,feeFundingReserve:y,maxSlippage:x,resolveInputSwap:b,buildActionCalls:v,feeExecutionMode:C="user-transfer",buildSpicenetBatch:k,onPayExecute:I,resolveExactOutputSwap:A,actionLabel:F,amountDirection:R=m?"output":"input",swapDescription:j,directDescription:T,paymentAmount:P,amountInputMode:O="fixed",maxPaymentAmount:M,onAmountChange:U,styles:E,dark:D,title:L,subtitle:z,onAddFunds:se,onSubmit:de,beforeSubmit:oe,submitDisabled:Q,onStateChange:J,onSuccess:X,onError:ee})=>{const K=R==="output",we=p.useAssetDisplay(),ve=R==="input-inclusive",{theme:N,dark:Z,primaryColor:Y,dk:G,palette:pe,fontFamily:xe,monoFont:ke,inputDark:q,cardBg:W,cardBorder:_,textPrimary:ce,textSecondary:$,subtitleText:te}=p.useSpiceBrand(E,D),Ie=u.useMemo(()=>q?{...N,colors:{...N.colors,secondary:G.cardBg,surfaceHover:G.hoverBg,border:"#2d2d2d",borderHover:"#3a3a3a"}}:N,[q,N,G.cardBg,G.hoverBg]),he=Bl(s,e),fe=he.token??Tr,Ae=u.useMemo(()=>fe.logoURI?fe:{...fe,logoURI:Vo[fe.symbol.toUpperCase()]},[fe]),We=Ae.chainId,[Ce,ze]=u.useState(null),[He,tt]=u.useState(P||""),_e=O==="adjustable"?He:P||"0",st=P?.trim(),ut=K&&O==="fixed"&&st!==void 0&&st!==""&&parseFloat(_e||"0")===0,{operationKey:pt,feeQuote:Ye,selectedAsset:it,capability:Pe,retryFinalization:lt,assets:{selectable:nt,loading:ot,refreshing:kt,error:Xe,getAvailableBalance:ht},quote:{isQuoting:je,quoteError:ct,estimatedOutput:De,exactOutputSwap:ae,isDirect:ue,needsSwap:Fe,pivot:Te},fees:{preview:le,isLoading:Le,error:Ve},amount:{sourceRequiredAmount:re,parsed:ge,isInsufficientBalance:Oe,availableBalance:Re},status:{activity:jt,finalizationError:Ft,finalizing:Ne,step:ft,statusMsg:wt,txHash:vt,isExecuting:Je,error:Tt,showStatusPanel:Nn,paymentResult:xt},flags:{directExecutionFeeNote:gn},canExecute:Bt,submitSupply:on,retrySupply:bt,dismissPaymentStatus:Ut,submitPay:Vt,resolveMaxAmount:$t,resetAfterSuccess:Qt,resetPaymentState:mt}=Ns({enabled:e,destinationToken:he.token&&Ae,selectedAsset:Ce,paymentAmount:_e,amountDirection:R,sourceChains:o,supportedSourceAssets:r,additionalSourceTokens:i,includeExternalWalletAssets:l,includeCrossChainEmbeddedAssets:c,combineSourceBalances:d,recipient:f,feeOnlyAction:m,actionInput:h,actionProceeds:w,feeFunding:g,feeFundingReserve:y,maxSlippage:x,resolveInputSwap:b,buildActionCalls:v,feeExecutionMode:C,buildSpicenetBatch:k,onPayExecute:I,resolveExactOutputSwap:A,isZeroAmountPay:ut,onSubmit:de,beforeSubmit:oe,submitDisabled:Q,onSuccess:X,onError:ee}),Be=u.useMemo(()=>({operationKey:pt,feeQuote:Ye,selectedAsset:it,canExecute:Bt&&!Q,isExecuting:Je,finalizing:Ne,finalizationError:Ft,feePreview:le,txHash:vt,error:Tt,statusStep:ft,statusMsg:wt}),[pt,Ye,it,Bt,Q,Je,Ne,Ft,le,vt,Tt,ft,wt]),St=u.useRef(J);St.current=J,u.useEffect(()=>{St.current?.(Be)},[Be]);const _t=!!m||!!Ce?.asset&&ge>0,Gt=he.error||Tt,Nt=Ft?a.jsx(p.Button,{onClick:lt,disabled:Ne,children:"Retry application update"}):null;u.useEffect(()=>{e||(ze(null),O==="adjustable"&&tt(P||""))},[e]),u.useEffect(()=>{if(Pe?.policyExcluded){ze(null);return}if(Je||ot||kt||Xe||!Ce)return;const Ue=nt.find(Ge=>ye(Ge)===ye(Ce.asset));Ue&&Ue!==Ce.asset?ze({...Ce,asset:Ue}):!Ue&&Ce.asset.balance>0n&&ze({...Ce,asset:{...Ce.asset,balance:0n,balanceFormatted:0,balanceUsd:0}})},[nt,ot,kt,Xe,Je,Pe?.policyExcluded]);const Wt=u.useCallback(Ue=>{ze(Ge=>({asset:Ue,amount:Ge?.asset&&ye(Ge.asset)===ye(Ue)&&Ge.amount||""}))},[]),Qe=u.useCallback(Ue=>{ze(Ge=>Ge&&{...Ge,amount:Ue})},[]),Mt=u.useCallback(Ue=>{let Ge=Ue;M&&parseFloat(Ge)>parseFloat(M)&&(Ge=M),tt(Ge),U?.(Ge)},[M,U]),Ot=u.useCallback(()=>{mt(),ze(null)},[mt]),en=ue?T||`Your ${Ae.symbol} will be used directly.`:j||"Your assets will be swapped and used in a single atomic transaction.",cn=(We?p.getChainConfig(We):void 0)?.viemChain?.blockExplorers?.default?.url??"",xn=Xl.indexOf(ft),yn=Je?(Yl[ft]||"EXECUTING...").toUpperCase():ft==="success"?"DONE":Oe?"INSUFFICIENT BALANCE":(Fe||Te)&&ct&&!je?"QUOTE ERROR":F.toUpperCase(),wn=u.useMemo(()=>{if(xt?.status==="success")return"DONE";if(Je)return"PAYING...";if(Oe&&Ce?.asset)return`INSUFFICIENT ${we(Ce.asset).symbol}`;if((Fe||Te)&&ct&&!je)return"QUOTE ERROR";if(F)return F.toUpperCase();const Ue=ge>0?` ${_e} ${Ae.symbol}`:"";return Fe?`SWAP & PAY${Ue}`:`PAY${Ue}`},[Je,Oe,Ce,F,we,ge,_e,Ae.symbol,Fe,ct,je,xt?.status]),Kt=ft==="success"?()=>{Qt(),ze(null)}:on,Lt=ft==="success"?!1:!!Q||!Bt;if(!e)return null;const ie=K?L||`Pay ${Ae.symbol}`:F,ne=K?z:a.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"3px"},children:[a.jsx("span",{style:{marginTop:"3px",flexShrink:0},children:a.jsx(or,{color:te})}),a.jsx("p",{style:{fontSize:"12px",color:te,margin:0,lineHeight:"1.4",fontFamily:xe},children:en})]}),Se={...E,button:{...E?.button,backgroundColor:Y}},et=_t&&a.jsx(ar,{fontFamily:xe,textPrimary:ce,textSecondary:$,cardBg:W,cardBorder:_,resolvedDark:Z,darkCardBorder:G.cardBorder,primaryColor:Y,feePreview:le,feeOnlyAction:m,asset:Ce?.asset,isLoading:Le,errorText:Ve,directExecutionFeeNote:gn});if(K){const Ue=xt&&(xt.status==="success"||xt.status==="failed")?[{asset:{symbol:Ce?.asset?we(Ce.asset).symbol:Ae.symbol,address:Ce?.asset?.address||""},amount:_e,txHash:xt.txHash||"",success:xt.status==="success",error:xt.status==="failed"?xt.error:void 0}]:void 0;return a.jsx(an,{isOpen:e,onClose:t,title:ie,subtitle:ne,styles:E,dark:Z,footerLinkText:"Spicenet accounts \u2192",closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"16px 24px 8px 24px",position:"relative"},children:[a.jsx(ho,{activity:jt,palette:G}),se&&a.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:"6px"},children:a.jsx(pr,{onClick:se,color:Y,fontFamily:xe})}),!ut&&a.jsx("div",{style:{marginBottom:"12px"},children:a.jsx($n,{assets:nt,selectedAsset:Ce??void 0,disabled:Je,onAssetSelect:Wt,onAmountChange:Ff,label:"Pay with",showBalance:!0,getAvailableBalance:ht,showMaxButton:!1,hideAmountInput:!0,displayAmount:Ce&&re!==null?B.formatUnits(re,Ce.asset.decimals):Ce?"...":void 0,dark:Z,theme:Ie,styles:E})}),!m&&a.jsx(Kl,{variant:"pay",destinationSymbol:Ae.symbol,destinationLogoURI:Ae.logoURI,destinationDecimals:Ae.decimals,primaryColor:Y,fontFamily:xe,textPrimary:ce,textSecondary:$,cardBg:W,cardBorder:_,dk:G,dark:Z,isQuoting:je,quoteError:ct,estimatedOutput:De,paymentAmount:_e,needsSwap:Fe,exactOutputSwap:ae,adjustable:O==="adjustable",maxAmount:M,onAmountChange:Mt}),et,Nt,Gt&&a.jsx(Jt,{variant:"error",palette:pe,fontFamily:xe,style:{marginBottom:"12px"},children:Gt}),a.jsx(p.Button,{variant:"outline",fullWidth:!0,onClick:xt?.status==="success"?t:Vt,disabled:xt?.status==="success"?!1:!!Q||!Bt,loading:Je,dark:Z,styles:Se,children:wn}),xt&&Nn&&!Ft&&a.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:10,backgroundColor:Z?G.shell:"white",borderRadius:Z?"12px":"6px",padding:"16px 0"},children:a.jsx(gr,{type:"payment",isOpen:xt.status!=="processing",isProcessing:Je||xt.status==="processing",closeOnComplete:!1,chainId:We,onRetryTx:()=>{Ut(),Vt()},onNewTx:Ot,onClose:()=>{Ut()},onComplete:Ot,results:Ue,styles:E,dark:Z})})]})})}return a.jsx(an,{isOpen:e,onClose:t,title:ie,subtitle:ne,dark:Z,styles:E,theme:N,closeOnBackdropClick:n,children:a.jsxs("div",{style:{padding:"24px 24px 5px 24px",position:"relative"},children:[a.jsx(ho,{activity:jt,palette:G}),a.jsx("div",{style:{marginBottom:"16px"},children:a.jsx($n,{assets:nt,selectedAsset:Ce||void 0,onAssetSelect:Wt,onAmountChange:Qe,disabled:Je||ft==="success",showBalance:!0,getAvailableBalance:ht,showMaxButton:!0,label:d?"From":"From Wallet",placeholder:"0.00",theme:Ie,styles:E,dark:q,resolveMaxAmount:ve?void 0:$t,maxAmount:Ce?.asset&&Re!==void 0?B.formatUnits(Re,Ce.asset.decimals):void 0})}),Ce?.asset&&(!ue||!!Te)&&!(ve&&Te)&&a.jsx(Kl,{variant:"supply",destinationSymbol:Ae.symbol,destinationLogoURI:Ae.logoURI,destinationDecimals:Ae.decimals,primaryColor:Y,fontFamily:xe,textPrimary:ce,textSecondary:$,cardBg:W,cardBorder:_,dark:Z,isQuoting:je,quoteError:ct,estimatedOutput:De}),et,ft!=="idle"&&a.jsx(Ef,{step:ft,statusMsg:wt,txHash:vt,explorerUrl:cn,currentStepIdx:xn,palette:pe,cardBg:W,cardBorder:_,textPrimary:ce,textSecondary:$,fontFamily:xe,primaryColor:Y,onRetry:()=>{bt()}}),Nt,Tt&&(ft==="idle"||!!Ft)&&a.jsx(Jt,{variant:"error",palette:pe,fontFamily:xe,style:{marginBottom:"16px"},children:Tt}),a.jsx(p.Button,{variant:"outline",fullWidth:!0,disabled:Lt,onClick:Kt,theme:N,dark:Z,styles:Se,style:{fontSize:"20px",fontWeight:600,letterSpacing:"1.5px",fontFamily:ke},children:yn})]})})},Bf=()=>{const[e,t]=u.useState("0"),[n,s]=u.useState(null);return{assetAmount:e,setAssetAmount:t,selectedAsset:n,setSelectedAsset:s}};function Rf(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 jf(){const{actions:e,isReady:t,isAuthenticated:n}=p.useWallet(),s=u.useContext(p.SpiceFlowProviderContext)?.embeddedWalletAddress,o=u.useRef(!1),r=u.useRef(0),i=u.useRef(null),l=u.useRef(e),[c,d]=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 f=!1;return(async()=>{await fn(2e3);try{await p.ensureSmartWallet(s,l.current.signMessage),r.current=0}catch(m){console.warn("[SmartWallet] Registration failed:",m),o.current=!1,!f&&r.current<3&&(r.current+=1,i.current=setTimeout(()=>{d(h=>h+1)},5e3))}})(),()=>{f=!0,i.current&&(clearTimeout(i.current),i.current=null)}},[s,t,n,c])}function Of(){const e=u.useContext(p.SpiceFlowProviderContext),t=(e?.mode??"7702")==="7702"?"embedded":"external",n=e?.setMode,s=u.useCallback(o=>n?.(o==="embedded"?"7702":"ondemand"),[n]);return{mode:t,setMode:s,ownerAddress:t==="embedded"?e?.embeddedWalletAddress:e?.externalWalletAddress,embeddedAddress:e?.embeddedWalletAddress,externalAddress:e?.externalWalletAddress,isUserWhitelisted:e?.isUserWhitelisted??null,isWhitelistChecking:e?.isWhitelistChecking??!1,isWhitelistGateActive:e?.isWhitelistGateActive??!1,whitelistCheck:e?.whitelistCheck}}function Df({amount:e,enabled:t=!0,...n}){const s=u.useContext(p.SpiceFlowProviderContext),[o,r]=u.useState(null);u.useEffect(()=>{r(d=>d&&d.amount!==e?{...d,amount:e}:d)},[e]);const i=u.useMemo(()=>{if(!o)return null;const d=o.asset,f=d.location??(d._source==="spice"?"rollup":d._fundingWallet??((s?.mode??"7702")==="7702"?"embedded":"external"));return{...o,asset:{...d,location:f,owner:d.owner??(f==="external"?s?.externalWalletAddress:s?.embeddedWalletAddress),...d._wrapFromNative?{address:S.ZERO_ADDRESS,isNative:!0,positionId:void 0}:{}}}},[o,s?.mode,s?.embeddedWalletAddress,s?.externalWalletAddress]),l=Ns({...n,enabled:t,selectedAsset:i,paymentAmount:n.amountDirection==="output"?e:void 0}),c=u.useCallback(d=>r({asset:d,amount:e}),[e]);return{sources:l.assets.selectable,getAvailableBalance:l.assets.getAvailableBalance,availableBalance:l.amount.availableBalance,selectedAsset:l.selectedAsset,setSelectedAsset:r,selectAsset:c,quote:{isQuoting:l.quote.isQuoting,error:l.quote.quoteError,estimatedInput:l.quote.estimatedInput,estimatedOutput:l.quote.estimatedOutput,estimatedMinOutput:l.fees.destinationAmount===void 0||!n.destinationToken?null:B.formatUnits(l.fees.destinationAmount,n.destinationToken.decimals),isDirect:l.quote.isDirect,needsSwap:l.quote.needsSwap},feePreview:l.fees.preview,isFeePreviewLoading:l.fees.isLoading,feePreviewError:l.fees.error||l.status.error,canSubmit:l.canExecute,execute:l.submit,isExecuting:l.status.isExecuting,step:l.status.step,statusMsg:l.status.statusMsg,txHash:l.status.txHash,refreshAssets:l.assets.refreshSpiceAssets,resolveMaxAmount:l.resolveMaxAmount,retryFinalization:l.retryFinalization}}const Nf="spiceflow-limit-order:v1",Jl=B.parseAbi(["function exactInput((bytes path, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum) params) payable returns (uint256 amountOut)"]);function Mf(e){if(!/^ord_[0-9a-f]{64}$/.test(e))throw new Error("Invalid limit order ID");return`Spice Flow limit order cancellation v1
|
|
74
|
+
Order: ${e}`}function Pf(e){const t=e.intents[0];if(e.intents.length!==1||t.mode!=="7702")throw new Error("Invalid order intent");return`ord_${ci(t.chainBatches,BigInt(t.exp)).slice(2)}`}function Uf(e){if(!Number.isSafeInteger(e.expiresAt)||e.minimumOutput<=0n||e.amountIn<=0n||e.platformFee<0n||e.gasBridgeFee<0n||e.amountIn+e.platformFee+e.gasBridgeFee!==e.grossAmount)throw new Error("Invalid limit order amounts or expiry");const t=Ts({userAddress:e.user,destinationChainId:e.chainId,deliveryToken:e.tokenIn,deliveryAmount:e.grossAmount,deliveryRecipient:e.user,requestTimestampMs:e.requestTimestampMs,expiresAt:e.expiresAt,metadata:Nf,requestNonce:e.requestNonce});if(!t)throw new Error("Order requires a positive cash balance");const n=[...xo(e.chainId,e.tokenIn,[{recipient:S.SPICE_PLATFORM_FEE_RECIPIENT,amount:e.platformFee},{recipient:S.SPICE_GAS_FEE_RECIPIENT,amount:e.gasBridgeFee}]).calls,{to:e.tokenIn,value:0n,data:B.encodeFunctionData({abi:B.erc20Abi,functionName:"approve",args:[e.router,e.amountIn]})},{to:e.router,value:0n,data:B.encodeFunctionData({abi:Jl,functionName:"exactInput",args:[{path:e.path,recipient:e.user,deadline:BigInt(e.expiresAt),amountIn:e.amountIn,amountOutMinimum:e.minimumOutput}]})}],s=S.hashChainBatches([t,{chainId:e.chainId,calls:n}]);return{user:e.user,amountMode:"gross_input",intents:[{mode:"7702",signatureType:"ecdsa",signature:"0x00",nbf:0,exp:e.expiresAt,chainBatches:s.map((o,r)=>({...o,chainId:Number(o.chainId),tokenTransfers:r===0?[]:[{from:"escrow",to:e.user,token:e.tokenIn,amount:e.grossAmount}]}))}]}}function Wf(e){const t=p.useWallet(),n=u.useContext(p.SpiceFlowProviderContext),s=Is(),o=u.useRef(s);o.current=s;const r=u.useRef(e?.combineSourceBalances);r.current=e?.combineSourceBalances;const i=u.useRef({wallet:t,provider:n});i.current={wallet:t,provider:n};const l=u.useRef(!1),c=u.useRef(!0),d=u.useRef(0);u.useEffect(()=>(c.current=!0,()=>{c.current=!1,d.current++}),[]);const f=u.useRef(new WeakMap),m=u.useRef(new WeakMap),h=()=>{if(!c.current)throw new Error("Order hook is no longer mounted");return JSON.stringify([d.current,i.current.wallet.address,p.relayerService.getBaseUrl(),i.current.provider?.rpcOverrides,i.current.provider?.provider,i.current.provider?.network,i.current.provider?.mode])},w=u.useCallback(async b=>{b=structuredClone(b);const v=B.bytesToHex(crypto.getRandomValues(new Uint8Array(32))),C=i.current.wallet.address;if(!C)throw new Error("Connect a wallet before preparing an order");if(i.current.provider?.mode!=="7702")throw new Error("Limit orders require the 7702 wallet mode");if(!i.current.provider?.rpcOverrides?.[b.chainId])throw new Error(`Configure rpcOverrides[${b.chainId}] before preparing an order`);const k=h(),I=Date.now();if(!Number.isSafeInteger(b.expiresAt)||b.expiresAt<=Math.floor(I/1e3)||b.expiresAt>Math.floor(I/1e3)+30*86400||b.grossAmount<=0n||b.minimumOutput<=0n)throw new Error("Enter a positive amount, minimum output and expiry within 30 days");let A,F;if(r.current){const M=Go(await p.getWalletBalanceEntries(C),b.chainId,b.tokenIn);if(M<b.grossAmount){const U=S.getTokenByAddress(b.tokenIn,b.chainId);if(!U||S.isNativeToken(b.tokenIn))throw new Error("This source is unavailable.");const E=b.grossAmount-M,D=await p.getClientForChain(b.chainId,i.current.provider?.rpcOverrides).readContract({address:b.tokenIn,abi:B.erc20Abi,functionName:"balanceOf",args:[C]});if(D<E)F="insufficient_balance";else{const L=await cr({address:C,escrowOnly:!0,depositQuote:{asset:{address:b.tokenIn,chainId:b.chainId,owner:C,location:"embedded",_source:"wallet",symbol:U.symbol,name:U.name,decimals:U.decimals,balance:D,balanceFormatted:Number(B.formatUnits(D,U.decimals)),balanceUsd:0,isNative:!1},amount:E,token:b.tokenIn,chainId:b.chainId}});if(L.fee>=E)throw new Error("Cash amount does not cover order fees");A={sourceSpendCap:E,depositAmount:L.net,feeAmount:L.fee},b.grossAmount-=L.fee}}if(h()!==k)throw new Error("Wallet or provider changed while preparing the order")}const R=b.venue??Qs;if(!(R.chainIds??[8453]).includes(b.chainId))throw new Error("Venue does not support the destination chain");const j=Gs(R);let T=b.grossAmount,P=0n,O=0n;for(let M=0;M<5;M++){const U=await j.resolve({type:"swap",tokenIn:b.tokenIn,tokenOut:b.tokenOut,amountIn:T},b.chainId,C);if(!U)throw new Error("No supported route for this order");const E=U.calls.find(ee=>p.addressesEqual(ee.to,R.swapRouter));if(!E)throw new Error("Order route is missing its swap");const{path:D}=B.decodeFunctionData({abi:Jl,data:E.data}).args[0],L=Uf({user:C,chainId:b.chainId,tokenIn:b.tokenIn,router:R.swapRouter,path:D,grossAmount:b.grossAmount,amountIn:T,minimumOutput:b.minimumOutput,expiresAt:b.expiresAt,platformFee:P,gasBridgeFee:O,requestTimestampMs:I,requestNonce:v});if(L.intents[0].mode!=="7702")throw new Error("Unsupported order mode");const z=structuredClone(L),se=z.intents[0];if(se.mode!=="7702")throw new Error("Unsupported order mode");const de=ro(se.chainBatches,C);de[1].calls=U.calls;const oe=S.hashChainBatches(de);se.chainBatches=de.map((ee,K)=>({...se.chainBatches[K],calls:ee.calls,hash:oe[K].hash}));const Q=(await p.relayerService.estimateActionFees(z)).intents[0]?.batches.find(ee=>ee.chainId===b.chainId);if(!Q)throw new Error("Order fee quote is unavailable");const J=p.getBatchFees(Q),X=b.grossAmount-J.totalFee;if(X<=0n)throw new Error("Cash amount does not cover order fees");if(h()!==k)throw new Error("Wallet or provider changed while preparing the order");if(X===T&&P===J.spicenetFee&&O===J.gasFee+J.bridgeFee){const ee={user:C,request:L,amountIn:T,minimumOutput:b.minimumOutput,feeAmount:J.totalFee,funding:A,fundingWarning:F,path:D};return f.current.set(ee,{scope:k,request:structuredClone(L),funding:A&&{...A,chainId:b.chainId,token:b.tokenIn}}),ee}T=X,P=J.spicenetFee,O=J.gasFee+J.bridgeFee}throw new Error("Order fees did not converge; prepare the order again")},[]),g=u.useCallback(async b=>{if(l.current)throw new Error("An order signature is already in progress");const v=f.current.get(b),C=v?.scope,k=()=>{if(!C||h()!==C||!p.addressesEqual(i.current.wallet.address,v?.request.user))throw new Error("Prepare the order again for the current wallet and provider")};k();const I=structuredClone(v.request),A=I.intents[0];if(A.mode!=="7702"||A.exp<=Date.now()/1e3)throw new Error("Order expired before signing");l.current=!0;try{const F=i.current.wallet.actions;if(I.chainAuthorizations=await ui({chainBatches:A.chainBatches,signingAddress:I.user,actions:F}),k(),A.signature=await di(F,A.chainBatches,BigInt(A.exp)),k(),A.exp<=Date.now()/1e3)throw new Error("Order expired during signing");return m.current.set(I,{scope:C,request:structuredClone(I),funding:v.funding}),I}finally{l.current=!1}},[]),y=u.useCallback(async b=>{const v=h(),{signature:C}=await i.current.wallet.actions.signMessage(Mf(b));if(h()!==v)throw new Error("Wallet or provider changed during cancellation");return p.relayerService.cancelLimitOrder(b,C)},[]),x=u.useCallback(b=>{const v=m.current.get(b),C=()=>{if(!v||h()!==v.scope)throw new Error("Sign the order for the current wallet and provider before placing it");const A=v.request.intents[0];if(A.mode!=="7702"||A.exp<=Date.now()/1e3)throw new Error("Order expired before placement")};C();const{user:k}=v.request,I=v.funding;return I?(async()=>{const{chainId:A,token:F}=I,R=await p.getWalletBalanceEntries(k);if(C(),await o.current.execute([{chainId:A,tokenTransfers:[],calls:Ri({escrowAddress:S.getEscrowContractAddress(A),tokenAddress:F,isNative:!1,amount:I.depositAmount,gasFeeAmount:I.feeAmount})}],F,0n,void 0,void 0,{userOverride:k,useCustomTransfers:!0,skipPreSubmitFeeEstimate:!0,skipUserFundingPreflight:!0,walletFundingRequirement:{chainId:A,token:F,amount:I.sourceSpendCap},validateBeforeSubmit:async()=>C()}),!await li({deposits:[{chainId:A,token:F,amount:I.depositAmount}],baseline:R,fetchEntries:()=>p.getWalletBalanceEntries(k)}))throw new Error("Your deposit is still waiting for Spice credit. Check this transaction's status before trying again.");return C(),p.relayerService.createLimitOrder(structuredClone(v.request))})():p.relayerService.createLimitOrder(structuredClone(v.request))},[]);return{prepareOrder:w,signOrder:g,placeOrder:x,getOrder:b=>p.relayerService.getLimitOrder(b),listOrders:b=>{if(!t.address)throw new Error("Connect a wallet to list orders");return p.relayerService.listLimitOrders(t.address,b)},cancelOrder:y}}yc(),exports.SpiceFlowProvider=p.SpiceFlowProvider,exports.SpiceFlowProviderContext=p.SpiceFlowProviderContext,exports.SpiceflowError=p.SpiceflowError,exports.Spinner=p.Spinner,exports.buildDarkPalette=p.buildDarkPalette,exports.buildLightPalette=p.buildLightPalette,exports.calculateBpsFee=p.calculateBpsFee,exports.duration=p.duration,exports.easing=p.easing,exports.font=p.font,exports.getChainConfig=p.getChainConfig,exports.getChainName=p.getChainName,exports.isSpiceflowError=p.isSpiceflowError,exports.radius=p.radius,exports.relayerService=p.relayerService,exports.resolveTheme=p.resolveTheme,exports.transition=p.transition,exports.useAssetDisplay=p.useAssetDisplay,exports.useIsUserWhitelisted=p.useIsUserWhitelisted,exports.useSpiceBrand=p.useSpiceBrand,exports.useWallet=p.useWallet,exports.z=p.z,Object.defineProperty(exports,"NATIVE_TOKEN_ADDRESS",{enumerable:!0,get:function(){return S.ZERO_ADDRESS}}),Object.defineProperty(exports,"SPICENET_NATIVE_CHAIN_ID",{enumerable:!0,get:function(){return S.SPICENET_NATIVE_CHAIN_ID}}),Object.defineProperty(exports,"SPICE_COMBINED_FEE_RECIPIENT",{enumerable:!0,get:function(){return S.SPICE_COMBINED_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_GAS_FEE_RECIPIENT",{enumerable:!0,get:function(){return S.SPICE_GAS_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_PLATFORM_FEE_RECIPIENT",{enumerable:!0,get:function(){return S.SPICE_PLATFORM_FEE_RECIPIENT}}),Object.defineProperty(exports,"SPICE_SOLVER_ADDRESS",{enumerable:!0,get:function(){return S.SPICE_SOLVER_ADDRESS}}),Object.defineProperty(exports,"applySlippage",{enumerable:!0,get:function(){return S.applySlippage}}),Object.defineProperty(exports,"buildUniV3SwapCalls",{enumerable:!0,get:function(){return S.buildUniV3SwapCalls}}),Object.defineProperty(exports,"getChainIdsByNetwork",{enumerable:!0,get:function(){return S.getChainIdsByNetwork}}),Object.defineProperty(exports,"getEscrowContractAddress",{enumerable:!0,get:function(){return S.getEscrowContractAddress}}),Object.defineProperty(exports,"isNativeToken",{enumerable:!0,get:function(){return S.isNativeToken}}),Object.defineProperty(exports,"isSpicenetChainId",{enumerable:!0,get:function(){return S.isSpicenetChainId}}),Object.defineProperty(exports,"normalizeNativeTokenAddress",{enumerable:!0,get:function(){return S.normalizeNativeTokenAddress}}),Object.defineProperty(exports,"spicenetAbi",{enumerable:!0,get:function(){return S.spicenetAbi}}),Object.defineProperty(exports,"spicenetWithdrawalAbi",{enumerable:!0,get:function(){return S.spicenetAbi}}),exports.AERODROME_BASE_CONFIG=Qs,exports.AccountDisplay=Wl,exports.AddFundsLink=pr,exports.AssetBalance=Zp,exports.AssetSelector=$n,exports.CheckIcon=vi,exports.ChevronIcon=Jn,exports.CloseIcon=Es,exports.DEFAULT_LIQUIDITY_VENUES=Uo,exports.DetailRow=ln,exports.ProviderLogin=hr,exports.SATSUMA_CITREA_CONFIG=Do,exports.SPICE_PLATFORM_FEE_BPS=Qd,exports.SearchInput=fr,exports.SelectChainModal=wf,exports.SpiceAccount=yf,exports.SpiceDeposit=Vl,exports.SpiceLock=Sf,exports.SpiceSupply=Tf,exports.SpiceWithdraw=Dr,exports.StatusBanner=Jt,exports.UNIV3_ARBITRUM_CONFIG=ca,exports.UNIV3_BASE_CONFIG=ia,exports.UNIV3_ETHEREUM_CONFIG=la,exports.UNIV3_ROBINHOOD_CONFIG=da,exports.UNIV3_ROBINHOOD_SUSHI_CONFIG=ua,exports.UNIV4_BASE_CONFIG=wa,exports.UNIV4_ROBINHOOD_CONFIG=ba,exports.V4_NATIVE_CURRENCY=mn,exports.areEquivalentOnChains=xs,exports.assetCapability=Tn,exports.assetPositionId=ye,exports.buildLiquidityVenues=Pn,exports.buildPayChainBatches=yo,exports.buildRoutedBatches=Eu,exports.buildSpicenetWithdrawalBatch=Ts,exports.buildSupplyChainBatches=wo,exports.createAerodromeExactOutputVenue=ha,exports.createAerodromeVenue=Gs,exports.createExactOutputRegistry=Os,exports.createLiquidityRegistry=ga,exports.createSatsumaExactOutputVenue=Mo,exports.createSatsumaVenue=gs,exports.createUniV3ExactOutputVenue=Mo,exports.createUniV3Venue=gs,exports.createUniV4ExactOutputVenue=Ta,exports.createUniV4Venue=Fa,exports.encodeUniV3ExactOutputCall=sa,exports.estimateFeePreview=Wn,exports.estimateRequiredGrossFunding=Zu,exports.estimateSupplyMaxAmount=np,exports.executePay=Sl,exports.executeSupply=kl,exports.fetchBalances=Yn,exports.findEquivalentOnChain=En,exports.getAssetChainTokenCandidates=Kn,exports.getBestUniV3ExactOutputQuote=ra,exports.getBestUniV3Quote=oa,exports.isExternalSource=_s,exports.isSupportedSupplyAsset=fp,exports.limitOrderId=Pf,exports.resolveAssetTokenAddressOnChain=rn,exports.resolveFundedToken=Da,exports.resolveInputSupplySwapQuote=jr,exports.resolveRoute=Au,exports.reverseUniV3Path=na,exports.scaleTokenAmount=rs,exports.useAssetInput=Bf,exports.useLockDuration=Rf,exports.useSmartWallet=jf,exports.useSpiceAccount=Of,exports.useSpiceAction=Df,exports.useSpiceActionActivity=mr,exports.useSpiceAssets=Ka,exports.useSpiceExecution=Is,exports.useSpiceInventory=Xn,exports.useSpiceLimitOrders=Wf,exports.useSpiceLock=Ql,exports.useSpicePendingDeposits=si,exports.useSpiceSupply=Ns,exports.useSupplyAssets=jl,exports.useSupplyQuote=Nl,exports.useTokenLogo=ur,exports.useWalletBalances=ks;
|