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