UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 88.1 kB
var So=Object.defineProperty,Ko=Object.defineProperties;var xo=Object.getOwnPropertyDescriptors;var yt=Object.getOwnPropertySymbols;var Tn=Object.prototype.hasOwnProperty,hn=Object.prototype.propertyIsEnumerable;var kn=(a,e,t)=>e in a?So(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,M=(a,e)=>{for(var t in e||(e={}))Tn.call(e,t)&&kn(a,t,e[t]);if(yt)for(var t of yt(e))hn.call(e,t)&&kn(a,t,e[t]);return a},V=(a,e)=>Ko(a,xo(e));var de=(a,e)=>{var t={};for(var o in a)Tn.call(a,o)&&e.indexOf(o)<0&&(t[o]=a[o]);if(a!=null&&yt)for(var o of yt(a))e.indexOf(o)<0&&hn.call(a,o)&&(t[o]=a[o]);return t};import se from"bn.js";import Io from"decimal.js";import{PublicKey as Lo}from"@solana/web3.js";import{get as In,set as Co}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}},Bn={},Ro={};function E(a){let e=In(Bn,a);if(!e){let t=In(Ro,a);e=new qt({name:a,logLevel:t}),Co(Bn,a,e)}return e}import{MINT_SIZE as Wa,TOKEN_PROGRAM_ID as qa,getTransferFeeConfig as Ua,unpackMint as Ga}from"@solana/spl-token";var Ut=E("Raydium_accountInfo_util");async function Ae(a,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 b=l.map(A=>{let T=a._buildArgs([A.map(h=>h.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:T}}),g=Gt(b,10);m=(await(await Promise.all(g.map(async A=>await a._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 Lo(B),rentEpoch:I}}return null})))}else try{m=await Promise.all(l.map(b=>a.getMultipleAccountsInfo(b,i)))}catch(b){b instanceof Error&&Ut.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return m.flat()}import he from"bn.js";import dR from"decimal.js";import Eo from"big.js";import ss from"bn.js";import Oo from"toformat";var No=Oo,Qe=No;import gt from"big.js";import Fo from"bn.js";import vo from"decimal.js-light";import Ze from"bn.js";var Sn=9007199254740991;function ie(a){let e=E("Raydium_parseBigNumberish");if(a instanceof Ze)return a;if(typeof a=="string"){if(a.match(/^-?[0-9]+$/))return new Ze(a);e.logWithError(`invalid BigNumberish string: ${a}`)}return typeof a=="number"?(a%1&&e.logWithError(`BigNumberish number underflow: ${a}`),(a>=Sn||a<=-Sn)&&e.logWithError(`BigNumberish number overflow: ${a}`),new Ze(String(a))):typeof a=="bigint"?new Ze(a.toString()):(e.error(`invalid BigNumberish value: ${a}`),new Ze(0))}var bt=E("module/fraction"),zt=Qe(gt),$e=Qe(vo),_o={[0]:$e.ROUND_DOWN,[1]:$e.ROUND_HALF_UP,[2]:$e.ROUND_UP},Vo={[0]:gt.roundDown,[1]:gt.roundHalfUp,[2]:gt.roundUp},U=class{constructor(e,t=new Fo(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.`),$e.set({precision:e+1,rounding:_o[o]});let i=new $e(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=Vo[o]||1,new zt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var bs=E("Raydium_amount"),gs=Qe(Eo);import{PublicKey as Wo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kn}from"@solana/spl-token";var Pt={chainId:101,address:Wo.default.toBase58(),programId:Kn.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:Kn.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 xn,SYSVAR_RENT_PUBKEY as qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";function Oe({pubkey:a,isSigner:e=!1,isWritable:t=!0}){return{pubkey:a,isWritable:t,isSigner:e}}var Go=[Oe({pubkey:Uo,isWritable:!1}),Oe({pubkey:xn.programId,isWritable:!1}),Oe({pubkey:qo,isWritable:!1})];function Cn({publicKey:a,transformSol:e}){let t=Rn(a.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 Rn(a){try{return new z(a)}catch{return a}}var Xt=new z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new z("SysvarRent111111111111111111111111111111111"),Bs=new z("SysvarC1ock11111111111111111111111111111111"),At=new z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),zo=new z("Sysvar1nstructions1111111111111111111111111"),Xo=xn.programId,Ss=new z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ks=new z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),xs=new z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cs=new z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Rs=new z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ls=new z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Os=new z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ns=new z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ms=new z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Fs=new z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),vs=new z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),we=new z("So11111111111111111111111111111111111111112"),Be=z.default;var Ht=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:Cn({publicKey:e}),this.isToken2022=l}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ee=Ht;ee.WSOL=new Ht(V(M({},pe),{mint:pe.address}));var Qt=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=Qt;wt.SOL=new Qt(Pt);import Yo from"bn.js";var Hs=new U(new Yo(100));var eu=E("Raydium_price");import{merge as fC}from"lodash";import cu from"axios";var Ln={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"},Ho=V(M({},Ln),{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 Ou=E("Raydium_Api");import{PublicKey as $l,SystemProgram as jl}from"@solana/web3.js";import{AccountLayout as om,createAssociatedTokenAccountIdempotentInstruction as im,TOKEN_PROGRAM_ID as rm,TOKEN_2022_PROGRAM_ID as am}from"@solana/spl-token";import{PublicKey as _e,sendAndConfirmTransaction as tn,SystemProgram as ei,Transaction as tt,TransactionMessage as nt,VersionedTransaction as ot}from"@solana/web3.js";import ti from"axios";import{PublicKey as Zt,AddressLookupTableAccount as Fe}from"@solana/web3.js";async function $t({connection:a,address:e,cluster:t="mainnet"}){let o=await Ae(a,[...new Set(e.map(s=>s.toString()))].map(s=>new Zt(s))),i={};for(let s=0;s<e.length;s++){let l=o[s],m=e[s];if(!l)continue;let b=new Fe({key:m,state:Fe.deserialize(l.data)});i[m.toString()]=b,t==="devnet"?Me[m.toString()]=b:Ne[m.toString()]=b}return i}var Ne={},jt=async a=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ne[e])return Ne;let t=new Zt(e),o=await a.getAccountInfo(t);return o&&(Ne[e]=new Fe({key:t,state:Fe.deserialize(o.data)})),Ne},Me={},Jt=async a=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Me[e])return Me;let t=new Zt(e),o=await a.getAccountInfo(t);return o&&(Me[e]=new Fe({key:t,state:Fe.deserialize(o.data)})),Me};var Q={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as On,Keypair as Mn,PublicKey as Qo,Transaction as Fn,TransactionMessage as Zo,VersionedTransaction as vn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";var Nn=E("Raydium_txUtil"),_n=1644;function kt(a){let e=[],t=[];return a.microLamports&&(e.push(On.setComputeUnitPrice({microLamports:a.microLamports})),t.push(Q.SetComputeUnitPrice)),a.units&&(e.push(On.setComputeUnitLimit({units:a.units})),t.push(Q.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ve(a,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=a.getLatestBlockhash)==null?void 0:o.call(a,{commitment:t})))==null?void 0:i.blockhash}async function Tt(a,e){return a.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);a.onSignature(e,s=>{if(clearTimeout(i),!s.err){t("");return}o(Object.assign(s.err,{txId:e}))},"confirmed")})}function en(a,e){a.length<1&&Nn.logWithError(`no instructions provided: ${a.toString()}`),e.length<1&&Nn.logWithError(`no signers provided:, ${e.toString()}`);let t=new Fn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...a);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<_n}catch{return!1}}function fe(a,e){let[t,o]=Qo.findProgramAddressSync(a,e);return{publicKey:t,nonce:o}}function Je({instructions:a,payer:e,signers:t}){return en(a,[e,...t])}function et({instructions:a,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Mn.generate().publicKey.toString()}){let s=new Zo({payerKey:e,recentBlockhash:o,instructions:a}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new vn(s).serialize()).toString("base64").length<_n}catch{return!1}}var jo=a=>Buffer.isBuffer(a)?a:a instanceof Uint8Array?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a),Jo=a=>{let e=a.serialize({requireAllSignatures:!1,verifySignatures:!1});a instanceof vn&&(e=jo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Se(a){let e=[];return a.forEach(t=>{t instanceof Fn&&(t.recentBlockhash||(t.recentBlockhash=$o.toBase58()),t.feePayer||(t.feePayer=Mn.generate().publicKey)),e.push(Jo(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 ti.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(ei.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new _e(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(Q.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!==_e.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(V(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:b}=i||{},g=s!=null?s:await ve(this.connection,this.blockhashCommitment);if(t.recentBlockhash=g,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:b?"":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 g;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)],b=[...this.instructionTypes,...s.map(f=>f.instructionTypes).flat()];return(g=this.owner)!=null&&g.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:b,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 F of l){if(++R,R<=h)continue;let P=await tn(this.connection,F,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((F,P)=>(F.recentBlockhash=B,m[P].length&&F.sign(...m[P]),F));Se(k);let R=await this.signAllTransactions(k);if(A){let F=0,P=[],K=async()=>{if(!R[F])return;let x=await this.connection.sendRawTransaction(R[F].serialize(),{skipPreflight:w});P.push({txId:x,status:"sent",signedTx:R[F]}),T==null||T([...P]),F++;let L=!1,O=null,_=null,J=q=>{O!==null&&clearInterval(O),_!==null&&this.connection.removeSignatureListener(_);let W=P.findIndex(j=>j.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:1});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)),_=this.connection.onSignature(x,q=>{if(L){this.connection.removeSignatureListener(_);return}L=!0,J(q)},"confirmed"),this.connection.getSignatureStatus(x)};return await K(),{txIds:P.map(x=>x.txId),signedTxs:R}}else{let F=[];for(let P=0;P<R.length;P+=1){let K=await this.connection.sendRawTransaction(R[P].serialize(),{skipPreflight:w});F.push(K)}return{txIds:F,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 jt(this.connection)),t),b=Array.from(new Set([...o,...this.lookupTableAddress])),g=[];for(let B of b)m[B]===void 0&&g.push(new _e(B));let f=await $t({connection:this.connection,address:g});for(let[B,I]of Object.entries(f))m[B]=I;let A=i?_e.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 F;let{skipPreflight:I=!0,sendAndConfirm:k,notSendToRpc:R}=B||{};if(Se([h]),(F=this.owner)!=null&&F.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 g;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)],b=[...this.instructionTypes,...s.map(f=>f.instructionTypes).flat()];return(g=this.owner)!=null&&g.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:b,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 F=await this.connection.sendTransaction(B[I],{skipPreflight:S});k.push({txId:F,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 _=k.findIndex(J=>J.txId===F);if(_>-1){if(k[_].status==="error"||k[_].status==="success")return;k[_].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 _=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(P=!0,clearInterval(K),L({err:((O=_.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",F))}catch(_){P=!0,clearInterval(K),console.error("getTransaction timeout:",_,F)}},ht)),x=this.connection.onSignature(F,O=>{if(P){this.connection.removeSignatureListener(x);return}P=!0,L(O)},"confirmed"),this.connection.getSignatureStatus(F)};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)=>V(M({},h),{[S.publicKey.toBase58()]:S}),{}),m=[],b=[],g=[],f=0;if(this.allInstructions.forEach(h=>{let S=[...g,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 _e(k));if(h!==t[f]&&g.length<12&&(Je({instructions:w,payer:this.feePayer,signers:I})||Je({instructions:S,payer:this.feePayer,signers:I})))g.push(h);else{if(g.length===0)throw Error("item ins too big");f+=h===t[f]?1:0,Je({instructions:o?[...s.instructions,...g]:[...g],payer:this.feePayer,signers:I})?m.push(new tt().add(...s.instructions,...g)):m.push(new tt().add(...g)),b.push(Array.from(new Set(g.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(k=>l[k]).filter(k=>k!==void 0)),g=[h]}}),g.length>0){let S=[...new Set(g.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,...g]:[...g],payer:this.feePayer,signers:S.map(w=>w.publicKey)})?m.push(new tt().add(...s.instructions,...g)):m.push(new tt().add(...g)),b.push(S)}return m.forEach(h=>h.feePayer=this.feePayer),(T=this.owner)!=null&&T.signer&&b.forEach(h=>{h.some(S=>S.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:m,signers:b,instructionTypes:this.instructionTypes,execute:async h=>{var F;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,b[K].length&&P.sign(...b[K])}),Se(m),(F=this.owner)!=null&&F.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 _=await this.connection.sendRawTransaction(K[x].serialize(),{skipPreflight:k});L.push({txId:_,status:"sent",signedTx:K[x]}),w==null||w([...L]),x++;let J=!1,q=null,W=null,j=G=>{q!==null&&clearInterval(q),W!==null&&this.connection.removeSignatureListener(W);let oe=L.findIndex(ge=>ge.txId===_);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(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});oe&&(J=!0,clearInterval(q),j({err:((G=oe.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",_))}catch(oe){J=!0,clearInterval(q),console.error("getTransaction timeout:",oe,_)}},ht)),W=this.connection.onSignature(_,G=>{if(J){this.connection.removeSignatureListener(W);return}J=!0,j(G)},"confirmed"),this.connection.getSignatureStatus(_)};return await O(),{txIds:L.map(_=>_.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 F;let R=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:s=[],insCountLimit:l=12}=R,m=de(R,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=M(M({},this.cluster==="devnet"?await Jt(this.connection):await jt(this.connection)),i),g=Array.from(new Set([...this.lookupTableAddress,...s])),f=[];for(let P of g)b[P]===void 0&&f.push(new _e(P));let A=await $t({connection:this.connection,address:f});for(let[P,K]of Object.entries(A))b[P]=K;let T=t?kt(t):{instructions:[],instructionTypes:[]},h=await ve(this.connection,this.blockhashCommitment),S=this.signers.reduce((P,K)=>V(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:b})||et({instructions:K,payer:this.feePayer,lookupTableAddressAccount:b})))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(g)])b[O]!==void 0&&(L[O]=b[O]);if(t&&et({instructions:[...T.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:h})){let O=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...T.instructions,...I]}).compileToV0Message(Object.values(b));w.push(new ot(O))}else{let O=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...I]}).compileToV0Message(Object.values(b));w.push(new ot(O))}B.push(Array.from(new Set(I.map(O=>O.keys.filter(_=>_.isSigner).map(_=>_.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:b,recentBlockhash:h})){let x=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...T.instructions,...I]}).compileToV0Message(Object.values(b));w.push(new ot(x))}else{let x=new nt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...I]}).compileToV0Message(Object.values(b));w.push(new ot(x))}B.push(K)}return(F=this.owner)!=null&&F.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:_=!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 j of w){if(++q,q<=L){console.log("skip tx: ",q),W.push("tx skipped");continue}let G=await this.connection.sendTransaction(j,{skipPreflight:_});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:_}))),signedTxs:w}}if(this.signAllTransactions){let q=await this.signAllTransactions(w.slice(L,w.length)),W=[...w.slice(0,L),...q];if(K){let j=0,G=[],oe=async()=>{if(!W[j])return;if(j<L){G.push({txId:"",status:"success",signedTx:W[j]}),x==null||x([...G]),j++,oe();return}let ge=await this.connection.sendTransaction(W[j],{skipPreflight:_});G.push({txId:ge,status:"sent",signedTx:W[j]}),x==null||x([...G]),j++;let Ye=!1,Le=null,ft=null,wn=Ie=>{Le!==null&&clearInterval(Le),ft!==null&&this.connection.removeSignatureListener(ft);let Pe=G.findIndex(Bo=>Bo.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:1});Pe&&(Ye=!0,clearInterval(Le),wn({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,wn(Ie)},"confirmed"),this.connection.getSignatureStatus(ge)};return oe(),{txIds:[],signedTxs:W}}else{let j=[];for(let G=0;G<W.length;G+=1){let oe=await this.connection.sendTransaction(W[G],{skipPreflight:_});j.push(oe)}return{txIds:j,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:m||{}}}};var nn=(...a)=>a.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 xl,SystemProgram as Rl}from"@solana/web3.js";import Nl from"bn.js";import{createCloseAccountInstruction as _l,createInitializeAccountInstruction as Vl,createTransferInstruction as El,TOKEN_PROGRAM_ID as Dl}from"@solana/spl-token";import{Keypair as yl,PublicKey as bl}from"@solana/web3.js";import Al from"bn.js";import{TOKEN_PROGRAM_ID as Tl}from"@solana/spl-token";import{PublicKey as pi}from"@solana/web3.js";import qn,{isBN as Un}from"bn.js";import{bits as ni,BitStructure as wc,blob as oi,Blob as kc,cstr as Tc,f32 as hc,f32be as Ic,f64 as Bc,f64be as Sc,greedy as Kc,Layout as ii,ns64 as xc,ns64be as Cc,nu64 as Rc,nu64be as Lc,offset as ri,s16 as Oc,s16be as Nc,s24 as Mc,s24be as Fc,s32 as ai,s32be as vc,s40 as _c,s40be as Vc,s48 as Ec,s48be as Dc,s8 as Wc,seq as si,struct as qc,Structure as ui,u16 as ci,u16be as Uc,u24 as Gc,u24be as zc,u32 as li,u32be as Xc,u40 as Yc,u40be as Hc,u48 as Qc,u48be as Zc,u8 as mi,UInt as di,union as $c,Union as jc,unionLayoutDiscriminator as Jc,utf8 as el}from"@solana/buffer-layout";var Bt=ii,Vn=ui;var on=di;var En=mi,Y=ci;var St=li;var ce=ai;var Dn=si;var v=oi;var rn=ni,Wn=ri;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 qn(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 qn(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(a){return new on(1,a)}function X(a){return new on(4,a)}function n(a){return new xe(8,!1,a)}function N(a){return new xe(16,!1,a)}function Gn(a){return new xe(1,!0,a)}function Ve(a){return new xe(8,!0,a)}function zn(a){return new xe(16,!0,a)}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 r(a){return new it(v(32),e=>new pi(e),e=>e.toBuffer(),a)}function ue(a){return new it(En(),fi,yi,a)}function fi(a){if(a===0)return!1;if(a===1)return!0;throw new Error("Invalid bool: "+a)}function yi(a){return a?1:0}function sn(a,e){let t=St("length"),o=p([t,y(a,Wn(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(a,e,t){return new an(a,e,t)}function y(a,e,t){let o,i=typeof e=="number"?e:Un(e)?e.toNumber():new Proxy(e,{get(s,l){if(!o){let m=Reflect.get(s,"count");o=Un(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 Dn(a,i,t)}var xt=p([r("mint"),r("owner"),n("amount"),X("delegateOption"),r("delegate"),d("state"),X("isNativeOption"),n("isNative"),n("delegatedAmount"),X("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as $g,SystemProgram as jg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as eP}from"@solana/spl-token";import{PublicKey as pm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ym}from"@solana/spl-token";import{PublicKey as C}from"@solana/web3.js";var Yn=new C("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Hn=new C("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Qn=new C("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),un=new C("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Am=new C("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),gi=new C("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Zn=new C("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),$n=new C("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),wm=new C("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Pi=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),jn=new C("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ai=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),wi=new C("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Jn=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),km=new C("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ki=new C("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),cn=new C("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ti=new C("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Tm=new C("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),hi=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ii=new C("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Bi=new C("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),hm=new C("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Im=new C("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Bm=new C("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Sm=new C("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Km=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 Oy,TOKEN_2022_PROGRAM_ID as Ny,TOKEN_PROGRAM_ID as My}from"@solana/spl-token";import{PublicKey as vy}from"@solana/web3.js";import Vy from"bn.js";import Dy from"decimal.js";import{TOKEN_PROGRAM_ID as Wm}from"@solana/spl-token";import{PublicKey as zm}from"@solana/web3.js";var Si=p([X("mintAuthorityOption"),r("mintAuthority"),n("supply"),d("decimals"),d("isInitialized"),X("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Jf,TOKEN_2022_PROGRAM_ID as ey,TOKEN_PROGRAM_ID as ty}from"@solana/spl-token";import{Keypair as iy,PublicKey as ry,SystemProgram as sy,TransactionInstruction as uy}from"@solana/web3.js";import ly from"bn.js";import D from"bn.js";var le=new D(1).shln(64);var Ki=new D(1).shln(128),Rt=new D(1).shln(64).subn(1),xi=new D(1).shln(128).subn(1);var De=new D("4295048016"),We=new D("79226673521066979257578248091"),Ci=new D("59543866431248"),Ri=new D("184467440737095516"),Li=new D("15793534762490258745");var ln=60,od=new D("18446743708227953217"),Oi=[{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 Z=new D(0),qe=new D(1),id=new D(-1);var rd=new D("18446744073700000000");var Ni=p([v(8),d("bump"),Y("index"),r("owner"),X("protocolFeeRate"),X("tradeFeeRate"),Y("tickSpacing"),X("fundFeeRate"),y(X(),1),r("fundOwner"),y(n(),3)]),Mi=p([X("blockTimestamp"),Ve("tickCumulative"),y(n(),4)]),oo=p([v(8),ue("initialized"),n("recentEpoch"),Y("observationIndex"),r("poolId"),y(Mi,eo,"observations"),y(n(),4)]),Fi=p([Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),ce("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),n("lastUpdateTimestamp"),y(d(),46)]),vi=p([d("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),N("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),r("mint"),r("vault"),r("creator"),N("growthGlobalX64")]),mn=p([v(8),d("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),Y("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),ce("tickCurrent"),X(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),y(N(),4),d("status"),d("feeOn"),v(6),y(vi,rt,"rewardInfos"),v(8*16,"tickArrayBitmap"),y(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),Fi.replicate("dynamicFeeInfo"),y(n(),46)]),_i=p([N("growthInsideLastX64"),n("rewardAmountOwed")]),Vi=p([v(8),d("bump"),r("nftMint"),r("poolId"),ce("tickLower"),ce("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),y(_i,rt,"rewardInfos"),n("recentEpoch"),y(n(),7)]),cd=p([v(8),d("bump"),r("poolId"),ce("tickLower"),ce("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),y(N(),rt,"rewardGrowthInside"),n("recentEpoch"),y(n(),7)]),Ei=p([ce("tick"),zn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),y(N(),rt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),N("unfilledRatioX64"),y(X(),3)]),io=p([v(8),r("poolId"),ce("startTickIndex"),y(Ei,ln,"ticks"),d("initializedTickCount"),n("recentEpoch"),y(d(),107)]),Di=p([v(8),d("bump"),y(r(),to,"operationOwners"),y(r(),no,"whitelistMints")]),Wi=p([v(8),r("poolId"),r("owner"),ce("tick"),ue("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),N("unfilledRatioX64"),y(n(),4)]),ro=p([v(8),r("poolId"),v(8*8*Lt,"positiveTickArrayBitmap"),v(8*8*Lt,"negativeTickArrayBitmap")]),ld=p([v(8),Y("index"),Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),y(n(),8)]),qi=p([v(8),r("wallet"),d("nonceIndex"),n("orderNonce"),y(n(),4)]),md=p([n(),d("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),y(n(),8)]),Ui=p([v(8),d("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),n("recentEpoch"),y(n(),8)]);import fd from"bn.js";var Bd=Buffer.from("amm_config","utf8"),zi=Buffer.from("pool","utf8"),Xi=Buffer.from("pool_vault","utf8"),Sd=Buffer.from("pool_reward_vault","utf8"),Kd=Buffer.from("position","utf8"),xd=Buffer.from("tick_array","utf8"),Cd=Buffer.from("operation","utf8"),Rd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ld=Buffer.from("observation","utf8"),Od=Buffer.from("support_mint","utf8"),Nd=Buffer.from("dynamic_fee_config","utf8"),Md=Buffer.from("permission","utf8");var Fd=Buffer.from("locked_position","utf8");import{sha256 as sr}from"js-sha256";import Yi from"bn.js";import Ed from"decimal.js";var Wd=new Yi(1).shln(256).subn(1);import rp from"bn.js";import Hd from"bn.js";import Zd from"decimal.js";import lp from"bn.js";import dp from"decimal.js";import{PublicKey as jp}from"@solana/web3.js";import ef from"bn.js";import{TOKEN_2022_PROGRAM_ID as cf,TOKEN_PROGRAM_ID as lf}from"@solana/spl-token";import ff from"decimal.js";import Wp from"bn.js";import xp from"bn.js";import Bf from"bn.js";function $(a){let e=`global:${a}`;return Buffer.from(sr.digest(e)).slice(0,8)}oo.span;var Ay=E("Raydium_Clmm"),wy={createPool:$("create_pool"),createCustomizablePool:$("create_customizable_pool"),createPermissionedPool:$("create_permissioned_pool"),openPositionV2:$("open_position_v2"),openPositionWithToken22Nft:$("open_position_with_token22_nft"),closePosition:$("close_position"),increaseLiquidityV2:$("increase_liquidity_v2"),decreaseLiquidityV2:$("decrease_liquidity_v2"),initializeReward:$("initialize_reward"),setRewardParams:$("set_reward_params"),updateRewardInfos:$("update_reward_infos"),collectRemainingRewards:$("collect_remaining_rewards"),swapV2:$("swap_v2"),openLimitOrder:$("open_limit_order"),increaseLimitOrder:$("increase_limit_order"),decreaseLimitOrder:$("decrease_limit_order"),settleLimitOrder:$("settle_limit_order"),closeLimitOrder:$("close_limit_order")};import{PublicKey as yn}from"@solana/web3.js";var mr=p([d("instruction")]),dr=p([d("instruction")]),pr=p([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),N("accRewardPerShare"),r("rewardVault"),r("rewardMint"),r("rewardSender"),n("rewardType"),y(n(),15,"padding")]),fr=p([n("state"),n("nonce"),r("lpVault"),r("rewardVault"),r(),r(),n(),n(),n("totalReward"),N("perShareReward"),n("lastSlot"),n("perSlotReward")]),yr=p([n("state"),n("nonce"),r("lpVault"),r("rewardVaultA"),n("totalRewardA"),N("perShareRewardA"),n("perSlotRewardA"),d("option"),r("rewardVaultB"),v(7),n("totalRewardB"),N("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),r()]),br=p([n(),n("state"),n("nonce"),n("validRewardTokenNum"),N("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),r("lpMint"),r("lpVault"),y(pr,5,"rewardInfos"),r("creator"),r(),y(n(),32,"padding")]),gr=new Proxy(fr,{get(a,e,t){return e==="decode"?(...o)=>{let i=a.decode(...o);return V(M({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(a,e,t)}}),Pr=new Proxy(yr,{get(a,e,t){return e==="decode"?(...o)=>{let i=a.decode(...o);return V(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(a,e,t)}}),po=new Proxy(br,{get(a,e,t){return e==="decode"?(...o)=>{let i=a.decode(...o);return V(M({},i),{version:6,rewardInfos:i.rewardInfos.map(s=>{var l;return V(M({},s),{rewardType:((l=Object.entries(ut).find(m=>String(m[1])===s.rewardType.toString()))!=null?l:["Standard SPL"])[0]})})})}:Reflect.get(a,e,t)}}),Ar=p([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),wr=p([d("instruction"),n("nonce"),y(Ar,5,"rewardTimeInfo")]),kr=p([d("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),Tr=p([d("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),yb=p([n("state"),r("id"),r("owner"),n("deposited"),y(n(),1,"rewardDebts")]),fo=p([n("state"),r("id"),r("owner"),n("deposited"),y(N(),1,"rewardDebts"),n(""),n("voteLockedBalance"),y(n(),15)]),bb=p([n("state"),r("id"),r("owner"),n("deposited"),y(n(),2,"rewardDebts")]),hr=p([n("state"),r("id"),r("owner"),n("deposited"),y(N(),2,"rewardDebts"),y(n(),17)]),Ir=p([n(),n("state"),r("id"),r("owner"),n("deposited"),y(N(),5,"rewardDebts"),y(n(),16)]),Br=p([d("instruction"),n("amount")]),Sr=p([r("mint"),r("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Gn("digitShift"),y(d(),7,"reserved1"),y(n(),7,"reserved2")]),Kr=p([v(8),r("governanceProgramId"),r("realm"),r("realmGoverningTokenMint"),r("realmAuthority"),y(d(),32,"reserved1"),y(Sr,4,"votingMints"),Ve("timeOffset"),d("bump"),y(d(),7,"reserved2"),y(n(),11,"reserved3")]),xr=p([Ve("startTime"),Ve("endTime"),d("kind"),y(d(),15,"reserved")]),Cr=p([y(xr,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ue("isUsed"),ue("allowClawback"),d("votingMintConfigIdx"),y(d(),29,"reserved")]),Rr=p([v(8),r("voterAuthority"),r("registrar"),y(Cr,32,"deposits"),d("voterBump"),d("voterWweightRecordBump"),y(d(),94,"reserved")]);import{NATIVE_MINT as Bb}from"@solana/spl-token";var Sb=E("Raydium_farm_config"),Lr=new yn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Or=new yn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Kb=new yn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var ut={"Standard SPL":0,"Option tokens":1},yo={[Yn.toString()]:3,[Hn.toString()]:4,[Qn.toString()]:5,[un.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(a,e){let{div:t,mod:o}=a.divmod(e);return o.gt(new te(0))?t.add(new te(1)):t}function Ce(a,e){if(a.isZero())return new te(0);let t=a.div(e);return t.isZero()?new te(1):a.mod(e).gt(new te(0))?t.add(new te(1)):t}function lt(a,e,t){if(e===void 0)return{amount:a,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(a.mul(new te(i.transferFeeBasisPoints)),new te(ct)),b=m.gt(s)?s:m;return{amount:a,fee:b,expirationTime:l}}function ze(a,e,t){if(e===void 0)return{amount:a,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:a.add(m),fee:m,expirationTime:l}}else{let m=vt(a.mul(new te(ct)),new te(ct-i.transferFeeBasisPoints)),b=new te(i.maximumFee.toString()),g=m.sub(a).gt(b)?a.add(b):m,f=vt(g.mul(new te(i.transferFeeBasisPoints)),new te(ct)),A=f.gt(s)?s:f;return{amount:g,fee:A,expirationTime:l}}}import go from"bn.js";var Dr=new go(25),Wr=new go(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as zP,TOKEN_PROGRAM_ID as XP}from"@solana/spl-token";import{PublicKey as HP,SystemProgram as QP,SYSVAR_RENT_PUBKEY as ZP,TransactionInstruction as $P}from"@solana/web3.js";import rA from"bn.js";var qr=p([d("instruction"),n("amountIn"),n("minAmountOut")]),Ur=p([d("instruction"),n("maxAmountIn"),n("amountOut")]),WP=p([d("instruction"),d("nonce")]),Gr=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"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),n("swapBase2QuoteFee"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),n("swapQuote2BaseFee"),r("baseVault"),r("quoteVault"),r("baseMint"),r("quoteMint"),r("lpMint"),r("openOrders"),r("marketId"),r("marketProgramId"),r("targetOrders"),r("withdrawQueue"),r("lpVault"),r("owner"),n("lpReserve"),y(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"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),r("baseVault"),r("quoteVault"),r("baseMint"),r("quoteMint"),r("lpMint"),r("modelDataAccount"),r("openOrders"),r("marketId"),r("marketProgramId"),r("targetOrders"),r("owner"),y(n(),64,"padding")]),zr=p([d("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Xr=p([d("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Yr=p([n("fee")]);var uA=E("Raydium_liquidity_instruction");var Hr=5e4,Qr=p([n("x"),n("y"),n("price")]),dA=p([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),y(Qr,Hr,"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 HA}from"@solana/spl-token";function Zr(a="accountFlags"){let e=new Kt(a);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),Zr("accountFlags"),r("ownAddress"),n("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),r("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),v(7)]);import{PublicKey as RT}from"@solana/web3.js";import{AccountLayout as OT,NATIVE_MINT as NT,TOKEN_2022_PROGRAM_ID as MT,TOKEN_PROGRAM_ID as FT,createAssociatedTokenAccountIdempotentInstruction as vT}from"@solana/spl-token";import Sk from"bn.js";import ia from"bn.js";var dk=new ia(0);import Pk from"bn.js";import ra from"bn.js";var be=new ra(1e6);import GT from"bn.js";import XT from"decimal.js";import{PublicKey as Xk,TransactionInstruction as Yk,Keypair as Qk,SystemProgram as Zk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as jk,TOKEN_2022_PROGRAM_ID as Jk,TOKEN_PROGRAM_ID as eT}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"),_k=Buffer.from("permission","utf8"),Vk=Buffer.from("support_mint","utf8"),Ek=Buffer.from("creator_fee_share","utf8");var Dk=Buffer.from("locked_liquidity","utf8");var sT=E("Raydium_cpmm"),uT={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 sa=p([v(8),d("bump"),ue("disableCreatePool"),Y("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),r("protocolOwner"),r("fundOwner"),n("creatorFeeRate"),n("creatorFeeShareRate"),y(n(),14)]),Ao=p([v(8),r("configId"),r("poolCreator"),r("vaultA"),r("vaultB"),r("mintLp"),r("mintA"),r("mintB"),r("mintProgramA"),r("mintProgramB"),r("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"),y(d(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),y(n(),28)]),mT=p([v(8),r("configId"),y(n(),30)]),dT=p([v(8),d("bump"),r("creator"),r("ammConfig"),n("shareRate"),y(n(),8)]);import{PublicKey as _K,SystemProgram as VK}from"@solana/web3.js";import{createTransferInstruction as DK,TOKEN_PROGRAM_ID as WK,TOKEN_2022_PROGRAM_ID as qK,createAssociatedTokenAccountIdempotentInstruction as UK,createSyncNativeInstruction as zK,createTransferCheckedInstruction as XK}from"@solana/spl-token";import Ka from"bn.js";import QK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as eI,TOKEN_2022_PROGRAM_ID as tI,TOKEN_PROGRAM_ID as nI}from"@solana/spl-token";import{SystemProgram as aI,TransactionInstruction as sI}from"@solana/web3.js";import la from"bn.js";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"),Yh=Buffer.from("platform_curve_rule","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]),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]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var mI=new la("18446744073709551615");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"),r("mintB"),r("protocolFeeOwner"),r("migrateFeeOwner"),r("migrateToAmmWallet"),r("migrateToCpmmWallet"),y(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"),r("configId"),r("platformId"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("creator"),d("mintProgramFlag"),d("cpmmCreatorFeeOn"),n("platformVestingShare"),y(d(),54)]),yI=p([n(),n("epoch"),r("poolId"),r("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),y(n(),8)]),fa=p([d("migrateType"),d("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),bI=p([n("epoch"),d("index"),r("configId"),fa.replicate("bondingCurveParam"),y(n(),50)]),ko=p([n(),n("epoch"),r("platformClaimFeeWallet"),r("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),y(d(),64,"name"),y(d(),256,"web"),y(d(),256,"img"),r("cpConfigId"),n("creatorFeeRate"),r("transferFeeExtensionAuth"),r("platformVestingWallet"),n("platformVestingScale"),r("platformCpCreator"),d("restrictGlobalConfig"),d("restrictCurveParam"),r("curveRuleManager"),y(d(),78)]),ya=p([d("field"),d("op"),N("value")]),ba=p([Y("groupId"),n("epoch"),sn(ya,"constraints")]),ga=p([n(),d("bump"),d("version"),r("platformId"),r("configId"),n("epoch"),y(n(),8),sn(ba,"groups")]);import{TOKEN_2022_PROGRAM_ID as AI,TOKEN_PROGRAM_ID as wI}from"@solana/spl-token";import Pa from"bn.js";var OI=new Pa(1e6);import _t 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 Vt=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 _t(0)))throw Error("supplyMinusSellLocked <= 0");let m=t.sub(s);if(m.lte(new _t(0)))throw Error("tfMinusMf <= 0");let b=m.mul(o).mul(o).div(l),g=m.mul(o).div(l).sub(t),f=b.div(g),A=t.mul(t).div(g);if(f.lt(new _t(0))||A.lt(new _t(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),g=t.mul(l).div(m);if(g.lt(new Et(0))||t.lt(new Et(0)))throw Error("invalid input 0");return{a:g,b:t,c:g}}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 To from"bn.js";import Pn from"decimal.js";var pt=class{static _multipler(e){return new Pn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new Pn(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 To(i.mul(this._Q64).toFixed(0))}};pt._Q64=new Pn(new To(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),g=t.mul(new ae(2)).mul(l).div(m),f=g.mul(g),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))||g.lt(new ae(0)))throw Error("invalid input 0");return{a:A,b:new ae(0),c:g}}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 dS,TOKEN_2022_PROGRAM_ID as pS,TOKEN_PROGRAM_ID as fS,createAssociatedTokenAccountIdempotentInstruction as bS,createSyncNativeInstruction as gS,getTransferFeeConfig as PS,unpackMint as AS}from"@solana/spl-token";import H from"bn.js";import{PublicKey as Ia,SystemProgram as TS}from"@solana/web3.js";import CS from"decimal.js";var RS={initPriceX64:new H("515752397214619"),supply:new H(1e15),totalSellA:new H(7931e11),totalFundRaisingB:new H(85e9),totalFundRaisingBUSD:new H(125e8),totalLockedAmount:new H("0"),cliffPeriod:new H("0"),unlockPeriod:new H("0"),decimals:6,virtualA:new H("1073471847374405"),virtualB:new H("30050573465"),realA:new H(0),realB:new H(0),protocolFee:new H(0),platformId:new Ia("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new H(0),cliffPeriod:new H(0),unlockPeriod:new H(0),startTime:new H(0),totalAllocatedShare:new H(0)}},LS=new H(1e4);var Ba={[Zn.toBase58()]:3};var Sa=p([v(5),v(8),r("ownAddress"),n("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),r("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),v(7)]);import{PublicKey as tK}from"@solana/web3.js";var aK=E("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as yK,TOKEN_2022_PROGRAM_ID as bK,TOKEN_PROGRAM_ID as gK}from"@solana/spl-token";import{PublicKey as AK,SystemProgram as wK,TransactionInstruction as kK}from"@solana/web3.js";import hK from"bn.js";var Bx=new Ka(0);import{PublicKey as xa,Transaction as An,TransactionInstruction as Ca}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ra}from"@solana/spl-token";import ho 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 ho(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 b=await Ae(e,[...l,...m]),g=[];for(let f=0;f<b.length;f++){let A=Math.floor(f/o.length),T=f%o.length,h=l[T],S=m[f],w=b[T],B=b[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(),F=I.endTime.toNumber(),P=k.tokenInfo.map(L=>L.debtAmount.gt(new ho(0))).filter(L=>!L).length!==3,K=s>R&&s<F&&I.status===1,x=P&&K;g.push({programId:t,poolId:h,ammId:I.ammId,ownerAccountId:S,snapshotLpAmount:k.lpAmount,project:ne.VERSION_PROJECT[A],openTime:R,endTime:F,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 g}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 g of e.tokenInfo){let{account:f,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(ee.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!g.mintAddress.equals(ee.WSOL.mint),associatedOnly:g.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:b}=i.build();return[{transaction:m,signer:b}]}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:b}=i.build(),g=i.allInstructions;return en(g,[s,...b.map(f=>f.publicKey)])?[{transaction:m,signer:b}]:[{transaction:new An().add(...g.slice(0,i.AllTxData.instructions.length-1)),signer:b},{transaction:new An().add(...g.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new An().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(b=>({pubkey:b,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:b})=>({pubkey:b,isSigner:!1,isWritable:!0})),{pubkey:Ra,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 Ca({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"),r("ammId"),y(p([d("mintDecimals"),r("mintAddress"),r("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ne.CLAIMED_NUM,"tokenInfo"),y(n(),10,"padding")]),me.OWNER_LAYOUT=p([v(8),d("bump"),d("version"),r("poolId"),r("owner"),n("lpAmount"),y(p([r("mintAddress"),n("debtAmount"),n("claimedAmount")]),ne.CLAIMED_NUM,"tokenInfo"),y(n(),4,"padding")]),me.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new xa(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 qx}from"@solana/web3.js";import{getTransferFeeConfig as Gx,MintLayout as zx,TOKEN_2022_PROGRAM_ID as Xx,TOKEN_PROGRAM_ID as Yx,unpackMint as Hx}from"@solana/spl-token";var TR=new he(2),hR=new he(3),IR=new he(5),Do=new he(10),BR=new he(100),SR=new he(1e3),KR=new he(1e4);function gn(a,e,t){return a.mul(e).add(t).sub(new he(1)).div(t)}function Gt(a,e=1,t=[]){let o=[...a];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:b,decimalB:g}){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(V(M({},A),{decimalA:b,decimalB:g})),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 F=1;F<t;F++){let P=F!==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:b,decimalB:g,curveType:e});w.push({price:x,totalSellSupply:new Io(k.toString()).div(10**b).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 g=e.mul(l.minSellRateA).div(be);if(o.lt(g))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 Io(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:b,transferFeeConfigB:g,slot:f}){var L;let A=lt(t,g,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,F,P,K;if(I.gt(k)){R=k;let O=B.buyExactOut({poolInfo:e,amount:R}),_=this.calculatePreFee({postFeeAmount:O,feeRate:h});P=_.sub(O);let J=ze(_,g,f);F=J.amount,K=J.fee}else R=I,F=t,P=S,K=A.fee;let x=this.splitFee({totalFee:P,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m});return{amountA:lt(R,b,f),amountB:F,splitFee:x,transferFeeB:K}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:l,creatorFeeRate:m,transferFeeConfigA:b,transferFeeConfigB:g,slot:f}){let A=e.totalSellA.sub(e.realA),T=ze(t,b,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,g,f),F=this.splitFee({totalFee:k,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m});return{amountA:T,amountB:R.amount,splitFee:F,transferFeeB:R.fee}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:l,creatorFeeRate:m,transferFeeConfigA:b,transferFeeConfigB:g,slot:f}){var R;let A=this.getCurve(s),T=lt(t,b,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,g,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:b,transferFeeConfigB:g,slot:f}){let A=this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:l,creatorFeeRate:m}),T=ze(t,g,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,b,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),b=l.isZero()?new se(0):e.mul(i).div(l),g=l.isZero()?new se(0):e.mul(s).div(l),f=e.sub(m).sub(b).sub(g);return{platformFee:m,shareFee:b,protocolFee:f,creatorFee:g}}static calculateFee({amount:e,feeRate:t}){return gn(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 Vt;case 1:return Dt;case 2:return Wt}throw Error("find curve error")}};export{Xe as Curve};
//# sourceMappingURL=curve.mjs.map