@rango-dev/queue-manager-rango-preset 0.48.0 → 0.48.2-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,26 @@
1
+ ## [0.48.1](https://github.com/rango-exchange/rango-client/compare/queue-manager-rango-preset@0.48.0...queue-manager-rango-preset@0.48.1) (2025-07-27)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * fix undefined wallet type for transfer transactions ([75c310c](https://github.com/rango-exchange/rango-client/commit/75c310c34335ab073ee612cb5bbde45ff1b99b3c))
7
+
8
+
9
+
10
+ # [0.48.0](https://github.com/rango-exchange/rango-client/compare/queue-manager-rango-preset@0.47.0...queue-manager-rango-preset@0.48.0) (2025-07-22)
11
+
12
+
13
+ ### Features
14
+
15
+ * redesign swap details modal ([ef59df5](https://github.com/rango-exchange/rango-client/commit/ef59df5ade0f5f05f8415f6ccfbe4ded368bfd99))
16
+
17
+
18
+ ### Reverts
19
+
20
+ * Revert "chore(release): publish" ([064ce15](https://github.com/rango-exchange/rango-client/commit/064ce157a2f819856f647f83aeb1c0410542e8d7))
21
+
22
+
23
+
1
24
  # [0.46.0](https://github.com/rango-exchange/rango-client/compare/queue-manager-rango-preset@0.45.1...queue-manager-rango-preset@0.46.0) (2025-06-09)
2
25
 
3
26
 
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var _t=Object.defineProperty;var l=(e,t)=>_t(e,"name",{value:t,configurable:!0});var vt="c6381a79-2817-4602-83bf-6a641a409e32",we={API_KEY:vt,BASE_URL:""};function J(e){return we[e]}l(J,"getConfig");function be(e){return we=e,we}l(be,"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||{}),te=(r=>(r.CREATE_TX="create_tx",r.SEND_TX="send_tx",r.TX_SENT="tx_sent",r))(te||{}),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 ee}from"@rango-dev/logging-core";import{SignerError as St}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 Ft}from"@rango-dev/wallets-core/legacy";import{getBlockChainNameFromId as Bt,getEvmProvider as Qt}from"@rango-dev/wallets-shared";import Xt from"bignumber.js";import{PendingSwapNetworkStatus as ae,SignerError as qt,TransactionType as I}from"rango-types";var Ce="Waiting for other swaps to complete",Me="Waiting for connecting wallet",Le=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 Rt}from"rango-sdk";var ue,H=l(()=>ue||(ue=new Rt(J("API_KEY"),J("BASE_URL")),ue),"httpService");import qe from"bignumber.js";import Fe from"bignumber.js";var Be=l((e,t=null,n=null)=>{if(e===null||e==="")return"";let r=new Fe(e),a=1,o=1e3;for(let c=0;c<60;c++)if(new Fe(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 ht,isAPIErrorCode as It}from"rango-types";var Pt="Assertion failed (Unexpected behaviour)",Ot="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",Pt,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",Ot,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 Xe(e){try{return e?It(e)?e:ht(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(Xe,"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||{}),F=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(S=>e.wallets[S]?.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"),ne=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 Ge(e,t){return e.steps.find(n=>n.status!=="failed"&&n.status!=="success"&&n.id!==t.id)||null}l(Ge,"getNextStep");var Ke=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}:null)||null;if(n==null)throw D.WalletMissing();return n},"getCurrentWalletTypeAndAddress"),$e=l((e,t)=>Ke(e,t).address,"getCurrentAddressOf");function V(e,t){let{address:n,walletType:r}=Ke(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 Ve=l((e,t,n,r)=>r?.find(o=>o.blockchain===e&&o.symbol?.toUpperCase()===t?.toUpperCase()&&o.address===n)?.usdPrice||null,"getUsdPrice");function Dt(e,t){let n=new qe(0);for(let r=0;r<e.fee.length;r++){let a=e.fee[r];if(a.expenseType==="DECREASE_FROM_OUTPUT")continue;let o=Ve(a.asset.blockchain,a.asset.symbol,a.asset.address,t);n=n.plus(new qe(a.amount).multipliedBy(o||0))}return n}l(Dt,"getUsdFeeOfStep");function He(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?Be(Dt(e,t?.tokens),null,8):null,estimatedTimeInSeconds:e.estimatedTimeInSeconds||null,internalSteps:null}}l(He,"mapSwapStepToPendingSwapStep");function Ut(e,t,n,r,a,o){let c=t.result;if(!c)throw Error("Simulation result should not be null");return{creationTime:new Date().getTime().toString(),finishTime:null,requestId:t.requestId||"",inputAmount:e,wallets:n,status:"running",isPaused:!1,extraMessage:null,extraMessageSeverity:null,extraMessageDetail:null,extraMessageErrorCode:null,networkStatusExtraMessage:null,networkStatusExtraMessageDetail:null,lastNotificationTime:null,settings:r,simulationResult:c,validateBalanceOrFee:a,steps:t.result?.swaps?.map((i,p)=>{let u=He(i,o);return{id:p+1,...u,internalSwaps:i?.internalSwaps?.map(s=>He(s,o))||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(Ut,"calculatePendingSwap");function Ye(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:S,toSymbol:d,fromSymbolAddress:g,toSymbolAddress:E,swapperType:_,swapperId:w,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:A,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:f,status:k}=t;return{diagnosisUrl:n,estimatedTimeInSeconds:r,explorerUrl:a,feeInUsd:o,executedTransactionId:c,executedTransactionTime:i,expectedOutputAmountHumanReadable:p,fromBlockchain:u,toBlockchain:s,fromSymbol:S,toSymbol:d,fromSymbolAddress:g,toSymbolAddress:E,swapperName:w,swapperType:_,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:A,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:f,status:k,transaction:Q(t)}})}l(Ye,"createSteps");function Wt(e,t,n){let{creationTime:r,finishTime:a,requestId:o,inputAmount:c,status:i,wallets:p,steps:u,settings:s}=e,S=Ye(u),g={route:{creationTime:r,finishTime:a,requestId:o,inputAmount:c,status:i,wallets:p,steps:S,slippage:s.slippage,infiniteApproval:s.infiniteApprove},step:S[S.length-1]};if(n)g.step=Ye([n])[0];else if(t==="failed"){let E=Je(S);E&&(g.step=E)}else{let E=j(S);E&&(g.step=E)}return g}l(Wt,"getEventPayload");function bt(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)};break;case"succeeded":{r={...e,type:"succeeded",inputAmount:n.inputAmount,inputAmountUsd:_e(n),outputAmount:n.steps[n.steps.length-1].outputAmount??"",outputAmountUsd:je(n)};break}default:break}r&&J("emitter")?.emit("routeEvent",{event:r,route:t})}l(bt,"emitRouteEvent");function Mt(e,t,n){J("emitter")?.emit("stepEvent",{event:e,route:t,step:n})}l(Mt,"emitStepEvent");function m(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?F(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&&re(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&&re(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&&Mt({...t,message:u,messageSeverity:s},r,a),(e.event.type==="failed"||!e.step)&&bt({...t,message:u,messageSeverity:s},r,e.swap)}l(m,"notifier");var ve=null;function de(){return{claimedBy:()=>ve?.id,setClaimer:e=>{ve={id:e}},reset:()=>{ve=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 y=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:S}=e;return t||n||r||a||o||c||i||p||u||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"),re=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=y(u),S={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,g=ke(u,s)?.walletType;u.extraMessageSeverity="error";let E=Xe(c);S.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:g?{wallet:g}: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}),S}l(U,"updateSwapStatus");function Ht({getStorage:e,setStorage:t},n,r){let a=e().swapDetails;a.hasAlreadyProceededToSign=null;let o=y(a);o.executedTransactionId=n,o.executedTransactionTime=new Date().getTime().toString(),r?.url&&(o.explorerUrl=[...o.explorerUrl||[],{url:r.url,description:r.description||null}]),re(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(Ht,"setStepTransactionIds");function Gt({getStorage:e,setStorage:t},n,r){let a=e().swapDetails,o=y(a);if(!o)return;let c=new Date;a.lastNotificationTime=c.getTime().toString(),!(o.networkStatus===ae.WaitingForConnectingWallet&&a.networkStatusExtraMessage===n&&a.networkStatusExtraMessageDetail===r)&&(o.networkStatus=ae.WaitingForConnectingWallet,a.networkStatusExtraMessage=n,a.networkStatusExtraMessageDetail=r,t({...e(),swapDetails:a}))}l(Gt,"markRunningSwapAsWaitingForConnectingWallet");function Ze({getStorage:e,setStorage:t}){let n=e().swapDetails,r=y(n);if(!r)return;let{type:a}=W(n),o=B(n,r),c=`Change ${a} wallet network to ${o.network}`,i=`Please change your ${a} wallet network to ${o.network}.`,p=new Date;return n.lastNotificationTime=p.getTime().toString(),r.networkStatus=ae.WaitingForNetworkChange,n.networkStatusExtraMessage=c,n.networkStatusExtraMessageDetail=i,t({...e(),swapDetails:n}),{swap:n,step:r}}l(Ze,"markRunningSwapAsSwitchingNetwork");function et({getStorage:e,setStorage:t}){let n=e().swapDetails,r=y(n);if(r)return n.networkStatusExtraMessage="",n.networkStatusExtraMessageDetail="",r.networkStatus=ae.WaitingForQueue,m({event:{type:"tx_execution_blocked",status:"waiting_for_queue"},swap:n,step:r}),t({...e(),swapDetails:n}),{swap:n,step:r}}l(et,"markRunningSwapAsDependsOnOtherQueues");async function Ee(e){return new Promise(t=>setTimeout(t,e))}l(Ee,"delay");var Kt=l((e,t)=>e.wallets[t]?.walletType,"getSwapWalletType");function he(e){return e===null||e?.blockchains===null||e?.blockchains.length===0}l(he,"isWalletNull");function W(e){let t=y(e),n=F(e,t);if(!n)return{type:null,namespace:null,address:null};let r=Kt(e,n.network),a=e.wallets[n.network];return{type:r||null,namespace:n,address:a?a.address:null}}l(W,"getRequiredWallet");async function $t(e){try{return await e.request({method:"eth_chainId"})||e?.chainId}catch{return e?.chainId}}l($t,"getChainId");async function tt(e,t,n,r,a){if(he(n))return!1;let o=F(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=Qt(a,c.walletType),p=await $t(i);if(p){let u=Bt(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(tt,"isNetworkMatchedForTransaction");var nt=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=y(r);a?.networkStatus&&(a.networkStatus=null,n({...t(),swapDetails:r}))}l(Te,"resetNetworkStatus");function rt(e,t={message:"",details:"",status:null}){let{message:n,details:r,status:a}=t,{getStorage:o,setStorage:c}=e,i=o().swapDetails,p=y(i);p?.networkStatus&&(i.networkStatusExtraMessage=n,i.networkStatusExtraMessageDetail=r,p.networkStatus=a,c({...o(),swapDetails:i}))}l(rt,"updateNetworkStatus");function at(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,{ok:o,reason:c}=Ie(a,n.state);if(!o){let i=y(a),{type:p,address:u}=W(a);m({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}),Gt({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},Me,e.reason.description);return}r.unblock()}l(at,"onBlockForConnectWallet");function ot(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,o=y(a);if(!o||a.status!=="running")return;let c=Ze({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)}),i=F(a,o)?.network,p=W(a).type,u=p?n.state(p).network:void 0;c&&m({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:S}=W(a);if(s&&S?.network&&n.canSwitchNetworkTo(s,S.network)){let d=n.switchNetwork(s,S);d&&d.then(()=>{r.unblock()}).catch(g=>{console.log({error:g})})}}l(ot,"onBlockForChangeNetwork");function st(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 S=p(),d=!!S;if(S===a.id)return;if(d){et({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}=W(E.swapDetails);r(g.queue_id,{claimedBy:p(),resetClaimedBy:()=>{u(),_&&Oe({walletType:_,network:w?.network,accounts:x?[x]:[]},o,c.canSwitchNetworkTo)}})}l(st,"onDependsOnOtherQueues");function Ie(e,t){let{type:n,address:r}=W(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}=Ft(u);return r.toLocaleLowerCase()===s.toLocaleLowerCase()}),reason:"account_miss_match"}:{ok:!1,reason:"not_connected"}}l(Ie,"isRequiredWalletConnected");async function it(e){let{setTransactionDataByHash:t}=Se(),{getStorage:n,setStorage:r,failed:a,next:o,schedule:c,context:i}=e,{meta:p,getSigners:u,isMobileWallet:s}=i,S=n().swapDetails,d=y(S),g=V(S,d),E=s(g?.walletType),_=$e(S,d),w=B(S,d),x=l(()=>{e.context.resetClaimedBy&&e.context.resetClaimedBy()},"onFinish"),T=Q(d),A=T?.type,C=re(d);if(!T||!A){let h="Unexpected Error: tx is null!",b=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:h,details:void 0,errorCode:"CLIENT_UNEXPECTED_BEHAVIOUR"});return m({event:{type:"failed",reason:h,reasonCode:"CLIENT_UNEXPECTED_BEHAVIOUR",inputAmount:M(S),inputAmountUsd:X(S)},...b}),a(),x()}let v=p.blockchains?.[T.blockChain]?.chainId,f=typeof S.hasAlreadyProceededToSign=="boolean",k,R,N,L,P;C?(N=`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?(N="Transaction is expired. Please try again.",R="failed",k="failed",L="",P="failed"):(N="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:N,details:L,hasAlreadyProceededToSign:C?void 0:f,errorCode:f?"TX_EXPIRED":void 0});if(P==="failed"?m({event:{type:P,reason:N,reasonCode:K.failureType??O,inputAmount:M(S),inputAmountUsd:X(S)},...K}):m({event:{type:P,status:"send_tx"},...K}),f){a(),x();return}(await u(g.walletType)).getSigner(A).signAndSendTx(T,_,v).then(({hash:h,response:b})=>{let se=ne(h,w.network,p.blockchains);Ht(e,h,se&&(!b||b&&!b.hashRequiringUpdate)?{url:se,description:C?"Approve":"Swap"}:void 0),b&&t(h,{response:b}),c("CHECK_TRANSACTION_STATUS"),o(),x()},h=>{if(S.status==="failed")return;let{extraMessage:b,extraMessageDetail:se,extraMessageErrorCode:kt}=G(h);Lt(h,{tags:{requestId:S.requestId,rpc:!0,swapper:d?.swapperId||"",walletType:g?.walletType||""},context:qt.isSignerError(h)?h.getErrorContext():{}});let We=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:b,details:se,errorCode:kt,trace:h?.cause});m({event:{type:"failed",reason:b,reasonCode:We.failureType??O,inputAmount:M(S),inputAmountUsd:X(S)},...We}),a(),x()})}l(it,"signTransaction");function lt(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=y(p);if(u){let s=i?.swapDetails.wallets[u.fromBlockchain]?.walletType,S=Object.keys(c.list.state.tasks).some(g=>{let E=c.list.state.tasks[g];return E.status===Re.BLOCKED&&["waiting_for_connecting_wallet"].includes(E.blockedFor?.reason)}),d=F(p,u)?.network;if(!n.some(g=>g.name==d))return;if(s===a&&S&&d!=o){let g=c.list,{type:E}=W(p),_=ce(E);c.list.block({reason:{reason:"waiting_for_network_change",description:_},silent:!0});let w=Ze({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(lt,"checkWaitingForConnectWalletChange");function Pe(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}=W(r),o=le(a);t.list.block({reason:{reason:"waiting_for_connecting_wallet",description:o}})}}})}l(Pe,"checkWaitingForNetworkChange");function Vt(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(Vt,"getRunningSwaps");function Yt(e){e.forEach(t=>{let n=y(t),r="tx_execution_blocked",a;n?.networkStatus===ae.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(Yt,"resetRunningSwapNotifsOnPageLoad");function Oe(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(),S=s?.swapDetails;if(S&&S.status==="running"){let d=y(S);d&&(o&&F(S,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];et({getStorage:s.getStorage.bind(s),setStorage:s.setStorage.bind(s)})}}else i.length>0&&r.fallbackToOnlyWallet&&(p=i[0]);!o||!n?.(a,o)?p?.unblock():p?.checkBlock()}l(Oe,"retryOn");function ct(e){return!!e.evmTransaction||!!e.evmApprovalTransaction}l(ct,"isNeedBlockQueueForParallel");async function ut(e){let t=await e;if(!t.ok||!t.transaction)throw D.CreateTransaction(t.error||"bad response from create tx endpoint");return t}l(ut,"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 m({event:{type:"failed",reasonCode:"USER_CANCEL",reason:r.swap.extraMessage??void 0,inputAmount:M(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 Je(e){return e.slice().reverse().find(t=>t.status==="failed")}l(Je,"getFailedStep");function jt(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(jt,"isApprovalTX");function fe(e,t){let n=new Xt(e).multipliedBy(t);return isNaN(n.toNumber())?"":n.toString()}l(fe,"getTokenAmountInUsd");function _e(e){return fe(e.inputAmount,e.steps[0].fromUsdPrice??"")}l(_e,"getSwapInputUsd");function je(e){let t=e.steps[e.steps.length-1];return fe(t.outputAmount??"",t.toUsdPrice??"")}l(je,"getSwapOutputUsd");function pt(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(pt,"getLastFinishedStep");function M(e){let t=pt(e);return t?t.index===0?e.inputAmount:e.steps[t.index-1].outputAmount??"":""}l(M,"getLastFinishedStepInput");function X(e){let t=pt(e);return fe(M(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 Z(e,t,n){return{type:"failed",reason:t,reasonCode:n??O,inputAmount:M(e),inputAmountUsd:X(e)}}l(Z,"createStepFailedEvent");var dt=5e3,zt=5e3;async function Zt({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=y(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 c.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:N,response:L}=await _.wait(d,R,f);if(N!==d){s.executedTransactionId=N||s.executedTransactionId;let P=B(i,s),K;!!Object.keys(p.blockchains).length&&(K=ne(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,N&&L&&x(N,{response:L})}else x(N,{receiptReceived:!0})}}catch(f){let{extraMessage:k,extraMessageDetail:R,extraMessageErrorCode:N}=G(f),L=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:k,details:R,errorCode:N}),P=Z(i,k,L.failureType);ee(u,{tags:{type:"singer-error",reason:P.reason,reasonCode:P.reasonCode,message:k,messageDetail:R,pendingSwap:i},context:St.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(dt),a(),ee(u,{tags:{type:"request-error",requestBody:T,pendingSwap:i}});return}if(g)return o();if(s?.status==="failed")return;let A=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=A||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&&A!==null?m({event:{type:"output_revealed",outputAmount:A},swap:i,step:s}):C===null&&A===null&&m({event:{type:"check_status"},swap:i,step:s}),s.status==="success"){let f=Ge(i,s);i.extraMessageDetail="",i.extraMessage=f?`starting next step: ${f.swapperId}: ${f.fromBlockchain} -> ${f.toBlockchain}`:"",m({event:{type:"succeeded",inputAmount:M(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(),ee(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(dt),a())}l(Zt,"checkTransactionStatus");async function en({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}=Se(),S=new Error("check approval status error"),d=y(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),A=V(i,d);T&&A&&(_=(await c.getSigners(A.walletType)).getSigner(T))}catch{}try{let{response:T,receiptReceived:A}=u(E);if(_?.wait&&!A){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=ne(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:A,extraMessageDetail:C,extraMessageErrorCode:v}=G(T),f=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:A,details:C,errorCode:v}),k=Z(i,A,f.failureType);return m({event:k,...f}),ee(S,{tags:{type:"singer-error",reason:k.reason,reasonCode:k.reasonCode,message:A,messageDetail:C,pendingSwap:i},context:St.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 A,C;T.txStatus==="failed"?(A="Approve transaction failed",C="Smart contract approval tx failed in blockchain."):(A="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:A,details:C}),f=Z(i,A,v.failureType);m({event:f,...v}),ee(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,ee(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(zt),a())}l(en,"checkApprovalStatus");async function gt(e){let t=e.getStorage().swapDetails,n=y(t);if(!n){console.log("ignore check status, current step is null",t.requestId);return}Te(e),n.status==="running"?await Zt(e):n.status==="waitingForApproval"&&await en(e)}l(gt,"checkStatus");import{warn as tn}from"@rango-dev/logging-core";async function Et(e){let{setStorage:t,getStorage:n,next:r,schedule:a}=e,o=n().swapDetails,c=y(o);if(!Q(c)){m({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 ut(H().createTransaction(p));u&&ge(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:S}=G(u),d=U({getStorage:n,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:s,details:S,errorCode:"FETCH_TX_FAILED"}),g=Z(o,s,d.failureType);m({event:g,...d}),u instanceof Error&&tn(new Error("create transaction error"),{tags:{message:u.message,requestBody:p,reason:g.reason,reasonCode:g.reasonCode,pendingSwap:o}}),e.failed()}}}l(Et,"createTransaction");import{PendingSwapNetworkStatus as nn}from"rango-types";async function Tt(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=y(u);if(Te(e),!Ie(u,n.state).ok){let{type:w,address:x}=W(u),T=a?.blockchains?.find(v=>!v.accounts?.find(f=>f.walletType===w)),A=he(a)||T?le(w):Le(w,x),C={reason:"waiting_for_connecting_wallet",description:A};p(C);return}let d=await tt(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(rt(e,{message:"",details:"Wallet network changed successfully",status:nn.NetworkChanged}),ct(s)&&!i){let w={reason:"depends_on_other_queues",description:Ce,details:{}};p(w);return}await it(e)}l(Tt,"executeTransaction");function ft({schedule:e,next:t,failed:n,setStorage:r,getStorage:a}){let o=a().swapDetails,c=y(o),i=o.steps.find(p=>p.status==="failed");if(c&&!i){if(nt(o,c))return e("EXECUTE_TRANSACTION"),t();if(c?.executedTransactionId)return e("CHECK_TRANSACTION_STATUS"),t();o.status="running",r({...a(),swapDetails:o}),m({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=M(o),u=X(o);m({...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(ft,"scheduleNextStep");function mt({schedule:e,next:t,getStorage:n}){let r=n().swapDetails;m({event:{type:"started"},swap:r,step:null}),e("SCHEDULE_NEXT_STEP"),t()}l(mt,"start");var wt={name:"swap",actions:{START:mt,SCHEDULE_NEXT_STEP:ft,CREATE_TRANSACTION:Et,EXECUTE_TRANSACTION:Tt,CHECK_TRANSACTION_STATUS:gt},run:["START"],whenTaskBlocked:(e,t)=>{e.reason.reason==="waiting_for_connecting_wallet"?at(e,t):e.reason.reason==="waiting_for_network_change"?ot(e,t):e.reason.reason==="depends_on_other_queues"&&st(e,t)}};import{useManager as ln}from"@rango-dev/queue-manager-react";import{useEffect as Ue,useState as cn}from"react";import{DB_NAME as rn,Persistor as an,Status as oe}from"@rango-dev/queue-manager-core";import{v4 as on}from"uuid";var At="migratedToQueueManager";function De(){return!!window.localStorage.getItem(At)}l(De,"migrated");async function sn(){try{return(await window.indexedDB.databases()).map(e=>e.name).includes(rn)}catch{return!1}}l(sn,"hasQueueManagerOnIDB");async function yt(){let e=window.localStorage.getItem("pendingSwaps"),t=await sn();if(!e||De()||t)return!0;let n=JSON.parse(e),r=[];n.forEach(c=>{if(c.status==="running"){let i=on(),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 an,o=r.map(async c=>a.insertQueue(c));return await Promise.all(o),window.localStorage.setItem(At,"1"),!0}l(yt,"migration");var xt=0;function un(e){return`${e?.walletType}-${e?.network}-${e?.accounts?.toString()}`}l(un,"getLastConnectedWalletHash");function pn(){let e=De(),[t,n]=cn(e);return Ue(()=>{(async()=>xt||(xt=1,yt().finally(()=>{n(!0)})))()},[]),{status:t}}l(pn,"useMigration");function dn(e){let{manager:t}=ln(),{lastConnectedWallet:n,disconnectedWallet:r,evmChains:a,canSwitchNetworkTo:o,clearDisconnectedWallet:c}=e;Ue(()=>{n&&(lt({evmChains:a,lastConnectedWallet:n,manager:t}),Oe(n,t,o))},[un(n)]),Ue(()=>{r&&(Pe(t),c())},[r])}l(dn,"useQueueManager");function ia(e){return be(e),wt}l(ia,"makeQueueDefinition");export{xe as EventSeverity,pe as MessageSeverity,D as PrettyError,ye as RouteEventType,q as StepEventType,ie as StepExecutionBlockedEventStatus,te as StepExecutionEventStatus,Ae as WidgetEvents,Ut as calculatePendingSwap,Jt as cancelSwap,Pe as checkWaitingForNetworkChange,F as getCurrentNamespaceOfOrNull,y as getCurrentStep,j as getLastSuccessfulStep,V as getRelatedWallet,ke as getRelatedWalletOrNull,W as getRequiredWallet,Vt as getRunningSwaps,Ve as getUsdPrice,jt as isApprovalTX,ia as makeQueueDefinition,G as prettifyErrorMessage,Yt as resetRunningSwapNotifsOnPageLoad,U as updateSwapStatus,pn as useMigration,dn as useQueueManager};
1
+ var _t=Object.defineProperty;var l=(e,t)=>_t(e,"name",{value:t,configurable:!0});var vt="c6381a79-2817-4602-83bf-6a641a409e32",we={API_KEY:vt,BASE_URL:""};function J(e){return we[e]}l(J,"getConfig");function be(e){return we=e,we}l(be,"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||{}),te=(r=>(r.CREATE_TX="create_tx",r.SEND_TX="send_tx",r.TX_SENT="tx_sent",r))(te||{}),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 ee}from"@rango-dev/logging-core";import{SignerError as St}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 Ft}from"@rango-dev/wallets-core/legacy";import{getBlockChainNameFromId as Bt,getEvmProvider as Qt}from"@rango-dev/wallets-shared";import Xt from"bignumber.js";import{PendingSwapNetworkStatus as ae,SignerError as qt,TransactionType as I}from"rango-types";var Ce="Waiting for other swaps to complete",Me="Waiting for connecting wallet",Le=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 Rt}from"rango-sdk";var ue,H=l(()=>ue||(ue=new Rt(J("API_KEY"),J("BASE_URL")),ue),"httpService");import qe from"bignumber.js";import Fe from"bignumber.js";var Be=l((e,t=null,n=null)=>{if(e===null||e==="")return"";let r=new Fe(e),a=1,o=1e3;for(let c=0;c<60;c++)if(new Fe(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 ht,isAPIErrorCode as It}from"rango-types";var Pt="Assertion failed (Unexpected behaviour)",Ot="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",Pt,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",Ot,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 Xe(e){try{return e?It(e)?e:ht(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(Xe,"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||{}),F=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(S=>e.wallets[S]?.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"),ne=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 Ge(e,t){return e.steps.find(n=>n.status!=="failed"&&n.status!=="success"&&n.id!==t.id)||null}l(Ge,"getNextStep");var Ke=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"),$e=l((e,t)=>Ke(e,t).address,"getCurrentAddressOf");function V(e,t){let{address:n,walletType:r}=Ke(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 Ve=l((e,t,n,r)=>r?.find(o=>o.blockchain===e&&o.symbol?.toUpperCase()===t?.toUpperCase()&&o.address===n)?.usdPrice||null,"getUsdPrice");function Dt(e,t){let n=new qe(0);for(let r=0;r<e.fee.length;r++){let a=e.fee[r];if(a.expenseType==="DECREASE_FROM_OUTPUT")continue;let o=Ve(a.asset.blockchain,a.asset.symbol,a.asset.address,t);n=n.plus(new qe(a.amount).multipliedBy(o||0))}return n}l(Dt,"getUsdFeeOfStep");function He(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?Be(Dt(e,t?.tokens),null,8):null,estimatedTimeInSeconds:e.estimatedTimeInSeconds||null,internalSteps:null}}l(He,"mapSwapStepToPendingSwapStep");function Ut(e,t,n,r,a,o){let c=t.result;if(!c)throw Error("Simulation result should not be null");return{creationTime:new Date().getTime().toString(),finishTime:null,requestId:t.requestId||"",inputAmount:e,wallets:n,status:"running",isPaused:!1,extraMessage:null,extraMessageSeverity:null,extraMessageDetail:null,extraMessageErrorCode:null,networkStatusExtraMessage:null,networkStatusExtraMessageDetail:null,lastNotificationTime:null,settings:r,simulationResult:c,validateBalanceOrFee:a,steps:t.result?.swaps?.map((i,p)=>{let u=He(i,o);return{id:p+1,...u,internalSwaps:i?.internalSwaps?.map(s=>He(s,o))||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(Ut,"calculatePendingSwap");function Ye(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:S,toSymbol:d,fromSymbolAddress:g,toSymbolAddress:E,swapperType:_,swapperId:w,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:A,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:f,status:k}=t;return{diagnosisUrl:n,estimatedTimeInSeconds:r,explorerUrl:a,feeInUsd:o,executedTransactionId:c,executedTransactionTime:i,expectedOutputAmountHumanReadable:p,fromBlockchain:u,toBlockchain:s,fromSymbol:S,toSymbol:d,fromSymbolAddress:g,toSymbolAddress:E,swapperName:w,swapperType:_,outputAmount:x,fromAmountMaxValue:T,fromAmountMinValue:A,fromAmountPrecision:C,fromAmountRestrictionType:v,fromDecimals:f,status:k,transaction:Q(t)}})}l(Ye,"createSteps");function Wt(e,t,n){let{creationTime:r,finishTime:a,requestId:o,inputAmount:c,status:i,wallets:p,steps:u,settings:s}=e,S=Ye(u),g={route:{creationTime:r,finishTime:a,requestId:o,inputAmount:c,status:i,wallets:p,steps:S,slippage:s.slippage,infiniteApproval:s.infiniteApprove},step:S[S.length-1]};if(n)g.step=Ye([n])[0];else if(t==="failed"){let E=Je(S);E&&(g.step=E)}else{let E=j(S);E&&(g.step=E)}return g}l(Wt,"getEventPayload");function bt(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)};break;case"succeeded":{r={...e,type:"succeeded",inputAmount:n.inputAmount,inputAmountUsd:_e(n),outputAmount:n.steps[n.steps.length-1].outputAmount??"",outputAmountUsd:je(n)};break}default:break}r&&J("emitter")?.emit("routeEvent",{event:r,route:t})}l(bt,"emitRouteEvent");function Mt(e,t,n){J("emitter")?.emit("stepEvent",{event:e,route:t,step:n})}l(Mt,"emitStepEvent");function m(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?F(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&&re(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&&re(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&&Mt({...t,message:u,messageSeverity:s},r,a),(e.event.type==="failed"||!e.step)&&bt({...t,message:u,messageSeverity:s},r,e.swap)}l(m,"notifier");var ve=null;function de(){return{claimedBy:()=>ve?.id,setClaimer:e=>{ve={id:e}},reset:()=>{ve=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 y=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:S}=e;return t||n||r||a||o||c||i||p||u||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"),re=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=y(u),S={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,g=ke(u,s)?.walletType;u.extraMessageSeverity="error";let E=Xe(c);S.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:g?{wallet:g}: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}),S}l(U,"updateSwapStatus");function Ht({getStorage:e,setStorage:t},n,r){let a=e().swapDetails;a.hasAlreadyProceededToSign=null;let o=y(a);o.executedTransactionId=n,o.executedTransactionTime=new Date().getTime().toString(),r?.url&&(o.explorerUrl=[...o.explorerUrl||[],{url:r.url,description:r.description||null}]),re(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(Ht,"setStepTransactionIds");function Gt({getStorage:e,setStorage:t},n,r){let a=e().swapDetails,o=y(a);if(!o)return;let c=new Date;a.lastNotificationTime=c.getTime().toString(),!(o.networkStatus===ae.WaitingForConnectingWallet&&a.networkStatusExtraMessage===n&&a.networkStatusExtraMessageDetail===r)&&(o.networkStatus=ae.WaitingForConnectingWallet,a.networkStatusExtraMessage=n,a.networkStatusExtraMessageDetail=r,t({...e(),swapDetails:a}))}l(Gt,"markRunningSwapAsWaitingForConnectingWallet");function Ze({getStorage:e,setStorage:t}){let n=e().swapDetails,r=y(n);if(!r)return;let{type:a}=W(n),o=B(n,r),c=`Change ${a} wallet network to ${o.network}`,i=`Please change your ${a} wallet network to ${o.network}.`,p=new Date;return n.lastNotificationTime=p.getTime().toString(),r.networkStatus=ae.WaitingForNetworkChange,n.networkStatusExtraMessage=c,n.networkStatusExtraMessageDetail=i,t({...e(),swapDetails:n}),{swap:n,step:r}}l(Ze,"markRunningSwapAsSwitchingNetwork");function et({getStorage:e,setStorage:t}){let n=e().swapDetails,r=y(n);if(r)return n.networkStatusExtraMessage="",n.networkStatusExtraMessageDetail="",r.networkStatus=ae.WaitingForQueue,m({event:{type:"tx_execution_blocked",status:"waiting_for_queue"},swap:n,step:r}),t({...e(),swapDetails:n}),{swap:n,step:r}}l(et,"markRunningSwapAsDependsOnOtherQueues");async function Ee(e){return new Promise(t=>setTimeout(t,e))}l(Ee,"delay");var Kt=l((e,t)=>e.wallets[t]?.walletType,"getSwapWalletType");function he(e){return e===null||e?.blockchains===null||e?.blockchains.length===0}l(he,"isWalletNull");function W(e){let t=y(e),n=F(e,t);if(!n)return{type:null,namespace:null,address:null};let r=Kt(e,n.network),a=e.wallets[n.network];return{type:r||null,namespace:n,address:a?a.address:null}}l(W,"getRequiredWallet");async function $t(e){try{return await e.request({method:"eth_chainId"})||e?.chainId}catch{return e?.chainId}}l($t,"getChainId");async function tt(e,t,n,r,a){if(he(n))return!1;let o=F(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=Qt(a,c.walletType),p=await $t(i);if(p){let u=Bt(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(tt,"isNetworkMatchedForTransaction");var nt=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=y(r);a?.networkStatus&&(a.networkStatus=null,n({...t(),swapDetails:r}))}l(Te,"resetNetworkStatus");function rt(e,t={message:"",details:"",status:null}){let{message:n,details:r,status:a}=t,{getStorage:o,setStorage:c}=e,i=o().swapDetails,p=y(i);p?.networkStatus&&(i.networkStatusExtraMessage=n,i.networkStatusExtraMessageDetail=r,p.networkStatus=a,c({...o(),swapDetails:i}))}l(rt,"updateNetworkStatus");function at(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,{ok:o,reason:c}=Ie(a,n.state);if(!o){let i=y(a),{type:p,address:u}=W(a);m({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}),Gt({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},Me,e.reason.description);return}r.unblock()}l(at,"onBlockForConnectWallet");function ot(e,t){let{context:n,queue:r}=t,a=r.getStorage().swapDetails,o=y(a);if(!o||a.status!=="running")return;let c=Ze({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)}),i=F(a,o)?.network,p=W(a).type,u=p?n.state(p).network:void 0;c&&m({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:S}=W(a);if(s&&S?.network&&n.canSwitchNetworkTo(s,S.network)){let d=n.switchNetwork(s,S);d&&d.then(()=>{r.unblock()}).catch(g=>{console.log({error:g})})}}l(ot,"onBlockForChangeNetwork");function st(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 S=p(),d=!!S;if(S===a.id)return;if(d){et({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}=W(E.swapDetails);r(g.queue_id,{claimedBy:p(),resetClaimedBy:()=>{u(),_&&Oe({walletType:_,network:w?.network,accounts:x?[x]:[]},o,c.canSwitchNetworkTo)}})}l(st,"onDependsOnOtherQueues");function Ie(e,t){let{type:n,address:r}=W(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}=Ft(u);return r.toLocaleLowerCase()===s.toLocaleLowerCase()}),reason:"account_miss_match"}:{ok:!1,reason:"not_connected"}}l(Ie,"isRequiredWalletConnected");async function it(e){let{setTransactionDataByHash:t}=Se(),{getStorage:n,setStorage:r,failed:a,next:o,schedule:c,context:i}=e,{meta:p,getSigners:u,isMobileWallet:s}=i,S=n().swapDetails,d=y(S),g=V(S,d),E=s(g?.walletType),_=$e(S,d),w=B(S,d),x=l(()=>{e.context.resetClaimedBy&&e.context.resetClaimedBy()},"onFinish"),T=Q(d),A=T?.type,C=re(d);if(!T||!A){let h="Unexpected Error: tx is null!",b=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:h,details:void 0,errorCode:"CLIENT_UNEXPECTED_BEHAVIOUR"});return m({event:{type:"failed",reason:h,reasonCode:"CLIENT_UNEXPECTED_BEHAVIOUR",inputAmount:M(S),inputAmountUsd:X(S)},...b}),a(),x()}let v=p.blockchains?.[T.blockChain]?.chainId,f=typeof S.hasAlreadyProceededToSign=="boolean",k,R,N,L,P;C?(N=`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?(N="Transaction is expired. Please try again.",R="failed",k="failed",L="",P="failed"):(N="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:N,details:L,hasAlreadyProceededToSign:C?void 0:f,errorCode:f?"TX_EXPIRED":void 0});if(P==="failed"?m({event:{type:P,reason:N,reasonCode:K.failureType??O,inputAmount:M(S),inputAmountUsd:X(S)},...K}):m({event:{type:P,status:"send_tx"},...K}),f){a(),x();return}(await u(g.walletType)).getSigner(A).signAndSendTx(T,_,v).then(({hash:h,response:b})=>{let se=ne(h,w.network,p.blockchains);Ht(e,h,se&&(!b||b&&!b.hashRequiringUpdate)?{url:se,description:C?"Approve":"Swap"}:void 0),b&&t(h,{response:b}),c("CHECK_TRANSACTION_STATUS"),o(),x()},h=>{if(S.status==="failed")return;let{extraMessage:b,extraMessageDetail:se,extraMessageErrorCode:kt}=G(h);Lt(h,{tags:{requestId:S.requestId,rpc:!0,swapper:d?.swapperId||"",walletType:g?.walletType||""},context:qt.isSignerError(h)?h.getErrorContext():{}});let We=U({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:b,details:se,errorCode:kt,trace:h?.cause});m({event:{type:"failed",reason:b,reasonCode:We.failureType??O,inputAmount:M(S),inputAmountUsd:X(S)},...We}),a(),x()})}l(it,"signTransaction");function lt(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=y(p);if(u){let s=i?.swapDetails.wallets[u.fromBlockchain]?.walletType,S=Object.keys(c.list.state.tasks).some(g=>{let E=c.list.state.tasks[g];return E.status===Re.BLOCKED&&["waiting_for_connecting_wallet"].includes(E.blockedFor?.reason)}),d=F(p,u)?.network;if(!n.some(g=>g.name==d))return;if(s===a&&S&&d!=o){let g=c.list,{type:E}=W(p),_=ce(E);c.list.block({reason:{reason:"waiting_for_network_change",description:_},silent:!0});let w=Ze({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(lt,"checkWaitingForConnectWalletChange");function Pe(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}=W(r),o=le(a);t.list.block({reason:{reason:"waiting_for_connecting_wallet",description:o}})}}})}l(Pe,"checkWaitingForNetworkChange");function Vt(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(Vt,"getRunningSwaps");function Yt(e){e.forEach(t=>{let n=y(t),r="tx_execution_blocked",a;n?.networkStatus===ae.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(Yt,"resetRunningSwapNotifsOnPageLoad");function Oe(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(),S=s?.swapDetails;if(S&&S.status==="running"){let d=y(S);d&&(o&&F(S,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];et({getStorage:s.getStorage.bind(s),setStorage:s.setStorage.bind(s)})}}else i.length>0&&r.fallbackToOnlyWallet&&(p=i[0]);!o||!n?.(a,o)?p?.unblock():p?.checkBlock()}l(Oe,"retryOn");function ct(e){return!!e.evmTransaction||!!e.evmApprovalTransaction}l(ct,"isNeedBlockQueueForParallel");async function ut(e){let t=await e;if(!t.ok||!t.transaction)throw D.CreateTransaction(t.error||"bad response from create tx endpoint");return t}l(ut,"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 m({event:{type:"failed",reasonCode:"USER_CANCEL",reason:r.swap.extraMessage??void 0,inputAmount:M(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 Je(e){return e.slice().reverse().find(t=>t.status==="failed")}l(Je,"getFailedStep");function jt(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(jt,"isApprovalTX");function fe(e,t){let n=new Xt(e).multipliedBy(t);return isNaN(n.toNumber())?"":n.toString()}l(fe,"getTokenAmountInUsd");function _e(e){return fe(e.inputAmount,e.steps[0].fromUsdPrice??"")}l(_e,"getSwapInputUsd");function je(e){let t=e.steps[e.steps.length-1];return fe(t.outputAmount??"",t.toUsdPrice??"")}l(je,"getSwapOutputUsd");function pt(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(pt,"getLastFinishedStep");function M(e){let t=pt(e);return t?t.index===0?e.inputAmount:e.steps[t.index-1].outputAmount??"":""}l(M,"getLastFinishedStepInput");function X(e){let t=pt(e);return fe(M(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 Z(e,t,n){return{type:"failed",reason:t,reasonCode:n??O,inputAmount:M(e),inputAmountUsd:X(e)}}l(Z,"createStepFailedEvent");var dt=5e3,zt=5e3;async function Zt({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=y(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 c.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:N,response:L}=await _.wait(d,R,f);if(N!==d){s.executedTransactionId=N||s.executedTransactionId;let P=B(i,s),K;!!Object.keys(p.blockchains).length&&(K=ne(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,N&&L&&x(N,{response:L})}else x(N,{receiptReceived:!0})}}catch(f){let{extraMessage:k,extraMessageDetail:R,extraMessageErrorCode:N}=G(f),L=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:k,details:R,errorCode:N}),P=Z(i,k,L.failureType);ee(u,{tags:{type:"singer-error",reason:P.reason,reasonCode:P.reasonCode,message:k,messageDetail:R,pendingSwap:i},context:St.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(dt),a(),ee(u,{tags:{type:"request-error",requestBody:T,pendingSwap:i}});return}if(g)return o();if(s?.status==="failed")return;let A=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=A||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&&A!==null?m({event:{type:"output_revealed",outputAmount:A},swap:i,step:s}):C===null&&A===null&&m({event:{type:"check_status"},swap:i,step:s}),s.status==="success"){let f=Ge(i,s);i.extraMessageDetail="",i.extraMessage=f?`starting next step: ${f.swapperId}: ${f.fromBlockchain} -> ${f.toBlockchain}`:"",m({event:{type:"succeeded",inputAmount:M(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(),ee(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(dt),a())}l(Zt,"checkTransactionStatus");async function en({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}=Se(),S=new Error("check approval status error"),d=y(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),A=V(i,d);T&&A&&(_=(await c.getSigners(A.walletType)).getSigner(T))}catch{}try{let{response:T,receiptReceived:A}=u(E);if(_?.wait&&!A){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=ne(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:A,extraMessageDetail:C,extraMessageErrorCode:v}=G(T),f=U({getStorage:e,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:A,details:C,errorCode:v}),k=Z(i,A,f.failureType);return m({event:k,...f}),ee(S,{tags:{type:"singer-error",reason:k.reason,reasonCode:k.reasonCode,message:A,messageDetail:C,pendingSwap:i},context:St.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 A,C;T.txStatus==="failed"?(A="Approve transaction failed",C="Smart contract approval tx failed in blockchain."):(A="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:A,details:C}),f=Z(i,A,v.failureType);m({event:f,...v}),ee(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,ee(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(zt),a())}l(en,"checkApprovalStatus");async function gt(e){let t=e.getStorage().swapDetails,n=y(t);if(!n){console.log("ignore check status, current step is null",t.requestId);return}Te(e),n.status==="running"?await Zt(e):n.status==="waitingForApproval"&&await en(e)}l(gt,"checkStatus");import{warn as tn}from"@rango-dev/logging-core";async function Et(e){let{setStorage:t,getStorage:n,next:r,schedule:a}=e,o=n().swapDetails,c=y(o);if(!Q(c)){m({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 ut(H().createTransaction(p));u&&ge(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:S}=G(u),d=U({getStorage:n,setStorage:t,nextStatus:"failed",nextStepStatus:"failed",message:s,details:S,errorCode:"FETCH_TX_FAILED"}),g=Z(o,s,d.failureType);m({event:g,...d}),u instanceof Error&&tn(new Error("create transaction error"),{tags:{message:u.message,requestBody:p,reason:g.reason,reasonCode:g.reasonCode,pendingSwap:o}}),e.failed()}}}l(Et,"createTransaction");import{PendingSwapNetworkStatus as nn}from"rango-types";async function Tt(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=y(u);if(Te(e),!Ie(u,n.state).ok){let{type:w,address:x}=W(u),T=a?.blockchains?.find(v=>!v.accounts?.find(f=>f.walletType===w)),A=he(a)||T?le(w):Le(w,x),C={reason:"waiting_for_connecting_wallet",description:A};p(C);return}let d=await tt(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(rt(e,{message:"",details:"Wallet network changed successfully",status:nn.NetworkChanged}),ct(s)&&!i){let w={reason:"depends_on_other_queues",description:Ce,details:{}};p(w);return}await it(e)}l(Tt,"executeTransaction");function ft({schedule:e,next:t,failed:n,setStorage:r,getStorage:a}){let o=a().swapDetails,c=y(o),i=o.steps.find(p=>p.status==="failed");if(c&&!i){if(nt(o,c))return e("EXECUTE_TRANSACTION"),t();if(c?.executedTransactionId)return e("CHECK_TRANSACTION_STATUS"),t();o.status="running",r({...a(),swapDetails:o}),m({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=M(o),u=X(o);m({...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(ft,"scheduleNextStep");function mt({schedule:e,next:t,getStorage:n}){let r=n().swapDetails;m({event:{type:"started"},swap:r,step:null}),e("SCHEDULE_NEXT_STEP"),t()}l(mt,"start");var wt={name:"swap",actions:{START:mt,SCHEDULE_NEXT_STEP:ft,CREATE_TRANSACTION:Et,EXECUTE_TRANSACTION:Tt,CHECK_TRANSACTION_STATUS:gt},run:["START"],whenTaskBlocked:(e,t)=>{e.reason.reason==="waiting_for_connecting_wallet"?at(e,t):e.reason.reason==="waiting_for_network_change"?ot(e,t):e.reason.reason==="depends_on_other_queues"&&st(e,t)}};import{useManager as ln}from"@rango-dev/queue-manager-react";import{useEffect as Ue,useState as cn}from"react";import{DB_NAME as rn,Persistor as an,Status as oe}from"@rango-dev/queue-manager-core";import{v4 as on}from"uuid";var At="migratedToQueueManager";function De(){return!!window.localStorage.getItem(At)}l(De,"migrated");async function sn(){try{return(await window.indexedDB.databases()).map(e=>e.name).includes(rn)}catch{return!1}}l(sn,"hasQueueManagerOnIDB");async function yt(){let e=window.localStorage.getItem("pendingSwaps"),t=await sn();if(!e||De()||t)return!0;let n=JSON.parse(e),r=[];n.forEach(c=>{if(c.status==="running"){let i=on(),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 an,o=r.map(async c=>a.insertQueue(c));return await Promise.all(o),window.localStorage.setItem(At,"1"),!0}l(yt,"migration");var xt=0;function un(e){return`${e?.walletType}-${e?.network}-${e?.accounts?.toString()}`}l(un,"getLastConnectedWalletHash");function pn(){let e=De(),[t,n]=cn(e);return Ue(()=>{(async()=>xt||(xt=1,yt().finally(()=>{n(!0)})))()},[]),{status:t}}l(pn,"useMigration");function dn(e){let{manager:t}=ln(),{lastConnectedWallet:n,disconnectedWallet:r,evmChains:a,canSwitchNetworkTo:o,clearDisconnectedWallet:c}=e;Ue(()=>{n&&(lt({evmChains:a,lastConnectedWallet:n,manager:t}),Oe(n,t,o))},[un(n)]),Ue(()=>{r&&(Pe(t),c())},[r])}l(dn,"useQueueManager");function ia(e){return be(e),wt}l(ia,"makeQueueDefinition");export{xe as EventSeverity,pe as MessageSeverity,D as PrettyError,ye as RouteEventType,q as StepEventType,ie as StepExecutionBlockedEventStatus,te as StepExecutionEventStatus,Ae as WidgetEvents,Ut as calculatePendingSwap,Jt as cancelSwap,Pe as checkWaitingForNetworkChange,F as getCurrentNamespaceOfOrNull,y as getCurrentStep,j as getLastSuccessfulStep,V as getRelatedWallet,ke as getRelatedWalletOrNull,W as getRequiredWallet,Vt as getRunningSwaps,Ve as getUsdPrice,jt as isApprovalTX,ia as makeQueueDefinition,G as prettifyErrorMessage,Yt as resetRunningSwapNotifsOnPageLoad,U as updateSwapStatus,pn as useMigration,dn as useQueueManager};
2
2
  //# sourceMappingURL=index.js.map