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