UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

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