@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 74.4 kB
JavaScript
var To=Object.defineProperty,ho=Object.defineProperties;var Io=Object.getOwnPropertyDescriptors;var ot=Object.getOwnPropertySymbols;var rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(o,t,n)=>t in o?To(o,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[t]=n,R=(o,t)=>{for(var n in t||(t={}))rn.call(t,n)&&on(o,n,t[n]);if(ot)for(var n of ot(t))an.call(t,n)&&on(o,n,t[n]);return o},D=(o,t)=>ho(o,Io(t));var ce=(o,t)=>{var n={};for(var r in o)rn.call(o,r)&&t.indexOf(r)<0&&(n[r]=o[r]);if(o!=null&&ot)for(var r of ot(o))t.indexOf(r)<0&&an.call(o,r)&&(n[r]=o[r]);return n};import{PublicKey as xo}from"@solana/web3.js";import{get as sn,set as Bo}from"lodash";var It=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(r=>typeof r=="object"?JSON.stringify(r):r).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}},un={},So={};function _(o){let t=sn(un,o);if(!t){let n=sn(So,o);t=new It({name:o,logLevel:n}),Bo(un,o,t)}return t}import{MINT_SIZE as Ga,TOKEN_PROGRAM_ID as za,getTransferFeeConfig as Xa,unpackMint as Ya}from"@solana/spl-token";var Bt=_("Raydium_accountInfo_util");async function fe(o,t,n){let{batchRequest:r,commitment:u="confirmed",chunkCount:d=100}=R({batchRequest:!1},n),y=St(t,d),f=new Array(y.length).fill([]);if(r){let g=y.map(O=>{let K=o._buildArgs([O.map(B=>B.toBase58())],u,"base64");return{methodName:"getMultipleAccounts",args:K}}),x=St(g,10);f=(await(await Promise.all(x.map(async O=>await o._rpcBatchRequest(O)))).flat()).map(O=>(O.error&&Bt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${O.error.message}`),O.result.value.map(K=>{if(K){let{data:B,executable:M,lamports:P,owner:T,rentEpoch:I}=K;return B.length!==2&&B[1]!=="base64"&&Bt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(B[0],"base64"),executable:M,lamports:P,owner:new xo(T),rentEpoch:I}}return null})))}else try{f=await Promise.all(y.map(g=>o.getMultipleAccountsInfo(g,u)))}catch(g){g instanceof Error&&Bt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.message}`)}return f.flat()}import Te from"bn.js";import MK from"decimal.js";import Fo from"big.js";import ls from"bn.js";import Ko from"toformat";var Co=Ko,We=Co;import rt from"big.js";import Lo from"bn.js";import Oo from"decimal.js-light";import qe from"bn.js";var cn=9007199254740991;function oe(o){let t=_("Raydium_parseBigNumberish");if(o instanceof qe)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new qe(o);t.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&t.logWithError(`BigNumberish number underflow: ${o}`),(o>=cn||o<=-cn)&&t.logWithError(`BigNumberish number overflow: ${o}`),new qe(String(o))):typeof o=="bigint"?new qe(o.toString()):(t.error(`invalid BigNumberish value: ${o}`),new qe(0))}var it=_("module/fraction"),xt=We(rt),Ue=We(Oo),No={[0]:Ue.ROUND_DOWN,[1]:Ue.ROUND_HALF_UP,[2]:Ue.ROUND_UP},Mo={[0]:rt.roundDown,[1]:rt.roundHalfUp,[2]:rt.roundUp},G=class{constructor(t,n=new Lo(1)){this.numerator=oe(t),this.denominator=oe(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(t){let n=t instanceof G?t:new G(oe(t));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof G?t:new G(oe(t));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof G?t:new G(oe(t));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof G?t:new G(oe(t));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},r=1){Number.isInteger(t)||it.logWithError(`${t} is not an integer.`),t<=0&&it.logWithError(`${t} is not positive.`),Ue.set({precision:t+1,rounding:No[r]});let u=new Ue(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return u.toFormat(u.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},r=1){return Number.isInteger(t)||it.logWithError(`${t} is not an integer.`),t<0&&it.logWithError(`${t} is negative.`),xt.DP=t,xt.RM=Mo[r]||1,new xt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var As=_("Raydium_amount"),ws=We(Fo);import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ln}from"@solana/spl-token";var at={chainId:101,address:Vo.default.toBase58(),programId:ln.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},le={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ln.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 Ct}from"@solana/web3.js";import{PublicKey as X,SystemProgram as mn,SYSVAR_RENT_PUBKEY as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";function Ie({pubkey:o,isSigner:t=!1,isWritable:n=!0}){return{pubkey:o,isWritable:n,isSigner:t}}var Do=[Ie({pubkey:Eo,isWritable:!1}),Ie({pubkey:mn.programId,isWritable:!1}),Ie({pubkey:_o,isWritable:!1})];function dn({publicKey:o,transformSol:t}){let n=pn(o.toString());if(n instanceof X)return t&&n.equals(Pe)?ye:n;if(t&&n.toString()===Pe.toBase58())return ye;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function pn(o){try{return new X(o)}catch{return o}}var Kt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ge=new X("SysvarRent111111111111111111111111111111111"),Ks=new X("SysvarC1ock11111111111111111111111111111111"),Be=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Wo=new X("Sysvar1nstructions1111111111111111111111111"),qo=mn.programId,Cs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Rs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ls=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Os=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ns=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ms=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Fs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),vs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Vs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_s=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Es=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ye=new X("So11111111111111111111111111111111111111112"),Pe=X.default;var Rt=class{constructor({mint:t,decimals:n,symbol:r,name:u,skipMint:d=!1,isToken2022:y=!1}){if(t===Pe.toBase58()||t instanceof Ct&&Pe.equals(t)){this.decimals=le.decimals,this.symbol=le.symbol,this.name=le.name,this.mint=new Ct(le.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=r||t.toString().substring(0,6),this.name=u||t.toString().substring(0,6),this.mint=d?Ct.default:dn({publicKey:t}),this.isToken2022=y}equals(t){return this===t?!0:this.mint.equals(t.mint)}},ee=Rt;ee.WSOL=new Rt(D(R({},le),{mint:le.address}));var Lt=class{constructor({decimals:t,symbol:n="UNKNOWN",name:r="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=r}equals(t){return this===t}},st=Lt;st.SOL=new Lt(at);import Uo from"bn.js";var js=new G(new Uo(100));var ou=_("Raydium_price");import{merge as vx}from"lodash";import du from"axios";var fn={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"},Go=D(R({},fn),{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 Fu=_("Raydium_Api");import{PublicKey as em,SystemProgram as tm}from"@solana/web3.js";import{AccountLayout as am,createAssociatedTokenAccountIdempotentInstruction as sm,TOKEN_PROGRAM_ID as um,TOKEN_2022_PROGRAM_ID as cm}from"@solana/spl-token";import{PublicKey as Re,sendAndConfirmTransaction as Vt,SystemProgram as Ho,Transaction as Ye,TransactionMessage as Qe,VersionedTransaction as Ze}from"@solana/web3.js";import jo from"axios";import{PublicKey as Ot,AddressLookupTableAccount as Ke}from"@solana/web3.js";async function Nt({connection:o,address:t,cluster:n="mainnet"}){let r=await fe(o,[...new Set(t.map(d=>d.toString()))].map(d=>new Ot(d))),u={};for(let d=0;d<t.length;d++){let y=r[d],f=t[d];if(!y)continue;let g=new Ke({key:f,state:Ke.deserialize(y.data)});u[f.toString()]=g,n==="devnet"?xe[f.toString()]=g:Se[f.toString()]=g}return u}var Se={},Mt=async o=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Se[t])return Se;let n=new Ot(t),r=await o.getAccountInfo(n);return r&&(Se[t]=new Ke({key:n,state:Ke.deserialize(r.data)})),Se},xe={},Ft=async o=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(xe[t])return xe;let n=new Ot(t),r=await o.getAccountInfo(n);return r&&(xe[t]=new Ke({key:n,state:Ke.deserialize(r.data)})),xe};var Z={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 yn,Keypair as gn,PublicKey as zo,Transaction as Pn,TransactionMessage as Xo,VersionedTransaction as An}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yo}from"@solana/spl-token";var bn=_("Raydium_txUtil"),wn=1644;function ut(o){let t=[],n=[];return o.microLamports&&(t.push(yn.setComputeUnitPrice({microLamports:o.microLamports})),n.push(Z.SetComputeUnitPrice)),o.units&&(t.push(yn.setComputeUnitLimit({units:o.units})),n.push(Z.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Ce(o,t){var r,u;let n=t!=null?t:"confirmed";return(u=await((r=o.getLatestBlockhash)==null?void 0:r.call(o,{commitment:n})))==null?void 0:u.blockhash}async function ct(o,t){return o.getSignatureStatuses([t]),new Promise((n,r)=>{let u=setTimeout(r,6e4);o.onSignature(t,d=>{if(clearTimeout(u),!d.err){n("");return}r(Object.assign(d.err,{txId:t}))},"confirmed")})}function vt(o,t){o.length<1&&bn.logWithError(`no instructions provided: ${o.toString()}`),t.length<1&&bn.logWithError(`no signers provided:, ${t.toString()}`);let n=new Pn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...o);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<wn}catch{return!1}}function q(o,t){let[n,r]=zo.findProgramAddressSync(o,t);return{publicKey:n,nonce:r}}function ze({instructions:o,payer:t,signers:n}){return vt(o,[t,...n])}function Xe({instructions:o,payer:t,lookupTableAddressAccount:n,recentBlockhash:r=gn.generate().publicKey.toString()}){let d=new Xo({payerKey:t,recentBlockhash:r,instructions:o}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new An(d).serialize()).toString("base64").length<wn}catch{return!1}}var Qo=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),Zo=o=>{let t=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof An&&(t=Qo(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function Ae(o){let t=[];return o.forEach(n=>{n instanceof Pn&&(n.recentBlockhash||(n.recentBlockhash=Yo.toBase58()),n.feePayer||(n.feePayer=gn.generate().publicKey)),t.push(Zo(n))}),console.log("simulate tx string:",t),t}var lt=2e3,mt=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 r;let t=(await jo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(r=t==null?void 0:t[15])!=null?r:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:r}=ut(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...r),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(Ho.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new Re(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(Z.TransferTip),!0):!1}async calComputeBudget({config:t,defaultIns:n}){try{let r=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(r))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:r=[],instructionTypes:u=[],endInstructionTypes:d=[],lookupTableAddress:y=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...r),this.instructionTypes.push(...u),this.endInstructionTypes.push(...d),this.lookupTableAddress.push(...y.filter(f=>f!==Re.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:r}){return t===0?await this.buildV0(D(R({},n||{}),{lookupTableAddress:r})):this.build(n)}build(t){var r;let n=new Ye;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((r=this.owner)==null?void 0:r.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:d,skipPreflight:y=!0,sendAndConfirm:f,notSendToRpc:g}=u||{},x=d!=null?d:await Ce(this.connection,this.blockhashCommitment);if(n.recentBlockhash=x,this.signers.length&&n.sign(...this.signers),Ae([n]),(b=this.owner)!=null&&b.isKeyPair)return{txId:f?await Vt(this.connection,n,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:y}),signedTx:n};if(this.signAllTransactions){let O=await this.signAllTransactions([n]);if(this.signers.length)for(let K of O)try{K.sign(...this.signers)}catch{}return{txId:g?"":await this.connection.sendRawTransaction(O[0].serialize(),{skipPreflight:y}),signedTx:O[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var x;let{extraPreBuildData:n=[],extInfo:r}=t,{transaction:u}=this.build(r),d=n.filter(b=>b.transaction.instructions.length>0),y=[u,...d.map(b=>b.transaction)],f=[this.signers,...d.map(b=>b.signers)],g=[...this.instructionTypes,...d.map(b=>b.instructionTypes).flat()];return(x=this.owner)!=null&&x.signer&&f.forEach(b=>{b.some(O=>O.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:y,signers:f,instructionTypes:g,execute:async b=>{var I;let{sequentially:O,onTxUpdate:K,skipTxCount:B=0,recentBlockHash:M,skipPreflight:P=!0}=b||{},T=M!=null?M:await Ce(this.connection,this.blockhashCommitment);if((I=this.owner)!=null&&I.isKeyPair){if(O){let h=[],F=0;for(let v of y){if(++F,F<=B)continue;let p=await Vt(this.connection,v,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:P});h.push(p)}return{txIds:h,signedTxs:y}}return{txIds:await await Promise.all(y.map(async h=>(h.recentBlockhash=T,await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:P})))),signedTxs:y}}if(this.signAllTransactions){let h=y.map((v,p)=>(v.recentBlockhash=T,f[p].length&&v.sign(...f[p]),v));Ae(h);let F=await this.signAllTransactions(h);if(O){let v=0,p=[],A=async()=>{if(!F[v])return;let w=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:P});p.push({txId:w,status:"sent",signedTx:F[v]}),K==null||K([...p]),v++;let S=!1,C=null,V=null,re=U=>{C!==null&&clearInterval(C),V!==null&&this.connection.removeSignatureListener(V);let W=p.findIndex($=>$.txId===w);if(W>-1){if(p[W].status==="error"||p[W].status==="success")return;p[W].status=U.err?"error":"success"}K==null||K([...p]),U.err||A()};this.loopMultiTxStatus&&(C=setInterval(async()=>{var U;if(S){clearInterval(C);return}try{let W=await this.connection.getTransaction(w,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(S=!0,clearInterval(C),re({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",w))}catch(W){S=!0,clearInterval(C),console.error("getTransaction timeout:",W,w)}},lt)),V=this.connection.onSignature(w,U=>{if(S){this.connection.removeSignatureListener(V);return}S=!0,re(U)},"confirmed"),this.connection.getSignatureStatus(w)};return await A(),{txIds:p.map(w=>w.txId),signedTxs:F}}else{let v=[];for(let p=0;p<F.length;p+=1){let A=await this.connection.sendRawTransaction(F[p].serialize(),{skipPreflight:P});v.push(A)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:r}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:r||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:r})}async buildV0(t){var P;let M=t||{},{lookupTableCache:n={},lookupTableAddress:r=[],forerunCreate:u,recentBlockhash:d}=M,y=ce(M,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),f=R(R({},this.cluster==="devnet"?await Ft(this.connection):await Mt(this.connection)),n),g=Array.from(new Set([...r,...this.lookupTableAddress])),x=[];for(let T of g)f[T]===void 0&&x.push(new Re(T));let b=await Nt({connection:this.connection,address:x});for(let[T,I]of Object.entries(b))f[T]=I;let O=u?Re.default.toBase58():d!=null?d:await Ce(this.connection,this.blockhashCommitment),K=new Qe({payerKey:this.feePayer,recentBlockhash:O,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(f));((P=this.owner)==null?void 0:P.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let B=new Ze(K);return B.sign(this.signers),{builder:this,transaction:B,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var v;let{skipPreflight:I=!0,sendAndConfirm:h,notSendToRpc:F}=T||{};if(Ae([B]),(v=this.owner)!=null&&v.isKeyPair){let p=await this.connection.sendTransaction(B,{skipPreflight:I});return h&&await ct(this.connection,p),{txId:p,signedTx:B}}if(this.signAllTransactions){let p=await this.signAllTransactions([B]);if(this.signers.length)for(let A of p)try{A.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(p[0],{skipPreflight:I}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:y||{}}}async buildV0MultiTx(t){var x;let{extraPreBuildData:n=[],buildProps:r}=t,{transaction:u}=await this.buildV0(r),d=n.filter(b=>b.builder.instructions.length>0),y=[u,...d.map(b=>b.transaction)],f=[this.signers,...d.map(b=>b.signers)],g=[...this.instructionTypes,...d.map(b=>b.instructionTypes).flat()];return(x=this.owner)!=null&&x.signer&&f.forEach(b=>{b.some(O=>O.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),y.forEach(async(b,O)=>{b.sign(f[O])}),{builder:this,transactions:y,signers:f,instructionTypes:g,buildProps:r,execute:async b=>{var P;let{sequentially:O,onTxUpdate:K,recentBlockHash:B,skipPreflight:M=!0}=b||{};if(B&&y.forEach(T=>T.message.recentBlockhash=B),Ae(y),(P=this.owner)!=null&&P.isKeyPair){if(O){let T=[];for(let I of y){let h=await this.connection.sendTransaction(I,{skipPreflight:M});await ct(this.connection,h),T.push(h)}return{txIds:T,signedTxs:y}}return{txIds:await Promise.all(y.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:M}))),signedTxs:y}}if(this.signAllTransactions){let T=await this.signAllTransactions(y);if(O){let I=0,h=[],F=async()=>{if(!T[I])return;let v=await this.connection.sendTransaction(T[I],{skipPreflight:M});h.push({txId:v,status:"sent",signedTx:T[I]}),K==null||K([...h]),I++;let p=!1,A=null,w=null,S=C=>{A!==null&&clearInterval(A),w!==null&&this.connection.removeSignatureListener(w);let V=h.findIndex(re=>re.txId===v);if(V>-1){if(h[V].status==="error"||h[V].status==="success")return;h[V].status=C.err?"error":"success"}K==null||K([...h]),C.err||F()};this.loopMultiTxStatus&&(A=setInterval(async()=>{var C;if(p){clearInterval(A);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(p=!0,clearInterval(A),S({err:((C=V.meta)==null?void 0:C.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){p=!0,clearInterval(A),console.error("getTransaction timeout:",V,v)}},lt)),w=this.connection.onSignature(v,C=>{if(p){this.connection.removeSignatureListener(w);return}p=!0,S(C)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:T}}else{let I=[];for(let h=0;h<T.length;h+=1){let F=await this.connection.sendTransaction(T[h],{skipPreflight:M});I.push(F)}return{txIds:I,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuild(t){var K;let O=t||{},{splitIns:n=[],computeBudgetConfig:r}=O,u=ce(O,["splitIns","computeBudgetConfig"]),d=r?ut(r):{instructions:[],instructionTypes:[]},y=this.signers.reduce((B,M)=>D(R({},B),{[M.publicKey.toBase58()]:M}),{}),f=[],g=[],x=[],b=0;if(this.allInstructions.forEach(B=>{let M=[...x,B],P=r?[...d.instructions,...M]:M,I=[...new Set(M.map(h=>h.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(h=>new Re(h));if(B!==n[b]&&x.length<12&&(ze({instructions:P,payer:this.feePayer,signers:I})||ze({instructions:M,payer:this.feePayer,signers:I})))x.push(B);else{if(x.length===0)throw Error("item ins too big");b+=B===n[b]?1:0,ze({instructions:r?[...d.instructions,...x]:[...x],payer:this.feePayer,signers:I})?f.push(new Ye().add(...d.instructions,...x)):f.push(new Ye().add(...x)),g.push(Array.from(new Set(x.map(h=>h.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(h=>y[h]).filter(h=>h!==void 0)),x=[B]}}),x.length>0){let M=[...new Set(x.map(P=>P.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(P=>y[P]).filter(P=>P!==void 0);ze({instructions:r?[...d.instructions,...x]:[...x],payer:this.feePayer,signers:M.map(P=>P.publicKey)})?f.push(new Ye().add(...d.instructions,...x)):f.push(new Ye().add(...x)),g.push(M)}return f.forEach(B=>B.feePayer=this.feePayer),(K=this.owner)!=null&&K.signer&&g.forEach(B=>{B.some(M=>M.publicKey.equals(this.owner.publicKey))||B.push(this.owner.signer)}),{builder:this,transactions:f,signers:g,instructionTypes:this.instructionTypes,execute:async B=>{var v;let{sequentially:M,onTxUpdate:P,skipTxCount:T=0,recentBlockHash:I,skipPreflight:h=!0}=B||{},F=I!=null?I:await Ce(this.connection,this.blockhashCommitment);if(f.forEach(async(p,A)=>{p.recentBlockhash=F,g[A].length&&p.sign(...g[A])}),Ae(f),(v=this.owner)!=null&&v.isKeyPair){if(M){let p=0,A=[];for(let w of f){if(++p,p<=T){A.push("tx skipped");continue}let S=await Vt(this.connection,w,this.signers.find(C=>C.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});A.push(S)}return{txIds:A,signedTxs:f}}return{txIds:await Promise.all(f.map(async p=>await this.connection.sendRawTransaction(p.serialize(),{skipPreflight:h}))),signedTxs:f}}if(this.signAllTransactions){let p=await this.signAllTransactions(f.slice(T,f.length)),A=[...f.slice(0,T),...p];if(M){let w=0,S=[],C=async()=>{if(!A[w])return;w<T&&(S.push({txId:"",status:"success",signedTx:A[w]}),P==null||P([...S]),w++,C());let V=await this.connection.sendRawTransaction(A[w].serialize(),{skipPreflight:h});S.push({txId:V,status:"sent",signedTx:A[w]}),P==null||P([...S]),w++;let re=!1,U=null,W=null,$=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ne=S.findIndex(de=>de.txId===V);if(ne>-1){if(S[ne].status==="error"||S[ne].status==="success")return;S[ne].status=z.err?"error":"success"}P==null||P([...S]),z.err||C()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(re){clearInterval(U);return}try{let ne=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ne&&(re=!0,clearInterval(U),$({err:((z=ne.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ne){re=!0,clearInterval(U),console.error("getTransaction timeout:",ne,V)}},lt)),W=this.connection.onSignature(V,z=>{if(re){this.connection.removeSignatureListener(W);return}re=!0,$(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await C(),{txIds:S.map(V=>V.txId),signedTxs:A}}else{let w=[];for(let S=0;S<A.length;S+=1){let C=await this.connection.sendRawTransaction(A[S].serialize(),{skipPreflight:h});w.push(C)}return{txIds:w,signedTxs:A}}}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:r=[],lookupTableCache:u={},lookupTableAddress:d=[],insCountLimit:y=12}=F,f=ce(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),g=R(R({},this.cluster==="devnet"?await Ft(this.connection):await Mt(this.connection)),u),x=Array.from(new Set([...this.lookupTableAddress,...d])),b=[];for(let p of x)g[p]===void 0&&b.push(new Re(p));let O=await Nt({connection:this.connection,address:b});for(let[p,A]of Object.entries(O))g[p]=A;let K=n?ut(n):{instructions:[],instructionTypes:[]},B=await Ce(this.connection,this.blockhashCommitment),M=this.signers.reduce((p,A)=>D(R({},p),{[A.publicKey.toBase58()]:A}),{}),P=[],T=[],I=[],h=0;if(this.allInstructions.forEach(p=>{let A=[...I,p],w=n?[...K.instructions,...A]:A;if(p!==r[h]&&I.length<y&&(Xe({instructions:w,payer:this.feePayer,lookupTableAddressAccount:g})||Xe({instructions:A,payer:this.feePayer,lookupTableAddressAccount:g})))I.push(p);else{if(I.length===0)throw Error("item ins too big");h+=p===r[h]?1:0;let S={};for(let C of[...new Set(x)])g[C]!==void 0&&(S[C]=g[C]);if(n&&Xe({instructions:[...K.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:B})){let C=new Qe({payerKey:this.feePayer,recentBlockhash:B,instructions:[...K.instructions,...I]}).compileToV0Message(Object.values(g));P.push(new Ze(C))}else{let C=new Qe({payerKey:this.feePayer,recentBlockhash:B,instructions:[...I]}).compileToV0Message(Object.values(g));P.push(new Ze(C))}T.push(Array.from(new Set(I.map(C=>C.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(C=>M[C]).filter(C=>C!==void 0)),I=[p]}}),I.length>0){let A=[...new Set(I.map(w=>w.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(w=>M[w]).filter(w=>w!==void 0);if(n&&Xe({instructions:[...K.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:B})){let w=new Qe({payerKey:this.feePayer,recentBlockhash:B,instructions:[...K.instructions,...I]}).compileToV0Message(Object.values(g));P.push(new Ze(w))}else{let w=new Qe({payerKey:this.feePayer,recentBlockhash:B,instructions:[...I]}).compileToV0Message(Object.values(g));P.push(new Ze(w))}T.push(A)}return(v=this.owner)!=null&&v.signer&&T.forEach(p=>{p.some(A=>A.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),P.forEach((p,A)=>{p.sign(T[A])}),{builder:this,transactions:P,buildProps:t,signers:T,instructionTypes:this.instructionTypes,execute:async p=>{var re;let{sequentially:A,onTxUpdate:w,skipTxCount:S=0,recentBlockHash:C,skipPreflight:V=!0}=p||{};if(P.map(async(U,W)=>{T[W].length&&U.sign(T[W]),C&&(U.message.recentBlockhash=C)}),Ae(P),(re=this.owner)!=null&&re.isKeyPair){if(A){let U=0,W=[];for(let $ of P){if(++U,U<=S){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction($,{skipPreflight:V});await ct(this.connection,z),W.push(z)}return{txIds:W,signedTxs:P}}return{txIds:await Promise.all(P.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:P}}if(this.signAllTransactions){let U=await this.signAllTransactions(P.slice(S,P.length)),W=[...P.slice(0,S),...U];if(A){let $=0,z=[],ne=async()=>{if(!W[$])return;if($<S){z.push({txId:"",status:"success",signedTx:W[$]}),w==null||w([...z]),$++,ne();return}let de=await this.connection.sendTransaction(W[$],{skipPreflight:V});z.push({txId:de,status:"sent",signedTx:W[$]}),w==null||w([...z]),$++;let Ee=!1,he=null,nt=null,nn=ge=>{he!==null&&clearInterval(he),nt!==null&&this.connection.removeSignatureListener(nt);let pe=z.findIndex(ko=>ko.txId===de);if(pe>-1){if(z[pe].status==="error"||z[pe].status==="success")return;z[pe].status=ge.err?"error":"success"}w==null||w([...z]),ge.err||ne()};this.loopMultiTxStatus&&(he=setInterval(async()=>{var ge;if(Ee){clearInterval(he);return}try{let pe=await this.connection.getTransaction(de,{commitment:"confirmed",maxSupportedTransactionVersion:0});pe&&(Ee=!0,clearInterval(he),nn({err:((ge=pe.meta)==null?void 0:ge.err)||null}),console.log("tx status from getTransaction:",de))}catch(pe){Ee=!0,clearInterval(he),console.error("getTransaction timeout:",pe,de)}},lt)),nt=this.connection.onSignature(de,ge=>{if(Ee){this.connection.removeSignatureListener(nt);return}Ee=!0,nn(ge)},"confirmed"),this.connection.getSignatureStatus(de)};return ne(),{txIds:[],signedTxs:W}}else{let $=[];for(let z=0;z<W.length;z+=1){let ne=await this.connection.sendTransaction(W[z],{skipPreflight:V});$.push(ne)}return{txIds:$,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:f||{}}}};var _t=(...o)=>o.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),ie=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=_(n)}createTxBuilder(t){return this.scope.checkOwner(),new mt({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(_t(t))}logInfo(...t){this.logger.info(_t(t))}logAndCreateError(...t){let n=_t(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Ll,SystemProgram as Nl}from"@solana/web3.js";import vl from"bn.js";import{createCloseAccountInstruction as Dl,createInitializeAccountInstruction as Wl,createTransferInstruction as ql,TOKEN_PROGRAM_ID as Ul}from"@solana/spl-token";import{Keypair as Pl,PublicKey as Al}from"@solana/web3.js";import Tl from"bn.js";import{TOKEN_PROGRAM_ID as Bl}from"@solana/spl-token";import{PublicKey as ci}from"@solana/web3.js";import Bn,{isBN as Sn}from"bn.js";import{bits as $o,BitStructure as hc,blob as Jo,Blob as Ic,cstr as Bc,f32 as Sc,f32be as xc,f64 as Kc,f64be as Cc,greedy as Rc,Layout as ei,ns64 as Lc,ns64be as Oc,nu64 as Nc,nu64be as Mc,offset as ti,s16 as Fc,s16be as vc,s24 as Vc,s24be as _c,s32 as ni,s32be as Ec,s40 as Dc,s40be as Wc,s48 as qc,s48be as Uc,s8 as Gc,seq as oi,struct as zc,Structure as ii,u16 as ri,u16be as Xc,u24 as Yc,u24be as Qc,u32 as ai,u32be as Zc,u40 as Hc,u40be as jc,u48 as $c,u48be as Jc,u8 as si,UInt as ui,union as el,Union as tl,unionLayoutDiscriminator as nl,utf8 as ol}from"@solana/buffer-layout";var dt=ei,kn=ii;var Et=ui;var Tn=si,H=ri;var pt=ai;var se=ni;var hn=oi;var N=Jo;var Dt=$o,In=ti;var ke=class extends dt{constructor(n,r,u){super(n,u);this.blob=N(n),this.signed=r}decode(n,r=0){let u=new Bn(this.blob.decode(n,r),10,"le");return this.signed?u.fromTwos(this.span*8).clone():u}encode(n,r,u=0){return typeof n=="number"&&(n=new Bn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),r,u)}},ft=class extends dt{constructor(n){super(8,n);this._lower=Dt(pt(),!1),this._upper=Dt(pt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,r=0){let u=this._lower.decode(n,r),d=this._upper.decode(n,r+this._lower.span);return R(R({},u),d)}encode(n,r,u=0){return this._lower.encode(n,r,u)+this._upper.encode(n,r,u+this._lower.span)}};function c(o){return new Et(1,o)}function Y(o){return new Et(4,o)}function e(o){return new ke(8,!1,o)}function L(o){return new ke(16,!1,o)}function xn(o){return new ke(1,!0,o)}function Le(o){return new ke(8,!0,o)}function Kn(o){return new ke(16,!0,o)}var He=class extends dt{constructor(n,r,u,d){super(n.span,d);this.layout=n,this.decoder=r,this.encoder=u}decode(n,r){return this.decoder(this.layout.decode(n,r))}encode(n,r,u){return this.layout.encode(this.encoder(n),r,u)}getSpan(n,r){return this.layout.getSpan(n,r)}};function i(o){return new He(N(32),t=>new ci(t),t=>t.toBuffer(),o)}function ae(o){return new He(Tn(),li,mi,o)}function li(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function mi(o){return o?1:0}function Cn(o,t){let n=pt("length"),r=l([n,m(o,In(n,-n.span),"values")]);return new He(r,({values:u})=>u,u=>({values:u}),t)}var Wt=class extends kn{decode(t,n){return super.decode(t,n)}};function l(o,t,n){return new Wt(o,t,n)}function m(o,t,n){let r,u=typeof t=="number"?t:Sn(t)?t.toNumber():new Proxy(t,{get(d,y){if(!r){let f=Reflect.get(d,"count");r=Sn(f)?f.toNumber():f,Reflect.set(d,"count",r)}return Reflect.get(d,y)},set(d,y,f){return y==="count"&&(r=f),Reflect.set(d,y,f)}});return hn(o,u,n)}var yt=l([i("mint"),i("owner"),e("amount"),Y("delegateOption"),i("delegate"),c("state"),Y("isNativeOption"),e("isNative"),e("delegatedAmount"),Y("closeAuthorityOption"),i("closeAuthority")]);import{PublicKey as xp,SystemProgram as Kp}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Rp}from"@solana/spl-token";import{PublicKey as bm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pm}from"@solana/spl-token";import{PublicKey as k}from"@solana/web3.js";var Ln=new k("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),On=new k("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Nn=new k("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),qt=new k("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Tm=new k("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),pi=new k("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Mn=new k("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fn=new k("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),hm=new k("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),fi=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),vn=new k("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),yi=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),bi=new k("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Vn=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Im=new k("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),gi=new k("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Ut=new k("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Pi=new k("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Bm=new k("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ai=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),wi=new k("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ki=new k("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Sm=new k("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),xm=new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Km=new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Cm=new k("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Rm=new k("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var be={OPEN_BOOK_PROGRAM:new k("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new k("Ray1111111111111111111111111111111111111111"),AMM_V4:new k("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new k("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new k("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new k("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new k("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new k("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new k("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new k("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:k.default,Router:new k("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new k("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new k("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new k("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new k("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new k("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new k("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new k("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new k("Ray1111111111111111111111111111111111111111")};import Dp from"decimal.js";import{PublicKey as Gt}from"@solana/web3.js";var Ti=l([c("instruction")]),hi=l([c("instruction")]),Ii=l([e("rewardState"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardLastUpdateTime"),e("totalReward"),e("totalRewardEmissioned"),e("rewardClaimed"),e("rewardPerSecond"),L("accRewardPerShare"),i("rewardVault"),i("rewardMint"),i("rewardSender"),e("rewardType"),m(e(),15,"padding")]),Bi=l([e("state"),e("nonce"),i("lpVault"),i("rewardVault"),i(),i(),e(),e(),e("totalReward"),L("perShareReward"),e("lastSlot"),e("perSlotReward")]),Si=l([e("state"),e("nonce"),i("lpVault"),i("rewardVaultA"),e("totalRewardA"),L("perShareRewardA"),e("perSlotRewardA"),c("option"),i("rewardVaultB"),N(7),e("totalRewardB"),L("perShareRewardB"),e("perSlotRewardB"),e("lastSlot"),i()]),xi=l([e(),e("state"),e("nonce"),e("validRewardTokenNum"),L("rewardMultiplier"),e("rewardPeriodMax"),e("rewardPeriodMin"),e("rewardPeriodExtend"),i("lpMint"),i("lpVault"),m(Ii,5,"rewardInfos"),i("creator"),i(),m(e(),32,"padding")]),Ki=new Proxy(Bi,{get(o,t,n){return t==="decode"?(...r)=>{let u=o.decode(...r);return D(R({},u),{version:3,rewardInfos:[{rewardVault:u.rewardVault,totalReward:u.totalReward,perSlotReward:u.perSlotReward,perShareReward:u.perShareReward}]})}:Reflect.get(o,t,n)}}),Ci=new Proxy(Si,{get(o,t,n){return t==="decode"?(...r)=>{let u=o.decode(...r);return D(R({},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(o,t,n)}}),_n=new Proxy(xi,{get(o,t,n){return t==="decode"?(...r)=>{let u=o.decode(...r);return D(R({},u),{version:6,rewardInfos:u.rewardInfos.map(d=>{var y;return D(R({},d),{rewardType:((y=Object.entries(je).find(f=>String(f[1])===d.rewardType.toString()))!=null?y:["Standard SPL"])[0]})})})}:Reflect.get(o,t,n)}}),Ri=l([e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),Li=l([c("instruction"),e("nonce"),m(Ri,5,"rewardTimeInfo")]),Oi=l([c("instruction"),e("rewardReopenTime"),e("rewardEndTime"),e("rewardPerSecond")]),Ni=l([c("instruction"),e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),Vm=l([e("state"),i("id"),i("owner"),e("deposited"),m(e(),1,"rewardDebts")]),En=l([e("state"),i("id"),i("owner"),e("deposited"),m(L(),1,"rewardDebts"),e(""),e("voteLockedBalance"),m(e(),15)]),_m=l([e("state"),i("id"),i("owner"),e("deposited"),m(e(),2,"rewardDebts")]),Mi=l([e("state"),i("id"),i("owner"),e("deposited"),m(L(),2,"rewardDebts"),m(e(),17)]),Fi=l([e(),e("state"),i("id"),i("owner"),e("deposited"),m(L(),5,"rewardDebts"),m(e(),16)]),vi=l([c("instruction"),e("amount")]),Vi=l([i("mint"),i("grantAuthority"),e("baselineVoteWeightScaledFactor"),e("maxExtraLockupVoteWeightScaledFactor"),e("lockupSaturationSecs"),xn("digitShift"),m(c(),7,"reserved1"),m(e(),7,"reserved2")]),_i=l([N(8),i("governanceProgramId"),i("realm"),i("realmGoverningTokenMint"),i("realmAuthority"),m(c(),32,"reserved1"),m(Vi,4,"votingMints"),Le("timeOffset"),c("bump"),m(c(),7,"reserved2"),m(e(),11,"reserved3")]),Ei=l([Le("startTime"),Le("endTime"),c("kind"),m(c(),15,"reserved")]),Di=l([m(Ei,1,"lockup"),e("amountDeposited_native"),e("amountInitiallyLockedNative"),ae("isUsed"),ae("allowClawback"),c("votingMintConfigIdx"),m(c(),29,"reserved")]),Wi=l([N(8),i("voterAuthority"),i("registrar"),m(Di,32,"deposits"),c("voterBump"),c("voterWweightRecordBump"),m(c(),94,"reserved")]);import{NATIVE_MINT as Ym}from"@solana/spl-token";var Qm=_("Raydium_farm_config"),qi=new Gt("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ui=new Gt("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Zm=new Gt("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var je={"Standard SPL":0,"Option tokens":1},Dn={[Ln.toString()]:3,[On.toString()]:4,[Nn.toString()]:5,[qt.toString()]:6,[be.FARM_PROGRAM_ID_V3.toString()]:3,[be.FARM_PROGRAM_ID_V4.toString()]:4,[be.FARM_PROGRAM_ID_V5.toString()]:5,[be.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as qd,SystemProgram as Ud,SYSVAR_CLOCK_PUBKEY as Gd,SYSVAR_RENT_PUBKEY as zd,TransactionInstruction as Xd}from"@solana/web3.js";import Qd from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Hd,createAssociatedTokenAccountIdempotentInstruction as jd,TOKEN_PROGRAM_ID as $d}from"@solana/spl-token";import Pd from"bn.js";import{PublicKey as cd}from"@solana/web3.js";import md from"bn.js";var Ld=_("Raydium.farm.util");var cp=_("Raydium_farm_instruction"),lp={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 jp from"bn.js";import{PublicKey as yA}from"@solana/web3.js";import{AccountLayout as PA,MintLayout as AA,NATIVE_MINT as wA,TOKEN_PROGRAM_ID as TA}from"@solana/spl-token";import ef from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ob,TOKEN_2022_PROGRAM_ID as Nb,TOKEN_PROGRAM_ID as Mb}from"@solana/spl-token";import{Keypair as Vb,PublicKey as _b,SystemProgram as Db,TransactionInstruction as Wb}from"@solana/web3.js";import Ub from"bn.js";import E from"bn.js";var Me=new E(1).shln(64);var ji=new E(1).shln(128),Xt=new E(1).shln(64).subn(1),$i=new E(1).shln(128).subn(1);var Fe=new E("4295048016"),ve=new E("79226673521066979257578248091"),Ji=new E("59543866431248"),er=new E("184467440737095516"),tr=new E("15793534762490258745");var Yt=60,mf=new E("18446743708227953217"),nr=[{bit:0,factor:new E("fffcb933bd6fb800",16)},{bit:1,factor:new E("fff97272373d4000",16)},{bit:2,factor:new E("fff2e50f5f657000",16)},{bit:3,factor:new E("ffe5caca7e10f000",16)},{bit:4,factor:new E("ffcb9843d60f7000",16)},{bit:5,factor:new E("ff973b41fa98e800",16)},{bit:6,factor:new E("ff2ea16466c9b000",16)},{bit:7,factor:new E("fe5dee046a9a3800",16)},{bit:8,factor:new E("fcbe86c7900bb000",16)},{bit:9,factor:new E("f987a7253ac65800",16)},{bit:10,factor:new E("f3392b0822bb6000",16)},{bit:11,factor:new E("e7159475a2caf000",16)},{bit:12,factor:new E("d097f3bdfd2f2000",16)},{bit:13,factor:new E("a9f746462d9f8000",16)},{bit:14,factor:new E("70d869a156f31c00",16)},{bit:15,factor:new E("31be135f97ed3200",16)},{bit:16,factor:new E("9aa508b5b85a500",16)},{bit:17,factor:new E("5d6af8dedc582c",16)},{bit:18,factor:new E("2216e584f5fa",16)}];var Je=3,qn=100;var Un=10,Gn=100,Pt=14;var j=new E(0),Ve=new E(1),df=new E(-1);var pf=new E("18446744073700000000");var or=l([N(8),c("bump"),H("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),H("tickSpacing"),Y("fundFeeRate"),m(Y(),1),i("fundOwner"),m(e(),3)]),ir=l([Y("blockTimestamp"),Le("tickCumulative"),m(e(),4)]),zn=l([N(8),ae("initialized"),e("recentEpoch"),H("observationIndex"),i("poolId"),m(ir,qn,"observations"),m(e(),4)]),rr=l([H("filterPeriod"),H("decayPeriod"),H("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),se("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),e("lastUpdateTimestamp"),m(c(),46)]),ar=l([c("state"),e("openTime"),e("endTime"),e("lastUpdateTime"),L("emissionsPerSecond