UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

2 lines (1 loc) 5.59 kB
import{Transaction as e,ComputeBudgetProgram as n,LAMPORTS_PER_SOL as i,PublicKey as a,Connection as o,clusterApiUrl as t,TransactionInstruction as r}from"@solana/web3.js";import{ErrorsType as l}from"../constant/index.js";import{getSolanaEnvByChainId as s}from"./getEtherScanURL.utils.js";import{customErrorMessage as c}from"./customErrorMessage.utils.js";import{getSolanaBalance as u}from"./getSolanaBalance.utils.js";import{fetchSolanaPriorityFee as d}from"./fetchSolanaPriorityFee.utils.js";const v=async(v,f,m,p,g,h,w,y,b,k,E=.00228288)=>{var S,T,I,D,B,C,L,P,R,U,j,x,A,F,_,M,W;try{if(!m)return{success:!1,error:"Your wallet session has been closed. Please reconnect your wallet to continue."};const f=s(g),M=await u(v,f,b),{err:W,instruction:H,connectedPublicKey:O,connection:V}=await(async(e,n,i,l,u)=>{var d,v,f,m,p;try{const c=new a(e),g=s(n),h=new o(u||t(g),{confirmTransactionInitialTimeout:3e5,commitment:"confirmed"}),w=new a(null!==(d=null==l?void 0:l.seller)&&void 0!==d?d:""),y=new a(null!==(v=null==l?void 0:l.offer)&&void 0!==v?v:""),b=new a(null!==(f=null==l?void 0:l.offerEscrow)&&void 0!==f?f:""),k=new a(null!==(m=null==l?void 0:l.systemProgram)&&void 0!==m?m:""),E=new a((null==l?void 0:l.mintAccount)||i);return{instruction:new r({programId:b,keys:[{pubkey:c,isSigner:!0,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:E,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0}],data:Buffer.concat([Buffer.from(null!==(p=null==l?void 0:l.descriminator)&&void 0!==p?p:[])])}),connectedPublicKey:c,connection:h,err:null}}catch(e){return{err:c(e)}}})(v,g,w,y,b);if(!W&&H){if("phantom"===p.toLowerCase()||"backpack"===p.toLowerCase()){const a=new e({feePayer:O}).add(H),o=await V.getLatestBlockhash("confirmed");a.recentBlockhash=o.blockhash,a.lastValidBlockHeight=o.lastValidBlockHeight,a.add(n.setComputeUnitLimit({units:14e5}));const t=await d(b,a.serialize({verifySignatures:!1})),r=n.setComputeUnitPrice({microLamports:t});a.add(r);const s=await V.getFeeForMessage(a.compileMessage(),"confirmed"),u=(null!==(S=null==s?void 0:s.value)&&void 0!==S?S:0)+E*i,f=M.native*i;if(f<=0||f<u)return{success:!1,error:"Insufficient SOL for initiating the transaction."};try{h("Initiating cancel offer transaction.");const e=await(null===(I=null===(T=null==m?void 0:m.adapter)||void 0===T?void 0:T.sendTransaction)||void 0===I?void 0:I.call(T,a,V,{skipPreflight:!0,preflightCommitment:"confirmed"}));await V.confirmTransaction(Object.assign({signature:e},o),"confirmed");const n=await V.getSignatureStatus(e);return null===(null===(D=null==n?void 0:n.value)||void 0===D?void 0:D.err)?{success:!0,response:{hash:e}}:(null==k||k({key:"Additional Data",value:{address:v,balance:M,providerType:p,chainId:g,path:"Inside an cancel offer solana contract function - 136"}},{exception:null===(B=null==n?void 0:n.value)||void 0===B?void 0:B.err}),{success:!1,error:"Transaction Failed"})}catch(e){return(null===(L=null===(C=null==e?void 0:e.message)||void 0===C?void 0:C.includes)||void 0===L?void 0:L.call(C,l.USER_REJECTED))||(null===(P=null==e?void 0:e.includes)||void 0===P?void 0:P.call(e,l.USER_REJECTED))||(null===(R=null==e?void 0:e.includes)||void 0===R?void 0:R.call(e,l.USER_DENIED))||(null===(j=null===(U=null==e?void 0:e.message)||void 0===U?void 0:U.includes)||void 0===j?void 0:j.call(U,l.USER_DENIED))?{success:!1,error:"Transaction has been cancelled by user"}:(null==k||k({key:"Additional Data",value:{address:v,balance:M,providerType:p,chainId:g,path:"Inside an cancel offer solana contract function - 164"}},{exception:e}),{success:!1,error:c(e)})}}if("magic"===p.toLowerCase()){const a=new e({feePayer:O}).add(H),o=await V.getLatestBlockhash("confirmed");a.recentBlockhash=o.blockhash,a.lastValidBlockHeight=o.lastValidBlockHeight,a.add(n.setComputeUnitLimit({units:14e5}));const t=await d(b,a.serialize({verifySignatures:!1})),r=n.setComputeUnitPrice({microLamports:t});a.add(r);const l=await V.getFeeForMessage(a.compileMessage(),"confirmed"),s=M.native*i,c=(null!==(x=null==l?void 0:l.value)&&void 0!==x?x:0)+E*i;if(s<=0||s<c)return{success:!1,error:"Insufficient SOL for initiating the transaction."};h("Initiating cancel offer transaction.");const u=await(null===(A=null==m?void 0:m.solana)||void 0===A?void 0:A.signTransaction(a,{requireAllSignatures:!1,verifySignatures:!0})),f=await V.sendRawTransaction(Buffer.from(u.rawTransaction,"base64"),{skipPreflight:!0,preflightCommitment:"confirmed"});await V.confirmTransaction(Object.assign({signature:f},o),"confirmed");const w=await V.getSignatureStatus(f);return null===(null===(F=null==w?void 0:w.value)||void 0===F?void 0:F.err)?{success:!0,response:{hash:f}}:(null==k||k({key:"Additional Data",value:{address:v,balance:M,providerType:p,chainId:g,path:"Inside an cancel offer solana contract function - 233"}},{exception:null===(_=null==w?void 0:w.value)||void 0===_?void 0:_.err}),{success:!1,error:"Transaction Failed"})}}return W?(null==k||k({key:"Additional Data",value:{address:v,balance:M,providerType:p,chainId:g,path:"Inside an make offer solana contract function - 252"}},{exception:W}),{success:!1,error:c(W)}):null}catch(e){return(null===(M=e.message)||void 0===M?void 0:M.includes(l.USER_REJECTED))||(null===(W=e.message)||void 0===W?void 0:W.includes(l.USER_DENIED))?{success:!1,error:"Transaction has been cancelled by user"}:(null==k||k({key:"Additional Data",value:{address:v,providerType:p,chainId:g,path:"Inside an make offer solana contract function - 267"}},{exception:e}),{success:!1,error:c(e)})}};export{v as cancelOfferSolanaItem};