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