UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

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