UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 87.3 kB
var Oo=Object.defineProperty,No=Object.defineProperties;var Mo=Object.getOwnPropertyDescriptors;var bt=Object.getOwnPropertySymbols;var An=Object.prototype.hasOwnProperty,wn=Object.prototype.propertyIsEnumerable;var Pn=(s,e,t)=>e in s?Oo(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,O=(s,e)=>{for(var t in e||(e={}))An.call(e,t)&&Pn(s,t,e[t]);if(bt)for(var t of bt(e))wn.call(e,t)&&Pn(s,t,e[t]);return s},W=(s,e)=>No(s,Mo(e));var be=(s,e)=>{var t={};for(var o in s)An.call(s,o)&&e.indexOf(o)<0&&(t[o]=s[o]);if(s!=null&&bt)for(var o of bt(s))e.indexOf(o)<0&&wn.call(s,o)&&(t[o]=s[o]);return t};import{PublicKey as Vo}from"@solana/web3.js";import{get as kn,set as Fo}from"lodash";var Et=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Tn={},vo={};function E(s){let e=kn(Tn,s);if(!e){let t=kn(vo,s);e=new Et({name:s,logLevel:t}),Fo(Tn,s,e)}return e}import{MINT_SIZE as Ea,TOKEN_PROGRAM_ID as Da,getTransferFeeConfig as Wa,unpackMint as qa}from"@solana/spl-token";var Dt=E("Raydium_accountInfo_util");async function he(s,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:r=100}=O({batchRequest:!1},t),u=Wt(e,r),c=new Array(u.length).fill([]);if(o){let b=u.map(A=>{let w=s._buildArgs([A.map(T=>T.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),d=Wt(b,10);c=(await(await Promise.all(d.map(async A=>await s._rpcBatchRequest(A)))).flat()).map(A=>(A.error&&Dt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${A.error.message}`),A.result.value.map(w=>{if(w){let{data:T,executable:L,lamports:k,owner:h,rentEpoch:S}=w;return T.length!==2&&T[1]!=="base64"&&Dt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:L,lamports:k,owner:new Vo(h),rentEpoch:S}}return null})))}else try{c=await Promise.all(u.map(b=>s.getMultipleAccountsInfo(b,i)))}catch(b){b instanceof Error&&Dt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import ve from"bn.js";import TC from"decimal.js";import zo from"big.js";import rs from"bn.js";import _o from"toformat";var Eo=_o,$e=Eo;import Pt from"big.js";import Wo from"bn.js";import qo from"decimal.js-light";import Je from"bn.js";var hn=9007199254740991;function ue(s){let e=E("Raydium_parseBigNumberish");if(s instanceof Je)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new Je(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=hn||s<=-hn)&&e.logWithError(`BigNumberish number overflow: ${s}`),new Je(String(s))):typeof s=="bigint"?new Je(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new Je(0))}var gt=E("module/fraction"),qt=$e(Pt),et=$e(qo),Uo={[0]:et.ROUND_DOWN,[1]:et.ROUND_HALF_UP,[2]:et.ROUND_UP},Go={[0]:Pt.roundDown,[1]:Pt.roundHalfUp,[2]:Pt.roundUp},G=class{constructor(e,t=new Wo(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.add(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.sub(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||gt.logWithError(`${e} is not an integer.`),e<=0&&gt.logWithError(`${e} is not positive.`),et.set({precision:e+1,rounding:Uo[o]});let i=new et(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||gt.logWithError(`${e} is not an integer.`),e<0&&gt.logWithError(`${e} is negative.`),qt.DP=e,qt.RM=Go[o]||1,new qt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var fs=E("Raydium_amount"),ys=$e(zo);import{PublicKey as Yo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as In}from"@solana/spl-token";var At={chainId:101,address:Yo.default.toBase58(),programId:In.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ge={chainId:101,address:"So11111111111111111111111111111111111111112",programId:In.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as Gt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Bn,SYSVAR_RENT_PUBKEY as Qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zo}from"@solana/spl-token";function _e({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var Ho=[_e({pubkey:Zo,isWritable:!1}),_e({pubkey:Bn.programId,isWritable:!1}),_e({pubkey:Qo,isWritable:!1})];function Sn({publicKey:s,transformSol:e}){let t=xn(s.toString());if(t instanceof X)return e&&t.equals(Re)?Ie:t;if(e&&t.toString()===Re.toBase58())return Ie;if(typeof t=="string"){if(t===X.default.toBase58())return X.default;try{return new X(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function xn(s){try{return new X(s)}catch{return s}}var Ut=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new X("SysvarRent111111111111111111111111111111111"),hs=new X("SysvarC1ock11111111111111111111111111111111"),wt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),jo=new X("Sysvar1nstructions1111111111111111111111111"),$o=Bn.programId,Is=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Bs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ss=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),xs=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ks=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Cs=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Rs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ls=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Os=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ns=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ms=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ie=new X("So11111111111111111111111111111111111111112"),Re=X.default;var zt=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:r=!1,isToken2022:u=!1}){if(e===Re.toBase58()||e instanceof Gt&&Re.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new Gt(ge.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?Gt.default:Sn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},re=zt;re.WSOL=new zt(W(O({},ge),{mint:ge.address}));var Xt=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},kt=Xt;kt.SOL=new Xt(At);import Jo from"bn.js";var Xs=new G(new Jo(100));var $s=E("Raydium_price");import{merge as IK}from"lodash";import su from"axios";var Kn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},ei=W(O({},Kn),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var Ru=E("Raydium_Api");import{PublicKey as Zl,SystemProgram as Hl}from"@solana/web3.js";import{AccountLayout as tm,createAssociatedTokenAccountIdempotentInstruction as nm,TOKEN_PROGRAM_ID as om,TOKEN_2022_PROGRAM_ID as im}from"@solana/spl-token";import{PublicKey as Ue,sendAndConfirmTransaction as $t,SystemProgram as ai,Transaction as it,TransactionMessage as rt,VersionedTransaction as at}from"@solana/web3.js";import si from"axios";import{PublicKey as Yt,AddressLookupTableAccount as We}from"@solana/web3.js";async function Qt({connection:s,address:e,cluster:t="mainnet"}){let o=await he(s,[...new Set(e.map(r=>r.toString()))].map(r=>new Yt(r))),i={};for(let r=0;r<e.length;r++){let u=o[r],c=e[r];if(!u)continue;let b=new We({key:c,state:We.deserialize(u.data)});i[c.toString()]=b,t==="devnet"?De[c.toString()]=b:Ee[c.toString()]=b}return i}var Ee={},Zt=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ee[e])return Ee;let t=new Yt(e),o=await s.getAccountInfo(t);return o&&(Ee[e]=new We({key:t,state:We.deserialize(o.data)})),Ee},De={},Ht=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(De[e])return De;let t=new Yt(e),o=await s.getAccountInfo(t);return o&&(De[e]=new We({key:t,state:We.deserialize(o.data)})),De};var ne={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Cn,Keypair as Ln,PublicKey as ti,Transaction as On,TransactionMessage as ni,VersionedTransaction as Nn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oi}from"@solana/spl-token";var Rn=E("Raydium_txUtil"),Mn=1644;function Tt(s){let e=[],t=[];return s.microLamports&&(e.push(Cn.setComputeUnitPrice({microLamports:s.microLamports})),t.push(ne.SetComputeUnitPrice)),s.units&&(e.push(Cn.setComputeUnitLimit({units:s.units})),t.push(ne.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function qe(s,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=s.getLatestBlockhash)==null?void 0:o.call(s,{commitment:t})))==null?void 0:i.blockhash}async function ht(s,e){return s.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);s.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}o(Object.assign(r.err,{txId:e}))},"confirmed")})}function jt(s,e){s.length<1&&Rn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Rn.logWithError(`no signers provided:, ${e.toString()}`);let t=new On;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Mn}catch{return!1}}function Pe(s,e){let[t,o]=ti.findProgramAddressSync(s,e);return{publicKey:t,nonce:o}}function nt({instructions:s,payer:e,signers:t}){return jt(s,[e,...t])}function ot({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Ln.generate().publicKey.toString()}){let r=new ni({payerKey:e,recentBlockhash:o,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Nn(r).serialize()).toString("base64").length<Mn}catch{return!1}}var ii=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),ri=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Nn&&(e=ii(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Le(s){let e=[];return s.forEach(t=>{t instanceof On&&(t.recentBlockhash||(t.recentBlockhash=oi.toBase58()),t.feePayer||(t.feePayer=Ln.generate().publicKey)),e.push(ri(t))}),console.log("simulate tx string:",e),e}var It=2e3,Bt=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var o;let e=(await si.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=Tt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ai.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ue(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ne.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...u.filter(c=>c!==Ue.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(W(O({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new it;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var y;let{recentBlockHash:r,skipPreflight:u=!0,sendAndConfirm:c,notSendToRpc:b}=i||{},d=r!=null?r:await qe(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Le([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await $t(this.connection,t,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let A=await this.signAllTransactions([t]);if(this.signers.length)for(let w of A)try{w.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(A[0].serialize(),{skipPreflight:u}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),r=t.filter(y=>y.transaction.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:b,execute:async y=>{var S;let{sequentially:A,onTxUpdate:w,skipTxCount:T=0,recentBlockHash:L,skipPreflight:k=!0}=y||{},h=L!=null?L:await qe(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(A){let C=[],v=0;for(let V of u){if(++v,v<=T)continue;let P=await $t(this.connection,V,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});C.push(P)}return{txIds:C,signedTxs:u}}return{txIds:await await Promise.all(u.map(async C=>(C.recentBlockhash=h,await this.connection.sendRawTransaction(C.serialize(),{skipPreflight:k})))),signedTxs:u}}if(this.signAllTransactions){let C=u.map((V,P)=>(V.recentBlockhash=h,c[P].length&&V.sign(...c[P]),V));Le(C);let v=await this.signAllTransactions(C);if(A){let V=0,P=[],I=async()=>{if(!v[V])return;let B=await this.connection.sendRawTransaction(v[V].serialize(),{skipPreflight:k});P.push({txId:B,status:"sent",signedTx:v[V]}),w==null||w([...P]),V++;let R=!1,N=null,_=null,le=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let q=P.findIndex(ie=>ie.txId===B);if(q>-1){if(P[q].status==="error"||P[q].status==="success")return;P[q].status=U.err?"error":"success"}w==null||w([...P]),U.err||I()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(R){clearInterval(N);return}try{let q=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});q&&(R=!0,clearInterval(N),le({err:((U=q.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(q){R=!0,clearInterval(N),console.error("getTransaction timeout:",q,B)}},It)),_=this.connection.onSignature(B,U=>{if(R){this.connection.removeSignatureListener(_);return}R=!0,le(U)},"confirmed"),this.connection.getSignatureStatus(B)};return await I(),{txIds:P.map(B=>B.txId),signedTxs:v}}else{let V=[];for(let P=0;P<v.length;P+=1){let I=await this.connection.sendRawTransaction(v[P].serialize(),{skipPreflight:k});V.push(I)}return{txIds:V,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var k;let L=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:r}=L,u=be(L,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await Ht(this.connection):await Zt(this.connection)),t),b=Array.from(new Set([...o,...this.lookupTableAddress])),d=[];for(let h of b)c[h]===void 0&&d.push(new Ue(h));let y=await Qt({connection:this.connection,address:d});for(let[h,S]of Object.entries(y))c[h]=S;let A=i?Ue.default.toBase58():r!=null?r:await qe(this.connection,this.blockhashCommitment),w=new rt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((k=this.owner)==null?void 0:k.signer)&&!this.signers.some(h=>h.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new at(w);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async h=>{var V;let{skipPreflight:S=!0,sendAndConfirm:C,notSendToRpc:v}=h||{};if(Le([T]),(V=this.owner)!=null&&V.isKeyPair){let P=await this.connection.sendTransaction(T,{skipPreflight:S});return C&&await ht(this.connection,P),{txId:P,signedTx:T}}if(this.signAllTransactions){let P=await this.signAllTransactions([T]);if(this.signers.length)for(let I of P)try{I.sign(this.signers)}catch{}return{txId:v?"":await this.connection.sendTransaction(P[0],{skipPreflight:S}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),r=t.filter(y=>y.builder.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(y,A)=>{y.sign(c[A])}),{builder:this,transactions:u,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var k;let{sequentially:A,onTxUpdate:w,recentBlockHash:T,skipPreflight:L=!0}=y||{};if(T&&u.forEach(h=>h.message.recentBlockhash=T),Le(u),(k=this.owner)!=null&&k.isKeyPair){if(A){let h=[];for(let S of u){let C=await this.connection.sendTransaction(S,{skipPreflight:L});await ht(this.connection,C),h.push(C)}return{txIds:h,signedTxs:u}}return{txIds:await Promise.all(u.map(async h=>await this.connection.sendTransaction(h,{skipPreflight:L}))),signedTxs:u}}if(this.signAllTransactions){let h=await this.signAllTransactions(u);if(A){let S=0,C=[],v=async()=>{if(!h[S])return;let V=await this.connection.sendTransaction(h[S],{skipPreflight:L});C.push({txId:V,status:"sent",signedTx:h[S]}),w==null||w([...C]),S++;let P=!1,I=null,B=null,R=N=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let _=C.findIndex(le=>le.txId===V);if(_>-1){if(C[_].status==="error"||C[_].status==="success")return;C[_].status=N.err?"error":"success"}w==null||w([...C]),N.err||v()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var N;if(P){clearInterval(I);return}try{let _=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(P=!0,clearInterval(I),R({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",V))}catch(_){P=!0,clearInterval(I),console.error("getTransaction timeout:",_,V)}},It)),B=this.connection.onSignature(V,N=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,R(N)},"confirmed"),this.connection.getSignatureStatus(V)};return v(),{txIds:[],signedTxs:h}}else{let S=[];for(let C=0;C<h.length;C+=1){let v=await this.connection.sendTransaction(h[C],{skipPreflight:L});S.push(v)}return{txIds:S,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var w;let A=e||{},{splitIns:t=[],computeBudgetConfig:o}=A,i=be(A,["splitIns","computeBudgetConfig"]),r=o?Tt(o):{instructions:[],instructionTypes:[]},u=this.signers.reduce((T,L)=>W(O({},T),{[L.publicKey.toBase58()]:L}),{}),c=[],b=[],d=[],y=0;if(this.allInstructions.forEach(T=>{let L=[...d,T],k=o?[...r.instructions,...L]:L,S=[...new Set(L.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat()).values()].map(C=>new Ue(C));if(T!==t[y]&&d.length<12&&(nt({instructions:k,payer:this.feePayer,signers:S})||nt({instructions:L,payer:this.feePayer,signers:S})))d.push(T);else{if(d.length===0)throw Error("item ins too big");y+=T===t[y]?1:0,nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:S})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(Array.from(new Set(d.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(C=>u[C]).filter(C=>C!==void 0)),d=[T]}}),d.length>0){let L=[...new Set(d.map(k=>k.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(k=>u[k]).filter(k=>k!==void 0);nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:L.map(k=>k.publicKey)})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(L)}return c.forEach(T=>T.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&b.forEach(T=>{T.some(L=>L.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async T=>{var V;let{sequentially:L,onTxUpdate:k,skipTxCount:h=0,recentBlockHash:S,skipPreflight:C=!0}=T||{},v=S!=null?S:await qe(this.connection,this.blockhashCommitment);if(c.forEach(async(P,I)=>{P.recentBlockhash=v,b[I].length&&P.sign(...b[I])}),Le(c),(V=this.owner)!=null&&V.isKeyPair){if(L){let P=0,I=[];for(let B of c){if(++P,P<=h){I.push("tx skipped");continue}let R=await $t(this.connection,B,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:C});I.push(R)}return{txIds:I,signedTxs:c}}return{txIds:await Promise.all(c.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:C}))),signedTxs:c}}if(this.signAllTransactions){let P=await this.signAllTransactions(c.slice(h,c.length)),I=[...c.slice(0,h),...P];if(L){let B=0,R=[],N=async()=>{if(!I[B])return;B<h&&(R.push({txId:"",status:"success",signedTx:I[B]}),k==null||k([...R]),B++,N());let _=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:C});R.push({txId:_,status:"sent",signedTx:I[B]}),k==null||k([...R]),B++;let le=!1,U=null,q=null,ie=z=>{U!==null&&clearInterval(U),q!==null&&this.connection.removeSignatureListener(q);let se=R.findIndex(ke=>ke.txId===_);if(se>-1){if(R[se].status==="error"||R[se].status==="success")return;R[se].status=z.err?"error":"success"}k==null||k([...R]),z.err||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(le){clearInterval(U);return}try{let se=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(le=!0,clearInterval(U),ie({err:((z=se.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(se){le=!0,clearInterval(U),console.error("getTransaction timeout:",se,_)}},It)),q=this.connection.onSignature(_,z=>{if(le){this.connection.removeSignatureListener(q);return}le=!0,ie(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:R.map(_=>_.txId),signedTxs:I}}else{let B=[];for(let R=0;R<I.length;R+=1){let N=await this.connection.sendRawTransaction(I[R].serialize(),{skipPreflight:C});B.push(N)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var V;let v=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:u=12}=v,c=be(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await Ht(this.connection):await Zt(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),y=[];for(let P of d)b[P]===void 0&&y.push(new Ue(P));let A=await Qt({connection:this.connection,address:y});for(let[P,I]of Object.entries(A))b[P]=I;let w=t?Tt(t):{instructions:[],instructionTypes:[]},T=await qe(this.connection,this.blockhashCommitment),L=this.signers.reduce((P,I)=>W(O({},P),{[I.publicKey.toBase58()]:I}),{}),k=[],h=[],S=[],C=0;if(this.allInstructions.forEach(P=>{let I=[...S,P],B=t?[...w.instructions,...I]:I;if(P!==o[C]&&S.length<u&&(ot({instructions:B,payer:this.feePayer,lookupTableAddressAccount:b})||ot({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})))S.push(P);else{if(S.length===0)throw Error("item ins too big");C+=P===o[C]?1:0;let R={};for(let N of[...new Set(d)])b[N]!==void 0&&(R[N]=b[N]);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let N=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(b));k.push(new at(N))}else{let N=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(b));k.push(new at(N))}h.push(Array.from(new Set(S.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>L[N]).filter(N=>N!==void 0)),S=[P]}}),S.length>0){let I=[...new Set(S.map(B=>B.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(B=>L[B]).filter(B=>B!==void 0);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(b));k.push(new at(B))}else{let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(b));k.push(new at(B))}h.push(I)}return(V=this.owner)!=null&&V.signer&&h.forEach(P=>{P.some(I=>I.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),k.forEach((P,I)=>{P.sign(h[I])}),{builder:this,transactions:k,buildProps:e,signers:h,instructionTypes:this.instructionTypes,execute:async P=>{var le;let{sequentially:I,onTxUpdate:B,skipTxCount:R=0,recentBlockHash:N,skipPreflight:_=!0}=P||{};if(k.map(async(U,q)=>{h[q].length&&U.sign(h[q]),N&&(U.message.recentBlockhash=N)}),Le(k),(le=this.owner)!=null&&le.isKeyPair){if(I){let U=0,q=[];for(let ie of k){if(++U,U<=R){console.log("skip tx: ",U),q.push("tx skipped");continue}let z=await this.connection.sendTransaction(ie,{skipPreflight:_});await ht(this.connection,z),q.push(z)}return{txIds:q,signedTxs:k}}return{txIds:await Promise.all(k.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:_}))),signedTxs:k}}if(this.signAllTransactions){let U=await this.signAllTransactions(k.slice(R,k.length)),q=[...k.slice(0,R),...U];if(I){let ie=0,z=[],se=async()=>{if(!q[ie])return;if(ie<R){z.push({txId:"",status:"success",signedTx:q[ie]}),B==null||B([...z]),ie++,se();return}let ke=await this.connection.sendTransaction(q[ie],{skipPreflight:_});z.push({txId:ke,status:"sent",signedTx:q[ie]}),B==null||B([...z]),ie++;let He=!1,Ve=null,yt=null,gn=Ce=>{Ve!==null&&clearInterval(Ve),yt!==null&&this.connection.removeSignatureListener(yt);let Te=z.findIndex(Lo=>Lo.txId===ke);if(Te>-1){if(z[Te].status==="error"||z[Te].status==="success")return;z[Te].status=Ce.err?"error":"success"}B==null||B([...z]),Ce.err||se()};this.loopMultiTxStatus&&(Ve=setInterval(async()=>{var Ce;if(He){clearInterval(Ve);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(He=!0,clearInterval(Ve),gn({err:((Ce=Te.meta)==null?void 0:Ce.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){He=!0,clearInterval(Ve),console.error("getTransaction timeout:",Te,ke)}},It)),yt=this.connection.onSignature(ke,Ce=>{if(He){this.connection.removeSignatureListener(yt);return}He=!0,gn(Ce)},"confirmed"),this.connection.getSignatureStatus(ke)};return se(),{txIds:[],signedTxs:q}}else{let ie=[];for(let z=0;z<q.length;z+=1){let se=await this.connection.sendTransaction(q[z],{skipPreflight:_});ie.push(se)}return{txIds:ie,signedTxs:q}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var Jt=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ce=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=E(t)}createTxBuilder(e){return this.scope.checkOwner(),new Bt({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Jt(e))}logInfo(...e){this.logger.info(Jt(e))}logAndCreateError(...e){let t=Jt(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Sl,SystemProgram as Kl}from"@solana/web3.js";import Ll from"bn.js";import{createCloseAccountInstruction as Fl,createInitializeAccountInstruction as vl,createTransferInstruction as Vl,TOKEN_PROGRAM_ID as _l}from"@solana/spl-token";import{Keypair as pl,PublicKey as fl}from"@solana/web3.js";import gl from"bn.js";import{TOKEN_PROGRAM_ID as wl}from"@solana/spl-token";import{PublicKey as Ai}from"@solana/web3.js";import En,{isBN as Dn}from"bn.js";import{bits as ui,BitStructure as Pc,blob as ci,Blob as Ac,cstr as wc,f32 as kc,f32be as Tc,f64 as hc,f64be as Ic,greedy as Bc,Layout as li,ns64 as Sc,ns64be as xc,nu64 as Kc,nu64be as Cc,offset as mi,s16 as Rc,s16be as Lc,s24 as Oc,s24be as Nc,s32 as di,s32be as Mc,s40 as Fc,s40be as vc,s48 as Vc,s48be as _c,s8 as Ec,seq as pi,struct as Dc,Structure as fi,u16 as yi,u16be as Wc,u24 as qc,u24be as Uc,u32 as bi,u32be as Gc,u40 as zc,u40be as Xc,u48 as Yc,u48be as Qc,u8 as gi,UInt as Pi,union as Zc,Union as Hc,unionLayoutDiscriminator as jc,utf8 as $c}from"@solana/buffer-layout";var St=li,Fn=fi;var en=Pi;var vn=gi,J=yi;var xt=bi;var fe=di;var Vn=pi;var F=ci;var tn=ui,_n=mi;var Ne=class extends St{constructor(t,o,i){super(t,i);this.blob=F(t),this.signed=o}decode(t,o=0){let i=new En(this.blob.decode(t,o),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,o,i=0){return typeof t=="number"&&(t=new En(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},Kt=class extends St{constructor(t){super(8,t);this._lower=tn(xt(),!1),this._upper=tn(xt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let i=this._lower.decode(t,o),r=this._upper.decode(t,o+this._lower.span);return O(O({},i),r)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function p(s){return new en(1,s)}function Y(s){return new en(4,s)}function n(s){return new Ne(8,!1,s)}function M(s){return new Ne(16,!1,s)}function Wn(s){return new Ne(1,!0,s)}function Ge(s){return new Ne(8,!0,s)}function qn(s){return new Ne(16,!0,s)}var st=class extends St{constructor(t,o,i,r){super(t.span,r);this.layout=t,this.decoder=o,this.encoder=i}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,i){return this.layout.encode(this.encoder(t),o,i)}getSpan(t,o){return this.layout.getSpan(t,o)}};function a(s){return new st(F(32),e=>new Ai(e),e=>e.toBuffer(),s)}function de(s){return new st(vn(),wi,ki,s)}function wi(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function ki(s){return s?1:0}function Un(s,e){let t=xt("length"),o=f([t,g(s,_n(t,-t.span),"values")]);return new st(o,({values:i})=>i,i=>({values:i}),e)}var nn=class extends Fn{decode(e,t){return super.decode(e,t)}};function f(s,e,t){return new nn(s,e,t)}function g(s,e,t){let o,i=typeof e=="number"?e:Dn(e)?e.toNumber():new Proxy(e,{get(r,u){if(!o){let c=Reflect.get(r,"count");o=Dn(c)?c.toNumber():c,Reflect.set(r,"count",o)}return Reflect.get(r,u)},set(r,u,c){return u==="count"&&(o=c),Reflect.set(r,u,c)}});return Vn(s,i,t)}var Ct=f([a("mint"),a("owner"),n("amount"),Y("delegateOption"),a("delegate"),p("state"),Y("isNativeOption"),n("isNative"),n("delegatedAmount"),Y("closeAuthorityOption"),a("closeAuthority")]);import{PublicKey as Sg,SystemProgram as xg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Cg}from"@solana/spl-token";import{PublicKey as mm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pm}from"@solana/spl-token";import{PublicKey as x}from"@solana/web3.js";var zn=new x("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Xn=new x("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Yn=new x("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),on=new x("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),gm=new x("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),hi=new x("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qn=new x("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zn=new x("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Pm=new x("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ii=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Hn=new x("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Bi=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Si=new x("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),jn=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Am=new x("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),xi=new x("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),rn=new x("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ki=new x("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),wm=new x("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ci=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ri=new x("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Li=new x("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),km=new x("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Tm=new x("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),hm=new x("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Im=new x("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Bm=new x("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Ke={OPEN_BOOK_PROGRAM:new x("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new x("Ray1111111111111111111111111111111111111111"),AMM_V4:new x("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new x("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new x("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new x("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new x("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new x("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new x("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new x("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new x("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new x("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:x.default,Router:new x("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new x("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new x("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new x("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new x("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new x("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new x("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new x("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new x("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new x("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new x("Ray1111111111111111111111111111111111111111")};import Eg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as oy,TOKEN_2022_PROGRAM_ID as iy,TOKEN_PROGRAM_ID as ry}from"@solana/spl-token";import{PublicKey as sy}from"@solana/web3.js";import cy from"bn.js";import my from"decimal.js";import{TOKEN_PROGRAM_ID as Em}from"@solana/spl-token";import{PublicKey as Um}from"@solana/web3.js";var Oi=f([Y("mintAuthorityOption"),a("mintAuthority"),n("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),a("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Bf,TOKEN_2022_PROGRAM_ID as Sf,TOKEN_PROGRAM_ID as xf}from"@solana/spl-token";import{Keypair as Rf,PublicKey as Lf,SystemProgram as Nf,TransactionInstruction as Mf}from"@solana/web3.js";import vf from"bn.js";import D from"bn.js";var Q=new D(1).shln(64),Xe=64,Ni=new D(1).shln(128),ut=new D(1).shln(64).subn(1),Mi=new D(1).shln(128).subn(1),Be=-443636,Se=443636,Me=new D("4295048016"),Fe=new D("79226673521066979257578248091"),$n=new D("59543866431248"),Jn=new D("184467440737095516"),eo=new D("15793534762490258745"),to=16;var an=60,td=new D("18446743708227953217"),no=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}],xe=1e6;var Lt=1e5,ct=1e4,oo=1e4,io=1e5;var lt=3,ro=100;var ao=10,so=100,Ot=14;var K=new D(0),we=new D(1),nd=new D(-1);var od=new D("18446744073700000000");var Fi=f([F(8),p("bump"),J("index"),a("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),J("tickSpacing"),Y("fundFeeRate"),g(Y(),1),a("fundOwner"),g(n(),3)]),vi=f([Y("blockTimestamp"),Ge("tickCumulative"),g(n(),4)]),uo=f([F(8),de("initialized"),n("recentEpoch"),J("observationIndex"),a("poolId"),g(vi,ro,"observations"),g(n(),4)]),Vi=f([J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),n("lastUpdateTimestamp"),g(p(),46)]),_i=f([p("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),M("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),M("growthGlobalX64")]),sn=f([F(8),p("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),J("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),fe("tickCurrent"),Y(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),g(M(),4),p("status"),p("feeOn"),F(6),g(_i,lt,"rewardInfos"),F(8*16,"tickArrayBitmap"),g(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),Vi.replicate("dynamicFeeInfo"),g(n(),46)]),Ei=f([M("growthInsideLastX64"),n("rewardAmountOwed")]),Di=f([F(8),p("bump"),a("nftMint"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(Ei,lt,"rewardInfos"),n("recentEpoch"),g(n(),7)]),sd=f([F(8),p("bump"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(M(),lt,"rewardGrowthInside"),n("recentEpoch"),g(n(),7)]),Wi=f([fe("tick"),qn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),g(M(),lt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),M("unfilledRatioX64"),g(Y(),3)]),co=f([F(8),a("poolId"),fe("startTickIndex"),g(Wi,an,"ticks"),p("initializedTickCount"),n("recentEpoch"),g(p(),107)]),qi=f([F(8),p("bump"),g(a(),ao,"operationOwners"),g(a(),so,"whitelistMints")]),Ui=f([F(8),a("poolId"),a("owner"),fe("tick"),de("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),M("unfilledRatioX64"),g(n(),4)]),lo=f([F(8),a("poolId"),F(8*8*Ot,"positiveTickArrayBitmap"),F(8*8*Ot,"negativeTickArrayBitmap")]),ud=f([F(8),J("index"),J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),g(n(),8)]),Gi=f([F(8),a("wallet"),p("nonceIndex"),n("orderNonce"),g(n(),4)]),cd=f([n(),p("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),g(n(),8)]),zi=f([F(8),p("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),g(n(),8)]);import dd from"bn.js";var hd=Buffer.from("amm_config","utf8"),Yi=Buffer.from("pool","utf8"),Qi=Buffer.from("pool_vault","utf8"),Id=Buffer.from("pool_reward_vault","utf8"),Bd=Buffer.from("position","utf8"),Sd=Buffer.from("tick_array","utf8"),xd=Buffer.from("operation","utf8"),Kd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Cd=Buffer.from("observation","utf8"),Rd=Buffer.from("support_mint","utf8"),Ld=Buffer.from("dynamic_fee_config","utf8"),Od=Buffer.from("permission","utf8");var Nd=Buffer.from("locked_position","utf8");import{sha256 as ar}from"js-sha256";import Zi from"bn.js";import Vd from"decimal.js";function j(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Z(s,e,t){if(t.isZero())throw new Error("Division by zero");let o=s.mul(e),i=o.div(t);return o.mod(t).isZero()?i:i.addn(1)}function Nt(s,e){return s.div(e).add(s.mod(e).isZero()?K:we)}var Ed=new Zi(1).shln(256).subn(1);function mo(s){return s.isZero()?-1:s.bitLength()-1}import Jd from"bn.js";import ee from"bn.js";import Ye from"decimal.js";var H=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=Be&&e<=Se}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Be}, ${Se}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),o=Q.clone();for(let{bit:i,factor:r}of no)(t&1<<i)!==0&&(o=j(o,r,Q));return e>0&&(o=j(Q,Q,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!1);return j(e,i,Q)}else{let i=H.getPriceAtTick(t,!0);return j(e,Q,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!0);return Z(e,i,Q)}else{let i=H.getPriceAtTick(t,!1);return Z(e,Q,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:o,isBaseInput:i,feeRate:r,isFeeOnInput:u}){let c={amountIn:K,amountOut:K,ammFeeAmount:K},b=this.limitOrderUnfilledAmount({tick:e})