@rango-dev/queue-manager-rango-preset 0.52.0 → 0.52.1-next.0

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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # [0.52.0](https://github.com/rango-exchange/rango-client/compare/queue-manager-rango-preset@0.51.0...queue-manager-rango-preset@0.52.0) (2025-09-06)
2
+
3
+
4
+
1
5
  # [0.51.0](https://github.com/rango-exchange/rango-client/compare/queue-manager-rango-preset@0.50.0...queue-manager-rango-preset@0.51.0) (2025-08-27)
2
6
 
3
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"executeTransaction.d.ts","sourceRoot":"","sources":["../../src/actions/executeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAwBrE;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,CAAC,GACvE,OAAO,CAAC,IAAI,CAAC,CA8Ff"}
1
+ {"version":3,"file":"executeTransaction.d.ts","sourceRoot":"","sources":["../../src/actions/executeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAyBrE;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,CAAC,GACvE,OAAO,CAAC,IAAI,CAAC,CAmGf"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var vt=Object.defineProperty;var l=(e,t)=>vt(e,"name",{value:t,configurable:!0});var Rt="c6381a79-2817-4602-83bf-6a641a409e32",we={API_KEY:Rt,BASE_URL:""};function J(e){return we[e]}l(J,"getConfig");function Fe(e){return we=e,we}l(Fe,"initConfig");var Ae=(n=>(n.RouteEvent="routeEvent",n.StepEvent="stepEvent",n))(Ae||{}),ye=(r=>(r.STARTED="started",r.FAILED="failed",r.SUCCEEDED="succeeded",r))(ye||{}),ne=(r=>(r.CREATE_TX="create_tx",r.SEND_TX="send_tx",r.TX_SENT="tx_sent",r))(ne||{}),ie=(a=>(a.WAITING_FOR_QUEUE="waiting_for_queue",a.WAITING_FOR_WALLET_CONNECT="waiting_for_wallet_connect",a.WAITING_FOR_NETWORK_CHANGE="waiting_for_network_change",a.WAITING_FOR_CHANGE_WALLET_ACCOUNT="waiting_for_change_wallet_account",a))(ie||{}),q=(p=>(p.STARTED="started",p.FAILED="failed",p.SUCCEEDED="succeeded",p.TX_EXECUTION="tx_execution",p.TX_EXECUTION_BLOCKED="tx_execution_blocked",p.APPROVAL_TX_SUCCEEDED="approval_tx_succeeded",p.CHECK_STATUS="check_status",p.OUTPUT_REVEALED="output_revealed",p))(q||{}),xe=(a=>(a.ERROR="error",a.SUCCESS="success",a.WARNING="warning",a.INFO="info",a))(xe||{});import{warn as te}from"@rango-dev/logging-core";import{SignerError as Et}from"rango-types";import{warn as Lt}from"@rango-dev/logging-core";import{Status as Re}from"@rango-dev/queue-manager-core";import{legacyReadAccountAddress as Bt}from"@rango-dev/wallets-core/legacy";import{getBlockChainNameFromId as Qt,getEvmProvider as Xt}from"@rango-dev/wallets-shared";import qt from"bignumber.js";import{PendingSwapNetworkStatus as z,SignerError as Ht,TransactionType as I}from"rango-types";var Ce="Waiting for other swaps to complete",Le="Waiting for connecting wallet",Be=l((e,t)=>`Please change your ${e||"wallet"} account to ${t||"proper address"}`,"ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET"),le=l(e=>`Please connect your ${e??""} wallet.`,"ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION"),ce=l(e=>`Please change your network to ${e}.`,"ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK"),O="CLIENT_UNEXPECTED_BEHAVIOUR";import{RangoClient as ht}from"rango-sdk";var ue,H=l(()=>ue||(ue=new ht(J("API_KEY"),J("BASE_URL")),ue),"httpService");import Ge from"bignumber.js";import Qe from"bignumber.js";var Xe=l((e,t=null,n=null)=>{if(e===null||e==="")return"";let r=new Qe(e),a=1,o=1e3;for(let c=0;c<60;c++)if(new Qe(r.toFixed(c,a)).eq(r)){o=c;break}if(r.gte(1e4))return r.toFormat(0,a);if(r.gte(1e3)||r.gte(100))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,1))),a);if(r.gte(1))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,2))),a);if(r.gte(.01))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,4))),a);for(let c=t||4;c<17;c++)if(r.gte(Math.pow(10,-c)))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,c))),a);return r.isEqualTo(0)?"0":r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,8))),a)},"numberToString");import{SignerErrorCode as $,SignerError as Nt,isSignerErrorCode as It,isAPIErrorCode as Pt}from"rango-types";var Ot="Assertion failed (Unexpected behaviour)",Dt="Create transaction failed in Rango Server",qe="Input wallet not found",D=class e extends Error{constructor(n,r,a,o){super(r);this._isPrettyError=!0;Object.setPrototypeOf(this,e.prototype),e.prototype._isPrettyError=!0,this.code=n,this.detail=o,this.root=a}static{l(this,"PrettyError")}static isPrettyError(n){return n instanceof e||Object.prototype.hasOwnProperty.call(n,"_isPrettyError")}getErrorDetail(){let n=typeof this.root=="object"&&this.root&&this.root.error?this.root.error:JSON.stringify(this.root),r=typeof this.root=="string"?this.root:this.root instanceof Error?this.root.message:n;return{extraMessage:this.message,extraMessageDetail:this.detail||r,extraMessageErrorCode:this.code||null}}static AssertionFailed(n){return new e("CLIENT_UNEXPECTED_BEHAVIOUR",Ot,null,n)}static BadStatusCode(n,r){return new e("TX_FAIL",n,null,`status code = ${r}`)}static CreateTransaction(n){return new e("FETCH_TX_FAILED",Dt,null,n)}static WalletMissing(){return new e("CLIENT_UNEXPECTED_BEHAVIOUR",qe,null,"Server requested for a blockchain or address not selected by user")}static BlockchainMissing(){return new e("CLIENT_UNEXPECTED_BEHAVIOUR",qe,null,"Server requested for a blockchain or address not selected by user")}};function He(e){try{return e?Pt(e)?e:It(e)?{[$.REJECTED_BY_USER]:"USER_REJECT",[$.SIGN_TX_ERROR]:"CALL_WALLET_FAILED",[$.SEND_TX_ERROR]:"SEND_TX_FAILED",[$.TX_FAILED_IN_BLOCKCHAIN]:"TX_FAILED_IN_BLOCKCHAIN",[$.NOT_IMPLEMENTED]:O,[$.OPERATION_UNSUPPORTED]:O,[$.UNEXPECTED_BEHAVIOUR]:O}[e]:O:O}catch{return O}}l(He,"mapAppErrorCodesToAPIErrorCode");var G=l(e=>{if(!e)return{extraMessage:"",extraMessageErrorCode:null};if(D.isPrettyError(e))return e.getErrorDetail();if(Nt.isSignerError(e)){let t=e.getErrorDetail();return{extraMessage:t.message,extraMessageDetail:t.detail,extraMessageErrorCode:t.code}}return e instanceof Error?{extraMessage:e.toString(),extraMessageErrorCode:null}:typeof e!="string"?{extraMessage:JSON.stringify(e),extraMessageErrorCode:null}:{extraMessage:e,extraMessageErrorCode:null}},"prettifyErrorMessage");var pe=(a=>(a.error="error",a.warning="warning",a.info="info",a.success="success",a))(pe||{}),M=l((e,t)=>{try{return B(e,t)}catch{return null}},"getCurrentNamespaceOfOrNull"),B=l((e,t)=>{let n=t.evmTransaction?.blockChain||t.evmApprovalTransaction?.blockChain,r=t.starknetTransaction?.blockChain||t.starknetApprovalTransaction?.blockChain,a=t.tronTransaction?.blockChain||t.tronApprovalTransaction?.blockChain,o=t.cosmosTransaction?.blockChain,c=t.solanaTransaction?.blockChain,i=t.tonTransaction?.blockChain,p=t.suiTransaction?.blockChain;if(n)return{namespace:"EVM",network:n};if(r)return{namespace:"Starknet",network:r};if(a)return{namespace:"Tron",network:a};if(o)return{namespace:"Cosmos",network:o};if(c)return{namespace:"Solana",network:c};if(i)return{namespace:"Ton",network:i};if(p)return{namespace:"Sui",network:p};if(t.transferTransaction){let u=t.transferTransaction.fromWalletAddress;if(!u)throw D.BlockchainMissing();let s=Object.keys(e.wallets).find(g=>e.wallets[g]?.address===u);if(!s)throw D.BlockchainMissing();return{namespace:"UTXO",network:s}}throw new Error("Unsupported transaction type has been included in your swap.",{cause:t})},"getCurrentNamespaceOf"),re=l((e,t,n)=>{let a=n[t].info?.transactionUrl;if(a)return a.indexOf("/{txHash}")!==-1?a.replace("{txHash}",e):`${a}/${e}`},"getScannerUrl");function $e(e,t){return e.steps.find(n=>n.status!=="failed"&&n.status!=="success"&&n.id!==t.id)||null}l($e,"getNextStep");var Ve=l((e,t)=>{let n=e.wallets[t.evmTransaction?.blockChain||""]||e.wallets[t.evmApprovalTransaction?.blockChain||""]||e.wallets[t.tronTransaction?.blockChain||""]||e.wallets[t.tronApprovalTransaction?.blockChain||""]||e.wallets[t.starknetTransaction?.blockChain||""]||e.wallets[t.starknetApprovalTransaction?.blockChain||""]||e.wallets[t.cosmosTransaction?.blockChain||""]||e.wallets[t.solanaTransaction?.blockChain||""]||e.wallets[t.tonTransaction?.blockChain||""]||e.wallets[t.suiTransaction?.blockChain||""]||(t.transferTransaction?.fromWalletAddress?{address:t.transferTransaction.fromWalletAddress,walletType:Object.values(e.wallets).find(r=>r.address===t.transferTransaction?.fromWalletAddress)?.walletType}:null)||null;if(n==null)throw D.WalletMissing();return n},"getCurrentWalletTypeAndAddress"),Ye=l((e,t)=>Ve(e,t).address,"getCurrentAddressOf");function V(e,t){let{address:n,walletType:r}=Ve(e,t),a=Object.keys(e.wallets).map(p=>({k:p,v:e.wallets[p]})).find(({v:p})=>p.address===n&&p.walletType===r)||null,o=a?.k||null,c=a?.v||null,i=c?.walletType;if(c===null)throw D.AssertionFailed(`Wallet for source ${o} not passed: walletType: ${i}`);return c}l(V,"getRelatedWallet");function ke(e,t){if(!t)return null;try{return V(e,t)}catch{return null}}l(ke,"getRelatedWalletOrNull");var Je=l((e,t,n,r)=>r?.find(o=>o.blockchain===e&&o.symbol?.toUpperCase()===t?.toUpperCase()&&o.address===n)?.usdPrice||null,"getUsdPrice");function Ut(e,t){let n=new Ge(0);for(let r=0;r<e.fee.length;r++){let a=e.fee[r];if(a.expenseType==="DECREASE_FROM_OUTPUT")continue;let o=Je(a.asset.blockchain,a.asset.symbol,a.asset.address,t);n=n.plus(new Ge(a.amount).multipliedBy(o||0))}return n}l(Ut,"getUsdFeeOfStep");function Ke(e,t){return{fromBlockchain:e.from.blockchain,fromBlockchainLogo:e.from.blockchainLogo,fromLogo:e.from.logo,fromSymbol:e.from.symbol,fromSymbolAddress:e.from.address,fromDecimals:e.from.decimals,fromAmountPrecision:e.fromAmountPrecision,fromAmountMinValue:e.fromAmountMinValue,fromAmountMaxValue:e.fromAmountMaxValue,fromAmountRestrictionType:e.fromAmountRestrictionType,fromUsdPrice:e.from.usdPrice,toBlockchain:e.to.blockchain,toBlockchainLogo:e.to.blockchainLogo,toSymbol:e.to.symbol,toSymbolAddress:e.to.address,toDecimals:e.to.decimals,toLogo:e.to.logo,toUsdPrice:e.to.usdPrice,swapperId:e.swapperId,swapperLogo:e.swapperLogo,swapperType:e.swapperType,expectedOutputAmountHumanReadable:e.toAmount,feeInUsd:t?Xe(Ut(e,t?.tokens),null,8):null,estimatedTimeInSeconds:e.estimatedTimeInSeconds||null,internalSteps:null}}l(Ke,"mapSwapStepToPendingSwapStep");function bt(e){let{inputAmount:t,bestRoute:n,wallets:r,settings:a,validateBalanceOrFee:o,meta:c,swapMode:i="swap"}=e,p=n.result;if(!p)throw Error("Simulation result should not be null");return{creationTime:new Date().getTime().toString(),finishTime:null,requestId:n.requestId||"",inputAmount:t,wallets:r,status:"running",mode:i,isPaused:!1,extraMessage:null,extraMessageSeverity:null,extraMessageDetail:null,extraMessageErrorCode:null,networkStatusExtraMessage:null,networkStatusExtraMessageDetail:null,lastNotificationTime:null,settings:a,simulationResult:p,validateBalanceOrFee:o,steps:n.result?.swaps?.map((u,s)=>{let g=Ke(u,c);return{id:s+1,...g,internalSwaps:u?.internalSwaps?.map(d=>Ke(d,c))||null,outputAmount:"",status:"created",networkStatus:null,startTransactionTime:new Date().getTime(),externalTransactionId:null,executedTransactionId:null,executedTransactionTime:null,explorerUrl:null,diagnosisUrl:null,trackingCode:null,internalSteps:null,evmTransaction:null,evmApprovalTransaction:null,starknetTransaction:null,starknetApprovalTransaction:null,tronTransaction:null,tronApprovalTransaction:null,cosmosTransaction:null,solanaTransaction:null,transferTransaction:null,tonTransaction:null,suiTransaction:null,xrplTransaction:null,hasAlreadyProceededToSign:!1}})||[]}}l(bt,"calculatePendingSwap");function je(e){return e.map(t=>{let{diagnosisUrl:n,estimatedTimeInSeconds:r,explorerUrl:a,feeInUsd:o,executedTransactionId:c,executedTransactionTime:i,expectedOutputAmountHumanReadable:p,fromBlockchain:u,toBlockchain:s,fromSymbol:g,toSymbol:d,fromSymbolAddress:S,toSymbolAddress:E,swapperType:_,swapperId:w,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:y,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:m,status:k}=t;return{diagnosisUrl:n,estimatedTimeInSeconds:r,explorerUrl:a,feeInUsd:o,executedTransactionId:c,executedTransactionTime:i,expectedOutputAmountHumanReadable:p,fromBlockchain:u,toBlockchain:s,fromSymbol:g,toSymbol:d,fromSymbolAddress:S,toSymbolAddress:E,swapperName:w,swapperType:_,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:y,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:m,status:k,transaction:Q(t)}})}l(je,"createSteps");function Wt(e,t,n){let{creationTime:r,finishTime:a,requestId:o,inputAmount:c,status:i,wallets:p,steps:u,settings:s}=e,g=je(u),S={route:{creationTime:r,finishTime:a,requestId:o,inputAmount:c,status:i,wallets:p,steps:g,slippage:s.slippage,infiniteApproval:s.infiniteApprove},step:g[g.length-1]};if(n)S.step=je([n])[0];else if(t==="failed"){let E=ze(g);E&&(S.step=E)}else{let E=j(g);E&&(S.step=E)}return S}l(Wt,"getEventPayload");function Mt(e,t,n){let r,{type:a}=e;switch(a){case"started":r={...e,type:"started"};break;case"failed":r={...e,type:"failed",inputAmount:n.inputAmount,inputAmountUsd:_e(n),swapMode:n.mode||"swap"};break;case"succeeded":{r={...e,type:"succeeded",inputAmount:n.inputAmount,inputAmountUsd:_e(n),outputAmount:n.steps[n.steps.length-1].outputAmount??"",outputAmountUsd:Ze(n),swapMode:n.mode||"swap"};break}default:break}r&&J("emitter")?.emit("routeEvent",{event:r,route:t})}l(Mt,"emitRouteEvent");function Ft(e,t,n){J("emitter")?.emit("stepEvent",{event:e,route:t,step:n})}l(Ft,"emitStepEvent");function f(e){let{event:t}=e,{type:n}=t,{route:r,step:a}=Wt(e.swap,n,e.step??void 0),o=`${a.fromBlockchain}.${a.fromSymbol}`,c=`${a.toBlockchain}.${a.toSymbol}`,i=a.outputAmount??"",p=e.step?M(e.swap,e.step):null,u="",s="info";switch(n){case"started":u="Swap process started",s="success";break;case"succeeded":u=`You received ${i} ${c}, hooray!`,s="success";break;case"failed":u=`Swap failed: ${e.swap?.extraMessage??"Reason is unknown"}`,s="error";break;case"tx_execution":t.status==="create_tx"?(u="Please wait while the transaction is created ...",s="info"):t.status==="send_tx"?(e.step&&ae(e.step)?u=`Please confirm '${a.swapperName}' smart contract access to ${o}`:u="Please confirm transaction request in your wallet",s="warning"):t.status==="tx_sent"&&(u="Transaction sent successfully",s="info");break;case"check_status":e.step&&ae(e.step)?u="Checking approve transaction status ...":u="Checking transaction status ...",s="info";break;case"approval_tx_succeeded":u="Smart contract called successfully",s="success";break;case"output_revealed":u="Transaction output amount revealed",s="success";break;case"tx_execution_blocked":t.status==="waiting_for_wallet_connect"?(u="Please connect your wallet.",s="warning"):t.status==="waiting_for_queue"?(u="Waiting for other swaps to complete",s="warning"):t.status==="waiting_for_change_wallet_account"?(u="Please change your wallet account.",s="warning"):t.status==="waiting_for_network_change"&&(u=`Please change your wallet network to ${p?.network}.`,s="warning");break;default:break}e.step&&Ft({...t,message:u,messageSeverity:s},r,a),(e.event.type==="failed"||!e.step)&&Mt({...t,message:u,messageSeverity:s},r,e.swap)}l(f,"notifier");var ve=null;function de(){return{claimedBy:()=>ve?.id,setClaimer:e=>{ve={id:e}},reset:()=>{ve=null}}}l(de,"claimQueue");var Y={};function ge(){return{getTransactionDataByHash:e=>Y[e]||{},setTransactionDataByHash:(e,t)=>{Y[e]||(Y[e]={}),Y[e].response=t.response||Y[e].response,Y[e].receiptReceived=t.receiptReceived||Y[e].receiptReceived||!1}}}l(ge,"inMemoryTransactionsData");var A=l(e=>e.steps.find(t=>t.status!=="failed"&&t.status!=="success")||null,"getCurrentStep"),Q=l(e=>{let{evmTransaction:t,evmApprovalTransaction:n,cosmosTransaction:r,solanaTransaction:a,transferTransaction:o,starknetApprovalTransaction:c,starknetTransaction:i,tronApprovalTransaction:p,tronTransaction:u,tonTransaction:s,suiTransaction:g}=e;return t||n||r||a||o||c||i||p||u||s||g},"getCurrentStepTx"),Se=l((e,t)=>{e.transferTransaction=null,e.cosmosTransaction=null,e.evmTransaction=null,e.solanaTransaction=null,e.evmApprovalTransaction=null,e.starknetApprovalTransaction=null,e.starknetTransaction=null,e.tronApprovalTransaction=null,e.tronTransaction=null,e.tonTransaction=null,e.suiTransaction=null;let n=t.type;switch(n){case I.EVM:t.isApprovalTx?e.evmApprovalTransaction=t:e.evmTransaction=t;break;case I.TRON:t.isApprovalTx?e.tronApprovalTransaction=t:e.tronTransaction=t;break;case I.STARKNET:t.isApprovalTx?e.starknetApprovalTransaction=t:e.starknetTransaction=t;break;case I.COSMOS:e.cosmosTransaction=t;break;case I.SOLANA:e.solanaTransaction=t;break;case I.TRANSFER:e.transferTransaction=t;break;case I.TON:e.tonTransaction=t;break;case I.SUI:e.suiTransaction=t;break;case I.XRPL:e.xrplTransaction=t;break;default:(r=>{throw new Error(`${r} was unhandled!`)})(n)}return e},"setCurrentStepTx"),he=l(e=>Q(e)?.type,"getCurrentStepTxType"),ae=l(e=>{let{evmApprovalTransaction:t,starknetApprovalTransaction:n,tronApprovalTransaction:r}=e;return!!(t||n||r)},"isApprovalCurrentStepTx");function U({getStorage:e,setStorage:t,nextStatus:n,nextStepStatus:r,message:a,details:o,errorCode:c=null,hasAlreadyProceededToSign:i,trace:p=null}){let u=e().swapDetails,s=A(u),g={swap:u,step:s};if(r&&s&&(s.status=r),n&&(u.status=n),u.hasAlreadyProceededToSign=i,n&&["failed","success"].includes(n)&&(u.finishTime=new Date().getTime().toString()),(a||o)&&(u.extraMessage=a||"",u.extraMessageDetail=o||""),r&&["failed"].includes(r)){let d=o&&o.includes("Warning")?"Swap canceled by user.":o,S=ke(u,s)?.walletType;u.extraMessageSeverity="error";let E=He(c);g.failureType=E;let _=c!=="REJECTED_BY_USER"&&p?.message&&typeof p.message=="string"?p.message:d||"";H().reportFailure({requestId:u.requestId,step:s?.id||1,eventType:E,reason:_,tags:S?{wallet:S}:void 0}).then().catch()}else r&&["running"].includes(r)?u.extraMessageSeverity="info":r&&["success","approved"].includes(r)?u.extraMessageSeverity="success":r&&["waitingForApproval"].includes(r)&&(u.extraMessageSeverity="warning");return r==="running"&&s&&(s.startTransactionTime=new Date().getTime()),t({...e(),swapDetails:u}),g}l(U,"updateSwapStatus");function Gt({getStorage:e,setStorage:t},n,r){let a=e().swapDetails;a.hasAlreadyProceededToSign=null;let o=A(a);o.executedTransactionId=n,o.executedTransactionTime=new Date().getTime().toString(),r?.url&&(o.explorerUrl=[...o.explorerUrl||[],{url:r.url,description:r.description||null}]),ae(o)?a.extraMessage="Checking approve transaction status ...":a.extraMessage="Checking transaction status ...",a.extraMessageDetail="",a.extraMessageSeverity="info",t({...e(),swapDetails:a}),f({event:{type:"tx_execution",status:"tx_sent"},swap:a,step:o}),f({event:{type:"check_status"},swap:a,step:o})}l(Gt,"setStepTransactionIds");function Kt({getStorage:e,setStorage:t},n,r){let a=e().swapDetails,o=A(a);if(!o)return;let c=new Date;a.lastNotificationTime=c.getTime().toString(),!(o.networkStatus===z.WaitingForConnectingWallet&&a.networkStatusExtraMessage===n&&a.networkStatusExtraMessageDetail===r)&&(o.networkStatus=z.WaitingForConnectingWallet,a.networkStatusExtraMessage=n,a.networkStatusExtraMessageDetail=r,t({...e(),swapDetails:a}))}l(Kt,"markRunningSwapAsWaitingForConnectingWallet");function tt({getStorage:e,setStorage:t}){let n=e().swapDetails,r=A(n);if(!r)return;let{type:a}=b(n),o=B(n,r),c=`Change ${a} wallet network to ${o.network}`,i=`We\u2019re switching the connected network to ${o.network}. Please check your wallet.`,p=new Date;return n.lastNotificationTime=p.getTime().toString(),r.networkStatus=z.WaitingForNetworkChange,n.networkStatusExtraMessage=c,n.networkStatusExtraMessageDetail=i,t({...e(),swapDetails:n}),{swap:n,step:r}}l(tt,"markRunningSwapAsSwitchingNetwork");function nt({getStorage:e,setStorage:t}){let n=e().swapDetails,r=A(n);if(r)return n.networkStatusExtraMessage="",n.networkStatusExtraMessageDetail="",r.networkStatus=z.WaitingForQueue,f({event:{type:"tx_execution_blocked",status:"waiting_for_queue"},swap:n,step:r}),t({...e(),swapDetails:n}),{swap:n,step:r}}l(nt,"markRunningSwapAsDependsOnOtherQueues");async function Ee(e){return new Promise(t=>setTimeout(t,e))}l(Ee,"delay");var $t=l((e,t)=>e.wallets[t]?.walletType,"getSwapWalletType");function Ne(e){return e===null||e?.blockchains===null||e?.blockchains.length===0}l(Ne,"isWalletNull");function b(e){let t=A(e),n=M(e,t);if(!n)return{type:null,namespace:null,address:null};let r=$t(e,n.network),a=e.wallets[n.network];return{type:r||null,namespace:n,address:a?a.address:null}}l(b,"getRequiredWallet");async function Vt(e){try{return await e.request({method:"eth_chainId"})||e?.chainId}catch{return e?.chainId}}l(Vt,"getChainId");async function rt(e,t,n,r,a){if(Ne(n))return!1;let o=M(e,t);if(!o)return!1;if(r.evmBasedChains.find(c=>c.name===o.network)){try{let c=e.wallets[o.network];if(c){let i=Xt(a,c.walletType),p=await Vt(i);if(p){let u=Qt(p,Object.entries(r.blockchains).map(([,s])=>s));if(u&&u.toLowerCase()===o.network.toLowerCase())return!0;if(u&&u.toLowerCase()!==o.network.toLowerCase())return!1}}}catch(c){console.log(c)}return!1}return!0}l(rt,"isNetworkMatchedForTransaction");var at=l((e,t)=>(e.wallets[t.evmTransaction?.blockChain||""]||e.wallets[t.evmApprovalTransaction?.blockChain||""]||e.wallets[t.tronTransaction?.blockChain||""]||e.wallets[t.tronApprovalTransaction?.blockChain||""]||e.wallets[t.starknetTransaction?.blockChain||""]||e.wallets[t.starknetApprovalTransaction?.blockChain||""]||e.wallets[t.cosmosTransaction?.blockChain||""]||e.wallets[t.solanaTransaction?.blockChain||""]||e.wallets[t.tonTransaction?.blockChain||""]||e.wallets[t.suiTransaction?.blockChain||""]||t.transferTransaction?.fromWalletAddress||null)!==null,"isTxAlreadyCreated");function ot(e){let{getStorage:t,setStorage:n}=e,r=t().swapDetails,a=A(r);a?.networkStatus&&(a.networkStatus=null,n({...t(),swapDetails:r}))}l(ot,"resetNetworkStatus");function Ie(e,t={message:"",details:"",status:null}){let{message:n,details:r,status:a}=t,{getStorage:o,setStorage:c}=e,i=o().swapDetails,p=A(i);p?.networkStatus&&(i.networkStatusExtraMessage=n,i.networkStatusExtraMessageDetail=r,p.networkStatus=a,c({...o(),swapDetails:i}))}l(Ie,"updateNetworkStatus");function st(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,{ok:o,reason:c}=Pe(a,n.state);if(!o){let i=A(a),{type:p,address:u}=b(a);f({event:{type:"tx_execution_blocked",...c==="account_miss_match"?{status:"waiting_for_change_wallet_account",requiredAccount:u??void 0}:{status:"waiting_for_wallet_connect",requiredWallet:p??void 0,requiredAccount:u??void 0}},swap:a,step:i}),Kt({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},Le,e.reason.description);return}r.unblock()}l(st,"onBlockForConnectWallet");function it(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,o=A(a);if(!o||a.status!=="running")return;let c=tt({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)}),i=M(a,o)?.network,p=b(a).type,u=p?n.state(p).network:void 0;c&&f({event:{type:"tx_execution_blocked",status:"waiting_for_network_change",requiredNetwork:i??void 0,currentNetwork:u??void 0},swap:c.swap,step:c.step});let{type:s,namespace:g}=b(a);if(s&&g?.network&&n.canSwitchNetworkTo(s,g.network,g)){let d=n.switchNetwork(s,g);d&&d.then(()=>{r.unblock()}).catch(S=>{Ie({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},{message:S.message,details:S.message,status:z.NetworkChangeFailed})})}}l(it,"onBlockForChangeNetwork");function lt(e,t){let{getBlockedTasks:n,forceExecute:r,queue:a,manager:o,context:c}=t,{setClaimer:i,claimedBy:p,reset:u}=de(),s=n().filter(T=>T.reason.reason==="depends_on_other_queues");if(s.length===0)return;let g=p(),d=!!g;if(g===a.id)return;if(d){nt({getStorage:a.getStorage.bind(a),setStorage:a.setStorage.bind(a)});return}let S=s.find(T=>T.queue_id===t.queue_id);S||(S=s[0]),i(S.queue_id);let E=S.storage.get(),{type:_,namespace:w,address:x}=b(E.swapDetails);r(S.queue_id,{claimedBy:p(),resetClaimedBy:()=>{u(),_&&De({walletType:_,network:w?.network,accounts:x?[x]:[]},o,c.canSwitchNetworkTo)}})}l(lt,"onDependsOnOtherQueues");function Pe(e,t){let{type:n,address:r}=b(e);if(!n||!r)return{ok:!1,reason:"not_connected"};let a=t(n),{accounts:o,connected:c}=a,i=o||[];return c?{ok:i.some(u=>{let{address:s}=Bt(u);return r.toLocaleLowerCase()===s.toLocaleLowerCase()}),reason:"account_miss_match"}:{ok:!1,reason:"not_connected"}}l(Pe,"isRequiredWalletConnected");async function ct(e){let{setTransactionDataByHash:t}=ge(),{getStorage:n,setStorage:r,failed:a,next:o,schedule:c,context:i}=e,{meta:p,getSigners:u,isMobileWallet:s}=i,g=n().swapDetails,d=A(g),S=V(g,d),E=s(S?.walletType),_=Ye(g,d),w=B(g,d),x=l(()=>{e.context.resetClaimedBy&&e.context.resetClaimedBy()},"onFinish"),T=Q(d),y=T?.type,C=ae(d);if(!T||!y){let N="Unexpected Error: tx is null!",W=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:N,details:void 0,errorCode:"CLIENT_UNEXPECTED_BEHAVIOUR"});return f({event:{type:"failed",reason:N,reasonCode:"CLIENT_UNEXPECTED_BEHAVIOUR",inputAmount:F(g),inputAmountUsd:X(g)},...W}),a(),x()}let v=p.blockchains?.[T.blockChain]?.chainId,m=typeof g.hasAlreadyProceededToSign=="boolean",k,R,h,L,P;C?(h=`Waiting for approval of ${d?.fromSymbol} coin ${E?"on your mobile phone!":""}`,L="Waiting for approve transaction to be mined and confirmed successfully",R="waitingForApproval",k=void 0,P="tx_execution"):m?(h="Transaction is expired. Please try again.",R="failed",k="failed",L="",P="failed"):(h="Executing transaction ...",R="running",k="running",L=`${E?"Check your mobile phone!":""}`,P="tx_execution");let K=U({getStorage:n,setStorage:r,nextStepStatus:R,nextStatus:k,message:h,details:L,hasAlreadyProceededToSign:C?void 0:m,errorCode:m?"TX_EXPIRED":void 0});if(P==="failed"?f({event:{type:P,reason:h,reasonCode:K.failureType??O,inputAmount:F(g),inputAmountUsd:X(g)},...K}):f({event:{type:P,status:"send_tx"},...K}),m){a(),x();return}let fe=l(N=>{if(g.status==="failed")return;let{extraMessage:W,extraMessageDetail:se,extraMessageErrorCode:_t}=G(N);Lt(N,{tags:{requestId:g.requestId,rpc:!0,swapper:d?.swapperId||"",walletType:S?.walletType||""},context:Ht.isSignerError(N)?N.getErrorContext():{}});let Me=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:W,details:se,errorCode:_t,trace:N?.cause});f({event:{type:"failed",reason:W,reasonCode:Me.failureType??O,inputAmount:F(g),inputAmountUsd:X(g)},...Me}),a(),x()},"handleSignError"),We;try{We=await u(S.walletType)}catch(N){fe(N);return}We.getSigner(y).signAndSendTx(T,_,v).then(({hash:N,response:W})=>{let se=re(N,w.network,p.blockchains);Gt(e,N,se&&(!W||W&&!W.hashRequiringUpdate)?{url:se,description:C?"Approve":"Swap"}:void 0),W&&t(N,{response:W}),c("CHECK_TRANSACTION_STATUS"),o(),x()},fe)}l(ct,"signTransaction");function ut(e){let{lastConnectedWallet:t,evmChains:n,manager:r}=e,{walletType:a,network:o}=t;n.some(c=>c.name==o)&&r?.getAll().forEach(c=>{let i=c.list.getStorage(),p=i?.swapDetails;if(p&&p.status==="running"){let u=A(p);if(u){let s=i?.swapDetails.wallets[u.fromBlockchain]?.walletType,g=Object.keys(c.list.state.tasks).some(S=>{let E=c.list.state.tasks[S];return E.status===Re.BLOCKED&&["waiting_for_connecting_wallet"].includes(E.blockedFor?.reason)}),d=M(p,u)?.network;if(!n.some(S=>S.name==d))return;if(s===a&&g&&d!=o){let S=c.list,{type:E}=b(p),_=ce(E);c.list.block({reason:{reason:"waiting_for_network_change",description:_},silent:!0});let w=tt({getStorage:S.getStorage.bind(S),setStorage:S.setStorage.bind(S)});w&&f({event:{type:"tx_execution_blocked",status:"waiting_for_network_change",currentNetwork:o,requiredNetwork:d??void 0},swap:w.swap,step:w.step})}}}})}l(ut,"checkWaitingForConnectWalletChange");function Oe(e){e?.getAll().forEach(t=>{if(Object.keys(t.list.state.tasks).some(r=>{let a=t.list.state.tasks[r];return a.status===Re.BLOCKED&&["waiting_for_network_change","depends_on_other_queues"].includes(a.blockedFor?.reason)})){let r=t.list.getStorage()?.swapDetails;if(r.status==="running"){let{type:a}=b(r),o=le(a);t.list.block({reason:{reason:"waiting_for_connecting_wallet",description:o}})}}})}l(Oe,"checkWaitingForNetworkChange");function Yt(e){let t=e?.getAll()||new Map,n=[];return t.forEach(r=>{let o=r.list.getStorage()?.swapDetails;!o||o.status!=="running"||n.push(o)}),n}l(Yt,"getRunningSwaps");function Jt(e){e.forEach(t=>{let n=A(t),r="tx_execution_blocked",a;n?.networkStatus===z.WaitingForQueue?a="waiting_for_queue":t?.status==="running"&&(a="waiting_for_wallet_connect"),r&&f&&f({event:{type:r,status:a??"waiting_for_queue"},swap:t,step:n})})}l(Jt,"resetRunningSwapNotifsOnPageLoad");function De(e,t,n,r={fallbackToOnlyWallet:!0}){let{walletType:a,network:o}=e;if(!a)return;let c=[],i=[];t?.getAll().forEach(u=>{if(u.status===Re.BLOCKED){let s=u.list.getStorage(),g=s?.swapDetails;if(g&&g.status==="running"){let d=A(g);d&&(o&&M(g,d)?.network==o&&s?.swapDetails.wallets[o]?.walletType===a?c.push(u.list):s?.swapDetails.wallets[d.fromBlockchain]?.walletType===a&&i.push(u.list))}}});let p;if(c.length>0){if(p=c[0],c.length>1)for(let u=1;u<c.length;u++){let s=c[u];nt({getStorage:s.getStorage.bind(s),setStorage:s.setStorage.bind(s)})}}else i.length>0&&r.fallbackToOnlyWallet&&(p=i[0]);if(p){let u=p.getStorage(),s=A(u?.swapDetails),g=s?M(u.swapDetails,s):null;!o||!g||!n?.(a,o,g)?p.unblock():p.checkBlock()}}l(De,"retryOn");function pt(e){return!!e.evmTransaction||!!e.evmApprovalTransaction}l(pt,"isNeedBlockQueueForParallel");async function dt(e){let t=await e;if(!t.ok||!t.transaction)throw D.CreateTransaction(t.error||"bad response from create tx endpoint");return t}l(dt,"throwOnOK");function jt(e,t){let{reset:n}=de();e.actions.cancel();let r=U({getStorage:e.actions.getStorage,setStorage:e.actions.setStorage,message:"Swap canceled by user.",details:"Warning: If you've already signed and sent a transaction, it won't be affected, but next swap steps will not be executed.",nextStatus:"failed",nextStepStatus:"failed",errorCode:"USER_CANCEL"});return f({event:{type:"failed",reasonCode:"USER_CANCEL",reason:r.swap.extraMessage??void 0,inputAmount:F(r.swap),inputAmountUsd:X(r.swap)},swap:r.swap,step:r.step}),n(),t&&t?.retry(),r}l(jt,"cancelSwap");function j(e){return e.slice().reverse().find(t=>t.status==="success")}l(j,"getLastSuccessfulStep");function ze(e){return e.slice().reverse().find(t=>t.status==="failed")}l(ze,"getFailedStep");function zt(e){let{transaction:t}=e;return t?.type===I.EVM&&t.isApprovalTx||t?.type===I.STARKNET&&t.isApprovalTx||t?.type===I.TRON&&t.isApprovalTx}l(zt,"isApprovalTX");function Te(e,t){let n=new qt(e).multipliedBy(t);return isNaN(n.toNumber())?"":n.toString()}l(Te,"getTokenAmountInUsd");function _e(e){return Te(e.inputAmount,e.steps[0].fromUsdPrice??"")}l(_e,"getSwapInputUsd");function Ze(e){let t=e.steps[e.steps.length-1];return Te(t.outputAmount??"",t.toUsdPrice??"")}l(Ze,"getSwapOutputUsd");function gt(e){let t=["success","failed"],n=e.steps.findLastIndex(r=>t.includes(r.status));return n<0?void 0:{step:e.steps[n],index:n}}l(gt,"getLastFinishedStep");function F(e){let t=gt(e);return t?t.index===0?e.inputAmount:e.steps[t.index-1].outputAmount??"":""}l(F,"getLastFinishedStepInput");function X(e){let t=gt(e);return Te(F(e),t?.step?.fromUsdPrice??"")}l(X,"getLastFinishedStepInputUsd");function me(e){let t=j(e.steps);return Te(t?.outputAmount??"",t?.toUsdPrice??"")}l(me,"getLastSuccessfulStepOutputUsd");function ee(e,t,n){return{type:"failed",reason:t,reasonCode:n??O,inputAmount:F(e),inputAmountUsd:X(e)}}l(ee,"createStepFailedEvent");var St=5e3,Zt=5e3;async function en({getStorage:e,setStorage:t,next:n,schedule:r,retry:a,failed:o,context:c}){let i=e().swapDetails,{meta:p}=c,u=new Error("check status Error"),s=A(i);if(!s?.executedTransactionId)return;let g=Q(s),d=s.executedTransactionId,S=!1,E=null,_=null,{getTransactionDataByHash:w,setTransactionDataByHash:x}=ge();try{let m=he(s),k=V(i,s);m&&k&&(_=(await c.getSigners(k.walletType)).getSigner(m))}catch{}try{let{response:m,receiptReceived:k}=w(d);if(_?.wait&&!k){let R=g?.blockChain&&p.blockchains?.[g?.blockChain]?.chainId||void 0,{hash:h,response:L}=await _.wait(d,R,m);if(h!==d){s.executedTransactionId=h||s.executedTransactionId;let P=B(i,s),K;!!Object.keys(p.blockchains).length&&(K=re(s.executedTransactionId,P.network,p.blockchains)),K&&s.explorerUrl&&s.explorerUrl?.length>=1&&(s.explorerUrl[s.explorerUrl.length-1]={url:K,description:"Replaced Swap"}),d=s.executedTransactionId,h&&L&&x(h,{response:L})}else x(h,{receiptReceived:!0})}}catch(m){let{extraMessage:k,extraMessageDetail:R,extraMessageErrorCode:h}=G(m),L=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:k,details:R,errorCode:h}),P=ee(i,k,L.failureType);te(u,{tags:{type:"singer-error",reason:P.reason,reasonCode:P.reasonCode,message:k,messageDetail:R,pendingSwap:i},context:Et.isSignerError(m)?m.getErrorContext():{}}),S=!0}let T={requestId:i.requestId,txId:d,step:s.id};try{E=await H().checkStatus(T)}catch{await Ee(St),a(),te(u,{tags:{type:"request-error",requestBody:T,pendingSwap:i}});return}if(S)return o();if(s?.status==="failed")return;let y=E?.outputAmount||(s.outputAmount?s.outputAmount:null),C=s.outputAmount||null;i.extraMessage=E?.extraMessage||i.extraMessage,i.extraMessageSeverity="info",i.extraMessageDetail="",s.status=E?.status||s.status,s.diagnosisUrl=E?.diagnosisUrl||s.diagnosisUrl||null,s.outputAmount=y||s.outputAmount,s.explorerUrl=E?.explorerUrl||s.explorerUrl,s.internalSteps=E?.steps||null;let v=E?.newTx;if(v&&(s.status="created",s.executedTransactionId=null,s.executedTransactionTime=null,Se(s,v)),C===null&&y!==null?f({event:{type:"output_revealed",outputAmount:y},swap:i,step:s}):C===null&&y===null&&f({event:{type:"check_status"},swap:i,step:s}),s.status==="success"){let m=$e(i,s);i.extraMessageDetail="",i.extraMessage=m?`starting next step: ${m.swapperId}: ${m.fromBlockchain} -> ${m.toBlockchain}`:"",f({event:{type:"succeeded",inputAmount:F(i),inputAmountUsd:X(i),outputAmount:s.outputAmount??"",outputAmountUsd:me(i)},swap:i,step:s})}else s.status==="failed"&&(i.extraMessage="Transaction failed in blockchain",i.extraMessageSeverity="error",i.extraMessageDetail=E?.extraMessage||"",i.status="failed",i.finishTime=new Date().getTime().toString(),te(u,{tags:{type:"transaction-failed",message:i.extraMessage,messageDetails:i.extraMessageDetail,pendingSwap:i}}));t({...e(),swapDetails:i}),E?.status==="failed"?o():E?.status==="success"||E?.status==="running"&&E.newTx?(r("SCHEDULE_NEXT_STEP"),n()):(await Ee(St),a())}l(en,"checkTransactionStatus");async function tn({getStorage:e,setStorage:t,next:n,schedule:r,retry:a,failed:o,context:c}){let i=e().swapDetails,{meta:p}=c,{getTransactionDataByHash:u,setTransactionDataByHash:s}=ge(),g=new Error("check approval status error"),d=A(i);if(!d){console.log("ignore check status, current step is null");return}let S=Q(d);if(!d?.executedTransactionId)return;let E=d.executedTransactionId,_=null;try{let T=he(d),y=V(i,d);T&&y&&(_=(await c.getSigners(y.walletType)).getSigner(T))}catch{}try{let{response:T,receiptReceived:y}=u(E);if(_?.wait&&!y){let C=S?.blockChain&&p.blockchains?.[S?.blockChain]?.chainId||void 0,{hash:v,response:m}=await _.wait(E,C,T);if(v!==E){d.executedTransactionId=v||d.executedTransactionId;let k=B(i,d),R;!!Object.keys(p.blockchains).length&&(R=re(d.executedTransactionId,k.network,p.blockchains)),R&&d.explorerUrl&&d.explorerUrl?.length>=1&&(d.explorerUrl[d.explorerUrl.length-1]={url:R,description:"Replaced Approve"}),E=d.executedTransactionId,v&&m&&s(v,{response:m})}else s(v,{receiptReceived:!0})}}catch(T){let{extraMessage:y,extraMessageDetail:C,extraMessageErrorCode:v}=G(T),m=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:y,details:C,errorCode:v}),k=ee(i,y,m.failureType);return f({event:k,...m}),te(g,{tags:{type:"singer-error",reason:k.reason,reasonCode:k.reasonCode,message:y,messageDetail:C,pendingSwap:i},context:Et.isSignerError(T)?T.getErrorContext():{}}),o()}let w=!1,x={requestId:i.requestId,txId:d.executedTransactionId};try{let T=await H().checkApproval(x.requestId,x.txId);if(d?.status==="failed")return;if(w=T.isApproved,!w&&(T.txStatus==="failed"||T.txStatus==="success")){let y,C;T.txStatus==="failed"?(y="Approve transaction failed",C="Smart contract approval tx failed in blockchain."):(y="Not enough approval",T.requiredApprovedAmount&&T.currentApprovedAmount?C=`Required approval: ${T.requiredApprovedAmount}, current approval: ${T.currentApprovedAmount}`:C="You still don't have enough approval for this swap.");let v=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",errorCode:"INSUFFICIENT_APPROVE",message:y,details:C}),m=ee(i,y,v.failureType);f({event:m,...v}),te(g,{tags:{type:"approval-failed",message:i.extraMessage,messageDetails:i.extraMessageDetail,pendingSwap:i}}),o()}else w||f({event:{type:"check_status"},swap:i,step:d})}catch{w=!1,te(g,{tags:{type:"request-error",requestBody:x,pendingSwap:i}})}w?(d.status="approved",i.extraMessage=`Spending ${d.fromSymbol} approved successfully.`,i.extraMessageDetail=null,i.extraMessageSeverity="success",d.evmApprovalTransaction=null,d.executedTransactionId=null,d.executedTransactionTime=null,d.starknetApprovalTransaction=null,d.tronApprovalTransaction=null,t({...e(),swapDetails:i}),f({event:{type:"approval_tx_succeeded"},swap:i,step:d}),r("SCHEDULE_NEXT_STEP"),n()):(await Ee(Zt),a())}l(tn,"checkApprovalStatus");async function Tt(e){let t=e.getStorage().swapDetails,n=A(t);if(!n){console.log("ignore check status, current step is null",t.requestId);return}ot(e),n.status==="running"?await en(e):n.status==="waitingForApproval"&&await tn(e)}l(Tt,"checkStatus");import{warn as nn}from"@rango-dev/logging-core";async function mt(e){let{setStorage:t,getStorage:n,next:r,schedule:a}=e,o=n().swapDetails,c=A(o);if(!Q(c)){f({event:{type:"tx_execution",status:"create_tx"},swap:o,step:c});let p={requestId:o.requestId,step:c.id,userSettings:{slippage:o.settings.slippage,infiniteApprove:o.settings.infiniteApprove},validations:{balance:o.validateBalanceOrFee,fee:o.validateBalanceOrFee,approve:!0}};try{let{transaction:u}=await dt(H().createTransaction(p));u&&Se(c,u),t({...n(),swapDetails:o}),a("EXECUTE_TRANSACTION"),r()}catch(u){o.status="failed",o.finishTime=new Date().getTime().toString();let{extraMessage:s,extraMessageDetail:g}=G(u),d=U({getStorage:n,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:s,details:g,errorCode:"FETCH_TX_FAILED"}),S=ee(o,s,d.failureType);f({event:S,...d}),u instanceof Error&&nn(new Error("create transaction error"),{tags:{message:u.message,requestBody:p,reason:S.reason,reasonCode:S.reasonCode,pendingSwap:o}}),e.failed()}}}l(mt,"createTransaction");import{PendingSwapNetworkStatus as rn}from"rango-types";async function ft(e){let{getStorage:t,context:n}=e,{meta:r,wallets:a,providers:o}=n,{claimedBy:c}=de(),i=n.claimedBy===n._queue?.id,p=l(w=>{e.block(w),i&&e.context.resetClaimedBy&&e.context.resetClaimedBy()},"requestBlock"),u=t().swapDetails,s=A(u);if(!Pe(u,n.state).ok){let{type:w,address:x}=b(u),T=a?.blockchains?.find(v=>!v.accounts?.find(m=>m.walletType===w)),y=Ne(a)||T?le(w):Be(w,x),C={reason:"waiting_for_connecting_wallet",description:y};p(C);return}let d=await rt(u,s,a,r,o);if(!!c()&&!i&&!d){let w=Ce,x={reason:"depends_on_other_queues",details:w};p(x);return}else if(!d){let w=B(u,s),x=ce(w.network),T={reason:"waiting_for_network_change",details:x};p(T);return}if(Ie(e,{message:"",details:"The network has been successfully changed.",status:rn.NetworkChanged}),pt(s)&&!i){let w={reason:"depends_on_other_queues",description:Ce,details:{}};p(w);return}await ct(e)}l(ft,"executeTransaction");function wt({schedule:e,next:t,failed:n,setStorage:r,getStorage:a}){let o=a().swapDetails,c=A(o),i=o.steps.find(p=>p.status==="failed");if(c&&!i){if(at(o,c))return e("EXECUTE_TRANSACTION"),t();if(c?.executedTransactionId)return e("CHECK_TRANSACTION_STATUS"),t();o.status="running",r({...a(),swapDetails:o}),f({event:{type:"started"},swap:o,step:c}),e("CREATE_TRANSACTION"),t()}else{o.status=i?"failed":"success",o.finishTime=new Date().getTime().toString(),r({...a(),swapDetails:o});let p=F(o),u=X(o);f({...i?{event:{type:"failed",reason:o.extraMessage??void 0,reasonCode:"CALL_OR_SEND_FAILED",inputAmount:p,inputAmountUsd:u}}:{event:{type:"succeeded",inputAmount:p,inputAmountUsd:u,outputAmount:j(o.steps)?.outputAmount??"",outputAmountUsd:me(o)}},swap:o,step:null}),i?n():t()}}l(wt,"scheduleNextStep");function At({schedule:e,next:t,getStorage:n}){let r=n().swapDetails;f({event:{type:"started"},swap:r,step:null}),e("SCHEDULE_NEXT_STEP"),t()}l(At,"start");var yt={name:"swap",actions:{START:At,SCHEDULE_NEXT_STEP:wt,CREATE_TRANSACTION:mt,EXECUTE_TRANSACTION:ft,CHECK_TRANSACTION_STATUS:Tt},run:["START"],whenTaskBlocked:(e,t)=>{e.reason.reason==="waiting_for_connecting_wallet"?st(e,t):e.reason.reason==="waiting_for_network_change"?it(e,t):e.reason.reason==="depends_on_other_queues"&&lt(e,t)}};import{useManager as cn}from"@rango-dev/queue-manager-react";import{useEffect as be,useState as un}from"react";import{DB_NAME as an,Persistor as on,Status as oe}from"@rango-dev/queue-manager-core";import{v4 as sn}from"uuid";var xt="migratedToQueueManager";function Ue(){return!!window.localStorage.getItem(xt)}l(Ue,"migrated");async function ln(){try{return(await window.indexedDB.databases()).map(e=>e.name).includes(an)}catch{return!1}}l(ln,"hasQueueManagerOnIDB");async function Ct(){let e=window.localStorage.getItem("pendingSwaps"),t=await ln();if(!e||Ue()||t)return!0;let n=JSON.parse(e),r=[];n.forEach(c=>{if(c.status==="running"){let i=sn(),p={id:c.requestId,createdAt:Number(c.creationTime),name:"swap",status:oe.RUNNING,storage:{swapDetails:c},state:{status:oe.RUNNING,activeTaskIndex:0,tasks:{[i]:{blockedFor:null,status:oe.RUNNING}}},tasks:[{id:i,action:"SCHEDULE_NEXT_STEP"}]};r.push(p)}else{let i=c.status==="success"?oe.SUCCESS:oe.FAILED,p={id:c.requestId,createdAt:Number(c.creationTime),name:"swap",status:i,storage:{swapDetails:c},state:{status:i,activeTaskIndex:0,tasks:{}},tasks:[]};r.push(p)}});let a=new on,o=r.map(async c=>a.insertQueue(c));return await Promise.all(o),window.localStorage.setItem(xt,"1"),!0}l(Ct,"migration");var kt=0;function pn(e){return`${e?.walletType}-${e?.network}-${e?.accounts?.toString()}`}l(pn,"getLastConnectedWalletHash");function dn(){let e=Ue(),[t,n]=un(e);return be(()=>{(async()=>kt||(kt=1,Ct().finally(()=>{n(!0)})))()},[]),{status:t}}l(dn,"useMigration");function gn(e){let{manager:t}=cn(),{lastConnectedWallet:n,disconnectedWallet:r,evmChains:a,canSwitchNetworkTo:o,clearDisconnectedWallet:c}=e;be(()=>{n&&(ut({evmChains:a,lastConnectedWallet:n,manager:t}),De(n,t,o))},[pn(n)]),be(()=>{r&&(Oe(t),c())},[r])}l(gn,"useQueueManager");function la(e){return Fe(e),yt}l(la,"makeQueueDefinition");export{xe as EventSeverity,pe as MessageSeverity,D as PrettyError,ye as RouteEventType,q as StepEventType,ie as StepExecutionBlockedEventStatus,ne as StepExecutionEventStatus,Ae as WidgetEvents,bt as calculatePendingSwap,jt as cancelSwap,Oe as checkWaitingForNetworkChange,M as getCurrentNamespaceOfOrNull,A as getCurrentStep,j as getLastSuccessfulStep,V as getRelatedWallet,ke as getRelatedWalletOrNull,b as getRequiredWallet,Yt as getRunningSwaps,Je as getUsdPrice,zt as isApprovalTX,la as makeQueueDefinition,G as prettifyErrorMessage,Jt as resetRunningSwapNotifsOnPageLoad,U as updateSwapStatus,dn as useMigration,gn as useQueueManager};
1
+ var Rt=Object.defineProperty;var l=(e,t)=>Rt(e,"name",{value:t,configurable:!0});var ht="c6381a79-2817-4602-83bf-6a641a409e32",Ae={API_KEY:ht,BASE_URL:""};function J(e){return Ae[e]}l(J,"getConfig");function Le(e){return Ae=e,Ae}l(Le,"initConfig");var ye=(n=>(n.RouteEvent="routeEvent",n.StepEvent="stepEvent",n))(ye||{}),xe=(r=>(r.STARTED="started",r.FAILED="failed",r.SUCCEEDED="succeeded",r))(xe||{}),ne=(r=>(r.CREATE_TX="create_tx",r.SEND_TX="send_tx",r.TX_SENT="tx_sent",r))(ne||{}),ie=(a=>(a.WAITING_FOR_QUEUE="waiting_for_queue",a.WAITING_FOR_WALLET_CONNECT="waiting_for_wallet_connect",a.WAITING_FOR_NETWORK_CHANGE="waiting_for_network_change",a.WAITING_FOR_CHANGE_WALLET_ACCOUNT="waiting_for_change_wallet_account",a))(ie||{}),q=(p=>(p.STARTED="started",p.FAILED="failed",p.SUCCEEDED="succeeded",p.TX_EXECUTION="tx_execution",p.TX_EXECUTION_BLOCKED="tx_execution_blocked",p.APPROVAL_TX_SUCCEEDED="approval_tx_succeeded",p.CHECK_STATUS="check_status",p.OUTPUT_REVEALED="output_revealed",p))(q||{}),Ce=(a=>(a.ERROR="error",a.SUCCESS="success",a.WARNING="warning",a.INFO="info",a))(Ce||{});import{warn as te}from"@rango-dev/logging-core";import{SignerError as Et}from"rango-types";import{warn as Bt}from"@rango-dev/logging-core";import{Status as he}from"@rango-dev/queue-manager-core";import{legacyReadAccountAddress as Qt}from"@rango-dev/wallets-core/legacy";import{getBlockChainNameFromId as Xt,getEvmProvider as qt}from"@rango-dev/wallets-shared";import Ht from"bignumber.js";import{PendingSwapNetworkStatus as z,SignerError as Gt,TransactionType as I}from"rango-types";var ke="Waiting for other swaps to complete",Be="Waiting for connecting wallet",Qe=l((e,t)=>`Please change your ${e||"wallet"} account to ${t||"proper address"}`,"ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET"),le=l(e=>`Please connect your ${e??""} wallet.`,"ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION"),ue=l(e=>`Please change your network to ${e}.`,"ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK"),O="CLIENT_UNEXPECTED_BEHAVIOUR";import{RangoClient as Nt}from"rango-sdk";var ce,H=l(()=>ce||(ce=new Nt(J("API_KEY"),J("BASE_URL")),ce),"httpService");import Ke from"bignumber.js";import Xe from"bignumber.js";var qe=l((e,t=null,n=null)=>{if(e===null||e==="")return"";let r=new Xe(e),a=1,o=1e3;for(let u=0;u<60;u++)if(new Xe(r.toFixed(u,a)).eq(r)){o=u;break}if(r.gte(1e4))return r.toFormat(0,a);if(r.gte(1e3)||r.gte(100))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,1))),a);if(r.gte(1))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,2))),a);if(r.gte(.01))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,4))),a);for(let u=t||4;u<17;u++)if(r.gte(Math.pow(10,-u)))return r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,u))),a);return r.isEqualTo(0)?"0":r.toFormat(Math.min(o,Math.min(n||100,Math.max(t||0,8))),a)},"numberToString");import{SignerErrorCode as $,SignerError as It,isSignerErrorCode as Pt,isAPIErrorCode as Ot}from"rango-types";var Dt="Assertion failed (Unexpected behaviour)",Ut="Create transaction failed in Rango Server",He="Input wallet not found",D=class e extends Error{constructor(n,r,a,o){super(r);this._isPrettyError=!0;Object.setPrototypeOf(this,e.prototype),e.prototype._isPrettyError=!0,this.code=n,this.detail=o,this.root=a}static{l(this,"PrettyError")}static isPrettyError(n){return n instanceof e||Object.prototype.hasOwnProperty.call(n,"_isPrettyError")}getErrorDetail(){let n=typeof this.root=="object"&&this.root&&this.root.error?this.root.error:JSON.stringify(this.root),r=typeof this.root=="string"?this.root:this.root instanceof Error?this.root.message:n;return{extraMessage:this.message,extraMessageDetail:this.detail||r,extraMessageErrorCode:this.code||null}}static AssertionFailed(n){return new e("CLIENT_UNEXPECTED_BEHAVIOUR",Dt,null,n)}static BadStatusCode(n,r){return new e("TX_FAIL",n,null,`status code = ${r}`)}static CreateTransaction(n){return new e("FETCH_TX_FAILED",Ut,null,n)}static WalletMissing(){return new e("CLIENT_UNEXPECTED_BEHAVIOUR",He,null,"Server requested for a blockchain or address not selected by user")}static BlockchainMissing(){return new e("CLIENT_UNEXPECTED_BEHAVIOUR",He,null,"Server requested for a blockchain or address not selected by user")}};function Ge(e){try{return e?Ot(e)?e:Pt(e)?{[$.REJECTED_BY_USER]:"USER_REJECT",[$.SIGN_TX_ERROR]:"CALL_WALLET_FAILED",[$.SEND_TX_ERROR]:"SEND_TX_FAILED",[$.TX_FAILED_IN_BLOCKCHAIN]:"TX_FAILED_IN_BLOCKCHAIN",[$.NOT_IMPLEMENTED]:O,[$.OPERATION_UNSUPPORTED]:O,[$.UNEXPECTED_BEHAVIOUR]:O}[e]:O:O}catch{return O}}l(Ge,"mapAppErrorCodesToAPIErrorCode");var G=l(e=>{if(!e)return{extraMessage:"",extraMessageErrorCode:null};if(D.isPrettyError(e))return e.getErrorDetail();if(It.isSignerError(e)){let t=e.getErrorDetail();return{extraMessage:t.message,extraMessageDetail:t.detail,extraMessageErrorCode:t.code}}return e instanceof Error?{extraMessage:e.toString(),extraMessageErrorCode:null}:typeof e!="string"?{extraMessage:JSON.stringify(e),extraMessageErrorCode:null}:{extraMessage:e,extraMessageErrorCode:null}},"prettifyErrorMessage");var pe=(a=>(a.error="error",a.warning="warning",a.info="info",a.success="success",a))(pe||{}),M=l((e,t)=>{try{return B(e,t)}catch{return null}},"getCurrentNamespaceOfOrNull"),B=l((e,t)=>{let n=t.evmTransaction?.blockChain||t.evmApprovalTransaction?.blockChain,r=t.starknetTransaction?.blockChain||t.starknetApprovalTransaction?.blockChain,a=t.tronTransaction?.blockChain||t.tronApprovalTransaction?.blockChain,o=t.cosmosTransaction?.blockChain,u=t.solanaTransaction?.blockChain,i=t.tonTransaction?.blockChain,p=t.suiTransaction?.blockChain;if(n)return{namespace:"EVM",network:n};if(r)return{namespace:"Starknet",network:r};if(a)return{namespace:"Tron",network:a};if(o)return{namespace:"Cosmos",network:o};if(u)return{namespace:"Solana",network:u};if(i)return{namespace:"Ton",network:i};if(p)return{namespace:"Sui",network:p};if(t.transferTransaction){let c=t.transferTransaction.fromWalletAddress;if(!c)throw D.BlockchainMissing();let s=Object.keys(e.wallets).find(S=>e.wallets[S]?.address===c);if(!s)throw D.BlockchainMissing();return{namespace:"UTXO",network:s}}throw new Error("Unsupported transaction type has been included in your swap.",{cause:t})},"getCurrentNamespaceOf"),re=l((e,t,n)=>{let a=n[t].info?.transactionUrl;if(a)return a.indexOf("/{txHash}")!==-1?a.replace("{txHash}",e):`${a}/${e}`},"getScannerUrl");function Ve(e,t){return e.steps.find(n=>n.status!=="failed"&&n.status!=="success"&&n.id!==t.id)||null}l(Ve,"getNextStep");var Ye=l((e,t)=>{let n=e.wallets[t.evmTransaction?.blockChain||""]||e.wallets[t.evmApprovalTransaction?.blockChain||""]||e.wallets[t.tronTransaction?.blockChain||""]||e.wallets[t.tronApprovalTransaction?.blockChain||""]||e.wallets[t.starknetTransaction?.blockChain||""]||e.wallets[t.starknetApprovalTransaction?.blockChain||""]||e.wallets[t.cosmosTransaction?.blockChain||""]||e.wallets[t.solanaTransaction?.blockChain||""]||e.wallets[t.tonTransaction?.blockChain||""]||e.wallets[t.suiTransaction?.blockChain||""]||(t.transferTransaction?.fromWalletAddress?{address:t.transferTransaction.fromWalletAddress,walletType:Object.values(e.wallets).find(r=>r.address===t.transferTransaction?.fromWalletAddress)?.walletType}:null)||null;if(n==null)throw D.WalletMissing();return n},"getCurrentWalletTypeAndAddress"),Je=l((e,t)=>Ye(e,t).address,"getCurrentAddressOf");function V(e,t){let{address:n,walletType:r}=Ye(e,t),a=Object.keys(e.wallets).map(p=>({k:p,v:e.wallets[p]})).find(({v:p})=>p.address===n&&p.walletType===r)||null,o=a?.k||null,u=a?.v||null,i=u?.walletType;if(u===null)throw D.AssertionFailed(`Wallet for source ${o} not passed: walletType: ${i}`);return u}l(V,"getRelatedWallet");function _e(e,t){if(!t)return null;try{return V(e,t)}catch{return null}}l(_e,"getRelatedWalletOrNull");var je=l((e,t,n,r)=>r?.find(o=>o.blockchain===e&&o.symbol?.toUpperCase()===t?.toUpperCase()&&o.address===n)?.usdPrice||null,"getUsdPrice");function bt(e,t){let n=new Ke(0);for(let r=0;r<e.fee.length;r++){let a=e.fee[r];if(a.expenseType==="DECREASE_FROM_OUTPUT")continue;let o=je(a.asset.blockchain,a.asset.symbol,a.asset.address,t);n=n.plus(new Ke(a.amount).multipliedBy(o||0))}return n}l(bt,"getUsdFeeOfStep");function $e(e,t){return{fromBlockchain:e.from.blockchain,fromBlockchainLogo:e.from.blockchainLogo,fromLogo:e.from.logo,fromSymbol:e.from.symbol,fromSymbolAddress:e.from.address,fromDecimals:e.from.decimals,fromAmountPrecision:e.fromAmountPrecision,fromAmountMinValue:e.fromAmountMinValue,fromAmountMaxValue:e.fromAmountMaxValue,fromAmountRestrictionType:e.fromAmountRestrictionType,fromUsdPrice:e.from.usdPrice,toBlockchain:e.to.blockchain,toBlockchainLogo:e.to.blockchainLogo,toSymbol:e.to.symbol,toSymbolAddress:e.to.address,toDecimals:e.to.decimals,toLogo:e.to.logo,toUsdPrice:e.to.usdPrice,swapperId:e.swapperId,swapperLogo:e.swapperLogo,swapperType:e.swapperType,expectedOutputAmountHumanReadable:e.toAmount,feeInUsd:t?qe(bt(e,t?.tokens),null,8):null,estimatedTimeInSeconds:e.estimatedTimeInSeconds||null,internalSteps:null}}l($e,"mapSwapStepToPendingSwapStep");function Wt(e){let{inputAmount:t,bestRoute:n,wallets:r,settings:a,validateBalanceOrFee:o,meta:u,swapMode:i="swap"}=e,p=n.result;if(!p)throw Error("Simulation result should not be null");return{creationTime:new Date().getTime().toString(),finishTime:null,requestId:n.requestId||"",inputAmount:t,wallets:r,status:"running",mode:i,isPaused:!1,extraMessage:null,extraMessageSeverity:null,extraMessageDetail:null,extraMessageErrorCode:null,networkStatusExtraMessage:null,networkStatusExtraMessageDetail:null,lastNotificationTime:null,settings:a,simulationResult:p,validateBalanceOrFee:o,steps:n.result?.swaps?.map((c,s)=>{let S=$e(c,u);return{id:s+1,...S,internalSwaps:c?.internalSwaps?.map(d=>$e(d,u))||null,outputAmount:"",status:"created",networkStatus:null,startTransactionTime:new Date().getTime(),externalTransactionId:null,executedTransactionId:null,executedTransactionTime:null,explorerUrl:null,diagnosisUrl:null,trackingCode:null,internalSteps:null,evmTransaction:null,evmApprovalTransaction:null,starknetTransaction:null,starknetApprovalTransaction:null,tronTransaction:null,tronApprovalTransaction:null,cosmosTransaction:null,solanaTransaction:null,transferTransaction:null,tonTransaction:null,suiTransaction:null,xrplTransaction:null,hasAlreadyProceededToSign:!1}})||[]}}l(Wt,"calculatePendingSwap");function ze(e){return e.map(t=>{let{diagnosisUrl:n,estimatedTimeInSeconds:r,explorerUrl:a,feeInUsd:o,executedTransactionId:u,executedTransactionTime:i,expectedOutputAmountHumanReadable:p,fromBlockchain:c,toBlockchain:s,fromSymbol:S,toSymbol:d,fromSymbolAddress:g,toSymbolAddress:E,swapperType:_,swapperId:w,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:y,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:f,status:k}=t;return{diagnosisUrl:n,estimatedTimeInSeconds:r,explorerUrl:a,feeInUsd:o,executedTransactionId:u,executedTransactionTime:i,expectedOutputAmountHumanReadable:p,fromBlockchain:c,toBlockchain:s,fromSymbol:S,toSymbol:d,fromSymbolAddress:g,toSymbolAddress:E,swapperName:w,swapperType:_,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:y,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:f,status:k,transaction:Q(t)}})}l(ze,"createSteps");function Mt(e,t,n){let{creationTime:r,finishTime:a,requestId:o,inputAmount:u,status:i,wallets:p,steps:c,settings:s}=e,S=ze(c),g={route:{creationTime:r,finishTime:a,requestId:o,inputAmount:u,status:i,wallets:p,steps:S,slippage:s.slippage,infiniteApproval:s.infiniteApprove},step:S[S.length-1]};if(n)g.step=ze([n])[0];else if(t==="failed"){let E=Ze(S);E&&(g.step=E)}else{let E=j(S);E&&(g.step=E)}return g}l(Mt,"getEventPayload");function Ft(e,t,n){let r,{type:a}=e;switch(a){case"started":r={...e,type:"started"};break;case"failed":r={...e,type:"failed",inputAmount:n.inputAmount,inputAmountUsd:ve(n),swapMode:n.mode||"swap"};break;case"succeeded":{r={...e,type:"succeeded",inputAmount:n.inputAmount,inputAmountUsd:ve(n),outputAmount:n.steps[n.steps.length-1].outputAmount??"",outputAmountUsd:et(n),swapMode:n.mode||"swap"};break}default:break}r&&J("emitter")?.emit("routeEvent",{event:r,route:t})}l(Ft,"emitRouteEvent");function Lt(e,t,n){J("emitter")?.emit("stepEvent",{event:e,route:t,step:n})}l(Lt,"emitStepEvent");function m(e){let{event:t}=e,{type:n}=t,{route:r,step:a}=Mt(e.swap,n,e.step??void 0),o=`${a.fromBlockchain}.${a.fromSymbol}`,u=`${a.toBlockchain}.${a.toSymbol}`,i=a.outputAmount??"",p=e.step?M(e.swap,e.step):null,c="",s="info";switch(n){case"started":c="Swap process started",s="success";break;case"succeeded":c=`You received ${i} ${u}, hooray!`,s="success";break;case"failed":c=`Swap failed: ${e.swap?.extraMessage??"Reason is unknown"}`,s="error";break;case"tx_execution":t.status==="create_tx"?(c="Please wait while the transaction is created ...",s="info"):t.status==="send_tx"?(e.step&&ae(e.step)?c=`Please confirm '${a.swapperName}' smart contract access to ${o}`:c="Please confirm transaction request in your wallet",s="warning"):t.status==="tx_sent"&&(c="Transaction sent successfully",s="info");break;case"check_status":e.step&&ae(e.step)?c="Checking approve transaction status ...":c="Checking transaction status ...",s="info";break;case"approval_tx_succeeded":c="Smart contract called successfully",s="success";break;case"output_revealed":c="Transaction output amount revealed",s="success";break;case"tx_execution_blocked":t.status==="waiting_for_wallet_connect"?(c="Please connect your wallet.",s="warning"):t.status==="waiting_for_queue"?(c="Waiting for other swaps to complete",s="warning"):t.status==="waiting_for_change_wallet_account"?(c="Please change your wallet account.",s="warning"):t.status==="waiting_for_network_change"&&(c=`Please change your wallet network to ${p?.network}.`,s="warning");break;default:break}e.step&&Lt({...t,message:c,messageSeverity:s},r,a),(e.event.type==="failed"||!e.step)&&Ft({...t,message:c,messageSeverity:s},r,e.swap)}l(m,"notifier");var Re=null;function de(){return{claimedBy:()=>Re?.id,setClaimer:e=>{Re={id:e}},reset:()=>{Re=null}}}l(de,"claimQueue");var Y={};function Se(){return{getTransactionDataByHash:e=>Y[e]||{},setTransactionDataByHash:(e,t)=>{Y[e]||(Y[e]={}),Y[e].response=t.response||Y[e].response,Y[e].receiptReceived=t.receiptReceived||Y[e].receiptReceived||!1}}}l(Se,"inMemoryTransactionsData");var A=l(e=>e.steps.find(t=>t.status!=="failed"&&t.status!=="success")||null,"getCurrentStep"),Q=l(e=>{let{evmTransaction:t,evmApprovalTransaction:n,cosmosTransaction:r,solanaTransaction:a,transferTransaction:o,starknetApprovalTransaction:u,starknetTransaction:i,tronApprovalTransaction:p,tronTransaction:c,tonTransaction:s,suiTransaction:S}=e;return t||n||r||a||o||u||i||p||c||s||S},"getCurrentStepTx"),ge=l((e,t)=>{e.transferTransaction=null,e.cosmosTransaction=null,e.evmTransaction=null,e.solanaTransaction=null,e.evmApprovalTransaction=null,e.starknetApprovalTransaction=null,e.starknetTransaction=null,e.tronApprovalTransaction=null,e.tronTransaction=null,e.tonTransaction=null,e.suiTransaction=null;let n=t.type;switch(n){case I.EVM:t.isApprovalTx?e.evmApprovalTransaction=t:e.evmTransaction=t;break;case I.TRON:t.isApprovalTx?e.tronApprovalTransaction=t:e.tronTransaction=t;break;case I.STARKNET:t.isApprovalTx?e.starknetApprovalTransaction=t:e.starknetTransaction=t;break;case I.COSMOS:e.cosmosTransaction=t;break;case I.SOLANA:e.solanaTransaction=t;break;case I.TRANSFER:e.transferTransaction=t;break;case I.TON:e.tonTransaction=t;break;case I.SUI:e.suiTransaction=t;break;case I.XRPL:e.xrplTransaction=t;break;default:(r=>{throw new Error(`${r} was unhandled!`)})(n)}return e},"setCurrentStepTx"),Ne=l(e=>Q(e)?.type,"getCurrentStepTxType"),ae=l(e=>{let{evmApprovalTransaction:t,starknetApprovalTransaction:n,tronApprovalTransaction:r}=e;return!!(t||n||r)},"isApprovalCurrentStepTx");function U({getStorage:e,setStorage:t,nextStatus:n,nextStepStatus:r,message:a,details:o,errorCode:u=null,hasAlreadyProceededToSign:i,trace:p=null}){let c=e().swapDetails,s=A(c),S={swap:c,step:s};if(r&&s&&(s.status=r),n&&(c.status=n),c.hasAlreadyProceededToSign=i,n&&["failed","success"].includes(n)&&(c.finishTime=new Date().getTime().toString()),(a||o)&&(c.extraMessage=a||"",c.extraMessageDetail=o||""),r&&["failed"].includes(r)){let d=o&&o.includes("Warning")?"Swap canceled by user.":o,g=_e(c,s)?.walletType;c.extraMessageSeverity="error";let E=Ge(u);S.failureType=E;let _=u!=="REJECTED_BY_USER"&&p?.message&&typeof p.message=="string"?p.message:d||"";H().reportFailure({requestId:c.requestId,step:s?.id||1,eventType:E,reason:_,tags:g?{wallet:g}:void 0}).then().catch()}else r&&["running"].includes(r)?c.extraMessageSeverity="info":r&&["success","approved"].includes(r)?c.extraMessageSeverity="success":r&&["waitingForApproval"].includes(r)&&(c.extraMessageSeverity="warning");return r==="running"&&s&&(s.startTransactionTime=new Date().getTime()),t({...e(),swapDetails:c}),S}l(U,"updateSwapStatus");function Kt({getStorage:e,setStorage:t},n,r){let a=e().swapDetails;a.hasAlreadyProceededToSign=null;let o=A(a);o.executedTransactionId=n,o.executedTransactionTime=new Date().getTime().toString(),r?.url&&(o.explorerUrl=[...o.explorerUrl||[],{url:r.url,description:r.description||null}]),ae(o)?a.extraMessage="Checking approve transaction status ...":a.extraMessage="Checking transaction status ...",a.extraMessageDetail="",a.extraMessageSeverity="info",t({...e(),swapDetails:a}),m({event:{type:"tx_execution",status:"tx_sent"},swap:a,step:o}),m({event:{type:"check_status"},swap:a,step:o})}l(Kt,"setStepTransactionIds");function $t({getStorage:e,setStorage:t},n,r){let a=e().swapDetails,o=A(a);if(!o)return;let u=new Date;a.lastNotificationTime=u.getTime().toString(),!(o.networkStatus===z.WaitingForConnectingWallet&&a.networkStatusExtraMessage===n&&a.networkStatusExtraMessageDetail===r)&&(o.networkStatus=z.WaitingForConnectingWallet,a.networkStatusExtraMessage=n,a.networkStatusExtraMessageDetail=r,t({...e(),swapDetails:a}))}l($t,"markRunningSwapAsWaitingForConnectingWallet");function nt({getStorage:e,setStorage:t}){let n=e().swapDetails,r=A(n);if(!r)return;let{type:a}=b(n),o=B(n,r),u=`Change ${a} wallet network to ${o.network}`,i=`We\u2019re switching the connected network to ${o.network}. Please check your wallet.`,p=new Date;return n.lastNotificationTime=p.getTime().toString(),r.networkStatus=z.WaitingForNetworkChange,n.networkStatusExtraMessage=u,n.networkStatusExtraMessageDetail=i,t({...e(),swapDetails:n}),{swap:n,step:r}}l(nt,"markRunningSwapAsSwitchingNetwork");function rt({getStorage:e,setStorage:t}){let n=e().swapDetails,r=A(n);if(r)return n.networkStatusExtraMessage="",n.networkStatusExtraMessageDetail="",r.networkStatus=z.WaitingForQueue,m({event:{type:"tx_execution_blocked",status:"waiting_for_queue"},swap:n,step:r}),t({...e(),swapDetails:n}),{swap:n,step:r}}l(rt,"markRunningSwapAsDependsOnOtherQueues");async function Ee(e){return new Promise(t=>setTimeout(t,e))}l(Ee,"delay");var Vt=l((e,t)=>e.wallets[t]?.walletType,"getSwapWalletType");function Ie(e){return e===null||e?.blockchains===null||e?.blockchains.length===0}l(Ie,"isWalletNull");function b(e){let t=A(e),n=M(e,t);if(!n)return{type:null,namespace:null,address:null};let r=Vt(e,n.network),a=e.wallets[n.network];return{type:r||null,namespace:n,address:a?a.address:null}}l(b,"getRequiredWallet");async function Yt(e){try{return await e.request({method:"eth_chainId"})||e?.chainId}catch{return e?.chainId}}l(Yt,"getChainId");async function at(e,t,n,r,a){if(Ie(n))return!1;let o=M(e,t);if(!o)return!1;if(r.evmBasedChains.find(u=>u.name===o.network)){try{let u=e.wallets[o.network];if(u){let i=qt(a,u.walletType),p=await Yt(i);if(p){let c=Xt(p,Object.entries(r.blockchains).map(([,s])=>s));if(c&&c.toLowerCase()===o.network.toLowerCase())return!0;if(c&&c.toLowerCase()!==o.network.toLowerCase())return!1}}}catch(u){console.log(u)}return!1}return!0}l(at,"isNetworkMatchedForTransaction");var ot=l((e,t)=>(e.wallets[t.evmTransaction?.blockChain||""]||e.wallets[t.evmApprovalTransaction?.blockChain||""]||e.wallets[t.tronTransaction?.blockChain||""]||e.wallets[t.tronApprovalTransaction?.blockChain||""]||e.wallets[t.starknetTransaction?.blockChain||""]||e.wallets[t.starknetApprovalTransaction?.blockChain||""]||e.wallets[t.cosmosTransaction?.blockChain||""]||e.wallets[t.solanaTransaction?.blockChain||""]||e.wallets[t.tonTransaction?.blockChain||""]||e.wallets[t.suiTransaction?.blockChain||""]||t.transferTransaction?.fromWalletAddress||null)!==null,"isTxAlreadyCreated");function Te(e){let{getStorage:t,setStorage:n}=e,r=t().swapDetails,a=A(r);a?.networkStatus&&(a.networkStatus=null,n({...t(),swapDetails:r}))}l(Te,"resetNetworkStatus");function Pe(e,t={message:"",details:"",status:null}){let{message:n,details:r,status:a}=t,{getStorage:o,setStorage:u}=e,i=o().swapDetails,p=A(i);p?.networkStatus&&(i.networkStatusExtraMessage=n,i.networkStatusExtraMessageDetail=r,p.networkStatus=a,u({...o(),swapDetails:i}))}l(Pe,"updateNetworkStatus");function st(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,{ok:o,reason:u}=Oe(a,n.state);if(!o){let i=A(a),{type:p,address:c}=b(a);m({event:{type:"tx_execution_blocked",...u==="account_miss_match"?{status:"waiting_for_change_wallet_account",requiredAccount:c??void 0}:{status:"waiting_for_wallet_connect",requiredWallet:p??void 0,requiredAccount:c??void 0}},swap:a,step:i}),$t({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},Be,e.reason.description);return}r.unblock()}l(st,"onBlockForConnectWallet");function it(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,o=A(a);if(!o||a.status!=="running")return;let u=nt({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)}),i=M(a,o)?.network,p=b(a).type,c=p?n.state(p).network:void 0;u&&m({event:{type:"tx_execution_blocked",status:"waiting_for_network_change",requiredNetwork:i??void 0,currentNetwork:c??void 0},swap:u.swap,step:u.step});let{type:s,namespace:S}=b(a);if(s&&S?.network&&n.canSwitchNetworkTo(s,S.network,S)){let d=n.switchNetwork(s,S);d&&d.then(()=>{r.unblock()}).catch(g=>{Pe({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},{message:g.message,details:g.message,status:z.NetworkChangeFailed})})}}l(it,"onBlockForChangeNetwork");function lt(e,t){let{getBlockedTasks:n,forceExecute:r,queue:a,manager:o,context:u}=t,{setClaimer:i,claimedBy:p,reset:c}=de(),s=n().filter(T=>T.reason.reason==="depends_on_other_queues");if(s.length===0)return;let S=p(),d=!!S;if(S===a.id)return;if(d){rt({getStorage:a.getStorage.bind(a),setStorage:a.setStorage.bind(a)});return}let g=s.find(T=>T.queue_id===t.queue_id);g||(g=s[0]),i(g.queue_id);let E=g.storage.get(),{type:_,namespace:w,address:x}=b(E.swapDetails);r(g.queue_id,{claimedBy:p(),resetClaimedBy:()=>{c(),_&&Ue({walletType:_,network:w?.network,accounts:x?[x]:[]},o,u.canSwitchNetworkTo)}})}l(lt,"onDependsOnOtherQueues");function Oe(e,t){let{type:n,address:r}=b(e);if(!n||!r)return{ok:!1,reason:"not_connected"};let a=t(n),{accounts:o,connected:u}=a,i=o||[];return u?{ok:i.some(c=>{let{address:s}=Qt(c);return r.toLocaleLowerCase()===s.toLocaleLowerCase()}),reason:"account_miss_match"}:{ok:!1,reason:"not_connected"}}l(Oe,"isRequiredWalletConnected");async function ut(e){let{setTransactionDataByHash:t}=Se(),{getStorage:n,setStorage:r,failed:a,next:o,schedule:u,context:i}=e,{meta:p,getSigners:c,isMobileWallet:s}=i,S=n().swapDetails,d=A(S),g=V(S,d),E=s(g?.walletType),_=Je(S,d),w=B(S,d),x=l(()=>{e.context.resetClaimedBy&&e.context.resetClaimedBy()},"onFinish"),T=Q(d),y=T?.type,C=ae(d);if(!T||!y){let N="Unexpected Error: tx is null!",W=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:N,details:void 0,errorCode:"CLIENT_UNEXPECTED_BEHAVIOUR"});return m({event:{type:"failed",reason:N,reasonCode:"CLIENT_UNEXPECTED_BEHAVIOUR",inputAmount:F(S),inputAmountUsd:X(S)},...W}),a(),x()}let v=p.blockchains?.[T.blockChain]?.chainId,f=typeof S.hasAlreadyProceededToSign=="boolean",k,R,h,L,P;C?(h=`Waiting for approval of ${d?.fromSymbol} coin ${E?"on your mobile phone!":""}`,L="Waiting for approve transaction to be mined and confirmed successfully",R="waitingForApproval",k=void 0,P="tx_execution"):f?(h="Transaction is expired. Please try again.",R="failed",k="failed",L="",P="failed"):(h="Executing transaction ...",R="running",k="running",L=`${E?"Check your mobile phone!":""}`,P="tx_execution");let K=U({getStorage:n,setStorage:r,nextStepStatus:R,nextStatus:k,message:h,details:L,hasAlreadyProceededToSign:C?void 0:f,errorCode:f?"TX_EXPIRED":void 0});if(P==="failed"?m({event:{type:P,reason:h,reasonCode:K.failureType??O,inputAmount:F(S),inputAmountUsd:X(S)},...K}):m({event:{type:P,status:"send_tx"},...K}),f){a(),x();return}let we=l(N=>{if(S.status==="failed")return;let{extraMessage:W,extraMessageDetail:se,extraMessageErrorCode:vt}=G(N);Bt(N,{tags:{requestId:S.requestId,rpc:!0,swapper:d?.swapperId||"",walletType:g?.walletType||""},context:Gt.isSignerError(N)?N.getErrorContext():{}});let Fe=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:W,details:se,errorCode:vt,trace:N?.cause});m({event:{type:"failed",reason:W,reasonCode:Fe.failureType??O,inputAmount:F(S),inputAmountUsd:X(S)},...Fe}),a(),x()},"handleSignError"),Me;try{Me=await c(g.walletType)}catch(N){we(N);return}Me.getSigner(y).signAndSendTx(T,_,v).then(({hash:N,response:W})=>{let se=re(N,w.network,p.blockchains);Kt(e,N,se&&(!W||W&&!W.hashRequiringUpdate)?{url:se,description:C?"Approve":"Swap"}:void 0),W&&t(N,{response:W}),u("CHECK_TRANSACTION_STATUS"),o(),x()},we)}l(ut,"signTransaction");function ct(e){let{lastConnectedWallet:t,evmChains:n,manager:r}=e,{walletType:a,network:o}=t;n.some(u=>u.name==o)&&r?.getAll().forEach(u=>{let i=u.list.getStorage(),p=i?.swapDetails;if(p&&p.status==="running"){let c=A(p);if(c){let s=i?.swapDetails.wallets[c.fromBlockchain]?.walletType,S=Object.keys(u.list.state.tasks).some(g=>{let E=u.list.state.tasks[g];return E.status===he.BLOCKED&&["waiting_for_connecting_wallet"].includes(E.blockedFor?.reason)}),d=M(p,c)?.network;if(!n.some(g=>g.name==d))return;if(s===a&&S&&d!=o){let g=u.list,{type:E}=b(p),_=ue(E);u.list.block({reason:{reason:"waiting_for_network_change",description:_},silent:!0});let w=nt({getStorage:g.getStorage.bind(g),setStorage:g.setStorage.bind(g)});w&&m({event:{type:"tx_execution_blocked",status:"waiting_for_network_change",currentNetwork:o,requiredNetwork:d??void 0},swap:w.swap,step:w.step})}}}})}l(ct,"checkWaitingForConnectWalletChange");function De(e){e?.getAll().forEach(t=>{if(Object.keys(t.list.state.tasks).some(r=>{let a=t.list.state.tasks[r];return a.status===he.BLOCKED&&["waiting_for_network_change","depends_on_other_queues"].includes(a.blockedFor?.reason)})){let r=t.list.getStorage()?.swapDetails;if(r.status==="running"){let{type:a}=b(r),o=le(a);t.list.block({reason:{reason:"waiting_for_connecting_wallet",description:o}})}}})}l(De,"checkWaitingForNetworkChange");function Jt(e){let t=e?.getAll()||new Map,n=[];return t.forEach(r=>{let o=r.list.getStorage()?.swapDetails;!o||o.status!=="running"||n.push(o)}),n}l(Jt,"getRunningSwaps");function jt(e){e.forEach(t=>{let n=A(t),r="tx_execution_blocked",a;n?.networkStatus===z.WaitingForQueue?a="waiting_for_queue":t?.status==="running"&&(a="waiting_for_wallet_connect"),r&&m&&m({event:{type:r,status:a??"waiting_for_queue"},swap:t,step:n})})}l(jt,"resetRunningSwapNotifsOnPageLoad");function Ue(e,t,n,r={fallbackToOnlyWallet:!0}){let{walletType:a,network:o}=e;if(!a)return;let u=[],i=[];t?.getAll().forEach(c=>{if(c.status===he.BLOCKED){let s=c.list.getStorage(),S=s?.swapDetails;if(S&&S.status==="running"){let d=A(S);d&&(o&&M(S,d)?.network==o&&s?.swapDetails.wallets[o]?.walletType===a?u.push(c.list):s?.swapDetails.wallets[d.fromBlockchain]?.walletType===a&&i.push(c.list))}}});let p;if(u.length>0){if(p=u[0],u.length>1)for(let c=1;c<u.length;c++){let s=u[c];rt({getStorage:s.getStorage.bind(s),setStorage:s.setStorage.bind(s)})}}else i.length>0&&r.fallbackToOnlyWallet&&(p=i[0]);if(p){let c=p.getStorage(),s=A(c?.swapDetails),S=s?M(c.swapDetails,s):null;!o||!S||!n?.(a,o,S)?p.unblock():p.checkBlock()}}l(Ue,"retryOn");function pt(e){return!!e.evmTransaction||!!e.evmApprovalTransaction}l(pt,"isNeedBlockQueueForParallel");async function dt(e){let t=await e;if(!t.ok||!t.transaction)throw D.CreateTransaction(t.error||"bad response from create tx endpoint");return t}l(dt,"throwOnOK");function zt(e,t){let{reset:n}=de();e.actions.cancel();let r=U({getStorage:e.actions.getStorage,setStorage:e.actions.setStorage,message:"Swap canceled by user.",details:"Warning: If you've already signed and sent a transaction, it won't be affected, but next swap steps will not be executed.",nextStatus:"failed",nextStepStatus:"failed",errorCode:"USER_CANCEL"});return m({event:{type:"failed",reasonCode:"USER_CANCEL",reason:r.swap.extraMessage??void 0,inputAmount:F(r.swap),inputAmountUsd:X(r.swap)},swap:r.swap,step:r.step}),n(),t&&t?.retry(),r}l(zt,"cancelSwap");function j(e){return e.slice().reverse().find(t=>t.status==="success")}l(j,"getLastSuccessfulStep");function Ze(e){return e.slice().reverse().find(t=>t.status==="failed")}l(Ze,"getFailedStep");function Zt(e){let{transaction:t}=e;return t?.type===I.EVM&&t.isApprovalTx||t?.type===I.STARKNET&&t.isApprovalTx||t?.type===I.TRON&&t.isApprovalTx}l(Zt,"isApprovalTX");function fe(e,t){let n=new Ht(e).multipliedBy(t);return isNaN(n.toNumber())?"":n.toString()}l(fe,"getTokenAmountInUsd");function ve(e){return fe(e.inputAmount,e.steps[0].fromUsdPrice??"")}l(ve,"getSwapInputUsd");function et(e){let t=e.steps[e.steps.length-1];return fe(t.outputAmount??"",t.toUsdPrice??"")}l(et,"getSwapOutputUsd");function St(e){let t=["success","failed"],n=e.steps.findLastIndex(r=>t.includes(r.status));return n<0?void 0:{step:e.steps[n],index:n}}l(St,"getLastFinishedStep");function F(e){let t=St(e);return t?t.index===0?e.inputAmount:e.steps[t.index-1].outputAmount??"":""}l(F,"getLastFinishedStepInput");function X(e){let t=St(e);return fe(F(e),t?.step?.fromUsdPrice??"")}l(X,"getLastFinishedStepInputUsd");function me(e){let t=j(e.steps);return fe(t?.outputAmount??"",t?.toUsdPrice??"")}l(me,"getLastSuccessfulStepOutputUsd");function ee(e,t,n){return{type:"failed",reason:t,reasonCode:n??O,inputAmount:F(e),inputAmountUsd:X(e)}}l(ee,"createStepFailedEvent");var gt=5e3,en=5e3;async function tn({getStorage:e,setStorage:t,next:n,schedule:r,retry:a,failed:o,context:u}){let i=e().swapDetails,{meta:p}=u,c=new Error("check status Error"),s=A(i);if(!s?.executedTransactionId)return;let S=Q(s),d=s.executedTransactionId,g=!1,E=null,_=null,{getTransactionDataByHash:w,setTransactionDataByHash:x}=Se();try{let f=Ne(s),k=V(i,s);f&&k&&(_=(await u.getSigners(k.walletType)).getSigner(f))}catch{}try{let{response:f,receiptReceived:k}=w(d);if(_?.wait&&!k){let R=S?.blockChain&&p.blockchains?.[S?.blockChain]?.chainId||void 0,{hash:h,response:L}=await _.wait(d,R,f);if(h!==d){s.executedTransactionId=h||s.executedTransactionId;let P=B(i,s),K;!!Object.keys(p.blockchains).length&&(K=re(s.executedTransactionId,P.network,p.blockchains)),K&&s.explorerUrl&&s.explorerUrl?.length>=1&&(s.explorerUrl[s.explorerUrl.length-1]={url:K,description:"Replaced Swap"}),d=s.executedTransactionId,h&&L&&x(h,{response:L})}else x(h,{receiptReceived:!0})}}catch(f){let{extraMessage:k,extraMessageDetail:R,extraMessageErrorCode:h}=G(f),L=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:k,details:R,errorCode:h}),P=ee(i,k,L.failureType);te(c,{tags:{type:"singer-error",reason:P.reason,reasonCode:P.reasonCode,message:k,messageDetail:R,pendingSwap:i},context:Et.isSignerError(f)?f.getErrorContext():{}}),g=!0}let T={requestId:i.requestId,txId:d,step:s.id};try{E=await H().checkStatus(T)}catch{await Ee(gt),a(),te(c,{tags:{type:"request-error",requestBody:T,pendingSwap:i}});return}if(g)return o();if(s?.status==="failed")return;let y=E?.outputAmount||(s.outputAmount?s.outputAmount:null),C=s.outputAmount||null;i.extraMessage=E?.extraMessage||i.extraMessage,i.extraMessageSeverity="info",i.extraMessageDetail="",s.status=E?.status||s.status,s.diagnosisUrl=E?.diagnosisUrl||s.diagnosisUrl||null,s.outputAmount=y||s.outputAmount,s.explorerUrl=E?.explorerUrl||s.explorerUrl,s.internalSteps=E?.steps||null;let v=E?.newTx;if(v&&(s.status="created",s.executedTransactionId=null,s.executedTransactionTime=null,ge(s,v)),C===null&&y!==null?m({event:{type:"output_revealed",outputAmount:y},swap:i,step:s}):C===null&&y===null&&m({event:{type:"check_status"},swap:i,step:s}),s.status==="success"){let f=Ve(i,s);i.extraMessageDetail="",i.extraMessage=f?`starting next step: ${f.swapperId}: ${f.fromBlockchain} -> ${f.toBlockchain}`:"",m({event:{type:"succeeded",inputAmount:F(i),inputAmountUsd:X(i),outputAmount:s.outputAmount??"",outputAmountUsd:me(i)},swap:i,step:s})}else s.status==="failed"&&(i.extraMessage="Transaction failed in blockchain",i.extraMessageSeverity="error",i.extraMessageDetail=E?.extraMessage||"",i.status="failed",i.finishTime=new Date().getTime().toString(),te(c,{tags:{type:"transaction-failed",message:i.extraMessage,messageDetails:i.extraMessageDetail,pendingSwap:i}}));t({...e(),swapDetails:i}),E?.status==="failed"?o():E?.status==="success"||E?.status==="running"&&E.newTx?(r("SCHEDULE_NEXT_STEP"),n()):(await Ee(gt),a())}l(tn,"checkTransactionStatus");async function nn({getStorage:e,setStorage:t,next:n,schedule:r,retry:a,failed:o,context:u}){let i=e().swapDetails,{meta:p}=u,{getTransactionDataByHash:c,setTransactionDataByHash:s}=Se(),S=new Error("check approval status error"),d=A(i);if(!d){console.log("ignore check status, current step is null");return}let g=Q(d);if(!d?.executedTransactionId)return;let E=d.executedTransactionId,_=null;try{let T=Ne(d),y=V(i,d);T&&y&&(_=(await u.getSigners(y.walletType)).getSigner(T))}catch{}try{let{response:T,receiptReceived:y}=c(E);if(_?.wait&&!y){let C=g?.blockChain&&p.blockchains?.[g?.blockChain]?.chainId||void 0,{hash:v,response:f}=await _.wait(E,C,T);if(v!==E){d.executedTransactionId=v||d.executedTransactionId;let k=B(i,d),R;!!Object.keys(p.blockchains).length&&(R=re(d.executedTransactionId,k.network,p.blockchains)),R&&d.explorerUrl&&d.explorerUrl?.length>=1&&(d.explorerUrl[d.explorerUrl.length-1]={url:R,description:"Replaced Approve"}),E=d.executedTransactionId,v&&f&&s(v,{response:f})}else s(v,{receiptReceived:!0})}}catch(T){let{extraMessage:y,extraMessageDetail:C,extraMessageErrorCode:v}=G(T),f=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:y,details:C,errorCode:v}),k=ee(i,y,f.failureType);return m({event:k,...f}),te(S,{tags:{type:"singer-error",reason:k.reason,reasonCode:k.reasonCode,message:y,messageDetail:C,pendingSwap:i},context:Et.isSignerError(T)?T.getErrorContext():{}}),o()}let w=!1,x={requestId:i.requestId,txId:d.executedTransactionId};try{let T=await H().checkApproval(x.requestId,x.txId);if(d?.status==="failed")return;if(w=T.isApproved,!w&&(T.txStatus==="failed"||T.txStatus==="success")){let y,C;T.txStatus==="failed"?(y="Approve transaction failed",C="Smart contract approval tx failed in blockchain."):(y="Not enough approval",T.requiredApprovedAmount&&T.currentApprovedAmount?C=`Required approval: ${T.requiredApprovedAmount}, current approval: ${T.currentApprovedAmount}`:C="You still don't have enough approval for this swap.");let v=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",errorCode:"INSUFFICIENT_APPROVE",message:y,details:C}),f=ee(i,y,v.failureType);m({event:f,...v}),te(S,{tags:{type:"approval-failed",message:i.extraMessage,messageDetails:i.extraMessageDetail,pendingSwap:i}}),o()}else w||m({event:{type:"check_status"},swap:i,step:d})}catch{w=!1,te(S,{tags:{type:"request-error",requestBody:x,pendingSwap:i}})}w?(d.status="approved",i.extraMessage=`Spending ${d.fromSymbol} approved successfully.`,i.extraMessageDetail=null,i.extraMessageSeverity="success",d.evmApprovalTransaction=null,d.executedTransactionId=null,d.executedTransactionTime=null,d.starknetApprovalTransaction=null,d.tronApprovalTransaction=null,t({...e(),swapDetails:i}),m({event:{type:"approval_tx_succeeded"},swap:i,step:d}),r("SCHEDULE_NEXT_STEP"),n()):(await Ee(en),a())}l(nn,"checkApprovalStatus");async function Tt(e){let t=e.getStorage().swapDetails,n=A(t);if(!n){console.log("ignore check status, current step is null",t.requestId);return}Te(e),n.status==="running"?await tn(e):n.status==="waitingForApproval"&&await nn(e)}l(Tt,"checkStatus");import{warn as rn}from"@rango-dev/logging-core";async function ft(e){let{setStorage:t,getStorage:n,next:r,schedule:a}=e,o=n().swapDetails,u=A(o);if(!Q(u)){m({event:{type:"tx_execution",status:"create_tx"},swap:o,step:u});let p={requestId:o.requestId,step:u.id,userSettings:{slippage:o.settings.slippage,infiniteApprove:o.settings.infiniteApprove},validations:{balance:o.validateBalanceOrFee,fee:o.validateBalanceOrFee,approve:!0}};try{let{transaction:c}=await dt(H().createTransaction(p));c&&ge(u,c),t({...n(),swapDetails:o}),a("EXECUTE_TRANSACTION"),r()}catch(c){o.status="failed",o.finishTime=new Date().getTime().toString();let{extraMessage:s,extraMessageDetail:S}=G(c),d=U({getStorage:n,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:s,details:S,errorCode:"FETCH_TX_FAILED"}),g=ee(o,s,d.failureType);m({event:g,...d}),c instanceof Error&&rn(new Error("create transaction error"),{tags:{message:c.message,requestBody:p,reason:g.reason,reasonCode:g.reasonCode,pendingSwap:o}}),e.failed()}}}l(ft,"createTransaction");import{PendingSwapNetworkStatus as mt}from"rango-types";async function wt(e){let{getStorage:t,context:n}=e,{meta:r,wallets:a,providers:o}=n,{claimedBy:u}=de(),i=n.claimedBy===n._queue?.id,p=l(w=>{e.block(w),i&&e.context.resetClaimedBy&&e.context.resetClaimedBy()},"requestBlock"),c=t().swapDetails,s=A(c);if(!Oe(c,n.state).ok){let{type:w,address:x}=b(c),T=a?.blockchains?.find(v=>!v.accounts?.find(f=>f.walletType===w)),y=Ie(a)||T?le(w):Qe(w,x),C={reason:"waiting_for_connecting_wallet",description:y};p(C);return}let d=await at(c,s,a,r,o);if(!!u()&&!i&&!d){let w=ke,x={reason:"depends_on_other_queues",details:w};p(x);return}else if(!d){let w=B(c,s),x=ue(w.network),T={reason:"waiting_for_network_change",details:x};p(T);return}if(s.networkStatus===mt.NetworkChanged&&Pe(e,{message:"",details:"The network has been successfully changed.",status:mt.NetworkChanged}),pt(s)&&!i){let w={reason:"depends_on_other_queues",description:ke,details:{}};p(w);return}Te(e),await ut(e)}l(wt,"executeTransaction");function At({schedule:e,next:t,failed:n,setStorage:r,getStorage:a}){let o=a().swapDetails,u=A(o),i=o.steps.find(p=>p.status==="failed");if(u&&!i){if(ot(o,u))return e("EXECUTE_TRANSACTION"),t();if(u?.executedTransactionId)return e("CHECK_TRANSACTION_STATUS"),t();o.status="running",r({...a(),swapDetails:o}),m({event:{type:"started"},swap:o,step:u}),e("CREATE_TRANSACTION"),t()}else{o.status=i?"failed":"success",o.finishTime=new Date().getTime().toString(),r({...a(),swapDetails:o});let p=F(o),c=X(o);m({...i?{event:{type:"failed",reason:o.extraMessage??void 0,reasonCode:"CALL_OR_SEND_FAILED",inputAmount:p,inputAmountUsd:c}}:{event:{type:"succeeded",inputAmount:p,inputAmountUsd:c,outputAmount:j(o.steps)?.outputAmount??"",outputAmountUsd:me(o)}},swap:o,step:null}),i?n():t()}}l(At,"scheduleNextStep");function yt({schedule:e,next:t,getStorage:n}){let r=n().swapDetails;m({event:{type:"started"},swap:r,step:null}),e("SCHEDULE_NEXT_STEP"),t()}l(yt,"start");var xt={name:"swap",actions:{START:yt,SCHEDULE_NEXT_STEP:At,CREATE_TRANSACTION:ft,EXECUTE_TRANSACTION:wt,CHECK_TRANSACTION_STATUS:Tt},run:["START"],whenTaskBlocked:(e,t)=>{e.reason.reason==="waiting_for_connecting_wallet"?st(e,t):e.reason.reason==="waiting_for_network_change"?it(e,t):e.reason.reason==="depends_on_other_queues"&&lt(e,t)}};import{useManager as un}from"@rango-dev/queue-manager-react";import{useEffect as We,useState as cn}from"react";import{DB_NAME as an,Persistor as on,Status as oe}from"@rango-dev/queue-manager-core";import{v4 as sn}from"uuid";var Ct="migratedToQueueManager";function be(){return!!window.localStorage.getItem(Ct)}l(be,"migrated");async function ln(){try{return(await window.indexedDB.databases()).map(e=>e.name).includes(an)}catch{return!1}}l(ln,"hasQueueManagerOnIDB");async function kt(){let e=window.localStorage.getItem("pendingSwaps"),t=await ln();if(!e||be()||t)return!0;let n=JSON.parse(e),r=[];n.forEach(u=>{if(u.status==="running"){let i=sn(),p={id:u.requestId,createdAt:Number(u.creationTime),name:"swap",status:oe.RUNNING,storage:{swapDetails:u},state:{status:oe.RUNNING,activeTaskIndex:0,tasks:{[i]:{blockedFor:null,status:oe.RUNNING}}},tasks:[{id:i,action:"SCHEDULE_NEXT_STEP"}]};r.push(p)}else{let i=u.status==="success"?oe.SUCCESS:oe.FAILED,p={id:u.requestId,createdAt:Number(u.creationTime),name:"swap",status:i,storage:{swapDetails:u},state:{status:i,activeTaskIndex:0,tasks:{}},tasks:[]};r.push(p)}});let a=new on,o=r.map(async u=>a.insertQueue(u));return await Promise.all(o),window.localStorage.setItem(Ct,"1"),!0}l(kt,"migration");var _t=0;function pn(e){return`${e?.walletType}-${e?.network}-${e?.accounts?.toString()}`}l(pn,"getLastConnectedWalletHash");function dn(){let e=be(),[t,n]=cn(e);return We(()=>{(async()=>_t||(_t=1,kt().finally(()=>{n(!0)})))()},[]),{status:t}}l(dn,"useMigration");function Sn(e){let{manager:t}=un(),{lastConnectedWallet:n,disconnectedWallet:r,evmChains:a,canSwitchNetworkTo:o,clearDisconnectedWallet:u}=e;We(()=>{n&&(ct({evmChains:a,lastConnectedWallet:n,manager:t}),Ue(n,t,o))},[pn(n)]),We(()=>{r&&(De(t),u())},[r])}l(Sn,"useQueueManager");function la(e){return Le(e),xt}l(la,"makeQueueDefinition");export{Ce as EventSeverity,pe as MessageSeverity,D as PrettyError,xe as RouteEventType,q as StepEventType,ie as StepExecutionBlockedEventStatus,ne as StepExecutionEventStatus,ye as WidgetEvents,Wt as calculatePendingSwap,zt as cancelSwap,De as checkWaitingForNetworkChange,M as getCurrentNamespaceOfOrNull,A as getCurrentStep,j as getLastSuccessfulStep,V as getRelatedWallet,_e as getRelatedWalletOrNull,b as getRequiredWallet,Jt as getRunningSwaps,je as getUsdPrice,Zt as isApprovalTX,la as makeQueueDefinition,G as prettifyErrorMessage,jt as resetRunningSwapNotifsOnPageLoad,U as updateSwapStatus,dn as useMigration,Sn as useQueueManager};
2
2
  //# sourceMappingURL=index.js.map