require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/activities.types.cjs`),t=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../error-handling/logger.cjs`);require(`../../error-handling/index.cjs`);const i=require(`../../constants/tx-confirmation.constants.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);require(`../../functions/index.cjs`);let o=require(`idb-keyval`);var s=class{generateTxId(){return`tx_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async getTransactionRecord(){return await(0,o.get)(t.StorageKeys.TX_ACTIVITY)||{}}async saveTxRequest(n){let{from:r,to:i,gasInDollar:a,extraNativeTokenFee:s,chainId:c,status:l,txHash:u,activityType:d,tokensReceive:f,tokensSpend:p,tokensApprove:m,activityIcon:h,dappUrl:g,dappName:_,integrationProvider:v,knownPartialSignature:y}=n,b=this.generateTxId(),x={id:b,from:r,to:i,gasInDollar:a?.toString(),extraNativeTokenFee:s?.toString(),chainId:c,txHash:u,activityType:d,status:l??e.ActivityStatus.PENDING,timestamp:new Date,tokensReceive:f,tokensSpend:p,tokensApprove:m,activityIcon:h,dappUrl:g,dappName:_,integrationProvider:v,knownPartialSignature:y};return await(0,o.update)(t.StorageKeys.TX_ACTIVITY,(e={})=>(e[b]=x,e)),b}async getTxRequest(e){return(await this.getTransactionRecord())[e]||null}async getAllTxRequests(e){let t=await this.getTransactionRecord();return Object.values(t).filter(t=>t.chainId===e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}async updateTxHash(e,n){let r=await this.getTxRequest(e);if(!r)throw Error(`Activity not found`);let i={...r,txHash:n};await(0,o.update)(t.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=i,t))}async updateTxStatusAndHash(e,n,r){let i=await this.getTxRequest(e);if(!i)throw Error(`Transaction not found`);let a={...i,status:n,txHash:r,timestamp:new Date};return await(0,o.update)(t.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=a,t)),a}async updateActivity(e,t,n){try{await this.updateTxStatusAndHash(e,t,n)}catch(e){r.Logger.error(`error in updating tx request`,e)}}async removePendingTransactions(e){try{await(0,o.update)(t.StorageKeys.TX_ACTIVITY,(t={})=>(delete t[e],t))}catch(e){r.Logger.error(`error in deleting tx requests`,e)}}async updatePendingTransactions(t,o,s,c){try{let r=await this.getTxRequest(o);if(!r)throw Error(`Transaction not found`);let{chainId:l}=r;if(!t.success){c?.(t.error),await this.updateActivity(o,e.ActivityStatus.FAILED,`erroredTx`in t?t.erroredTx:void 0);return}if(`txHash`in t){let{txHash:r}=t;try{await a.waitForTransactionConfirmation(l,r,{evmTimeoutMs:i.RELAYER_TX_CONFIRMATION_TIMEOUT})}catch(t){let i=t instanceof Error?t:Error(n.transactionErrorCodes.UNKNOWN);c?.(i),await this.updateActivity(o,e.ActivityStatus.FAILED,r);return}s?.(),await this.updateActivity(o,e.ActivityStatus.SUCCESSFUL,r)}}catch(e){r.Logger.error(`error in updating pending transactions`,e)}}},c=new s;exports.ActivityStorage=s,exports.activityStorage=c;