@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 87.5 kB
JavaScript
var Ko=Object.defineProperty,xo=Object.defineProperties;var Co=Object.getOwnPropertyDescriptors;var yt=Object.getOwnPropertySymbols;var kn=Object.prototype.hasOwnProperty,Tn=Object.prototype.propertyIsEnumerable;var wn=(r,e,t)=>e in r?Ko(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,M=(r,e)=>{for(var t in e||(e={}))kn.call(e,t)&&wn(r,t,e[t]);if(yt)for(var t of yt(e))Tn.call(e,t)&&wn(r,t,e[t]);return r},_=(r,e)=>xo(r,Co(e));var de=(r,e)=>{var t={};for(var o in r)kn.call(r,o)&&e.indexOf(o)<0&&(t[o]=r[o]);if(r!=null&&yt)for(var o of yt(r))e.indexOf(o)<0&&Tn.call(r,o)&&(t[o]=r[o]);return t};import se from"bn.js";import Bo from"decimal.js";import{PublicKey as Oo}from"@solana/web3.js";import{get as hn,set as Ro}from"lodash";var qt=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},In={},Lo={};function E(r){let e=hn(In,r);if(!e){let t=hn(Lo,r);e=new qt({name:r,logLevel:t}),Ro(In,r,e)}return e}import{MINT_SIZE as _a,TOKEN_PROGRAM_ID as Ea,getTransferFeeConfig as Da,unpackMint as Wa}from"@solana/spl-token";var Ut=E("Raydium_accountInfo_util");async function Ae(r,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:s=100}=M({batchRequest:!1},t),l=Gt(e,s),m=new Array(l.length).fill([]);if(o){let y=l.map(A=>{let T=r._buildArgs([A.map(h=>h.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:T}}),b=Gt(y,10);m=(await(await Promise.all(b.map(async A=>await r._rpcBatchRequest(A)))).flat()).map(A=>(A.error&&Ut.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${A.error.message}`),A.result.value.map(T=>{if(T){let{data:h,executable:S,lamports:w,owner:B,rentEpoch:I}=T;return h.length!==2&&h[1]!=="base64"&&Ut.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(h[0],"base64"),executable:S,lamports:w,owner:new Oo(B),rentEpoch:I}}return null})))}else try{m=await Promise.all(l.map(y=>r.getMultipleAccountsInfo(y,i)))}catch(y){y instanceof Error&&Ut.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return m.flat()}import he from"bn.js";import qC from"decimal.js";import Do from"big.js";import is from"bn.js";import No from"toformat";var Mo=No,Ze=Mo;import gt from"big.js";import vo from"bn.js";import Vo from"decimal.js-light";import He from"bn.js";var Bn=9007199254740991;function ie(r){let e=E("Raydium_parseBigNumberish");if(r instanceof He)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new He(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Bn||r<=-Bn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new He(String(r))):typeof r=="bigint"?new He(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new He(0))}var bt=E("module/fraction"),zt=Ze(gt),je=Ze(Vo),_o={[0]:je.ROUND_DOWN,[1]:je.ROUND_HALF_UP,[2]:je.ROUND_UP},Eo={[0]:gt.roundDown,[1]:gt.roundHalfUp,[2]:gt.roundUp},U=class{constructor(e,t=new vo(1)){this.numerator=ie(e),this.denominator=ie(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new U(this.denominator,this.numerator)}add(e){let t=e instanceof U?e:new U(ie(e));return this.denominator.eq(t.denominator)?new U(this.numerator.add(t.numerator),this.denominator):new U(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof U?e:new U(ie(e));return this.denominator.eq(t.denominator)?new U(this.numerator.sub(t.numerator),this.denominator):new U(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof U?e:new U(ie(e));return new U(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof U?e:new U(ie(e));return new U(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||bt.logWithError(`${e} is not an integer.`),e<=0&&bt.logWithError(`${e} is not positive.`),je.set({precision:e+1,rounding:_o[o]});let i=new je(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||bt.logWithError(`${e} is not an integer.`),e<0&&bt.logWithError(`${e} is negative.`),zt.DP=e,zt.RM=Eo[o]||1,new zt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ps=E("Raydium_amount"),fs=Ze(Do);import{PublicKey as qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Sn}from"@solana/spl-token";var Pt={chainId:101,address:qo.default.toBase58(),programId:Sn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},pe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Sn.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 Yt}from"@solana/web3.js";import{PublicKey as z,SystemProgram as Kn,SYSVAR_RENT_PUBKEY as Uo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Go}from"@solana/spl-token";function Oe({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var zo=[Oe({pubkey:Go,isWritable:!1}),Oe({pubkey:Kn.programId,isWritable:!1}),Oe({pubkey:Uo,isWritable:!1})];function xn({publicKey:r,transformSol:e}){let t=Cn(r.toString());if(t instanceof z)return e&&t.equals(Be)?we:t;if(e&&t.toString()===Be.toBase58())return we;if(typeof t=="string"){if(t===z.default.toBase58())return z.default;try{return new z(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Cn(r){try{return new z(r)}catch{return r}}var Xt=new z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),$e=new z("SysvarRent111111111111111111111111111111111"),Ts=new z("SysvarC1ock11111111111111111111111111111111"),At=new z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Xo=new z("Sysvar1nstructions1111111111111111111111111"),Yo=Kn.programId,hs=new z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Is=new z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Bs=new z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ss=new z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ks=new z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),xs=new z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Cs=new z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Rs=new z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ls=new z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Os=new z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ns=new z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),we=new z("So11111111111111111111111111111111111111112"),Be=z.default;var Qt=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:s=!1,isToken2022:l=!1}){if(e===Be.toBase58()||e instanceof Yt&&Be.equals(e)){this.decimals=pe.decimals,this.symbol=pe.symbol,this.name=pe.name,this.mint=new Yt(pe.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=s?Yt.default:xn({publicKey:e}),this.isToken2022=l}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ee=Qt;ee.WSOL=new Qt(_(M({},pe),{mint:pe.address}));var Zt=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},wt=Zt;wt.SOL=new Zt(Pt);import Qo from"bn.js";var zs=new U(new Qo(100));var js=E("Raydium_price");import{merge as Gx}from"lodash";import au from"axios";var Rn={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"},Zo=_(M({},Rn),{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 Cu=E("Raydium_Api");import{PublicKey as Ql,SystemProgram as Zl}from"@solana/web3.js";import{AccountLayout as em,createAssociatedTokenAccountIdempotentInstruction as tm,TOKEN_PROGRAM_ID as nm,TOKEN_2022_PROGRAM_ID as om}from"@solana/spl-token";import{PublicKey as Ve,sendAndConfirmTransaction as tn,SystemProgram as ti,Transaction as tt,TransactionMessage as nt,VersionedTransaction as ot}from"@solana/web3.js";import ni from"axios";import{PublicKey as Ht,AddressLookupTableAccount as Fe}from"@solana/web3.js";async function jt({connection:r,address:e,cluster:t="mainnet"}){let o=await Ae(r,[...new Set(e.map(s=>s.toString()))].map(s=>new Ht(s))),i={};for(let s=0;s<e.length;s++){let l=o[s],m=e[s];if(!l)continue;let y=new Fe({key:m,state:Fe.deserialize(l.data)});i[m.toString()]=y,t==="devnet"?Me[m.toString()]=y:Ne[m.toString()]=y}return i}var Ne={},$t=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ne[e])return Ne;let t=new Ht(e),o=await r.getAccountInfo(t);return o&&(Ne[e]=new Fe({key:t,state:Fe.deserialize(o.data)})),Ne},Me={},Jt=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Me[e])return Me;let t=new Ht(e),o=await r.getAccountInfo(t);return o&&(Me[e]=new Fe({key:t,state:Fe.deserialize(o.data)})),Me};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 Ln,Keypair as Nn,PublicKey as Ho,Transaction as Mn,TransactionMessage as jo,VersionedTransaction as Fn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";var On=E("Raydium_txUtil"),vn=1644;function kt(r){let e=[],t=[];return r.microLamports&&(e.push(Ln.setComputeUnitPrice({microLamports:r.microLamports})),t.push(Z.SetComputeUnitPrice)),r.units&&(e.push(Ln.setComputeUnitLimit({units:r.units})),t.push(Z.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ve(r,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=r.getLatestBlockhash)==null?void 0:o.call(r,{commitment:t})))==null?void 0:i.blockhash}async function Tt(r,e){return r.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);r.onSignature(e,s=>{if(clearTimeout(i),!s.err){t("");return}o(Object.assign(s.err,{txId:e}))},"confirmed")})}function en(r,e){r.length<1&&On.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&On.logWithError(`no signers provided:, ${e.toString()}`);let t=new Mn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<vn}catch{return!1}}function fe(r,e){let[t,o]=Ho.findProgramAddressSync(r,e);return{publicKey:t,nonce:o}}function Je({instructions:r,payer:e,signers:t}){return en(r,[e,...t])}function et({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Nn.generate().publicKey.toString()}){let s=new jo({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Fn(s).serialize()).toString("base64").length<vn}catch{return!1}}var Jo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),ei=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Fn&&(e=Jo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Se(r){let e=[];return r.forEach(t=>{t instanceof Mn&&(t.recentBlockhash||(t.recentBlockhash=$o.toBase58()),t.feePayer||(t.feePayer=Nn.generate().publicKey)),e.push(ei(t))}),console.log("simulate tx string:",e),e}var ht=2e3,It=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var o;let e=(await ni.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=kt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ti.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ve(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(Z.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:i=[],endInstructionTypes:s=[],lookupTableAddress:l=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...l.filter(m=>m!==Ve.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(_(M({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new tt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var f;let{recentBlockHash:s,skipPreflight:l=!0,sendAndConfirm:m,notSendToRpc:y}=i||{},b=s!=null?s:await ve(this.connection,this.blockhashCommitment);if(t.recentBlockhash=b,this.signers.length&&t.sign(...this.signers),Se([t]),(f=this.owner)!=null&&f.isKeyPair)return{txId:m?await tn(this.connection,t,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:l}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:l}),signedTx:t};if(this.signAllTransactions){let A=await this.signAllTransactions([t]);if(this.signers.length)for(let T of A)try{T.sign(...this.signers)}catch{}return{txId:y?"":await this.connection.sendRawTransaction(A[0].serialize(),{skipPreflight:l}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var b;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),s=t.filter(f=>f.transaction.instructions.length>0),l=[i,...s.map(f=>f.transaction)],m=[this.signers,...s.map(f=>f.signers)],y=[...this.instructionTypes,...s.map(f=>f.instructionTypes).flat()];return(b=this.owner)!=null&&b.signer&&m.forEach(f=>{f.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:l,signers:m,instructionTypes:y,execute:async f=>{var I;let{sequentially:A,onTxUpdate:T,skipTxCount:h=0,recentBlockHash:S,skipPreflight:w=!0}=f||{},B=S!=null?S:await ve(this.connection,this.blockhashCommitment);if((I=this.owner)!=null&&I.isKeyPair){if(A){let k=[],R=0;for(let N of l){if(++R,R<=h)continue;let P=await tn(this.connection,N,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});k.push(P)}return{txIds:k,signedTxs:l}}return{txIds:await await Promise.all(l.map(async k=>(k.recentBlockhash=B,await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:w})))),signedTxs:l}}if(this.signAllTransactions){let k=l.map((N,P)=>(N.recentBlockhash=B,m[P].length&&N.sign(...m[P]),N));Se(k);let R=await this.signAllTransactions(k);if(A){let N=0,P=[],K=async()=>{if(!R[N])return;let x=await this.connection.sendRawTransaction(R[N].serialize(),{skipPreflight:w});P.push({txId:x,status:"sent",signedTx:R[N]}),T==null||T([...P]),N++;let L=!1,O=null,V=null,J=q=>{O!==null&&clearInterval(O),V!==null&&this.connection.removeSignatureListener(V);let W=P.findIndex($=>$.txId===x);if(W>-1){if(P[W].status==="error"||P[W].status==="success")return;P[W].status=q.err?"error":"success"}T==null||T([...P]),q.err||K()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var q;if(L){clearInterval(O);return}try{let W=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(L=!0,clearInterval(O),J({err:((q=W.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",x))}catch(W){L=!0,clearInterval(O),console.error("getTransaction timeout:",W,x)}},ht)),V=this.connection.onSignature(x,q=>{if(L){this.connection.removeSignatureListener(V);return}L=!0,J(q)},"confirmed"),this.connection.getSignatureStatus(x)};return await K(),{txIds:P.map(x=>x.txId),signedTxs:R}}else{let N=[];for(let P=0;P<R.length;P+=1){let K=await this.connection.sendRawTransaction(R[P].serialize(),{skipPreflight:w});N.push(K)}return{txIds:N,signedTxs:R}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var w;let S=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:s}=S,l=de(S,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),m=M(M({},this.cluster==="devnet"?await Jt(this.connection):await $t(this.connection)),t),y=Array.from(new Set([...o,...this.lookupTableAddress])),b=[];for(let B of y)m[B]===void 0&&b.push(new Ve(B));let f=await jt({connection:this.connection,address:b});for(let[B,I]of Object.entries(f))m[B]=I;let A=i?Ve.default.toBase58():s!=null?s:await ve(this.connection,this.blockhashCommitment),T=new nt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(m));((w=this.owner)==null?void 0:w.signer)&&!this.signers.some(B=>B.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let h=new ot(T);return h.sign(this.signers),{builder:this,transaction:h,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async B=>{var N;let{skipPreflight:I=!0,sendAndConfirm:k,notSendToRpc:R}=B||{};if(Se([h]),(N=this.owner)!=null&&N.isKeyPair){let P=await this.connection.sendTransaction(h,{skipPreflight:I});return k&&await Tt(this.connection,P),{txId:P,signedTx:h}}if(this.signAllTransactions){let P=await this.signAllTransactions([h]);if(this.signers.length)for(let K of P)try{K.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(P[0],{skipPreflight:I}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:l||{}}}async buildV0MultiTx(e){var b;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),s=t.filter(f=>f.builder.instructions.length>0),l=[i,...s.map(f=>f.transaction)],m=[this.signers,...s.map(f=>f.signers)],y=[...this.instructionTypes,...s.map(f=>f.instructionTypes).flat()];return(b=this.owner)!=null&&b.signer&&m.forEach(f=>{f.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),l.forEach(async(f,A)=>{f.sign(m[A])}),{builder:this,transactions:l,signers:m,instructionTypes:y,buildProps:o,execute:async f=>{var w;let{sequentially:A,onTxUpdate:T,recentBlockHash:h,skipPreflight:S=!0}=f||{};if(h&&l.forEach(B=>B.message.recentBlockhash=h),Se(l),(w=this.owner)!=null&&w.isKeyPair){if(A){let B=[];for(let I of l){let k=await this.connection.sendTransaction(I,{skipPreflight:S});await Tt(this.connection,k),B.push(k)}return{txIds:B,signedTxs:l}}return{txIds:await Promise.all(l.map(async B=>await this.connection.sendTransaction(B,{skipPreflight:S}))),signedTxs:l}}if(this.signAllTransactions){let B=await this.signAllTransactions(l);if(A){let I=0,k=[],R=async()=>{if(!B[I])return;let N=await this.connection.sendTransaction(B[I],{skipPreflight:S});k.push({txId:N,status:"sent",signedTx:B[I]}),T==null||T([...k]),I++;let P=!1,K=null,x=null,L=O=>{K!==null&&clearInterval(K),x!==null&&this.connection.removeSignatureListener(x);let V=k.findIndex(J=>J.txId===N);if(V>-1){if(k[V].status==="error"||k[V].status==="success")return;k[V].status=O.err?"error":"success"}T==null||T([...k]),O.err||R()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var O;if(P){clearInterval(K);return}try{let V=await this.connection.getTransaction(N,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(P=!0,clearInterval(K),L({err:((O=V.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",N))}catch(V){P=!0,clearInterval(K),console.error("getTransaction timeout:",V,N)}},ht)),x=this.connection.onSignature(N,O=>{if(P){this.connection.removeSignatureListener(x);return}P=!0,L(O)},"confirmed"),this.connection.getSignatureStatus(N)};return R(),{txIds:[],signedTxs:B}}else{let I=[];for(let k=0;k<B.length;k+=1){let R=await this.connection.sendTransaction(B[k],{skipPreflight:S});I.push(R)}return{txIds:I,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var T;let A=e||{},{splitIns:t=[],computeBudgetConfig:o}=A,i=de(A,["splitIns","computeBudgetConfig"]),s=o?kt(o):{instructions:[],instructionTypes:[]},l=this.signers.reduce((h,S)=>_(M({},h),{[S.publicKey.toBase58()]:S}),{}),m=[],y=[],b=[],f=0;if(this.allInstructions.forEach(h=>{let S=[...b,h],w=o?[...s.instructions,...S]:S,I=[...new Set(S.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(k=>new Ve(k));if(h!==t[f]&&b.length<12&&(Je({instructions:w,payer:this.feePayer,signers:I})||Je({instructions:S,payer:this.feePayer,signers:I})))b.push(h);else{if(b.length===0)throw Error("item ins too big");f+=h===t[f]?1:0,Je({instructions:o?[...s.instructions,...b]:[...b],payer:this.feePayer,signers:I})?m.push(new tt().add(...s.instructions,...b)):m.push(new tt().add(...b)),y.push(Array.from(new Set(b.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(k=>l[k]).filter(k=>k!==void 0)),b=[h]}}),b.length>0){let S=[...new Set(b.map(w=>w.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(w=>l[w]).filter(w=>w!==void 0);Je({instructions:o?[...s.instructions,...b]:[...b],payer:this.feePayer,signers:S.map(w=>w.publicKey)})?m.push(new tt().add(...s.instructions,...b)):m.push(new tt().add(...b)),y.push(S)}return m.forEach(h=>h.feePayer=this.feePayer),(T=this.owner)!=null&&T.signer&&y.forEach(h=>{h.some(S=>S.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:m,signers:y,instructionTypes:this.instructionTypes,execute:async h=>{var N;let{sequentially:S,onTxUpdate:w,skipTxCount:B=0,recentBlockHash:I,skipPreflight:k=!0}=h||{},R=I!=null?I:await ve(this.connection,this.blockhashCommitment);if(m.forEach(async(P,K)=>{P.recentBlockhash=R,y[K].length&&P.sign(...y[K])}),Se(m),(N=this.owner)!=null&&N.isKeyPair){if(S){let P=0,K=[];for(let x of m){if(++P,P<=B){K.push("tx skipped");continue}let L=await tn(this.connection,x,this.signers.find(O=>O.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});K.push(L)}return{txIds:K,signedTxs:m}}return{txIds:await Promise.all(m.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:k}))),signedTxs:m}}if(this.signAllTransactions){let P=await this.signAllTransactions(m.slice(B,m.length)),K=[...m.slice(0,B),...P];if(S){let x=0,L=[],O=async()=>{if(!K[x])return;x<B&&(L.push({txId:"",status:"success",signedTx:K[x]}),w==null||w([...L]),x++,O());let V=await this.connection.sendRawTransaction(K[x].serialize(),{skipPreflight:k});L.push({txId:V,status:"sent",signedTx:K[x]}),w==null||w([...L]),x++;let J=!1,q=null,W=null,$=G=>{q!==null&&clearInterval(q),W!==null&&this.connection.removeSignatureListener(W);let oe=L.findIndex(ge=>ge.txId===V);if(oe>-1){if(L[oe].status==="error"||L[oe].status==="success")return;L[oe].status=G.err?"error":"success"}w==null||w([...L]),G.err||O()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var G;if(J){clearInterval(q);return}try{let oe=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});oe&&(J=!0,clearInterval(q),$({err:((G=oe.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",V))}catch(oe){J=!0,clearInterval(q),console.error("getTransaction timeout:",oe,V)}},ht)),W=this.connection.onSignature(V,G=>{if(J){this.connection.removeSignatureListener(W);return}J=!0,$(G)},"confirmed"),this.connection.getSignatureStatus(V)};return await O(),{txIds:L.map(V=>V.txId),signedTxs:K}}else{let x=[];for(let L=0;L<K.length;L+=1){let O=await this.connection.sendRawTransaction(K[L].serialize(),{skipPreflight:k});x.push(O)}return{txIds:x,signedTxs:K}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var N;let R=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:s=[],insCountLimit:l=12}=R,m=de(R,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=M(M({},this.cluster==="devnet"?await Jt(this.connection):await $t(this.connection)),i),b=Array.from(new Set([...this.lookupTableAddress,...s])),f=[];for(let P of b)y[P]===void 0&&f.push(new Ve(P));let A=await jt({connection:this.connection,address:f});for(let[P,K]of Object.entries(A))y[P]=K;let T=t?kt(t):{instructions:[],instructionTypes:[]},h=await ve(this.connection,this.blockhashCommitment),S=this.signers.reduce((P,K)=>_(M({},P),{[K.publicKey.toBase58()]:K}),{}),w=[],B=[],I=[],k=0;if(this.allInstructions.forEach(P=>{let K=[...I,P],x=t?[...T.instructions,...K]:K;if(P!==o[k]&&I.length<l&&(et({instructions:x,payer:this.feePayer,lookupTableAddressAccount:y})||et({instructions:K,payer:this.feePayer,lookupTableAddressAccount:y})))I.push(P);else{if(I.length===0)throw Error("item ins too big");k+=P===o[k]?1:0;let L={};for(let O of[...new Set(b)])y[O]!==void 0&&(L[O]=y[O]);if(t&&et({instructions:[...T.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:h})){let O=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...T.instructions,...I]}).compileToV0Message(Object.values(y));w.push(new ot(O))}else{let O=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...I]}).compileToV0Message(Object.values(y));w.push(new ot(O))}B.push(Array.from(new Set(I.map(O=>O.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(O=>S[O]).filter(O=>O!==void 0)),I=[P]}}),I.length>0){let K=[...new Set(I.map(x=>x.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(x=>S[x]).filter(x=>x!==void 0);if(t&&et({instructions:[...T.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:h})){let x=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...T.instructions,...I]}).compileToV0Message(Object.values(y));w.push(new ot(x))}else{let x=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...I]}).compileToV0Message(Object.values(y));w.push(new ot(x))}B.push(K)}return(N=this.owner)!=null&&N.signer&&B.forEach(P=>{P.some(K=>K.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),w.forEach((P,K)=>{P.sign(B[K])}),{builder:this,transactions:w,buildProps:e,signers:B,instructionTypes:this.instructionTypes,execute:async P=>{var J;let{sequentially:K,onTxUpdate:x,skipTxCount:L=0,recentBlockHash:O,skipPreflight:V=!0}=P||{};if(w.map(async(q,W)=>{B[W].length&&q.sign(B[W]),O&&(q.message.recentBlockhash=O)}),Se(w),(J=this.owner)!=null&&J.isKeyPair){if(K){let q=0,W=[];for(let $ of w){if(++q,q<=L){console.log("skip tx: ",q),W.push("tx skipped");continue}let G=await this.connection.sendTransaction($,{skipPreflight:V});await Tt(this.connection,G),W.push(G)}return{txIds:W,signedTxs:w}}return{txIds:await Promise.all(w.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:V}))),signedTxs:w}}if(this.signAllTransactions){let q=await this.signAllTransactions(w.slice(L,w.length)),W=[...w.slice(0,L),...q];if(K){let $=0,G=[],oe=async()=>{if(!W[$])return;if($<L){G.push({txId:"",status:"success",signedTx:W[$]}),x==null||x([...G]),$++,oe();return}let ge=await this.connection.sendTransaction(W[$],{skipPreflight:V});G.push({txId:ge,status:"sent",signedTx:W[$]}),x==null||x([...G]),$++;let Ye=!1,Le=null,ft=null,An=Ie=>{Le!==null&&clearInterval(Le),ft!==null&&this.connection.removeSignatureListener(ft);let Pe=G.findIndex(So=>So.txId===ge);if(Pe>-1){if(G[Pe].status==="error"||G[Pe].status==="success")return;G[Pe].status=Ie.err?"error":"success"}x==null||x([...G]),Ie.err||oe()};this.loopMultiTxStatus&&(Le=setInterval(async()=>{var Ie;if(Ye){clearInterval(Le);return}try{let Pe=await this.connection.getTransaction(ge,{commitment:"confirmed",maxSupportedTransactionVersion:0});Pe&&(Ye=!0,clearInterval(Le),An({err:((Ie=Pe.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",ge))}catch(Pe){Ye=!0,clearInterval(Le),console.error("getTransaction timeout:",Pe,ge)}},ht)),ft=this.connection.onSignature(ge,Ie=>{if(Ye){this.connection.removeSignatureListener(ft);return}Ye=!0,An(Ie)},"confirmed"),this.connection.getSignatureStatus(ge)};return oe(),{txIds:[],signedTxs:W}}else{let $=[];for(let G=0;G<W.length;G+=1){let oe=await this.connection.sendTransaction(W[G],{skipPreflight:V});$.push(oe)}return{txIds:$,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:m||{}}}};var nn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),re=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=E(t)}createTxBuilder(e){return this.scope.checkOwner(),new It({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(nn(e))}logInfo(...e){this.logger.info(nn(e))}logAndCreateError(...e){let t=nn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Bl,SystemProgram as Kl}from"@solana/web3.js";import Rl from"bn.js";import{createCloseAccountInstruction as Ml,createInitializeAccountInstruction as Fl,createTransferInstruction as vl,TOKEN_PROGRAM_ID as Vl}from"@solana/spl-token";import{Keypair as dl,PublicKey as pl}from"@solana/web3.js";import bl from"bn.js";import{TOKEN_PROGRAM_ID as Al}from"@solana/spl-token";import{PublicKey as fi}from"@solana/web3.js";import Wn,{isBN as qn}from"bn.js";import{bits as oi,BitStructure as gc,blob as ii,Blob as Pc,cstr as Ac,f32 as wc,f32be as kc,f64 as Tc,f64be as hc,greedy as Ic,Layout as ri,ns64 as Bc,ns64be as Sc,nu64 as Kc,nu64be as xc,offset as ai,s16 as Cc,s16be as Rc,s24 as Lc,s24be as Oc,s32 as si,s32be as Nc,s40 as Mc,s40be as Fc,s48 as vc,s48be as Vc,s8 as _c,seq as ui,struct as Ec,Structure as ci,u16 as li,u16be as Dc,u24 as Wc,u24be as qc,u32 as mi,u32be as Uc,u40 as Gc,u40be as zc,u48 as Xc,u48be as Yc,u8 as di,UInt as pi,union as Qc,Union as Zc,unionLayoutDiscriminator as Hc,utf8 as jc}from"@solana/buffer-layout";var Bt=ri,Vn=ci;var on=pi;var _n=di,Y=li;var St=mi;var ce=si;var En=ui;var v=ii;var rn=oi,Dn=ai;var xe=class extends Bt{constructor(t,o,i){super(t,i);this.blob=v(t),this.signed=o}decode(t,o=0){let i=new Wn(this.blob.decode(t,o),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,o,i=0){return typeof t=="number"&&(t=new Wn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},Kt=class extends Bt{constructor(t){super(8,t);this._lower=rn(St(),!1),this._upper=rn(St(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let i=this._lower.decode(t,o),s=this._upper.decode(t,o+this._lower.span);return M(M({},i),s)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function d(r){return new on(1,r)}function X(r){return new on(4,r)}function n(r){return new xe(8,!1,r)}function F(r){return new xe(16,!1,r)}function Un(r){return new xe(1,!0,r)}function _e(r){return new xe(8,!0,r)}function Gn(r){return new xe(16,!0,r)}var it=class extends Bt{constructor(t,o,i,s){super(t.span,s);this.layout=t,this.decoder=o,this.encoder=i}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,i){return this.layout.encode(this.encoder(t),o,i)}getSpan(t,o){return this.layout.getSpan(t,o)}};function a(r){return new it(v(32),e=>new fi(e),e=>e.toBuffer(),r)}function ue(r){return new it(_n(),yi,bi,r)}function yi(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function bi(r){return r?1:0}function zn(r,e){let t=St("length"),o=p([t,g(r,Dn(t,-t.span),"values")]);return new it(o,({values:i})=>i,i=>({values:i}),e)}var an=class extends Vn{decode(e,t){return super.decode(e,t)}};function p(r,e,t){return new an(r,e,t)}function g(r,e,t){let o,i=typeof e=="number"?e:qn(e)?e.toNumber():new Proxy(e,{get(s,l){if(!o){let m=Reflect.get(s,"count");o=qn(m)?m.toNumber():m,Reflect.set(s,"count",o)}return Reflect.get(s,l)},set(s,l,m){return l==="count"&&(o=m),Reflect.set(s,l,m)}});return En(r,i,t)}var xt=p([a("mint"),a("owner"),n("amount"),X("delegateOption"),a("delegate"),d("state"),X("isNativeOption"),n("isNative"),n("delegatedAmount"),X("closeAuthorityOption"),a("closeAuthority")]);import{PublicKey as jg,SystemProgram as $g}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as eP}from"@solana/spl-token";import{PublicKey as lm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as dm}from"@solana/spl-token";import{PublicKey as C}from"@solana/web3.js";var Yn=new C("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Qn=new C("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Zn=new C("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),sn=new C("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),bm=new C("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Pi=new C("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Hn=new C("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),jn=new C("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),gm=new C("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ai=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),$n=new C("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),wi=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ki=new C("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Jn=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pm=new C("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ti=new C("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),un=new C("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hi=new C("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Am=new C("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ii=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bi=new C("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Si=new C("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),wm=new C("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),km=new C("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Tm=new C("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),hm=new C("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Im=new C("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ke={OPEN_BOOK_PROGRAM:new C("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new C("Ray1111111111111111111111111111111111111111"),AMM_V4:new C("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new C("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new C("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new C("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new C("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new C("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new C("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new C("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new C("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new C("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:C.default,Router:new C("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new C("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new C("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new C("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new C("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new C("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new C("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new C("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new C("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new C("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new C("Ray1111111111111111111111111111111111111111")};import lP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as xy,TOKEN_2022_PROGRAM_ID as Cy,TOKEN_PROGRAM_ID as Ry}from"@solana/spl-token";import{PublicKey as Oy}from"@solana/web3.js";import My from"bn.js";import vy from"decimal.js";import{TOKEN_PROGRAM_ID as _m}from"@solana/spl-token";import{PublicKey as qm}from"@solana/web3.js";var Ki=p([X("mintAuthorityOption"),a("mintAuthority"),n("supply"),d("decimals"),d("isInitialized"),X("freezeAuthorityOption"),a("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Hf,TOKEN_2022_PROGRAM_ID as jf,TOKEN_PROGRAM_ID as $f}from"@solana/spl-token";import{Keypair as ty,PublicKey as ny,SystemProgram as iy,TransactionInstruction as ry}from"@solana/web3.js";import sy from"bn.js";import D from"bn.js";var le=new D(1).shln(64);var xi=new D(1).shln(128),Rt=new D(1).shln(64).subn(1),Ci=new D(1).shln(128).subn(1);var De=new D("4295048016"),We=new D("79226673521066979257578248091"),Ri=new D("59543866431248"),Li=new D("184467440737095516"),Oi=new D("15793534762490258745");var cn=60,ed=new D("18446743708227953217"),Ni=[{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 rt=3,eo=100;var to=10,no=100,Lt=14;var H=new D(0),qe=new D(1),td=new D(-1);var nd=new D("18446744073700000000");var Mi=p([v(8),d("bump"),Y("index"),a("owner"),X("protocolFeeRate"),X("tradeFeeRate"),Y("tickSpacing"),X("fundFeeRate"),g(X(),1),a("fundOwner"),g(n(),3)]),Fi=p([X("blockTimestamp"),_e("tickCumulative"),g(n(),4)]),oo=p([v(8),ue("initialized"),n("recentEpoch"),Y("observationIndex"),a("poolId"),g(Fi,eo,"observations"),g(n(),4)]),vi=p([Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),ce("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),n("lastUpdateTimestamp"),g(d(),46)]),Vi=p([d("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),F("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),F("growthGlobalX64")]),ln=p([v(8),d("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),Y("tickSpacing"),F("liquidity"),F("sqrtPriceX64"),ce("tickCurrent"),X(),F("feeGrowthGlobalX64A"),F("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),g(F(),4),d("status"),d("feeOn"),v(6),g(Vi,rt,"rewardInfos"),v(8*16,"tickArrayBitmap"),g(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),vi.replicate("dynamicFeeInfo"),g(n(),46)]),_i=p([F("growthInsideLastX64"),n("rewardAmountOwed")]),Ei=p([v(8),d("bump"),a("nftMint"),a("poolId"),ce("tickLower"),ce("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(_i,rt,"rewardInfos"),n("recentEpoch"),g(n(),7)]),ad=p([v(8),d("bump"),a("poolId"),ce("tickLower"),ce("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(F(),rt,"rewardGrowthInside"),n("recentEpoch"),g(n(),7)]),Di=p([ce("tick"),Gn("liquidityNet"),F("liquidityGross"),F("feeGrowthOutsideX64A"),F("feeGrowthOutsideX64B"),g(F(),rt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),F("unfilledRatioX64"),g(X(),3)]),io=p([v(8),a("poolId"),ce("startTickIndex"),g(Di,cn,"ticks"),d("initializedTickCount"),n("recentEpoch"),g(d(),107)]),Wi=p([v(8),d("bump"),g(a(),to,"operationOwners"),g(a(),no,"whitelistMints")]),qi=p([v(8),a("poolId"),a("owner"),ce("tick"),ue("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),F("unfilledRatioX64"),g(n(),4)]),ro=p([v(8),a("poolId"),v(8*8*Lt,"positiveTickArrayBitmap"),v(8*8*Lt,"negativeTickArrayBitmap")]),sd=p([v(8),Y("index"),Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),g(n(),8)]),Ui=p([v(8),a("wallet"),d("nonceIndex"),n("orderNonce"),g(n(),4)]),ud=p([n(),d("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),g(n(),8)]),Gi=p([v(8),d("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),g(n(),8)]);import md from"bn.js";var Td=Buffer.from("amm_config","utf8"),Xi=Buffer.from("pool","utf8"),Yi=Buffer.from("pool_vault","utf8"),hd=Buffer.from("pool_reward_vault","utf8"),Id=Buffer.from("position","utf8"),Bd=Buffer.from("tick_array","utf8"),Sd=Buffer.from("operation","utf8"),Kd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),xd=Buffer.from("observation","utf8"),Cd=Buffer.from("support_mint","utf8"),Rd=Buffer.from("dynamic_fee_config","utf8"),Ld=Buffer.from("permission","utf8");var Od=Buffer.from("locked_position","utf8");import{sha256 as ur}from"js-sha256";import Qi from"bn.js";import vd from"decimal.js";var _d=new Qi(1).shln(256).subn(1);import np from"bn.js";import zd from"bn.js";import Yd from"decimal.js";import sp from"bn.js";import cp from"decimal.js";import{PublicKey as Zp}from"@solana/web3.js";import jp from"bn.js";import{TOKEN_2022_PROGRAM_ID as af,TOKEN_PROGRAM_ID as sf}from"@solana/spl-token";import mf from"decimal.js";import _p from"bn.js";import Bp from"bn.js";import Tf from"bn.js";function j(r){let e=`global:${r}`;return Buffer.from(ur.digest(e)).slice(0,8)}oo.span;var yy=E("Raydium_Clmm"),by={createPool:j("create_pool"),createCustomizablePool:j("create_customizable_pool"),createPermissionedPool:j("create_permissioned_pool"),openPositionV2:j("open_position_v2"),openPositionWithToken22Nft:j("open_position_with_token22_nft"),closePosition:j("close_position"),increaseLiquidityV2:j("increase_liquidity_v2"),decreaseLiquidityV2:j("decrease_liquidity_v2"),initializeReward:j("initialize_reward"),setRewardParams:j("set_reward_params"),updateRewardInfos:j("update_reward_infos"),collectRemainingRewards:j("collect_remaining_rewards"),swapV2:j("swap_v2"),openLimitOrder:j("open_limit_order"),increaseLimitOrder:j("increase_limit_order"),decreaseLimitOrder:j("decrease_limit_order"),settleLimitOrder:j("settle_limit_order"),closeLimitOrder:j("close_limit_order")};import{PublicKey as fn}from"@solana/web3.js";var dr=p([d("instruction")]),pr=p([d("instruction")]),fr=p([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),F("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),g(n(),15,"padding")]),yr=p([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),F("perShareReward"),n("lastSlot"),n("perSlotReward")]),br=p([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),F("perShareRewardA"),n("perSlotRewardA"),d("option"),a("rewardVaultB"),v(7),n("totalRewardB"),F("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),gr=p([n(),n("state"),n("nonce"),n("validRewardTokenNum"),F("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),g(fr,5,"rewardInfos"),a("creator"),a(),g(n(),32,"padding")]),Pr=new Proxy(yr,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return _(M({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ar=new Proxy(br,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return _(M({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),po=new Proxy(gr,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return _(M({},i),{version:6,rewardInfos:i.rewardInfos.map(s=>{var l;return _(M({},s),{rewardType:((l=Object.entries(ut).find(m=>String(m[1])===s.rewardType.toString()))!=null?l:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),wr=p([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),kr=p([d("instruction"),n("nonce"),g(wr,5,"rewardTimeInfo")]),Tr=p([d("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),hr=p([d("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),yb=p([n("state"),a("id"),a("owner"),n("deposited"),g(n(),1,"rewardDebts")]),fo=p([n("state"),a("id"),a("owner"),n("deposited"),g(F(),1,"rewardDebts"),n(""),n("voteLockedBalance"),g(n(),15)]),bb=p([n("state"),a("id"),a("owner"),n("deposited"),g(n(),2,"rewardDebts")]),Ir=p([n("state"),a("id"),a("owner"),n("deposited"),g(F(),2,"rewardDebts"),g(n(),17)]),Br=p([n(),n("state"),a("id"),a("owner"),n("deposited"),g(F(),5,"rewardDebts"),g(n(),16)]),Sr=p([d("instruction"),n("amount")]),Kr=p([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Un("digitShift"),g(d(),7,"reserved1"),g(n(),7,"reserved2")]),xr=p([v(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),g(d(),32,"reserved1"),g(Kr,4,"votingMints"),_e("timeOffset"),d("bump"),g(d(),7,"reserved2"),g(n(),11,"reserved3")]),Cr=p([_e("startTime"),_e("endTime"),d("kind"),g(d(),15,"reserved")]),Rr=p([g(Cr,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ue("isUsed"),ue("allowClawback"),d("votingMintConfigIdx"),g(d(),29,"reserved")]),Lr=p([v(8),a("voterAuthority"),a("registrar"),g(Rr,32,"deposits"),d("voterBump"),d("voterWweightRecordBump"),g(d(),94,"reserved")]);import{NATIVE_MINT as Bb}from"@solana/spl-token";var Sb=E("Raydium_farm_config"),Or=new fn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Nr=new fn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Kb=new fn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var ut={"Standard SPL":0,"Option tokens":1},yo={[Yn.toString()]:3,[Qn.toString()]:4,[Zn.toString()]:5,[sn.toString()]:6,[ke.FARM_PROGRAM_ID_V3.toString()]:3,[ke.FARM_PROGRAM_ID_V4.toString()]:4,[ke.FARM_PROGRAM_ID_V5.toString()]:5,[ke.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as dg,SystemProgram as pg,SYSVAR_CLOCK_PUBKEY as fg,SYSVAR_RENT_PUBKEY as yg,TransactionInstruction as bg}from"@solana/web3.js";import Pg from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as wg,createAssociatedTokenAccountIdempotentInstruction as kg,TOKEN_PROGRAM_ID as Tg}from"@solana/spl-token";import qb from"bn.js";import{PublicKey as Nb}from"@solana/web3.js";import Fb from"bn.js";var tg=E("Raydium.farm.util");var Ng=E("Raydium_farm_instruction"),Mg={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 kP from"bn.js";import{PublicKey as Kw}from"@solana/web3.js";import{AccountLayout as Rw,MintLayout as Lw,NATIVE_MINT as Ow,TOKEN_PROGRAM_ID as Mw}from"@solana/spl-token";import te from"bn.js";var ct=1e4;function vt(r,e){let{div:t,mod:o}=r.divmod(e);return o.gt(new te(0))?t.add(new te(1)):t}function Ce(r,e){if(r.isZero())return new te(0);let t=r.div(e);return t.isZero()?new te(1):r.mod(e).gt(new te(0))?t.add(new te(1)):t}function lt(r,e,t){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=Math.floor(t/432e3),i=o<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,s=new te(i.maximumFee.toString()),l=o<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0,m=vt(r.mul(new te(i.transferFeeBasisPoints)),new te(ct)),y=m.gt(s)?s:m;return{amount:r,fee:y,expirationTime:l}}function ze(r,e,t){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=Math.floor(t/432e3),i=o<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,s=new te(i.maximumFee.toString()),l=o<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0;if(i.transferFeeBasisPoints===ct){let m=new te(i.maximumFee.toString());return{amount:r.add(m),fee:m,expirationTime:l}}else{let m=vt(r.mul(new te(ct)),new te(ct-i.transferFeeBasisPoints)),y=new te(i.maximumFee.toString()),b=m.sub(r).gt(y)?r.add(y):m,f=vt(b.mul(new te(i.transferFeeBasisPoints)),new te(ct)),A=f.gt(s)?s:f;return{amount:b,fee:A,expirationTime:l}}}import go from"bn.js";var Wr=new go(25),qr=new go(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as zP,TOKEN_PROGRAM_ID as XP}from"@solana/spl-token";import{PublicKey as QP,SystemProgram as ZP,SYSVAR_RENT_PUBKEY as HP,TransactionInstruction as jP}from"@solana/web3.js";import rA from"bn.js";var Ur=p([d("instruction"),n("amountIn"),n("minAmountOut")]),Gr=p([d("instruction"),n("maxAmountIn"),n("amountOut")]),WP=p([d("instruction"),d("nonce")]),zr=p([d("instruction"),d("nonce"),n("startTime")]),Po=p([n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalValue"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),F("swapBaseInAmount"),F("swapQuoteOutAmount"),n("swapBase2QuoteFee"),F("swapQuoteInAmount"),F("swapBaseOutAmount"),n("swapQuote2BaseFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("withdrawQueue"),a("lpVault"),a("owner"),n("lpReserve"),g(n(),3,"padding")]),qP=p([n("accountType"),n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalsValue"),n("abortTradeFactor"),n("priceTickMultiplier"),n("priceTick"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),F("swapBaseInAmount"),F("swapQuoteOutAmount"),F("swapQuoteInAmount"),F("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("modelDataAccount"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("owner"),g(n(),64,"padding")]),Xr=p([d("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Yr=p([d("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Qr=p([n("fee")]);var uA=E("Raydium_liquidity_instruction");var Zr=5e4,Hr=p([n("x"),n("y"),n("price")]),dA=p([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),g(Hr,Zr,"DataElement")]);import{PublicKey as IA}from"@solana/web3.js";import SA from"decimal.js";import{TOKEN_PROGRAM_ID as xA}from"@solana/spl-token";import{PublicKey as bA}from"@solana/web3.js";var AA=E("Raydium_liquidity_serum");import ek from"bn.js";import nk from"decimal.js";import{TOKEN_PROGRAM_ID as tw}from"@solana/spl-token";import{PublicKey as ow}from"@solana/web3.js";import rw from"bn.js";import{SystemProgram as qA,SYSVAR_RENT_PUBKEY as UA,Transaction as GA,TransactionInstruction as zA}from"@solana/web3.js";import{createInitializeAccountInstruction as YA,TOKEN_PROGRAM_ID as QA}from"@solana/spl-token";function jr(r="accountFlags"){let e=new Kt(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var $r=p([v(5),jr("accountFlags"),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),v(7)]);import{PublicKey as KT}from"@solana/web3.js";import{AccountLayout as CT,NATIVE_MINT as RT,TOKEN_2022_PROGRAM_ID as LT,TOKEN_PROGRAM_ID as OT,createAssociatedTokenAccountIdempotentInstruction as NT}from"@solana/spl-token";import Sk from"bn.js";import ra from"bn.js";var dk=new ra(0);import Pk from"bn.js";import aa from"bn.js";var be=new aa(1e6);import WT from"bn.js";import UT from"decimal.js";import{PublicKey as Gk,TransactionInstruction as zk,Keypair as Yk,SystemProgram as Qk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Hk,TOKEN_2022_PROGRAM_ID as jk,TOKEN_PROGRAM_ID as $k}from"@solana/spl-token";var Lk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Ok=Buffer.from("amm_config","utf8"),Nk=Buffer.from("pool","utf8"),Mk=Buffer.from("pool_lp_mint","utf8"),Fk=Buffer.from("pool_vault","utf8"),vk=Buffer.from("observation","utf8"),Vk=Buffer.from("permission","utf8"),_k=Buffer.from("support_mint","utf8");var Ek=Buffer.from("locked_liquidity","utf8");var rT=E("Raydium_cpmm"),aT={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var ua=p([v(8),d("bump"),ue("disableCreatePool"),Y("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),g(n(),15)]),Ao=p([v(8),a("configId"),a("poolCreator"),a("vaultA"),a("vaultB"),a("mintLp"),a("mintA"),a("mintB"),a("mintProgramA"),a("mintProgramB"),a("observationId"),d("bump"),d("status"),d("lpDecimals"),d("mintDecimalA"),d("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),d("feeOn"),ue("enableCreatorFee"),g(d(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),g(n(),28)]),cT=p([v(8),a("configId"),g(n(),30)]);import{PublicKey as pK,SystemProgram as fK}from"@solana/web3.js";import{createTransferInstruction as bK,TOKEN_PROGRAM_ID as gK,TOKEN_2022_PROGRAM_ID as PK,createAssociatedTokenAccountIdempotentInstruction as AK,createSyncNativeInstruction as kK,createTransferCheckedInstruction as TK}from"@solana/spl-token";import Ia from"bn.js";import BK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Jh,TOKEN_2022_PROGRAM_ID as eI,TOKEN_PROGRAM_ID as tI}from"@solana/spl-token";import{SystemProgram as rI,TransactionInstruction as aI}from"@solana/web3.js";import ya from"bn.js";var ma=p([n(),n("epoch"),d("curveType"),Y("index"),n("migrateFee"),n("tradeFeeRate"),n("maxShareFeeRate"),n("minSupplyA"),n("maxLockRate"),n("minSellRateA"),n("minMigrateRateA"),n("minFundRaisingB"),a("mintB"),a("protocolFeeOwner"),a("migrateFeeOwner"),a("migrateToAmmWallet"),a("migrateToCpmmWallet"),g(n(),16)]),da=p([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),pa=p([n(),n("epoch"),d("bump"),d("status"),d("mintDecimalsA"),d("mintDecimalsB"),d("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),da.replicate("vestingSchedule"),a("configId"),a("platformId"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("creator"),d("mintProgramFlag"),d("cpmmCreatorFeeOn"),n("platformVestingShare"),g(d(),54)]),Mh=p([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),g(n(),8)]),ko=p([d("migrateType"),d("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),fa=p([n("epoch"),d("index"),a("configId"),ko.replicate("bondingCurveParam"),g(n(),50)]),To=p([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),g(d(),64,"name"),g(d(),256,"web"),g(d(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),d("restrictGlobalConfig"),g(d(),107),zn(fa,"platformCurve")]);var Eh=Buffer.from("vault_auth_seed","utf8"),Dh=Buffer.from("global_config","utf8"),Wh=Buffer.from("pool_vesting","utf8"),qh=Buffer.from("platform_config","utf8"),Uh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Gh=Buffer.from("creator_fee_vault_auth_seed","utf8"),zh=Buffer.from("platform_global_access","utf8"),Xh=Buffer.from("platform_allow_config","utf8");var lI={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var mI=new ya("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as yI,TOKEN_PROGRAM_ID as bI}from"@solana/spl-token";import Vt from"bn.js";import mt from"decimal.js";var Te=class{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){throw Error()}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){throw Error()}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){throw Error()}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:l,decimalB:m}){throw Error()}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){throw Error()}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){throw Error()}static buyExactIn({poolInfo:e,amount:t}){throw Error()}static buyExactOut({poolInfo:e,amount:t}){throw Error()}static sellExactIn({poolInfo:e,amount:t}){throw Error()}static sellExactOut({poolInfo:e,amount:t}){throw Error()}};var _t=class extends Te{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){return new mt(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-o))}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){return new mt(t.toString()).div(e.toString()).mul(10**(o-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){return new mt(e.virtualB.add(e.realB).toString()).div(e.virtualA.sub(e.realA).toString()).mul(10**(t-o))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:l,decimalB:m}){return new mt(i.sub(s).toString()).div(e.sub(t).sub(o).toString()).mul(10**(l-m))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){let i=e.totalSellA.sub(e.realA),s=e.totalFundRaisingB.sub(e.realB);return new mt(e.virtualB.add(e.realB.add(s)).toString()).div(e.virtualA.sub(e.realA.add(i)).toString()).mul(10**(t-o))}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){if(e.lte(o))throw Error("supply need gt total sell");let l=e.sub(o).sub(i);if(l.lte(new Vt(0)))throw Error("supplyMinusSellLocked <= 0");let m=t.sub(s);if(m.lte(new Vt(0)))throw Error("tfMinusMf <= 0");let y=m.mul(o).mul(o).div(l),b=m.mul(o).div(l).sub(t),f=y.div(b),A=t.mul(t).div(b);if(f.lt(new Vt(0))||A.lt(new Vt(0)))throw Error("invalid input 0");return{a:f,b:A,c:o}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static getAmountOut({amountIn:e,inputReserve:t,outputReserve:o}){let i=e.mul(o),s=t.add(e);return i.div(s)}static getAmountIn({amountOut:e,inputReserve:t,outputReserve:o}){let i=t.mul(e),s=o.sub(e);return Ce(i,s)}};import Et from"bn.js";import dt from"decimal.js";var Dt=class extends Te{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){return new dt(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-o))}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){return new dt(t.toString()).div(e.toString()).mul(10**(o-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){return new dt(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-o))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:l,decimalB:m}){return new dt(i.sub(s).toString()).div(e.sub(t).sub(o).toString()).mul(10**(l-m))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){let i=e.totalSellA.sub(e.realA),s=e.totalFundRaisingB.sub(e.realB);return new dt(e.virtualB.add(e.realB).add(s).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-o))}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){let l=e.sub(i);if(l.lte(new Et(0)))throw Error("invalid input 1");let m=new Et(2).mul(t).sub(s),b=t.mul(l).div(m);if(b.lt(new Et(0))||t.lt(new Et(0)))throw Error("invalid input 0");return{a:b,b:t,c:b}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualB,initOutput:e.virtualA})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualB,initOutput:e.virtualA})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualA,initOutput:e.virtualB})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualA,initOutput:e.virtualB})}static getAmountOut({amountIn:e,initInput:t,initOutput:o}){return o.mul(e).div(t)}static getAmountIn({amountOut:e,initInput:t,initOutput:o}){let i=t.mul(e);return Ce(i,o)}};import ho from"bn.js";import gn from"decimal.js";var pt=class{static _multipler(e){return new gn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new gn(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:t,decimalB:o}){let i=e.mul(this._multipler(o)).div(this._multipler(t));return new ho(i.mul(this._Q64).toFixed(0))}};pt._Q64=new gn(new ho(1).shln(64).toString());import ae from"bn.js";import Re from"decimal.js";var Wt=class extends Te{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){return new Re(0)}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){return new Re(0)}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){return new Re(e.virtualA.mul(e.realA).toString()).div(pt._Q64).mul(10**(t-o))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:l,decimalB:m}){return new Re(i.sub(s).toString()).div(e.sub(t).sub(o).toString()).mul(10**(l-m))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){let i=e.totalSellA.sub(e.realA),s=e.totalFundRaisingB.sub(e.realB);return new Re(e.virtualB.add(e.realB).add(s).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-o))}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){let l=e.sub(i);if(l.lte(new ae(0)))throw Error("supplyMinusLocked need gt 0");let m=t.mul(new ae(3)).sub(s),b=t.mul(new ae(2)).mul(l).div(m),f=b.mul(b),A=t.mul(new ae(2)).mul(le).div(f);if(!A.gt(new ae(0)))throw Error("a need gt 0");if(!Rt.gt(A))throw Error("a need lt u64 max");if(A.lt(new ae(0))||b.lt(new ae(0)))throw Error("invalid input 0");return{a:A,b:new ae(0),c:b}}static buyExactIn({poolInfo:e,amount:t}){let o=e.realB.add(t),i=new ae(2).mul(o).mul(le).div(e.virtualA);return new ae(new Re(i.toString()).sqrt().toFixed(0)).sub(e.realA)}static buyExactOut({poolInfo:e,amount:t}){let o=e.realA.add(t),i=o.mul(o);return Ce(e.virtualA.mul(i),new ae(2).mul(le)).sub(e.realB)}static sellExactIn({poolInfo:e,amount:t}){let o=e.realA.sub(t),i=o.mul(o),s=Ce(e.virtualA.mul(i),new ae(2).mul(le));return e.realB.sub(s)}static sellExactOut({poolInfo:e,amount:t}){let o=e.realB.sub(t),i=new ae(2).mul(o).mul(le).div(e.virtualA),s=new ae(new Re(i.toString()).sqrt().toFixed(0));return e.realA.sub(s)}};import{NATIVE_MINT as UB,TOKEN_2022_PROGRAM_ID as GB,TOKEN_PROGRAM_ID as zB,createAssociatedTokenAccountIdempotentInstruction as YB,createSyncNativeInstruction as QB,getTransferFeeConfig as ZB,unpackMint as HB}from"@solana/spl-token";import Q from"bn.js";import{PublicKey as ka,SystemProgram as JB}from"@solana/web3.js";import aS from"decimal.js";var sS={initPriceX64:new Q("515752397214619"),supply:new Q(1e15),totalSellA:new Q(7931e11),totalFundRaisingB:new Q(85e9),totalFundRaisingBUSD:new Q(125e8),totalLockedAmount:new Q("0"),cliffPeriod:new Q("0"),unlockPeriod:new Q("0"),decimals:6,virtualA:new Q("1073471847374405"),virtualB:new Q("30050573465"),realA:new Q(0),realB:new Q(0),protocolFee:new Q(0),platformId:new ka("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Q(0),cliffPeriod:new Q(0),unlockPeriod:new Q(0),startTime:new Q(0),totalAllocatedShare:new Q(0)}},uS=new Q(1e4);var Ta={[Hn.toBase58()]:3};var ha=p([v(5),v(8),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),v(7)]);import{PublicKey as LS}from"@solana/web3.js";var vS=E("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as zS,TOKEN_2022_PROGRAM_ID as XS,TOKEN_PROGRAM_ID as YS}from"@solana/spl-token";import{PublicKey as ZS,SystemProgram as HS,TransactionInstruction as jS}from"@solana/web3.js";import JS from"bn.js";var tx=new Ia(0);import{PublicKey as Ba,Transaction as Pn,TransactionInstruction as Sa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ka}from"@solana/spl-token";import Io from"bn.js";var ne=class extends re{static getPdaPoolId(e,t){return fe([ne.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,o,i){return fe([ne.SEED_CONFIG.owner.id,t.toBuffer(),o.toBuffer(),Buffer.from(new Io(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:o,wallet:i,chainTime:s}){if(o.length===0)return[];let l=o.map(f=>ne.getPdaPoolId(t,f).publicKey),m=[];for(let f=0;f<ne.VERSION_PROJECT.length;f++)m.push(...l.map(A=>ne.getPdaOwnerId(t,A,i,f).publicKey));let y=await Ae(e,[...l,...m]),b=[];for(let f=0;f<y.length;f++){let A=Math.floor(f/o.length),T=f%o.length,h=l[T],S=m[f],w=y[T],B=y[o.length+f];if(!(w&&B)||w.data.length!==ne.POOL_LAYOUT.span||B.data.length!==ne.OWNER_LAYOUT.span)continue;let I=ne.POOL_LAYOUT.decode(w.data),k=ne.OWNER_LAYOUT.decode(B.data),R=I.openTime.toNumber(),N=I.endTime.toNumber(),P=k.tokenInfo.map(L=>L.debtAmount.gt(new Io(0))).filter(L=>!L).length!==3,K=s>R&&s<N&&I.status===1,x=P&&K;b.push({programId:t,poolId:h,ammId:I.ammId,ownerAccountId:S,snapshotLpAmount:k.lpAmount,project:ne.VERSION_PROJECT[A],openTime:R,endTime:N,canClaim:x,canClaimErrorType:P?K?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:I.tokenInfo.map((L,O)=>({mintAddress:L.mintAddress,mintVault:L.mintVault,mintDecimals:L.mintDecimals,perLpLoss:L.perLpLoss,debtAmount:k.tokenInfo[O].debtAmount.add(k.tokenInfo[O].claimedAmount)}))})}return b}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:o}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(o),s=t.wallet||this.scope.ownerPubKey,l=[];for(let b of e.tokenInfo){let{account:f,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:b.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:b.mintAddress.equals(ee.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!b.mintAddress.equals(ee.WSOL.mint),associatedOnly:b.mintAddress.equals(ee.WSOL.mint)?!1:t.associatedOnly});A&&i.addInstruction(A),l.push(f)}i.addInstruction({instructions:[ne.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:s,ownerPda:e.ownerAccountId,claimAddress:l}})]});let{transaction:m,signers:y}=i.build();return[{transaction:m,signer:y}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:o}){let i=this.createTxBuilder(o),s=t.wallet||this.scope.ownerPubKey,l={};for(let f of e){let A=[];for(let T of f.tokenInfo){let{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:T.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:T.mintAddress.equals(ee.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!T.mintAddress.equals(ee.WSOL.mint),associatedOnly:T.mintAddress.equals(ee.WSOL.mint)?!1:t.associatedOnly});S&&i.addInstruction(S),h&&(l[T.mintAddress.toString()]=h,A.push(h))}i.addInstruction({instructions:[ne.makeClaimInstruction({programId:f.programId,poolInfo:f,ownerInfo:{wallet:s,ownerPda:f.ownerAccountId,claimAddress:A}})]})}let{transaction:m,signers:y}=i.build(),b=i.allInstructions;return en(b,[s,...y.map(f=>f.publicKey)])?[{transaction:m,signer:y}]:[{transaction:new Pn().add(...b.slice(0,i.AllTxData.instructions.length-1)),signer:y},{transaction:new Pn().add(...b.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Pn().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let i=p([]),s=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:y})=>({pubkey:y,isSigner:!1,isWritable:!0})),{pubkey:Ka,isSigner:!1,isWritable:!1}],l=Buffer.alloc(i.span);i.encode({},l);let m=Buffer.from([10,66,208,184,161,6,191,98,...l]);return new Sa({keys:s,programId:e,data:m})}},me=ne;me.CLAIMED_NUM=3,me.POOL_LAYOUT=p([v(8),d("bump"),d("status"),n("openTime"),n("endTime"),a("ammId"),g(p([d("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ne.CLAIMED_NUM,"tokenInfo"),g(n(),10,"padding")]),me.OWNER_LAYOUT=p([v(8),d("bump"),d("version"),a("poolId"),a("owner"),n("lpAmount"),g(p([a("mintAddress"),n("debtAmount"),n("claimedAmount")]),ne.CLAIMED_NUM,"tokenInfo"),g(n(),4,"padding")]),me.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ba(e)),me.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},me.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Px}from"@solana/web3.js";import{getTransferFeeConfig as wx,MintLayout as kx,TOKEN_2022_PROGRAM_ID as Tx,TOKEN_PROGRAM_ID as hx,unpackMint as Ix}from"@solana/spl-token";var $C=new he(2),JC=new he(3),eR=new he(5),Wo=new he(10),tR=new he(100),nR=new he(1e3),oR=new he(1e4);function bn(r,e,t){return r.mul(e).add(t).sub(new he(1)).div(t)}function Gt(r,e=1,t=[]){let o=[...r];if(e<=0)return t;for(;o.length;)t.push(o.splice(0,e));return t}var Xe=class{static getPoolCurvePointByPoolInfo({curveType:e,pointCount:t,poolInfo:o}){return this.getPoolCurvePointByInit({curveType:e,pointCount:t,supply:o.supply,totalFundRaising:o.totalFundRaisingB,totalSell:o.totalSellA,totalLockedAmount:o.vestingSchedule.totalLockedAmount,migrateFee:o.migrateFee,decimalA:o.mintDecimalsA,decimalB:o.mintDecimalsB})}static getPoolCurvePointByInit({curveType:e,pointCount:t,supply:o,totalFundRaising:i,totalSell:s,totalLockedAmount:l,migrateFee:m,decimalA:y,decimalB:b}){if(t<3)throw Error("point count < 3");let f=this.getCurve(e),A=f.getInitParam({supply:o,totalFundRaising:i,totalSell:s,totalLockedAmount:l,migrateFee:m}),T=f.getPoolInitPriceByInit(_(M({},A),{decimalA:y,decimalB:b})),h=i.div(new se(t-1)),S=new se(0),w=[{price:T,totalSellSupply:0}],{a:B,b:I}=A,k=S,R=S;for(let N=1;N<t;N++){let P=N!==t-1?h:i.sub(R),K=this.buyExactIn({poolInfo:{virtualA:B,virtualB:I,realA:k,realB:R,totalFundRaisingB:i,totalSellA:s},amountB:P,protocolFeeRate:S,platformFeeRate:S,curveType:e,shareFeeRate:S,creatorFeeRate:S,transferFeeConfigA:void 0,transferFeeConfigB:void 0,slot:0});k=k.add(K.amountA.amount),R=R.add(K.amountB);let x=this.getPrice({poolInfo:{virtualA:B,virtualB:I,realA:k,realB:R},decimalA:y,decimalB:b,curveType:e});w.push({price:x,totalSellSupply:new Bo(k.toString()).div(10**y).toNumber()})}return w}static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o,curveType:i}){return this.getCurve(i).getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o})}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i,curveType:s}){return this.getCurve(s).getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i})}static getPrice({poolInfo:e,curveType:t,decimalA:o,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:o,decimalB:i})}static getEndPrice({poolInfo:e,curveType:t,decimalA:o,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:o,decimalB:i})}static getPoolEndPriceReal({poolInfo:e,curveType:t,decimalA:o,decimalB:i}){return this.getCurve(t).getPoolEndPriceReal({poolInfo:e,decimalA:o,decimalB:i})}static checkParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,decimals:s,config:l,migrateType:m}){if(Number(s)!==6)throw Error("decimals = 6");if(e.mul(l.maxLockRate).div(be).lt(i))throw Error("total lock amount gte max lock amount");if(e.lt(l.minSupplyA.mul(new se(10**s))))throw Error("supply lt min supply");let b=e.mul(l.minSellRateA).div(be);if(o.lt(b))throw Error("invalid input");if(t.lt(l.minFundRaisingB))throw Error("total fund raising lt min fund raising");let f=e.sub(o).sub(i),A=e.mul(l.minMigrateRateA).div(be);if(f.lt(A))throw Error("migrate lt min migrate amoount");let T=e.sub(o).sub(i),h=new se(new Bo(T.mul(t).toString()).sqrt().toFixed(0));if(m==="amm"){let S=new se(10).pow(new se(s));if(h.lte(S))throw Error("check migrate lp error")}else if(m==="cpmm"){let S=new se(100);if(h.lte(S))throw Error("check migrate lp error")}else throw Error("migrate type error")}static buyExactIn({poolInfo:e,amountB:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:l,creatorFeeRate:m,transferFeeConfigA:y,transferFeeConfigB:b,slot:f}){var L;let A=lt(t,b,f),T=t.sub((L=A.fee)!=null?L:new se(0)),h=this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m}),S=this.calculateFee({amount:T,feeRate:h}),w=T.sub(S),B=this.getCurve(s),I=B.buyExactIn({poolInfo:e,amount:w}),k=e.totalSellA.sub(e.realA),R,N,P,K;if(I.gt(k)){R=k;let O=B.buyExactOut({poolInfo:e,amount:R}),V=this.calculatePreFee({postFeeAmount:O,feeRate:h});P=V.sub(O);let J=ze(V,b,f);N=J.amount,K=J.fee}else R=I,N=t,P=S,K=A.fee;let x=this.splitFee({totalFee:P,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m});return{amountA:lt(R,y,f),amountB:N,splitFee:x,transferFeeB:K}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:l,creatorFeeRate:m,transferFeeConfigA:y,transferFeeConfigB:b,slot:f}){let A=e.totalSellA.sub(e.realA),T=ze(t,y,f),h=T.fee?T.amount.add(T.fee):T.amount;t.gt(A)&&(h=A);let w=this.getCurve(s).buyExactOut({poolInfo:e,amount:h}),B=this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m}),I=this.calculatePreFee({postFeeAmount:w,feeRate:B}),k=I.sub(w),R=ze(I,b,f),N=this.splitFee({totalFee:k,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m});return{amountA:T,amountB:R.amount,splitFee:N,transferFeeB:R.fee}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:l,creatorFeeRate:m,transferFeeConfigA:y,transferFeeConfigB:b,slot:f}){var R;let A=this.getCurve(s),T=lt(t,y,f),h=T.fee?T.amount.sub(T.fee):T.amount,S=A.sellExactIn({poolInfo:e,amount:h}),w=this.calculateFee({amount:S,feeRate:this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m})}),B=this.splitFee({totalFee:w,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m}),I=S.sub(w),k=lt(I,b,f);return{amountA:T,amountB:I.sub((R=k.fee)!=null?R:new se(0)),splitFee:B,transferFeeB:k.fee}}static sellExactOut({poolInfo:e,amountB:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:l,creatorFeeRate:m,transferFeeConfigA:y,transferFeeConfigB:b,slot:f}){let A=this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m}),T=ze(t,b,f),h=T.amount,S=this.calculatePreFee({postFeeAmount:h,feeRate:A});if(e.realB.lt(S))throw Error("Insufficient liquidity");let w=S.sub(h),I=Xe.getCurve(s).sellExactOut({poolInfo:e,amount:S});if(I.gt(e.realA))throw Error();let k=this.splitFee({totalFee:w,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m});return{amountA:ze(I,y,f),amountB:t,splitFee:k,transferFeeB:T.fee}}static splitFee({totalFee:e,protocolFeeRate:t,platformFeeRate:o,shareFeeRate:i,creatorFeeRate:s}){let l=this.totalFeeRate({protocolFeeRate:t,platformFeeRate:o,shareFeeRate:i,creatorFeeRate:s}),m=l.isZero()?new se(0):e.mul(o).div(l),y=l.isZero()?new se(0):e.mul(i).div(l),b=l.isZero()?new se(0):e.mul(s).div(l),f=e.sub(m).sub(y).sub(b);return{platformFee:m,shareFee:y,protocolFee:f,creatorFee:b}}static calculateFee({amount:e,feeRate:t}){return bn(e,t,be)}static calculatePreFee({postFeeAmount:e,feeRate:t}){if(t.isZero())return e;let o=e.mul(be),i=be.sub(t);return o.add(i).sub(new se(1)).div(i)}static totalFeeRate({protocolFeeRate:e,platformFeeRate:t,shareFeeRate:o,creatorFeeRate:i}){if(e.add(t).add(o).add(i).gt(new se(1e6)))throw Error("total fee rate gt 1_000_000");return e.add(t).add(o).add(i)}static getCurve(e){switch(e){case 0:return _t;case 1:return Dt;case 2:return Wt}throw Error("find curve error")}};export{Xe as Curve};
//# sourceMappingURL=curve.mjs.map