@rango-dev/queue-manager-rango-preset 0.34.1-next.5 → 0.34.1-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/configs.d.ts +7 -1
- package/dist/configs.d.ts.map +1 -1
- package/dist/hooks.d.ts +3 -11
- package/dist/hooks.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.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 -1
- package/dist/services/eventEmitter.d.ts +1 -2
- package/dist/services/eventEmitter.d.ts.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -2
- package/src/configs.ts +15 -11
- package/src/hooks.ts +3 -15
- package/src/index.ts +2 -2
- package/src/services/eventEmitter.ts +6 -8
- package/src/types.ts +3 -3
package/dist/configs.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import type { RouteExecutionEvents } from './types';
|
|
2
|
+
interface Emitter<Events extends Record<string, unknown>> {
|
|
3
|
+
emit<K extends keyof Events>(type: K, event: Events[K]): void;
|
|
4
|
+
}
|
|
1
5
|
export interface Configs {
|
|
2
6
|
API_KEY: string;
|
|
3
7
|
BASE_URL?: string;
|
|
8
|
+
emitter?: Emitter<RouteExecutionEvents>;
|
|
4
9
|
}
|
|
5
|
-
export declare function getConfig(name:
|
|
10
|
+
export declare function getConfig<K extends keyof Configs>(name: K): Configs[K];
|
|
6
11
|
export declare function setConfig(name: keyof Configs, value: any): any;
|
|
7
12
|
export declare function initConfig(nextConfigs: Configs): Configs;
|
|
13
|
+
export {};
|
|
8
14
|
//# sourceMappingURL=configs.d.ts.map
|
package/dist/configs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../src/configs.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../src/configs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,UAAU,OAAO,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACzC;AAcD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEtE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,OAAO,EAAE,KAAK,EAAE,GAAG,OAIxD;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,OAAO,WAG9C"}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type UseQueueManagerParams } from './types';
|
|
2
2
|
/**
|
|
3
3
|
*
|
|
4
4
|
* Runs a migration (old swaps from localstorage to queue manager's IndexedDB)
|
|
@@ -10,18 +10,10 @@ declare function useMigration(): {
|
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
*
|
|
13
|
-
* On initial load and also connect/
|
|
13
|
+
* On initial load and also connect/disconnect we may need to update swap's notified message.
|
|
14
14
|
* And also if a new wallet is connected we will retry the queue to see we can resume it or not.
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
17
|
declare function useQueueManager(params: UseQueueManagerParams): void;
|
|
18
|
-
|
|
19
|
-
on<Key extends keyof import("./types").RouteExecutionEvents>(type: Key, handler: import("mitt").Handler<import("./types").RouteExecutionEvents[Key]>): void;
|
|
20
|
-
on(type: "*", handler: import("mitt").WildcardHandler<import("./types").RouteExecutionEvents>): void;
|
|
21
|
-
off<Key_1 extends keyof import("./types").RouteExecutionEvents>(type: Key_1, handler?: import("mitt").Handler<import("./types").RouteExecutionEvents[Key_1]> | undefined): void;
|
|
22
|
-
off(type: "*", handler: import("mitt").WildcardHandler<import("./types").RouteExecutionEvents>): void;
|
|
23
|
-
emit<Key_2 extends keyof import("./types").RouteExecutionEvents>(type: Key_2, event: import("./types").RouteExecutionEvents[Key_2]): void;
|
|
24
|
-
emit<Key_3 extends keyof import("./types").RouteExecutionEvents>(type: undefined extends import("./types").RouteExecutionEvents[Key_3] ? Key_3 : never): void;
|
|
25
|
-
};
|
|
26
|
-
export { useQueueManager, useMigration, useEvents };
|
|
18
|
+
export { useQueueManager, useMigration };
|
|
27
19
|
//# sourceMappingURL=hooks.d.ts.map
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIrD;;;;;GAKG;AACH,iBAAS,YAAY,IAAI;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,CAqBA;AAED;;;;;GAKG;AACH,iBAAS,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAyB5D;AAED,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,10 @@ import type { Configs } from './configs';
|
|
|
2
2
|
import type { SwapQueueDef } from './types';
|
|
3
3
|
export { PrettyError, prettifyErrorMessage } from './shared-errors';
|
|
4
4
|
export type { SwapQueueContext, SwapStorage, RouteExecutionEvents, Route, Step, RouteEvent, StepEvent, RouteEventData, StepEventData, RouteStartedEvent, RouteSucceededEvent, RouteFailedEvent, StepStartedEvent, StepSucceededEvent, StepFailedEvent, StepTxExecutionUpdatedEvent, StepTxExecutionBlockedEvent, StepCheckStatusEvent, StepApprovalTxSucceededEvent, StepOutputRevealedEvent, } from './types';
|
|
5
|
-
export {
|
|
5
|
+
export { WidgetEvents, StepEventType, RouteEventType, StepExecutionEventStatus, StepExecutionBlockedEventStatus, EventSeverity, } from './types';
|
|
6
6
|
export type { PendingSwapWithQueueID, EventType } from './shared';
|
|
7
7
|
export { getCurrentBlockchainOfOrNull, getRelatedWalletOrNull, getRelatedWallet, MessageSeverity, calculatePendingSwap, getUsdPrice, } from './shared';
|
|
8
8
|
export { updateSwapStatus, checkWaitingForNetworkChange, getCurrentStep, cancelSwap, getRequiredWallet, getRunningSwaps, resetRunningSwapNotifsOnPageLoad, isApprovalTX, getLastSuccessfulStep, } from './helpers';
|
|
9
|
-
export { useMigration, useQueueManager
|
|
9
|
+
export { useMigration, useQueueManager } from './hooks';
|
|
10
10
|
export declare function makeQueueDefinition(configs: Configs): SwapQueueDef;
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,+BAA+B,EAC/B,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,gCAAgC,EAChC,YAAY,EACZ,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAGlE"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Tt=Object.defineProperty;var i=(e,t)=>Tt(e,"name",{value:t,configurable:!0});var ft="c6381a79-2817-4602-83bf-6a641a409e32",Ee={API_KEY:ft};function ge(e){return Ee[e]||""}i(ge,"getConfig");function Pe(e){let t;return typeof structuredClone=="function"?t=structuredClone(e):t=JSON.parse(JSON.stringify(e)),Ee=t,Ee}i(Pe,"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",De="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 Ke}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 mt}from"rango-sdk";var ae,B=i(()=>ae||(ae=new mt(ge("API_KEY"),ge("BASE_URL")),ae),"httpService");import Pt from"mitt";import Le from"bignumber.js";import{isCosmosBlockchain as xt,isEvmBlockchain as kt,isSolanaBlockchain as Rt,isStarknetBlockchain as vt,isTronBlockchain as ht}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 wt,isSignerErrorCode as At,isAPIErrorCode as yt}from"rango-types";var Ct="Assertion failed (Unexpected behaviour)",_t="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",Ct,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",_t,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?yt(e)?e:At(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(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 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"),Nt=i(e=>{if(xt(e))return e.info?.explorerUrlToTx;if(kt(e)||vt(e)||ht(e))return e.info.transactionUrl;if(Rt(e))return"https://solscan.io/tx/{txHash}"},"getBlockchainMetaExplorerBaseUrl"),J=i((e,t,n)=>{let r=n[t],o=Nt(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 Xe=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=Xe(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 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 Dt(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(Dt,"getEventPayload");var ie=Pt();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}=Dt(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 $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 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 P(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(P,"getRequiredWallet");async function Gt(e){try{return await e.request({method:"eth_chainId"})||e?.chainId}catch{return e?.chainId}}i(Gt,"getChainId");async function Ye(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(Ye,"isNetworkMatchedForTransaction");var Je=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 ze(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}=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}),Xt({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},De,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}=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){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(),he(`${_}-${E}:${m}`,s,l.canSwitchNetworkTo)}})}i(et,"onDependsOnOtherQueues");function Re(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}=Mt(a);return r.toLocaleLowerCase()===p.toLocaleLowerCase()}),reason:"account_miss_match"}:{ok:!1,reason:"not_connected"}}i(Re,"isRequiredWalletConnected");function tt(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!",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 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:D})=>{let te=J(h,m,u.blockchains);Qt(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);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:D,details:te,errorCode:gt,trace:h?.cause});T({event:{type:"failed",reason:D,reasonCode:Oe.failureType??k},...Oe}),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===_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}=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 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}=P(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]=Ke(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];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(he,"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 $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 Ge(e){return e.slice().reverse().find(t=>t.status==="failed")}i(Ge,"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 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}=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(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,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(at),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 st(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(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&&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(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}=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}=P(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 Ye(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}),rt(p)&&!c){let E={reason:"depends_on_other_queues",description:we,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(Je(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 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 dt="migratedToQueueManager";function Ne(){return!!window.localStorage.getItem(dt)}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 St(){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(dt,"1"),!0}i(St,"migration");var Et=0;function an(){let e=Ne(),[t,n]=on(e);return Ie(()=>{(async()=>Et||(Et=1,St().finally(()=>{n(!0)})))()},[]),{status:t}}i(an,"useMigration");function sn(e){let{manager:t}=rn();Ie(()=>{e.lastConnectedWallet&&(nt({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 Pe(e),pt}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,P as getRequiredWallet,qt as getRunningSwaps,Xe as getUsdPrice,Vt as isApprovalTX,so as makeQueueDefinition,Q as prettifyErrorMessage,Kt as resetRunningSwapNotifsOnPageLoad,O as updateSwapStatus,ln as useEvents,an as useMigration,sn as useQueueManager};
|
|
1
|
+
var gt=Object.defineProperty;var l=(e,t)=>gt(e,"name",{value:t,configurable:!0});var Tt="c6381a79-2817-4602-83bf-6a641a409e32",Ee={API_KEY:Tt,BASE_URL:""};function $(e){return Ee[e]}l($,"getConfig");function Oe(e){return Ee=e,Ee}l(Oe,"initConfig");var ge=(n=>(n.RouteEvent="routeEvent",n.StepEvent="stepEvent",n))(ge||{}),Te=(r=>(r.STARTED="started",r.FAILED="failed",r.SUCCEEDED="succeeded",r))(Te||{}),J=(r=>(r.CREATE_TX="create_tx",r.SEND_TX="send_tx",r.TX_SENT="tx_sent",r))(J||{}),re=(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))(re||{}),F=(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))(F||{}),fe=(o=>(o.ERROR="error",o.SUCCESS="success",o.WARNING="warning",o.INFO="info",o))(fe||{});var me="Waiting for other swaps to complete",Pe="Waiting for connecting wallet",De=l((e,t)=>`Please change your ${e||"wallet"} account to ${t||"proper address"}`,"ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET"),oe=l(e=>`Please connect your ${e??""} wallet.`,"ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION"),ae=l(e=>`Please change your network to ${e}.`,"ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK"),k="CLIENT_UNEXPECTED_BEHAVIOUR";import{warn as Wt}from"@rango-dev/logging-core";import{Status as Ce}from"@rango-dev/queue-manager-core";import{readAccountAddress as bt}from"@rango-dev/wallets-core";import{getBlockChainNameFromId as Ut,getEvmProvider as Mt,splitWalletNetwork as qe}from"@rango-dev/wallets-shared";import{TransactionType as W}from"rango-sdk";import{PendingSwapNetworkStatus as ee,SignerError as Lt}from"rango-types";import{RangoClient as ft}from"rango-sdk";var se,B=l(()=>se||(se=new ft($("API_KEY"),$("BASE_URL")),se),"httpService");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 We from"bignumber.js";var be=l((e,t=null,n=null)=>{if(e===null||e==="")return"";let r=new We(e),o=1,s=1e3;for(let i=0;i<60;i++)if(new We(r.toFixed(i,o)).eq(r)){s=i;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 i=t||4;i<17;i++)if(r.gte(Math.pow(10,-i)))return r.toFormat(Math.min(s,Math.min(n||100,Math.max(t||0,i))),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",Ue="Input wallet not found",I=class e extends Error{static{l(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",Ue,null,"Server requested for a blockchain or address not selected by user")}static BlockchainMissing(){return new e("CLIENT_UNEXPECTED_BEHAVIOUR",Ue,null,"Server requested for a blockchain or address not selected by user")}};function Me(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}}l(Me,"mapAppErrorCodesToAPIErrorCode");var Q=l(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 ie=(o=>(o.error="error",o.warning="warning",o.info="info",o.success="success",o))(ie||{}),U=l((e,t)=>{try{return M(e,t)}catch{return null}},"getCurrentBlockchainOfOrNull"),M=l((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=l(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=l((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 Be(e,t){return e.steps.find(n=>n.status!=="failed"&&n.status!=="success"&&n.id!==t.id)||null}l(Be,"getNextStep");var we=l((e,t)=>{let n=e.wallets[t.evmTransaction?.blockChain||""]||e.wallets[t.evmApprovalTransaction?.blockChain||""]||e.wallets[t.tronTransaction?.blockChain||""]||e.wallets[t.tronApprovalTransaction?.blockChain||""]||e.wallets[t.starknetTransaction?.blockChain||""]||e.wallets[t.starknetApprovalTransaction?.blockChain||""]||e.wallets[t.cosmosTransaction?.blockChain||""]||e.wallets[t.solanaTransaction?.blockChain||""]||e.wallets[t.tonTransaction?.blockChain||""]||(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=we(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,i=s?.walletType;if(s===null)throw I.AssertionFailed(`Wallet for source ${o} not passed: walletType: ${i}`);return s}l(H,"getRelatedWallet");function Ae(e,t){if(!t)return null;try{return H(e,t)}catch{return null}}l(Ae,"getRelatedWalletOrNull");var Qe=l((e,t,n,r)=>r?.find(s=>s.blockchain===e&&s.symbol?.toUpperCase()===t?.toUpperCase()&&s.address===n)?.usdPrice||null,"getUsdPrice");function Nt(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=Qe(o.asset.blockchain,o.asset.symbol,o.asset.address,t);n=n.plus(new Le(o.amount).multipliedBy(s||0))}return n}l(Nt,"getUsdFeeOfStep");function Fe(e,t){return{fromBlockchain:e.from.blockchain,fromBlockchainLogo:e.from.blockchainLogo,fromLogo:e.from.logo,fromSymbol:e.from.symbol,fromSymbolAddress:e.from.address,fromDecimals:e.from.decimals,fromAmountPrecision:e.fromAmountPrecision,fromAmountMinValue:e.fromAmountMinValue,fromAmountMaxValue:e.fromAmountMaxValue,fromAmountRestrictionType:e.fromAmountRestrictionType,fromUsdPrice:e.from.usdPrice,toBlockchain:e.to.blockchain,toBlockchainLogo:e.to.blockchainLogo,toSymbol:e.to.symbol,toSymbolAddress:e.to.address,toDecimals:e.to.decimals,toLogo:e.to.logo,toUsdPrice:e.to.usdPrice,swapperId:e.swapperId,swapperLogo:e.swapperLogo,swapperType:e.swapperType,expectedOutputAmountHumanReadable:e.toAmount,feeInUsd:t?be(Nt(e,t?.tokens),null,8):null,estimatedTimeInSeconds:e.estimatedTimeInSeconds||null,internalSteps:null}}l(Fe,"mapSwapStepToPendingSwapStep");function It(e,t,n,r,o,s){let i=t.result;if(!i)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:i,validateBalanceOrFee:o,steps:t.result?.swaps?.map((c,u)=>{let a=Fe(c,s);return{id:u+1,...a,internalSwaps:c?.internalSwaps?.map(p=>Fe(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}})||[]}}l(It,"calculatePendingSwap");function Xe(e){return e.map(t=>{let{diagnosisUrl:n,estimatedTimeInSeconds:r,explorerUrl:o,feeInUsd:s,executedTransactionId:i,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:i,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:L(t)}})}l(Xe,"createSteps");function Ot(e,t,n){let{creationTime:r,finishTime:o,requestId:s,inputAmount:i,status:c,wallets:u,steps:a,settings:p}=e,d=Xe(a),S={route:{creationTime:r,finishTime:o,requestId:s,inputAmount:i,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}l(Ot,"getEventPayload");function Pt(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&&$("emitter")?.emit("routeEvent",{event:n,route:t})}l(Pt,"emitRouteEvent");function Dt(e,t,n){$("emitter")?.emit("stepEvent",{event:e,route:t,step:n})}l(Dt,"emitStepEvent");function T(e){let{event:t}=e,{type:n}=t,{route:r,step:o}=Ot(e.swap,n,e.step??void 0),s=`${o.fromBlockchain}.${o.fromSymbol}`,i=`${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} ${i}, 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&&z(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&&z(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&&Dt({...t,message:a,messageSeverity:p},r,o),(e.event.type==="failed"||!e.step)&&Pt({...t,message:a,messageSeverity:p},r)}l(T,"notifier");var ye=null;function le(){return{claimedBy:()=>ye?.id,setClaimer:e=>{ye={id:e}},reset:()=>{ye=null}}}l(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}}}l(ce,"inMemoryTransactionsData");var y=l(e=>e.steps.find(t=>t.status!=="failed"&&t.status!=="success")||null,"getCurrentStep"),L=l(e=>{let{evmTransaction:t,evmApprovalTransaction:n,cosmosTransaction:r,solanaTransaction:o,transferTransaction:s,starknetApprovalTransaction:i,starknetTransaction:c,tronApprovalTransaction:u,tronTransaction:a,tonTransaction:p}=e;return t||n||r||o||s||i||c||u||a||p},"getCurrentStepTx"),ue=l((e,t)=>{e.transferTransaction=null,e.cosmosTransaction=null,e.evmTransaction=null,e.solanaTransaction=null,e.evmApprovalTransaction=null,e.starknetApprovalTransaction=null,e.starknetTransaction=null,e.tronApprovalTransaction=null,e.tronTransaction=null,e.tonTransaction=null;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"),_e=l(e=>L(e)?.type,"getCurrentStepTxType"),z=l(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:i=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=Ae(a,p)?.walletType;a.extraMessageSeverity="error";let f=Me(i);d.failureType=f;let _=i!=="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}l(O,"updateSwapStatus");function Ft({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}]),z(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})}l(Ft,"setStepTransactionIds");function Bt({getStorage:e,setStorage:t},n,r){let o=e().swapDetails,s=y(o);if(!s)return;let i=new Date;o.lastNotificationTime=i.getTime().toString(),!(s.networkStatus===ee.WaitingForConnectingWallet&&o.networkStatusExtraMessage===n&&o.networkStatusExtraMessageDetail===r)&&(s.networkStatus=ee.WaitingForConnectingWallet,o.networkStatusExtraMessage=n,o.networkStatusExtraMessageDetail=r,t({...e(),swapDetails:o}))}l(Bt,"markRunningSwapAsWaitingForConnectingWallet");function Ke({getStorage:e,setStorage:t}){let n=e().swapDetails,r=y(n);if(!r)return;let{type:o}=P(n),s=M(n,r),i=`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=ee.WaitingForNetworkChange,n.networkStatusExtraMessage=i,n.networkStatusExtraMessageDetail=c,t({...e(),swapDetails:n}),{swap:n,step:r}}l(Ke,"markRunningSwapAsSwitchingNetwork");function $e({getStorage:e,setStorage:t}){let n=e().swapDetails,r=y(n);if(r)return n.networkStatusExtraMessage="",n.networkStatusExtraMessageDetail="",r.networkStatus=ee.WaitingForQueue,T({event:{type:"tx_execution_blocked",status:"waiting_for_queue"},swap:n,step:r}),t({...e(),swapDetails:n}),{swap:n,step:r}}l($e,"markRunningSwapAsDependsOnOtherQueues");async function pe(e){return new Promise(t=>setTimeout(t,e))}l(pe,"delay");var Qt=l((e,t)=>e.wallets[t]?.walletType,"getSwapWalletType");function xe(e){return e===null||e?.blockchains===null||e?.blockchains.length===0}l(xe,"isWalletNull");function P(e){let t=y(e),n=U(e,t);if(!n)return{type:null,network:null,address:null};let r=Qt(e,n),o=e.wallets[n];return{type:r||null,network:n,address:o?o.address:null}}l(P,"getRequiredWallet");async function Xt(e){try{return await e.request({method:"eth_chainId"})||e?.chainId}catch{return e?.chainId}}l(Xt,"getChainId");async function Ve(e,t,n,r,o){if(xe(n))return!1;let s=U(e,t);if(!s)return!1;if(r.evmBasedChains.find(i=>i.name===s)){try{let i=e.wallets[s];if(i){let c=Mt(o,i.walletType),u=await Xt(c);if(u){let a=Ut(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(i){console.log(i)}return!1}return!0}l(Ve,"isNetworkMatchedForTransaction");var Ye=l((e,t)=>(e.wallets[t.evmTransaction?.blockChain||""]||e.wallets[t.evmApprovalTransaction?.blockChain||""]||e.wallets[t.tronTransaction?.blockChain||""]||e.wallets[t.tronApprovalTransaction?.blockChain||""]||e.wallets[t.starknetTransaction?.blockChain||""]||e.wallets[t.starknetApprovalTransaction?.blockChain||""]||e.wallets[t.cosmosTransaction?.blockChain||""]||e.wallets[t.solanaTransaction?.blockChain||""]||e.wallets[t.tonTransaction?.blockChain||""]||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}))}l(de,"resetNetworkStatus");function Je(e,t={message:"",details:"",status:null}){let{message:n,details:r,status:o}=t,{getStorage:s,setStorage:i}=e,c=s().swapDetails,u=y(c);u?.networkStatus&&(c.networkStatusExtraMessage=n,c.networkStatusExtraMessageDetail=r,u.networkStatus=o,i({...s(),swapDetails:c}))}l(Je,"updateNetworkStatus");function je(e,t){let{context:n,queue:r}=t,o=r.getStorage().swapDetails,{ok:s,reason:i}=ke(o,n.state);if(!s){let c=y(o),{type:u,address:a}=P(o);T({event:{type:"tx_execution_blocked",...i==="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}),Bt({getStorage:r.getStorage.bind(r),setStorage:r.setStorage.bind(r)},Pe,e.reason.description);return}r.unblock()}l(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 i=Ke({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;i&&T({event:{type:"tx_execution_blocked",status:"waiting_for_network_change",requiredNetwork:c??void 0,currentNetwork:a??void 0},swap:i.swap,step:i.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})})}}l(ze,"onBlockForChangeNetwork");function Ze(e,t){let{getBlockedTasks:n,forceExecute:r,queue:o,manager:s,context:i}=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}=P(f.swapDetails);r(S.queue_id,{claimedBy:u(),resetClaimedBy:()=>{a(),ve(`${_}-${E}:${m}`,s,i.canSwitchNetworkTo)}})}l(Ze,"onDependsOnOtherQueues");function ke(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:i}=o,c=s||[];return i?{ok:c.some(a=>{let{address:p}=bt(a);return r.toLocaleLowerCase()===p.toLocaleLowerCase()}),reason:"account_miss_match"}:{ok:!1,reason:"not_connected"}}l(ke,"isRequiredWalletConnected");function et(e){let{setTransactionDataByHash:t}=ce(),{getStorage:n,setStorage:r,failed:o,next:s,schedule:i,context:c}=e,{meta:u,getSigners:a,isMobileWallet:p}=c,d=n().swapDetails,g=y(d),S=H(d,g),f=p(S?.walletType),_=we(d,g),E=a(S.walletType),m=M(d,g),w=l(()=>{e.context.resetClaimedBy&&e.context.resetClaimedBy()},"onFinish"),C=L(g),A=C?.type,x=z(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,Y,K;x?(b=`Waiting for approval of ${g?.fromSymbol} coin ${f?"on your mobile phone!":""}`,Y="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",Y="",K="failed"):(b="Executing transaction ...",q="running",N="running",Y=`${f?"Check your mobile phone!":""}`,K="tx_execution");let Se=O({getStorage:n,setStorage:r,nextStepStatus:q,nextStatus:N,message:b,details:Y,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:D})=>{let ne=j(h,m,u.blockchains);Ft(e,h,ne&&(!D||D&&!D.hashRequiringUpdate)?{url:ne,description:x?"Approve":"Swap"}:void 0),D&&t(h,{response:D}),i("CHECK_TRANSACTION_STATUS"),s(),w()},h=>{if(d.status==="failed")return;let{extraMessage:D,extraMessageDetail:ne,extraMessageErrorCode:Et}=Q(h);Wt(h,{tags:{requestId:d.requestId,rpc:!0,swapper:g?.swapperId||"",walletType:S?.walletType||""},context:Lt.isSignerError(h)?h.getErrorContext():{}});let Ie=O({getStorage:n,setStorage:r,nextStatus:"failed",nextStepStatus:"failed",message:D,details:ne,errorCode:Et,trace:h?.cause});T({event:{type:"failed",reason:D,reasonCode:Ie.failureType??k},...Ie}),o(),w()})}l(et,"signTransaction");function tt(e){let{wallet_network:t,evmChains:n,manager:r}=e,[o,s]=qe(t);n.some(i=>i.name==s)&&r?.getAll().forEach(i=>{let c=i.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(i.list.state.tasks).some(S=>{let f=i.list.state.tasks[S];return f.status===Ce.BLOCKED&&["waiting_for_connecting_wallet"].includes(f.blockedFor?.reason)}),g=U(u,a);if(p===o&&d&&g!=s){let S=i.list,{type:f}=P(u),_=ae(f);i.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})}}}})}l(tt,"checkWaitingForConnectWalletChange");function Re(e){e?.getAll().forEach(t=>{if(Object.keys(t.list.state.tasks).some(r=>{let o=t.list.state.tasks[r];return o.status===Ce.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=oe(o);t.list.block({reason:{reason:"waiting_for_connecting_wallet",description:s}})}}})}l(Re,"checkWaitingForNetworkChange");function Ht(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}l(Ht,"getRunningSwaps");function Gt(e){e.forEach(t=>{let n=y(t),r="tx_execution_blocked",o;n?.networkStatus===ee.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})})}l(Gt,"resetRunningSwapNotifsOnPageLoad");function ve(e,t,n,r={fallbackToOnlyWallet:!0}){let[o,s]=qe(e);if(!o||!s)return;let i=[],c=[];t?.getAll().forEach(a=>{if(a.status===Ce.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?i.push(a.list):p?.swapDetails.wallets[g.fromBlockchain]?.walletType===o&&c.push(a.list))}}});let u;if(i.length>0){if(u=i[0],i.length>1)for(let a=1;a<i.length;a++){let p=i[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()}l(ve,"retryOn");function nt(e){return!!e.evmTransaction||!!e.evmApprovalTransaction}l(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}l(rt,"throwOnOK");function qt(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}l(qt,"cancelSwap");function Z(e){return e.slice().reverse().find(t=>t.status==="success")}l(Z,"getLastSuccessfulStep");function He(e){return e.slice().reverse().find(t=>t.status==="failed")}l(He,"getFailedStep");function Kt(e){let{transaction:t}=e;return t?.type===W.EVM&&t.isApprovalTx||t?.type===W.STARKNET&&t.isApprovalTx||t?.type===W.TRON&&t.isApprovalTx}l(Kt,"isApprovalTX");var ot=5e3,$t=5e3;async function Vt({getStorage:e,setStorage:t,next:n,schedule:r,retry:o,failed:s,context:i}){let c=e().swapDetails,{meta:u}=i,a=y(c);if(!a?.executedTransactionId)return;let p=L(a),d=a.executedTransactionId,g=!1,S=null,f=null,{getTransactionDataByHash:_,setTransactionDataByHash:E}=ce();try{let A=_e(a),x=H(c,a);A&&x&&(f=i.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=Be(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())}l(Vt,"checkTransactionStatus");async function Yt({getStorage:e,setStorage:t,next:n,schedule:r,retry:o,failed:s,context:i}){let c=e().swapDetails,{meta:u}=i,{getTransactionDataByHash:a,setTransactionDataByHash:p}=ce(),d=y(c);if(!d){console.log("ignore check status, current step is null");return}let g=L(d);if(!d?.executedTransactionId)return;let S=d.executedTransactionId,f=null;try{let E=_e(d),m=H(c,d);E&&m&&(f=i.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($t),o())}l(Yt,"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 Vt(e):n.status==="waitingForApproval"&&await Yt(e)}l(at,"checkStatus");async function st(e){let{setStorage:t,getStorage:n,next:r,schedule:o}=e,s=n().swapDetails,i=y(s);if(!L(i)){T({event:{type:"tx_execution",status:"create_tx"},swap:s,step:i});let u={requestId:s.requestId,step:i.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(i,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()}}}l(st,"createTransaction");import{PendingSwapNetworkStatus as Jt}from"rango-types";async function it(e){let{getStorage:t,context:n}=e,{meta:r,wallets:o,providers:s}=n,{claimedBy:i}=le(),c=n.claimedBy===n._queue?.id,u=l(E=>{e.block(E),c&&e.context.resetClaimedBy&&e.context.resetClaimedBy()},"requestBlock"),a=t().swapDetails,p=y(a);if(de(e),!ke(a,n.state).ok){let{type:E,address:m}=P(a),w=o?.blockchains?.find(x=>!x.accounts?.find(v=>v.walletType===E)),C=xe(o)||w?oe(E):De(E,m),A={reason:"waiting_for_connecting_wallet",description:C};u(A);return}let g=await Ve(a,p,o,r,s);if(!!i()&&!c&&!g){let E=me,m={reason:"depends_on_other_queues",details:E};u(m);return}else if(!g){let E=M(a,p),m=ae(E),w={reason:"waiting_for_network_change",details:m};u(w);return}if(Je(e,{message:"",details:"Wallet network changed successfully",status:Jt.NetworkChanged}),nt(p)&&!c){let E={reason:"depends_on_other_queues",description:me,details:{}};u(E);return}et(e)}l(it,"executeTransaction");function lt({schedule:e,next:t,failed:n,setStorage:r,getStorage:o}){let s=o().swapDetails,i=y(s),c=s.steps.find(u=>u.status==="failed");if(i&&!c){if(Ye(s,i))return e("EXECUTE_TRANSACTION"),t();if(i?.executedTransactionId)return e("CHECK_TRANSACTION_STATUS"),t();s.status="running",r({...o(),swapDetails:s}),T({event:{type:"started"},swap:s,step:i}),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()}l(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()}l(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 tn}from"@rango-dev/queue-manager-react";import{useEffect as Ne,useState as nn}from"react";import{DB_NAME as jt,Persistor as zt,Status as te}from"@rango-dev/queue-manager-core";import{v4 as Zt}from"uuid";var pt="migratedToQueueManager";function he(){return!!window.localStorage.getItem(pt)}l(he,"migrated");async function en(){try{return(await window.indexedDB.databases()).map(e=>e.name).includes(jt)}catch{return!1}}l(en,"hasQueueManagerOnIDB");async function dt(){let e=window.localStorage.getItem("pendingSwaps"),t=await en();if(!e||he()||t)return!0;let n=JSON.parse(e),r=[];n.forEach(i=>{if(i.status==="running"){let c=Zt(),u={id:i.requestId,createdAt:Number(i.creationTime),name:"swap",status:te.RUNNING,storage:{swapDetails:i},state:{status:te.RUNNING,activeTaskIndex:0,tasks:{[c]:{blockedFor:null,status:te.RUNNING}}},tasks:[{id:c,action:"SCHEDULE_NEXT_STEP"}]};r.push(u)}else{let c=i.status==="success"?te.SUCCESS:te.FAILED,u={id:i.requestId,createdAt:Number(i.creationTime),name:"swap",status:c,storage:{swapDetails:i},state:{status:c,activeTaskIndex:0,tasks:{}},tasks:[]};r.push(u)}});let o=new zt,s=r.map(async i=>o.insertQueue(i));return await Promise.all(s),window.localStorage.setItem(pt,"1"),!0}l(dt,"migration");var St=0;function rn(){let e=he(),[t,n]=nn(e);return Ne(()=>{(async()=>St||(St=1,dt().finally(()=>{n(!0)})))()},[]),{status:t}}l(rn,"useMigration");function on(e){let{manager:t}=tn();Ne(()=>{e.lastConnectedWallet&&(tt({evmChains:e.evmChains,wallet_network:e.lastConnectedWallet,manager:t}),ve(e.lastConnectedWallet,t,e.canSwitchNetworkTo))},[e.lastConnectedWallet]),Ne(()=>{e.disconnectedWallet&&(Re(t),e.clearDisconnectedWallet())},[e.disconnectedWallet])}l(on,"useQueueManager");function no(e){return Oe(e),ut}l(no,"makeQueueDefinition");export{fe as EventSeverity,ie as MessageSeverity,I as PrettyError,Te as RouteEventType,F as StepEventType,re as StepExecutionBlockedEventStatus,J as StepExecutionEventStatus,ge as WidgetEvents,It as calculatePendingSwap,qt as cancelSwap,Re as checkWaitingForNetworkChange,U as getCurrentBlockchainOfOrNull,y as getCurrentStep,Z as getLastSuccessfulStep,H as getRelatedWallet,Ae as getRelatedWalletOrNull,P as getRequiredWallet,Ht as getRunningSwaps,Qe as getUsdPrice,Kt as isApprovalTX,no as makeQueueDefinition,Q as prettifyErrorMessage,Gt as resetRunningSwapNotifsOnPageLoad,O as updateSwapStatus,rn as useMigration,on as useQueueManager};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|