UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

2 lines (1 loc) 2.69 kB
import{Transaction as a,ComputeBudgetProgram as e,LAMPORTS_PER_SOL as i}from"@solana/web3.js";import{getAccount as t,getAssociatedTokenAddressSync as l,TOKEN_PROGRAM_ID as n,ASSOCIATED_TOKEN_PROGRAM_ID as o,createAssociatedTokenAccountInstruction as s}from"@solana/spl-token";import{fetchSolanaPriorityFee as r}from"./fetchSolanaPriorityFee.utils.js";const c=async(c,u,d,v,m,f,g,h,p=0,w,B=.00228288)=>{var k,b,y,A,C,S,L;try{return await t(c,u,"confirmed"),{isAvailable:!0,usedBalance:0}}catch(t){const u=l(v,d,!1,n,o);f("Creating token approval.");const P=(new a).add(s(m,u,d,v,n,o));if("backpack"===(null==h?void 0:h.toLowerCase())||"phantom"===(null==h?void 0:h.toLowerCase())){const a=await c.getLatestBlockhash("confirmed");P.recentBlockhash=a.blockhash,P.lastValidBlockHeight=a.lastValidBlockHeight,P.feePayer=m,P.add(e.setComputeUnitLimit({units:14e5}));const t=await r(w,P.serialize({verifySignatures:!1})),l=e.setComputeUnitPrice({microLamports:t});P.add(l);const n=await c.getFeeForMessage(P.compileMessage(),"confirmed"),o=(null!=p?p:0)*i,s=(null!==(k=null==n?void 0:n.value)&&void 0!==k?k:0)+B*i;if(o>0&&o>s)try{const e=await(null===(y=null===(b=null==g?void 0:g.adapter)||void 0===b?void 0:b.sendTransaction)||void 0===y?void 0:y.call(b,P,c,{skipPreflight:!0,preflightCommitment:"confirmed"}));await c.confirmTransaction(Object.assign({signature:e},a),"confirmed");const i=await c.getSignatureStatus(e);return null===(null===(A=null==i?void 0:i.value)||void 0===A?void 0:A.err)?{isAvailable:!0,usedBalance:s}:{isAvailable:!1,usedBalance:0}}catch(a){return{isAvailable:!1,usedBalance:0}}}else{const a=await(null==c?void 0:c.getLatestBlockhash("confirmed"));P.recentBlockhash=a.blockhash,P.feePayer=m,P.lastValidBlockHeight=a.lastValidBlockHeight,P.add(e.setComputeUnitLimit({units:14e5}));const t=await r(w,P.serialize({verifySignatures:!1})),l=e.setComputeUnitPrice({microLamports:t});P.add(l);const n=await c.getFeeForMessage(P.compileMessage(),"confirmed"),o=(null!=p?p:0)*i,s=(null!==(C=null==n?void 0:n.value)&&void 0!==C?C:0)+B*i;if(o>0&&o>s)try{const e=await(null===(S=null==g?void 0:g.solana)||void 0===S?void 0:S.signTransaction(P,{requireAllSignatures:!1,verifySignatures:!0})),i=await c.sendRawTransaction(Buffer.from(e.rawTransaction,"base64"),{skipPreflight:!0,preflightCommitment:"confirmed"});await c.confirmTransaction(Object.assign({signature:i},a),"confirmed");const t=await c.getSignatureStatus(i);return null===(null===(L=null==t?void 0:t.value)||void 0===L?void 0:L.err)?{isAvailable:!0,usedBalance:s}:{isAvailable:!1,usedBalance:0}}catch(a){return{isAvailable:!1,usedBalance:0}}}return{isAvailable:!1,usedBalance:0}}};export{c as getOrInitializeAccount};