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