UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 75.9 kB
var yo=Object.defineProperty,bo=Object.defineProperties;var go=Object.getOwnPropertyDescriptors;var st=Object.getOwnPropertySymbols;var cn=Object.prototype.hasOwnProperty,ln=Object.prototype.propertyIsEnumerable;var un=(r,t,n)=>t in r?yo(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,C=(r,t)=>{for(var n in t||(t={}))cn.call(t,n)&&un(r,n,t[n]);if(st)for(var n of st(t))ln.call(t,n)&&un(r,n,t[n]);return r},_=(r,t)=>bo(r,go(t));var le=(r,t)=>{var n={};for(var i in r)cn.call(r,i)&&t.indexOf(i)<0&&(n[i]=r[i]);if(r!=null&&st)for(var i of st(r))t.indexOf(i)<0&&ln.call(r,i)&&(n[i]=r[i]);return n};import{PublicKey as wo}from"@solana/web3.js";import{get as mn,set as Po}from"lodash";var Rt=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let n=t.map(i=>typeof i=="object"?JSON.stringify(i):i).join(", ");throw new Error(n)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},dn={},Ao={};function E(r){let t=mn(dn,r);if(!t){let n=mn(Ao,r);t=new Rt({name:r,logLevel:n}),Po(dn,r,t)}return t}import{MINT_SIZE as va,TOKEN_PROGRAM_ID as Va,getTransferFeeConfig as _a,unpackMint as Ea}from"@solana/spl-token";var Lt=E("Raydium_accountInfo_util");async function ge(r,t,n){let{batchRequest:i,commitment:u="confirmed",chunkCount:m=100}=C({batchRequest:!1},n),p=Ot(t,m),f=new Array(p.length).fill([]);if(i){let P=p.map(x=>{let R=r._buildArgs([x.map(S=>S.toBase58())],u,"base64");return{methodName:"getMultipleAccounts",args:R}}),h=Ot(P,10);f=(await(await Promise.all(h.map(async x=>await r._rpcBatchRequest(x)))).flat()).map(x=>(x.error&&Lt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${x.error.message}`),x.result.value.map(R=>{if(R){let{data:S,executable:M,lamports:A,owner:T,rentEpoch:B}=R;return S.length!==2&&S[1]!=="base64"&&Lt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(S[0],"base64"),executable:M,lamports:A,owner:new wo(T),rentEpoch:B}}return null})))}else try{f=await Promise.all(p.map(P=>r.getMultipleAccountsInfo(P,u)))}catch(P){P instanceof Error&&Lt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${P.message}`)}return f.flat()}import Ie from"bn.js";import dC from"decimal.js";import Ko from"big.js";import ns from"bn.js";import ko from"toformat";var To=ko,Ge=To;import ct from"big.js";import Io from"bn.js";import Bo from"decimal.js-light";import ze from"bn.js";var pn=9007199254740991;function ne(r){let t=E("Raydium_parseBigNumberish");if(r instanceof ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ze(r);t.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&t.logWithError(`BigNumberish number underflow: ${r}`),(r>=pn||r<=-pn)&&t.logWithError(`BigNumberish number overflow: ${r}`),new ze(String(r))):typeof r=="bigint"?new ze(r.toString()):(t.error(`invalid BigNumberish value: ${r}`),new ze(0))}var ut=E("module/fraction"),Nt=Ge(ct),Xe=Ge(Bo),So={[0]:Xe.ROUND_DOWN,[1]:Xe.ROUND_HALF_UP,[2]:Xe.ROUND_UP},xo={[0]:ct.roundDown,[1]:ct.roundHalfUp,[2]:ct.roundUp},U=class{constructor(t,n=new Io(1)){this.numerator=ne(t),this.denominator=ne(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new U(this.denominator,this.numerator)}add(t){let n=t instanceof U?t:new U(ne(t));return this.denominator.eq(n.denominator)?new U(this.numerator.add(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof U?t:new U(ne(t));return this.denominator.eq(n.denominator)?new U(this.numerator.sub(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof U?t:new U(ne(t));return new U(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof U?t:new U(ne(t));return new U(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},i=1){Number.isInteger(t)||ut.logWithError(`${t} is not an integer.`),t<=0&&ut.logWithError(`${t} is not positive.`),Xe.set({precision:t+1,rounding:So[i]});let u=new Xe(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return u.toFormat(u.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},i=1){return Number.isInteger(t)||ut.logWithError(`${t} is not an integer.`),t<0&&ut.logWithError(`${t} is negative.`),Nt.DP=t,Nt.RM=xo[i]||1,new Nt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var ms=E("Raydium_amount"),ds=Ge(Ko);import{PublicKey as Ro}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fn}from"@solana/spl-token";var lt={chainId:101,address:Ro.default.toBase58(),programId:fn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},de={chainId:101,address:"So11111111111111111111111111111111111111112",programId:fn.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 Ft}from"@solana/web3.js";import{PublicKey as z,SystemProgram as yn,SYSVAR_RENT_PUBKEY as Lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oo}from"@solana/spl-token";function xe({pubkey:r,isSigner:t=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:t}}var No=[xe({pubkey:Oo,isWritable:!1}),xe({pubkey:yn.programId,isWritable:!1}),xe({pubkey:Lo,isWritable:!1})];function bn({publicKey:r,transformSol:t}){let n=gn(r.toString());if(n instanceof z)return t&&n.equals(we)?me:n;if(t&&n.toString()===we.toBase58())return me;if(typeof n=="string"){if(n===z.default.toBase58())return z.default;try{return new z(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function gn(r){try{return new z(r)}catch{return r}}var Mt=new z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ke=new z("SysvarRent111111111111111111111111111111111"),Mo=new z("SysvarC1ock11111111111111111111111111111111"),mt=new z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Fo=new z("Sysvar1nstructions1111111111111111111111111"),Pn=yn.programId,ws=new z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ks=new z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ts=new z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),hs=new z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Is=new z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Bs=new z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ss=new z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),xs=new z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ks=new z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Cs=new z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Rs=new z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),me=new z("So11111111111111111111111111111111111111112"),we=z.default;var vt=class{constructor({mint:t,decimals:n,symbol:i,name:u,skipMint:m=!1,isToken2022:p=!1}){if(t===we.toBase58()||t instanceof Ft&&we.equals(t)){this.decimals=de.decimals,this.symbol=de.symbol,this.name=de.name,this.mint=new Ft(de.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=i||t.toString().substring(0,6),this.name=u||t.toString().substring(0,6),this.mint=m?Ft.default:bn({publicKey:t}),this.isToken2022=p}equals(t){return this===t?!0:this.mint.equals(t.mint)}},J=vt;J.WSOL=new vt(_(C({},de),{mint:de.address}));var Vt=class{constructor({decimals:t,symbol:n="UNKNOWN",name:i="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=i}equals(t){return this===t}},dt=Vt;dt.SOL=new Vt(lt);import vo from"bn.js";var qs=new U(new vo(100));var Qs=E("Raydium_price");import{merge as dK}from"lodash";import ou from"axios";var An={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_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",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"},Vo=_(C({},An),{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 Su=E("Raydium_Api");import{PublicKey as Gl,SystemProgram as zl}from"@solana/web3.js";import{AccountLayout as Hl,createAssociatedTokenAccountIdempotentInstruction as jl,TOKEN_PROGRAM_ID as $l,TOKEN_2022_PROGRAM_ID as Jl}from"@solana/spl-token";import{PublicKey as Ne,sendAndConfirmTransaction as Ut,SystemProgram as Uo,Transaction as Ze,TransactionMessage as He,VersionedTransaction as je}from"@solana/web3.js";import Go from"axios";import{PublicKey as _t,AddressLookupTableAccount as Le}from"@solana/web3.js";async function Et({connection:r,address:t,cluster:n="mainnet"}){let i=await ge(r,[...new Set(t.map(m=>m.toString()))].map(m=>new _t(m))),u={};for(let m=0;m<t.length;m++){let p=i[m],f=t[m];if(!p)continue;let P=new Le({key:f,state:Le.deserialize(p.data)});u[f.toString()]=P,n==="devnet"?Re[f.toString()]=P:Ce[f.toString()]=P}return u}var Ce={},Dt=async r=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ce[t])return Ce;let n=new _t(t),i=await r.getAccountInfo(n);return i&&(Ce[t]=new Le({key:n,state:Le.deserialize(i.data)})),Ce},Re={},Wt=async r=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Re[t])return Re;let n=new _t(t),i=await r.getAccountInfo(n);return i&&(Re[t]=new Le({key:n,state:Le.deserialize(i.data)})),Re};var Q={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 wn,Keypair as Tn,PublicKey as _o,Transaction as hn,TransactionMessage as Eo,VersionedTransaction as In}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Do}from"@solana/spl-token";var kn=E("Raydium_txUtil"),Bn=1644;function pt(r){let t=[],n=[];return r.microLamports&&(t.push(wn.setComputeUnitPrice({microLamports:r.microLamports})),n.push(Q.SetComputeUnitPrice)),r.units&&(t.push(wn.setComputeUnitLimit({units:r.units})),n.push(Q.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Oe(r,t){var i,u;let n=t!=null?t:"confirmed";return(u=await((i=r.getLatestBlockhash)==null?void 0:i.call(r,{commitment:n})))==null?void 0:u.blockhash}async function ft(r,t){return r.getSignatureStatuses([t]),new Promise((n,i)=>{let u=setTimeout(i,6e4);r.onSignature(t,m=>{if(clearTimeout(u),!m.err){n("");return}i(Object.assign(m.err,{txId:t}))},"confirmed")})}function qt(r,t){r.length<1&&kn.logWithError(`no instructions provided: ${r.toString()}`),t.length<1&&kn.logWithError(`no signers provided:, ${t.toString()}`);let n=new hn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Bn}catch{return!1}}function pe(r,t){let[n,i]=_o.findProgramAddressSync(r,t);return{publicKey:n,nonce:i}}function Ye({instructions:r,payer:t,signers:n}){return qt(r,[t,...n])}function Qe({instructions:r,payer:t,lookupTableAddressAccount:n,recentBlockhash:i=Tn.generate().publicKey.toString()}){let m=new Eo({payerKey:t,recentBlockhash:i,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new In(m).serialize()).toString("base64").length<Bn}catch{return!1}}var Wo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),qo=r=>{let t=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof In&&(t=Wo(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function ke(r){let t=[];return r.forEach(n=>{n instanceof hn&&(n.recentBlockhash||(n.recentBlockhash=Do.toBase58()),n.feePayer||(n.feePayer=Tn.generate().publicKey)),t.push(qo(n))}),console.log("simulate tx string:",t),t}var yt=2e3,bt=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster,this.blockhashCommitment=t.blockhashCommitment,this.loopMultiTxStatus=!!t.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 i;let t=(await Go.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(i=t==null?void 0:t[15])!=null?i:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:i}=pt(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(Uo.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new Ne(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(Q.TransferTip),!0):!1}async calComputeBudget({config:t,defaultIns:n}){try{let i=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:i=[],instructionTypes:u=[],endInstructionTypes:m=[],lookupTableAddress:p=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...i),this.instructionTypes.push(...u),this.endInstructionTypes.push(...m),this.lookupTableAddress.push(...p.filter(f=>f!==Ne.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:i}){return t===0?await this.buildV0(_(C({},n||{}),{lookupTableAddress:i})):this.build(n)}build(t){var i;let n=new Ze;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(u=>u.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async u=>{var b;let{recentBlockHash:m,skipPreflight:p=!0,sendAndConfirm:f,notSendToRpc:P}=u||{},h=m!=null?m:await Oe(this.connection,this.blockhashCommitment);if(n.recentBlockhash=h,this.signers.length&&n.sign(...this.signers),ke([n]),(b=this.owner)!=null&&b.isKeyPair)return{txId:f?await Ut(this.connection,n,this.signers.find(R=>R.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:p}),signedTx:n};if(this.signAllTransactions){let x=await this.signAllTransactions([n]);if(this.signers.length)for(let R of x)try{R.sign(...this.signers)}catch{}return{txId:P?"":await this.connection.sendRawTransaction(x[0].serialize(),{skipPreflight:p}),signedTx:x[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var h;let{extraPreBuildData:n=[],extInfo:i}=t,{transaction:u}=this.build(i),m=n.filter(b=>b.transaction.instructions.length>0),p=[u,...m.map(b=>b.transaction)],f=[this.signers,...m.map(b=>b.signers)],P=[...this.instructionTypes,...m.map(b=>b.instructionTypes).flat()];return(h=this.owner)!=null&&h.signer&&f.forEach(b=>{b.some(x=>x.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:f,instructionTypes:P,execute:async b=>{var B;let{sequentially:x,onTxUpdate:R,skipTxCount:S=0,recentBlockHash:M,skipPreflight:A=!0}=b||{},T=M!=null?M:await Oe(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(x){let I=[],F=0;for(let v of p){if(++F,F<=S)continue;let y=await Ut(this.connection,v,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});I.push(y)}return{txIds:I,signedTxs:p}}return{txIds:await await Promise.all(p.map(async I=>(I.recentBlockhash=T,await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:A})))),signedTxs:p}}if(this.signAllTransactions){let I=p.map((v,y)=>(v.recentBlockhash=T,f[y].length&&v.sign(...f[y]),v));ke(I);let F=await this.signAllTransactions(I);if(x){let v=0,y=[],w=async()=>{if(!F[v])return;let k=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:A});y.push({txId:k,status:"sent",signedTx:F[v]}),R==null||R([...y]),v++;let K=!1,L=null,V=null,re=q=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=y.findIndex(j=>j.txId===k);if(W>-1){if(y[W].status==="error"||y[W].status==="success")return;y[W].status=q.err?"error":"success"}R==null||R([...y]),q.err||w()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var q;if(K){clearInterval(L);return}try{let W=await this.connection.getTransaction(k,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(K=!0,clearInterval(L),re({err:((q=W.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",k))}catch(W){K=!0,clearInterval(L),console.error("getTransaction timeout:",W,k)}},yt)),V=this.connection.onSignature(k,q=>{if(K){this.connection.removeSignatureListener(V);return}K=!0,re(q)},"confirmed"),this.connection.getSignatureStatus(k)};return await w(),{txIds:y.map(k=>k.txId),signedTxs:F}}else{let v=[];for(let y=0;y<F.length;y+=1){let w=await this.connection.sendRawTransaction(F[y].serialize(),{skipPreflight:A});v.push(w)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:i}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:i})}async buildV0(t){var A;let M=t||{},{lookupTableCache:n={},lookupTableAddress:i=[],forerunCreate:u,recentBlockhash:m}=M,p=le(M,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),f=C(C({},this.cluster==="devnet"?await Wt(this.connection):await Dt(this.connection)),n),P=Array.from(new Set([...i,...this.lookupTableAddress])),h=[];for(let T of P)f[T]===void 0&&h.push(new Ne(T));let b=await Et({connection:this.connection,address:h});for(let[T,B]of Object.entries(b))f[T]=B;let x=u?Ne.default.toBase58():m!=null?m:await Oe(this.connection,this.blockhashCommitment),R=new He({payerKey:this.feePayer,recentBlockhash:x,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(f));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let S=new je(R);return S.sign(this.signers),{builder:this,transaction:S,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var v;let{skipPreflight:B=!0,sendAndConfirm:I,notSendToRpc:F}=T||{};if(ke([S]),(v=this.owner)!=null&&v.isKeyPair){let y=await this.connection.sendTransaction(S,{skipPreflight:B});return I&&await ft(this.connection,y),{txId:y,signedTx:S}}if(this.signAllTransactions){let y=await this.signAllTransactions([S]);if(this.signers.length)for(let w of y)try{w.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(y[0],{skipPreflight:B}),signedTx:y[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}async buildV0MultiTx(t){var h;let{extraPreBuildData:n=[],buildProps:i}=t,{transaction:u}=await this.buildV0(i),m=n.filter(b=>b.builder.instructions.length>0),p=[u,...m.map(b=>b.transaction)],f=[this.signers,...m.map(b=>b.signers)],P=[...this.instructionTypes,...m.map(b=>b.instructionTypes).flat()];return(h=this.owner)!=null&&h.signer&&f.forEach(b=>{b.some(x=>x.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),p.forEach(async(b,x)=>{b.sign(f[x])}),{builder:this,transactions:p,signers:f,instructionTypes:P,buildProps:i,execute:async b=>{var A;let{sequentially:x,onTxUpdate:R,recentBlockHash:S,skipPreflight:M=!0}=b||{};if(S&&p.forEach(T=>T.message.recentBlockhash=S),ke(p),(A=this.owner)!=null&&A.isKeyPair){if(x){let T=[];for(let B of p){let I=await this.connection.sendTransaction(B,{skipPreflight:M});await ft(this.connection,I),T.push(I)}return{txIds:T,signedTxs:p}}return{txIds:await Promise.all(p.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:M}))),signedTxs:p}}if(this.signAllTransactions){let T=await this.signAllTransactions(p);if(x){let B=0,I=[],F=async()=>{if(!T[B])return;let v=await this.connection.sendTransaction(T[B],{skipPreflight:M});I.push({txId:v,status:"sent",signedTx:T[B]}),R==null||R([...I]),B++;let y=!1,w=null,k=null,K=L=>{w!==null&&clearInterval(w),k!==null&&this.connection.removeSignatureListener(k);let V=I.findIndex(re=>re.txId===v);if(V>-1){if(I[V].status==="error"||I[V].status==="success")return;I[V].status=L.err?"error":"success"}R==null||R([...I]),L.err||F()};this.loopMultiTxStatus&&(w=setInterval(async()=>{var L;if(y){clearInterval(w);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(y=!0,clearInterval(w),K({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){y=!0,clearInterval(w),console.error("getTransaction timeout:",V,v)}},yt)),k=this.connection.onSignature(v,L=>{if(y){this.connection.removeSignatureListener(k);return}y=!0,K(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:T}}else{let B=[];for(let I=0;I<T.length;I+=1){let F=await this.connection.sendTransaction(T[I],{skipPreflight:M});B.push(F)}return{txIds:B,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(t){var R;let x=t||{},{splitIns:n=[],computeBudgetConfig:i}=x,u=le(x,["splitIns","computeBudgetConfig"]),m=i?pt(i):{instructions:[],instructionTypes:[]},p=this.signers.reduce((S,M)=>_(C({},S),{[M.publicKey.toBase58()]:M}),{}),f=[],P=[],h=[],b=0;if(this.allInstructions.forEach(S=>{let M=[...h,S],A=i?[...m.instructions,...M]:M,B=[...new Set(M.map(I=>I.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(I=>new Ne(I));if(S!==n[b]&&h.length<12&&(Ye({instructions:A,payer:this.feePayer,signers:B})||Ye({instructions:M,payer:this.feePayer,signers:B})))h.push(S);else{if(h.length===0)throw Error("item ins too big");b+=S===n[b]?1:0,Ye({instructions:i?[...m.instructions,...h]:[...h],payer:this.feePayer,signers:B})?f.push(new Ze().add(...m.instructions,...h)):f.push(new Ze().add(...h)),P.push(Array.from(new Set(h.map(I=>I.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(I=>p[I]).filter(I=>I!==void 0)),h=[S]}}),h.length>0){let M=[...new Set(h.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);Ye({instructions:i?[...m.instructions,...h]:[...h],payer:this.feePayer,signers:M.map(A=>A.publicKey)})?f.push(new Ze().add(...m.instructions,...h)):f.push(new Ze().add(...h)),P.push(M)}return f.forEach(S=>S.feePayer=this.feePayer),(R=this.owner)!=null&&R.signer&&P.forEach(S=>{S.some(M=>M.publicKey.equals(this.owner.publicKey))||S.push(this.owner.signer)}),{builder:this,transactions:f,signers:P,instructionTypes:this.instructionTypes,execute:async S=>{var v;let{sequentially:M,onTxUpdate:A,skipTxCount:T=0,recentBlockHash:B,skipPreflight:I=!0}=S||{},F=B!=null?B:await Oe(this.connection,this.blockhashCommitment);if(f.forEach(async(y,w)=>{y.recentBlockhash=F,P[w].length&&y.sign(...P[w])}),ke(f),(v=this.owner)!=null&&v.isKeyPair){if(M){let y=0,w=[];for(let k of f){if(++y,y<=T){w.push("tx skipped");continue}let K=await Ut(this.connection,k,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:I});w.push(K)}return{txIds:w,signedTxs:f}}return{txIds:await Promise.all(f.map(async y=>await this.connection.sendRawTransaction(y.serialize(),{skipPreflight:I}))),signedTxs:f}}if(this.signAllTransactions){let y=await this.signAllTransactions(f.slice(T,f.length)),w=[...f.slice(0,T),...y];if(M){let k=0,K=[],L=async()=>{if(!w[k])return;k<T&&(K.push({txId:"",status:"success",signedTx:w[k]}),A==null||A([...K]),k++,L());let V=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:I});K.push({txId:V,status:"sent",signedTx:w[k]}),A==null||A([...K]),k++;let re=!1,q=null,W=null,j=G=>{q!==null&&clearInterval(q),W!==null&&this.connection.removeSignatureListener(W);let te=K.findIndex(ye=>ye.txId===V);if(te>-1){if(K[te].status==="error"||K[te].status==="success")return;K[te].status=G.err?"error":"success"}A==null||A([...K]),G.err||L()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var G;if(re){clearInterval(q);return}try{let te=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});te&&(re=!0,clearInterval(q),j({err:((G=te.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",V))}catch(te){re=!0,clearInterval(q),console.error("getTransaction timeout:",te,V)}},yt)),W=this.connection.onSignature(V,G=>{if(re){this.connection.removeSignatureListener(W);return}re=!0,j(G)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:K.map(V=>V.txId),signedTxs:w}}else{let k=[];for(let K=0;K<w.length;K+=1){let L=await this.connection.sendRawTransaction(w[K].serialize(),{skipPreflight:I});k.push(L)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async sizeCheckBuildV0(t){var v;let F=t||{},{computeBudgetConfig:n,splitIns:i=[],lookupTableCache:u={},lookupTableAddress:m=[],insCountLimit:p=12}=F,f=le(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),P=C(C({},this.cluster==="devnet"?await Wt(this.connection):await Dt(this.connection)),u),h=Array.from(new Set([...this.lookupTableAddress,...m])),b=[];for(let y of h)P[y]===void 0&&b.push(new Ne(y));let x=await Et({connection:this.connection,address:b});for(let[y,w]of Object.entries(x))P[y]=w;let R=n?pt(n):{instructions:[],instructionTypes:[]},S=await Oe(this.connection,this.blockhashCommitment),M=this.signers.reduce((y,w)=>_(C({},y),{[w.publicKey.toBase58()]:w}),{}),A=[],T=[],B=[],I=0;if(this.allInstructions.forEach(y=>{let w=[...B,y],k=n?[...R.instructions,...w]:w;if(y!==i[I]&&B.length<p&&(Qe({instructions:k,payer:this.feePayer,lookupTableAddressAccount:P})||Qe({instructions:w,payer:this.feePayer,lookupTableAddressAccount:P})))B.push(y);else{if(B.length===0)throw Error("item ins too big");I+=y===i[I]?1:0;let K={};for(let L of[...new Set(h)])P[L]!==void 0&&(K[L]=P[L]);if(n&&Qe({instructions:[...R.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:P,recentBlockhash:S})){let L=new He({payerKey:this.feePayer,recentBlockhash:S,instructions:[...R.instructions,...B]}).compileToV0Message(Object.values(P));A.push(new je(L))}else{let L=new He({payerKey:this.feePayer,recentBlockhash:S,instructions:[...B]}).compileToV0Message(Object.values(P));A.push(new je(L))}T.push(Array.from(new Set(B.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>M[L]).filter(L=>L!==void 0)),B=[y]}}),B.length>0){let w=[...new Set(B.map(k=>k.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat()).values()].map(k=>M[k]).filter(k=>k!==void 0);if(n&&Qe({instructions:[...R.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:P,recentBlockhash:S})){let k=new He({payerKey:this.feePayer,recentBlockhash:S,instructions:[...R.instructions,...B]}).compileToV0Message(Object.values(P));A.push(new je(k))}else{let k=new He({payerKey:this.feePayer,recentBlockhash:S,instructions:[...B]}).compileToV0Message(Object.values(P));A.push(new je(k))}T.push(w)}return(v=this.owner)!=null&&v.signer&&T.forEach(y=>{y.some(w=>w.publicKey.equals(this.owner.publicKey))||y.push(this.owner.signer)}),A.forEach((y,w)=>{y.sign(T[w])}),{builder:this,transactions:A,buildProps:t,signers:T,instructionTypes:this.instructionTypes,execute:async y=>{var re;let{sequentially:w,onTxUpdate:k,skipTxCount:K=0,recentBlockHash:L,skipPreflight:V=!0}=y||{};if(A.map(async(q,W)=>{T[W].length&&q.sign(T[W]),L&&(q.message.recentBlockhash=L)}),ke(A),(re=this.owner)!=null&&re.isKeyPair){if(w){let q=0,W=[];for(let j of A){if(++q,q<=K){console.log("skip tx: ",q),W.push("tx skipped");continue}let G=await this.connection.sendTransaction(j,{skipPreflight:V});await ft(this.connection,G),W.push(G)}return{txIds:W,signedTxs:A}}return{txIds:await Promise.all(A.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:V}))),signedTxs:A}}if(this.signAllTransactions){let q=await this.signAllTransactions(A.slice(K,A.length)),W=[...A.slice(0,K),...q];if(w){let j=0,G=[],te=async()=>{if(!W[j])return;if(j<K){G.push({txId:"",status:"success",signedTx:W[j]}),k==null||k([...G]),j++,te();return}let ye=await this.connection.sendTransaction(W[j],{skipPreflight:V});G.push({txId:ye,status:"sent",signedTx:W[j]}),k==null||k([...G]),j++;let qe=!1,Se=null,at=null,sn=Ae=>{Se!==null&&clearInterval(Se),at!==null&&this.connection.removeSignatureListener(at);let be=G.findIndex(fo=>fo.txId===ye);if(be>-1){if(G[be].status==="error"||G[be].status==="success")return;G[be].status=Ae.err?"error":"success"}k==null||k([...G]),Ae.err||te()};this.loopMultiTxStatus&&(Se=setInterval(async()=>{var Ae;if(qe){clearInterval(Se);return}try{let be=await this.connection.getTransaction(ye,{commitment:"confirmed",maxSupportedTransactionVersion:0});be&&(qe=!0,clearInterval(Se),sn({err:((Ae=be.meta)==null?void 0:Ae.err)||null}),console.log("tx status from getTransaction:",ye))}catch(be){qe=!0,clearInterval(Se),console.error("getTransaction timeout:",be,ye)}},yt)),at=this.connection.onSignature(ye,Ae=>{if(qe){this.connection.removeSignatureListener(at);return}qe=!0,sn(Ae)},"confirmed"),this.connection.getSignatureStatus(ye)};return te(),{txIds:[],signedTxs:W}}else{let j=[];for(let G=0;G<W.length;G+=1){let te=await this.connection.sendTransaction(W[G],{skipPreflight:V});j.push(te)}return{txIds:j,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:f||{}}}};var Gt=(...r)=>r.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),oe=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=E(n)}createTxBuilder(t){return this.scope.checkOwner(),new bt({connection:this.scope.connection,feePayer:t||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(...t){this.logger.debug(Gt(t))}logInfo(...t){this.logger.info(Gt(t))}logAndCreateError(...t){let n=Gt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as kl,SystemProgram as hl}from"@solana/web3.js";import Sl from"bn.js";import{createCloseAccountInstruction as Rl,createInitializeAccountInstruction as Ll,createTransferInstruction as Ol,TOKEN_PROGRAM_ID as Nl}from"@solana/spl-token";import{Keypair as ul,PublicKey as cl}from"@solana/web3.js";import dl from"bn.js";import{TOKEN_PROGRAM_ID as yl}from"@solana/spl-token";import{PublicKey as oi}from"@solana/web3.js";import Ln,{isBN as On}from"bn.js";import{bits as zo,BitStructure as fc,blob as Xo,Blob as yc,cstr as bc,f32 as gc,f32be as Pc,f64 as Ac,f64be as wc,greedy as kc,Layout as Yo,ns64 as Tc,ns64be as hc,nu64 as Qo,nu64be as Ic,offset as Zo,s16 as Bc,s16be as Sc,s24 as xc,s24be as Kc,s32 as Ho,s32be as Cc,s40 as Rc,s40be as Lc,s48 as Oc,s48be as Nc,s8 as Mc,seq as jo,struct as Fc,Structure as $o,u16 as Jo,u16be as vc,u24 as Vc,u24be as _c,u32 as ei,u32be as Ec,u40 as Dc,u40be as Wc,u48 as qc,u48be as Uc,u8 as ti,UInt as ni,union as Gc,Union as zc,unionLayoutDiscriminator as Xc,utf8 as Yc}from"@solana/buffer-layout";var gt=Yo,Sn=$o;var zt=ni;var xn=ti,Z=Jo;var Pt=ei;var Kn=Qo;var se=Ho;var Cn=jo;var N=Xo;var Xt=zo,Rn=Zo;var he=class extends gt{constructor(n,i,u){super(n,u);this.blob=N(n),this.signed=i}decode(n,i=0){let u=new Ln(this.blob.decode(n,i),10,"le");return this.signed?u.fromTwos(this.span*8).clone():u}encode(n,i,u=0){return typeof n=="number"&&(n=new Ln(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),i,u)}},At=class extends gt{constructor(n){super(8,n);this._lower=Xt(Pt(),!1),this._upper=Xt(Pt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,i=0){let u=this._lower.decode(n,i),m=this._upper.decode(n,i+this._lower.span);return C(C({},u),m)}encode(n,i,u=0){return this._lower.encode(n,i,u)+this._upper.encode(n,i,u+this._lower.span)}};function c(r){return new zt(1,r)}function X(r){return new zt(4,r)}function e(r){return new he(8,!1,r)}function O(r){return new he(16,!1,r)}function Nn(r){return new he(1,!0,r)}function Me(r){return new he(8,!0,r)}function Mn(r){return new he(16,!0,r)}var $e=class extends gt{constructor(n,i,u,m){super(n.span,m);this.layout=n,this.decoder=i,this.encoder=u}decode(n,i){return this.decoder(this.layout.decode(n,i))}encode(n,i,u){return this.layout.encode(this.encoder(n),i,u)}getSpan(n,i){return this.layout.getSpan(n,i)}};function o(r){return new $e(N(32),t=>new oi(t),t=>t.toBuffer(),r)}function ae(r){return new $e(xn(),ii,ri,r)}function ii(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ri(r){return r?1:0}function Fn(r,t){let n=Pt("length"),i=l([n,d(r,Rn(n,-n.span),"values")]);return new $e(i,({values:u})=>u,u=>({values:u}),t)}var Yt=class extends Sn{decode(t,n){return super.decode(t,n)}};function l(r,t,n){return new Yt(r,t,n)}function d(r,t,n){let i,u=typeof t=="number"?t:On(t)?t.toNumber():new Proxy(t,{get(m,p){if(!i){let f=Reflect.get(m,"count");i=On(f)?f.toNumber():f,Reflect.set(m,"count",i)}return Reflect.get(m,p)},set(m,p,f){return p==="count"&&(i=f),Reflect.set(m,p,f)}});return Cn(r,u,n)}var wt=l([o("mint"),o("owner"),e("amount"),X("delegateOption"),o("delegate"),c("state"),X("isNativeOption"),e("isNative"),e("delegatedAmount"),X("closeAuthorityOption"),o("closeAuthority")]);import{PublicKey as gp,SystemProgram as Pp}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as wp}from"@solana/spl-token";import{PublicKey as am}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as um}from"@solana/spl-token";import{PublicKey as g}from"@solana/web3.js";var Vn=new g("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),_n=new g("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),En=new g("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Qt=new g("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),dm=new g("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),si=new g("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Dn=new g("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Wn=new g("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),pm=new g("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ui=new g("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qn=new g("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ci=new g("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),li=new g("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Un=new g("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),fm=new g("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),mi=new g("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),di=new g("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),pi=new g("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),fi=new g("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),yi=new g("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Zt=new g("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),bi=new g("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ym=new g("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),gi=new g("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pi=new g("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ai=new g("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),bm=new g("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),gm=new g("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Pm=new g("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Am=new g("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),wm=new g("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),Je={IDO_PROGRAM_ID_V1:di,IDO_PROGRAM_ID_V2:pi,IDO_PROGRAM_ID_V3:fi,IDO_PROGRAM_ID_V4:yi};var Pe={OPEN_BOOK_PROGRAM:new g("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new g("Ray1111111111111111111111111111111111111111"),AMM_V4:new g("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new g("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new g("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new g("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new g("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new g("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new g("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new g("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new g("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new g("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:g.default,Router:new g("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new g("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new g("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new g("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new g("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new g("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new g("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new g("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new g("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new g("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new g("Ray1111111111111111111111111111111111111111")};import Rp from"decimal.js";import{PublicKey as Ht}from"@solana/web3.js";var wi=l([c("instruction")]),ki=l([c("instruction")]),Ti=l([e("rewardState"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardLastUpdateTime"),e("totalReward"),e("totalRewardEmissioned"),e("rewardClaimed"),e("rewardPerSecond"),O("accRewardPerShare"),o("rewardVault"),o("rewardMint"),o("rewardSender"),e("rewardType"),d(e(),15,"padding")]),hi=l([e("state"),e("nonce"),o("lpVault"),o("rewardVault"),o(),o(),e(),e(),e("totalReward"),O("perShareReward"),e("lastSlot"),e("perSlotReward")]),Ii=l([e("state"),e("nonce"),o("lpVault"),o("rewardVaultA"),e("totalRewardA"),O("perShareRewardA"),e("perSlotRewardA"),c("option"),o("rewardVaultB"),N(7),e("totalRewardB"),O("perShareRewardB"),e("perSlotRewardB"),e("lastSlot"),o()]),Bi=l([e(),e("state"),e("nonce"),e("validRewardTokenNum"),O("rewardMultiplier"),e("rewardPeriodMax"),e("rewardPeriodMin"),e("rewardPeriodExtend"),o("lpMint"),o("lpVault"),d(Ti,5,"rewardInfos"),o("creator"),o(),d(e(),32,"padding")]),Si=new Proxy(hi,{get(r,t,n){return t==="decode"?(...i)=>{let u=r.decode(...i);return _(C({},u),{version:3,rewardInfos:[{rewardVault:u.rewardVault,totalReward:u.totalReward,perSlotReward:u.perSlotReward,perShareReward:u.perShareReward}]})}:Reflect.get(r,t,n)}}),xi=new Proxy(Ii,{get(r,t,n){return t==="decode"?(...i)=>{let u=r.decode(...i);return _(C({},u),{version:5,rewardInfos:[{rewardVault:u.rewardVaultA,totalReward:u.totalRewardA,perSlotReward:u.perSlotRewardA,perShareReward:u.perShareRewardA},{rewardVault:u.rewardVaultB,totalReward:u.totalRewardB,perSlotReward:u.perSlotRewardB,perShareReward:u.perShareRewardB}]})}:Reflect.get(r,t,n)}}),Gn=new Proxy(Bi,{get(r,t,n){return t==="decode"?(...i)=>{let u=r.decode(...i);return _(C({},u),{version:6,rewardInfos:u.rewardInfos.map(m=>{var p;return _(C({},m),{rewardType:((p=Object.entries(et).find(f=>String(f[1])===m.rewardType.toString()))!=null?p:["Standard SPL"])[0]})})})}:Reflect.get(r,t,n)}}),Ki=l([e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),Ci=l([c("instruction"),e("nonce"),d(Ki,5,"rewardTimeInfo")]),Ri=l([c("instruction"),e("rewardReopenTime"),e("rewardEndTime"),e("rewardPerSecond")]),Li=l([c("instruction"),e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),xm=l([e("state"),o("id"),o("owner"),e("deposited"),d(e(),1,"rewardDebts")]),zn=l([e("state"),o("id"),o("owner"),e("deposited"),d(O(),1,"rewardDebts"),e(""),e("voteLockedBalance"),d(e(),15)]),Km=l([e("state"),o("id"),o("owner"),e("deposited"),d(e(),2,"rewardDebts")]),Oi=l([e("state"),o("id"),o("owner"),e("deposited"),d(O(),2,"rewardDebts"),d(e(),17)]),Ni=l([e(),e("state"),o("id"),o("owner"),e("deposited"),d(O(),5,"rewardDebts"),d(e(),16)]),Mi=l([c("instruction"),e("amount")]),Fi=l([o("mint"),o("grantAuthority"),e("baselineVoteWeightScaledFactor"),e("maxExtraLockupVoteWeightScaledFactor"),e("lockupSaturationSecs"),Nn("digitShift"),d(c(),7,"reserved1"),d(e(),7,"reserved2")]),vi=l([N(8),o("governanceProgramId"),o("realm"),o("realmGoverningTokenMint"),o("realmAuthority"),d(c(),32,"reserved1"),d(Fi,4,"votingMints"),Me("timeOffset"),c("bump"),d(c(),7,"reserved2"),d(e(),11,"reserved3")]),Vi=l([Me("startTime"),Me("endTime"),c("kind"),d(c(),15,"reserved")]),_i=l([d(Vi,1,"lockup"),e("amountDeposited_native"),e("amountInitiallyLockedNative"),ae("isUsed"),ae("allowClawback"),c("votingMintConfigIdx"),d(c(),29,"reserved")]),Ei=l([N(8),o("voterAuthority"),o("registrar"),d(_i,32,"deposits"),c("voterBump"),c("voterWweightRecordBump"),d(c(),94,"reserved")]);import{NATIVE_MINT as Vm}from"@solana/spl-token";var _m=E("Raydium_farm_config"),Di=new Ht("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Wi=new Ht("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Em=new Ht("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var et={"Standard SPL":0,"Option tokens":1},Xn={[Vn.toString()]:3,[_n.toString()]:4,[En.toString()]:5,[Qt.toString()]:6,[Pe.FARM_PROGRAM_ID_V3.toString()]:3,[Pe.FARM_PROGRAM_ID_V4.toString()]:4,[Pe.FARM_PROGRAM_ID_V5.toString()]:5,[Pe.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Od,SystemProgram as Nd,SYSVAR_CLOCK_PUBKEY as Md,SYSVAR_RENT_PUBKEY as Fd,TransactionInstruction as vd}from"@solana/web3.js";import _d from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Dd,createAssociatedTokenAccountIdempotentInstruction as Wd,TOKEN_PROGRAM_ID as qd}from"@solana/spl-token";import ud from"bn.js";import{PublicKey as Jm}from"@solana/web3.js";import td from"bn.js";var kd=E("Raydium.farm.util");var Jd=E("Raydium_farm_instruction"),ep={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};import Wp from"bn.js";import{PublicKey as SA}from"@solana/web3.js";import{AccountLayout as CA,MintLayout as RA,NATIVE_MINT as LA,TOKEN_PROGRAM_ID as NA}from"@solana/spl-token";import It from"bn.js";function nt(r,t){if(r.isZero())return new It(0);let n=r.div(t);return n.isZero()?new It(1):r.mod(t).gt(new It(0))?n.add(new It(1)):n}import{ASSOCIATED_TOKEN_PROGRAM_ID as Ub,TOKEN_2022_PROGRAM_ID as Gb,TOKEN_PROGRAM_ID as zb}from"@solana/spl-token";import{Keypair as Qb,PublicKey as Zb,SystemProgram as jb,TransactionInstruction as $b}from"@solana/web3.js";import eg from"bn.js";import D from"bn.js";var ue=new D(1).shln(64);var Zi=new D(1).shln(128),Bt=new D(1).shln(64).subn(1),Hi=new D(1).shln(128).subn(1);var Ve=new D("4295048016"),_e=new D("79226673521066979257578248091"),ji=new D("59543866431248"),$i=new D("184467440737095516"),Ji=new D("15793534762490258745");var jt=60,Jp=new D("18446743708227953217"),er=[{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)}];var ot=3,Qn=100;var Zn=10,Hn=100,St=14;var H=new D(0),Ee=new D(1),ef=new D(-1);var tf=new D("18446744073700000000");var tr=l([N(8),c("bump"),Z("index"),o("owner"),X("protocolFeeRate"),X("tradeFeeRate"),Z("tickSpacing"),X("fundFeeRate"),d(X(),1),o("fund