@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
3 lines • 84.7 kB
JavaScript
var No=Object.defineProperty,Mo=Object.defineProperties;var Fo=Object.getOwnPropertyDescriptors;var ct=Object.getOwnPropertySymbols;var An=Object.prototype.hasOwnProperty,wn=Object.prototype.propertyIsEnumerable;var Pn=(o,e,n)=>e in o?No(o,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[e]=n,O=(o,e)=>{for(var n in e||(e={}))An.call(e,n)&&Pn(o,n,e[n]);if(ct)for(var n of ct(e))wn.call(e,n)&&Pn(o,n,e[n]);return o},E=(o,e)=>Mo(o,Fo(e));var me=(o,e)=>{var n={};for(var i in o)An.call(o,i)&&e.indexOf(i)<0&&(n[i]=o[i]);if(o!=null&&ct)for(var i of ct(o))e.indexOf(i)<0&&wn.call(o,i)&&(n[i]=o[i]);return n};var U={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{TOKEN_PROGRAM_ID as Lo}from"@solana/spl-token";import{PublicKey as at}from"@solana/web3.js";import st from"bn.js";import{Keypair as Da,PublicKey as Wa}from"@solana/web3.js";import iL from"bn.js";import{PublicKey as Vo}from"@solana/web3.js";import{get as kn,set as vo}from"lodash";var Nt=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 n=e.map(i=>typeof i=="object"?JSON.stringify(i):i).join(", ");throw new Error(n)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Tn={},_o={};function D(o){let e=kn(Tn,o);if(!e){let n=kn(_o,o);e=new Nt({name:o,logLevel:n}),vo(Tn,o,e)}return e}import{MINT_SIZE as rs,TOKEN_PROGRAM_ID as as,getTransferFeeConfig as ss,unpackMint as us}from"@solana/spl-token";var Mt=D("Raydium_accountInfo_util");async function be(o,e,n){let{batchRequest:i,commitment:a="confirmed",chunkCount:c=100}=O({batchRequest:!1},n),m=Ft(e,c),p=new Array(m.length).fill([]);if(i){let y=m.map(g=>{let I=o._buildArgs([g.map(T=>T.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:I}}),k=Ft(y,10);p=(await(await Promise.all(k.map(async g=>await o._rpcBatchRequest(g)))).flat()).map(g=>(g.error&&Mt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.error.message}`),g.result.value.map(I=>{if(I){let{data:T,executable:N,lamports:w,owner:P,rentEpoch:x}=I;return T.length!==2&&T[1]!=="base64"&&Mt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:N,lamports:w,owner:new Vo(P),rentEpoch:x}}return null})))}else try{p=await Promise.all(m.map(y=>o.getMultipleAccountsInfo(y,a)))}catch(y){y instanceof Error&&Mt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return p.flat()}import Se from"bn.js";import rR from"decimal.js";import Xo from"big.js";import Is from"bn.js";import Eo from"toformat";var Do=Eo,ze=Do;import mt from"big.js";import qo from"bn.js";import Uo from"decimal.js-light";import Xe from"bn.js";var hn=9007199254740991;function ie(o){let e=D("Raydium_parseBigNumberish");if(o instanceof Xe)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new Xe(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=hn||o<=-hn)&&e.logWithError(`BigNumberish number overflow: ${o}`),new Xe(String(o))):typeof o=="bigint"?new Xe(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new Xe(0))}var lt=D("module/fraction"),vt=ze(mt),Ye=ze(Uo),Go={[0]:Ye.ROUND_DOWN,[1]:Ye.ROUND_HALF_UP,[2]:Ye.ROUND_UP},zo={[0]:mt.roundDown,[1]:mt.roundHalfUp,[2]:mt.roundUp},z=class{constructor(e,n=new qo(1)){this.numerator=ie(e),this.denominator=ie(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let n=e instanceof z?e:new z(ie(e));return this.denominator.eq(n.denominator)?new z(this.numerator.add(n.numerator),this.denominator):new z(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof z?e:new z(ie(e));return this.denominator.eq(n.denominator)?new z(this.numerator.sub(n.numerator),this.denominator):new z(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof z?e:new z(ie(e));return new z(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof z?e:new z(ie(e));return new z(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},i=1){Number.isInteger(e)||lt.logWithError(`${e} is not an integer.`),e<=0&<.logWithError(`${e} is not positive.`),Ye.set({precision:e+1,rounding:Go[i]});let a=new Ye(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return a.toFormat(a.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},i=1){return Number.isInteger(e)||lt.logWithError(`${e} is not an integer.`),e<0&<.logWithError(`${e} is negative.`),vt.DP=e,vt.RM=zo[i]||1,new vt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var Ms=D("Raydium_amount"),Fs=ze(Xo);import{PublicKey as Ho}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bn}from"@solana/spl-token";var dt={chainId:101,address:Ho.default.toBase58(),programId:Bn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},de={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Bn.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 Vt}from"@solana/web3.js";import{PublicKey as Y,SystemProgram as In,SYSVAR_RENT_PUBKEY as Qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zo}from"@solana/spl-token";function Re({pubkey:o,isSigner:e=!1,isWritable:n=!0}){return{pubkey:o,isWritable:n,isSigner:e}}var $o=[Re({pubkey:Zo,isWritable:!1}),Re({pubkey:In.programId,isWritable:!1}),Re({pubkey:Qo,isWritable:!1})];function xn({publicKey:o,transformSol:e}){let n=Sn(o.toString());if(n instanceof Y)return e&&n.equals(he)?ge:n;if(e&&n.toString()===he.toBase58())return ge;if(typeof n=="string"){if(n===Y.default.toBase58())return Y.default;try{return new Y(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Sn(o){try{return new Y(o)}catch{return o}}var _t=new Y("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),He=new Y("SysvarRent111111111111111111111111111111111"),Us=new Y("SysvarC1ock11111111111111111111111111111111"),pt=new Y("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),jo=new Y("Sysvar1nstructions1111111111111111111111111"),Jo=In.programId,Gs=new Y("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),zs=new Y("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Xs=new Y("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ys=new Y("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Hs=new Y("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Qs=new Y("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Zs=new Y("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),$s=new Y("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),js=new Y("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Js=new Y("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),eu=new Y("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ge=new Y("So11111111111111111111111111111111111111112"),he=Y.default;var Et=class{constructor({mint:e,decimals:n,symbol:i,name:a,skipMint:c=!1,isToken2022:m=!1}){if(e===he.toBase58()||e instanceof Vt&&he.equals(e)){this.decimals=de.decimals,this.symbol=de.symbol,this.name=de.name,this.mint=new Vt(de.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=i||e.toString().substring(0,6),this.name=a||e.toString().substring(0,6),this.mint=c?Vt.default:xn({publicKey:e}),this.isToken2022=m}equals(e){return this===e?!0:this.mint.equals(e.mint)}},te=Et;te.WSOL=new Et(E(O({},de),{mint:de.address}));var Dt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=i}equals(e){return this===e}},ft=Dt;ft.SOL=new Dt(dt);import ei from"bn.js";var du=new z(new ei(100));var Pu=D("Raydium_price");import{merge as sC}from"lodash";import Su from"axios";var Kn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},ti=E(O({},Kn),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var Zu=D("Raydium_Api");import{PublicKey as em,SystemProgram as tm}from"@solana/web3.js";import{AccountLayout as am,createAssociatedTokenAccountIdempotentInstruction as sm,TOKEN_PROGRAM_ID as um,TOKEN_2022_PROGRAM_ID as cm}from"@solana/spl-token";import{PublicKey as Fe,sendAndConfirmTransaction as Xt,SystemProgram as si,Transaction as $e,TransactionMessage as je,VersionedTransaction as Je}from"@solana/web3.js";import ui from"axios";import{PublicKey as Wt,AddressLookupTableAccount as Ne}from"@solana/web3.js";async function qt({connection:o,address:e,cluster:n="mainnet"}){let i=await be(o,[...new Set(e.map(c=>c.toString()))].map(c=>new Wt(c))),a={};for(let c=0;c<e.length;c++){let m=i[c],p=e[c];if(!m)continue;let y=new Ne({key:p,state:Ne.deserialize(m.data)});a[p.toString()]=y,n==="devnet"?Oe[p.toString()]=y:Le[p.toString()]=y}return a}var Le={},Ut=async o=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Le[e])return Le;let n=new Wt(e),i=await o.getAccountInfo(n);return i&&(Le[e]=new Ne({key:n,state:Ne.deserialize(i.data)})),Le},Oe={},Gt=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Oe[e])return Oe;let n=new Wt(e),i=await o.getAccountInfo(n);return i&&(Oe[e]=new Ne({key:n,state:Ne.deserialize(i.data)})),Oe};import{ComputeBudgetProgram as Cn,Keypair as Ln,PublicKey as ni,Transaction as On,TransactionMessage as oi,VersionedTransaction as Nn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ii}from"@solana/spl-token";var Rn=D("Raydium_txUtil"),Mn=1644;function yt(o){let e=[],n=[];return o.microLamports&&(e.push(Cn.setComputeUnitPrice({microLamports:o.microLamports})),n.push(U.SetComputeUnitPrice)),o.units&&(e.push(Cn.setComputeUnitLimit({units:o.units})),n.push(U.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function Me(o,e){var i,a;let n=e!=null?e:"confirmed";return(a=await((i=o.getLatestBlockhash)==null?void 0:i.call(o,{commitment:n})))==null?void 0:a.blockhash}async function bt(o,e){return o.getSignatureStatuses([e]),new Promise((n,i)=>{let a=setTimeout(i,6e4);o.onSignature(e,c=>{if(clearTimeout(a),!c.err){n("");return}i(Object.assign(c.err,{txId:e}))},"confirmed")})}function zt(o,e){o.length<1&&Rn.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&Rn.logWithError(`no signers provided:, ${e.toString()}`);let n=new On;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...o);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Mn}catch{return!1}}function pe(o,e){let[n,i]=ni.findProgramAddressSync(o,e);return{publicKey:n,nonce:i}}function Qe({instructions:o,payer:e,signers:n}){return zt(o,[e,...n])}function Ze({instructions:o,payer:e,lookupTableAddressAccount:n,recentBlockhash:i=Ln.generate().publicKey.toString()}){let c=new oi({payerKey:e,recentBlockhash:i,instructions:o}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Nn(c).serialize()).toString("base64").length<Mn}catch{return!1}}var ri=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),ai=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof Nn&&(e=ri(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Be(o){let e=[];return o.forEach(n=>{n instanceof On&&(n.recentBlockhash||(n.recentBlockhash=ii.toBase58()),n.feePayer||(n.feePayer=Ln.generate().publicKey)),e.push(ai(n))}),console.log("simulate tx string:",e),e}var gt=2e3,Pt=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 i;let e=(await ui.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(i=e==null?void 0:e[15])!=null?i:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:i}=yt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(si.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new Fe(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(U.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let i=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:i=[],instructionTypes:a=[],endInstructionTypes:c=[],lookupTableAddress:m=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...i),this.instructionTypes.push(...a),this.endInstructionTypes.push(...c),this.lookupTableAddress.push(...m.filter(p=>p!==Fe.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:i}){return e===0?await this.buildV0(E(O({},n||{}),{lookupTableAddress:i})):this.build(n)}build(e){var i;let n=new $e;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(a=>a.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async a=>{var b;let{recentBlockHash:c,skipPreflight:m=!0,sendAndConfirm:p,notSendToRpc:y}=a||{},k=c!=null?c:await Me(this.connection,this.blockhashCommitment);if(n.recentBlockhash=k,this.signers.length&&n.sign(...this.signers),Be([n]),(b=this.owner)!=null&&b.isKeyPair)return{txId:p?await Xt(this.connection,n,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:m}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:m}),signedTx:n};if(this.signAllTransactions){let g=await this.signAllTransactions([n]);if(this.signers.length)for(let I of g)try{I.sign(...this.signers)}catch{}return{txId:y?"":await this.connection.sendRawTransaction(g[0].serialize(),{skipPreflight:m}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var k;let{extraPreBuildData:n=[],extInfo:i}=e,{transaction:a}=this.build(i),c=n.filter(b=>b.transaction.instructions.length>0),m=[a,...c.map(b=>b.transaction)],p=[this.signers,...c.map(b=>b.signers)],y=[...this.instructionTypes,...c.map(b=>b.instructionTypes).flat()];return(k=this.owner)!=null&&k.signer&&p.forEach(b=>{b.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:m,signers:p,instructionTypes:y,execute:async b=>{var x;let{sequentially:g,onTxUpdate:I,skipTxCount:T=0,recentBlockHash:N,skipPreflight:w=!0}=b||{},P=N!=null?N:await Me(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(g){let S=[],F=0;for(let v of m){if(++F,F<=T)continue;let A=await Xt(this.connection,v,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});S.push(A)}return{txIds:S,signedTxs:m}}return{txIds:await await Promise.all(m.map(async S=>(S.recentBlockhash=P,await this.connection.sendRawTransaction(S.serialize(),{skipPreflight:w})))),signedTxs:m}}if(this.signAllTransactions){let S=m.map((v,A)=>(v.recentBlockhash=P,p[A].length&&v.sign(...p[A]),v));Be(S);let F=await this.signAllTransactions(S);if(g){let v=0,A=[],h=async()=>{if(!F[v])return;let B=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:w});A.push({txId:B,status:"sent",signedTx:F[v]}),I==null||I([...A]),v++;let C=!1,L=null,_=null,oe=G=>{L!==null&&clearInterval(L),_!==null&&this.connection.removeSignatureListener(_);let V=A.findIndex(Q=>Q.txId===B);if(V>-1){if(A[V].status==="error"||A[V].status==="success")return;A[V].status=G.err?"error":"success"}I==null||I([...A]),G.err||h()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var G;if(C){clearInterval(L);return}try{let V=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:1});V&&(C=!0,clearInterval(L),oe({err:((G=V.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",B))}catch(V){C=!0,clearInterval(L),console.error("getTransaction timeout:",V,B)}},gt)),_=this.connection.onSignature(B,G=>{if(C){this.connection.removeSignatureListener(_);return}C=!0,oe(G)},"confirmed"),this.connection.getSignatureStatus(B)};return await h(),{txIds:A.map(B=>B.txId),signedTxs:F}}else{let v=[];for(let A=0;A<F.length;A+=1){let h=await this.connection.sendRawTransaction(F[A].serialize(),{skipPreflight:w});v.push(h)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:n,extInfo:i}){return n===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:i})}async buildV0(e){var w;let N=e||{},{lookupTableCache:n={},lookupTableAddress:i=[],forerunCreate:a,recentBlockhash:c}=N,m=me(N,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),p=O(O({},this.cluster==="devnet"?await Gt(this.connection):await Ut(this.connection)),n),y=Array.from(new Set([...i,...this.lookupTableAddress])),k=[];for(let P of y)p[P]===void 0&&k.push(new Fe(P));let b=await qt({connection:this.connection,address:k});for(let[P,x]of Object.entries(b))p[P]=x;let g=a?Fe.default.toBase58():c!=null?c:await Me(this.connection,this.blockhashCommitment),I=new je({payerKey:this.feePayer,recentBlockhash:g,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(p));((w=this.owner)==null?void 0:w.signer)&&!this.signers.some(P=>P.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new Je(I);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async P=>{var v;let{skipPreflight:x=!0,sendAndConfirm:S,notSendToRpc:F}=P||{};if(Be([T]),(v=this.owner)!=null&&v.isKeyPair){let A=await this.connection.sendTransaction(T,{skipPreflight:x});return S&&await bt(this.connection,A),{txId:A,signedTx:T}}if(this.signAllTransactions){let A=await this.signAllTransactions([T]);if(this.signers.length)for(let h of A)try{h.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(A[0],{skipPreflight:x}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:m||{}}}async buildV0MultiTx(e){var k;let{extraPreBuildData:n=[],buildProps:i}=e,{transaction:a}=await this.buildV0(i),c=n.filter(b=>b.builder.instructions.length>0),m=[a,...c.map(b=>b.transaction)],p=[this.signers,...c.map(b=>b.signers)],y=[...this.instructionTypes,...c.map(b=>b.instructionTypes).flat()];return(k=this.owner)!=null&&k.signer&&p.forEach(b=>{b.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),m.forEach(async(b,g)=>{b.sign(p[g])}),{builder:this,transactions:m,signers:p,instructionTypes:y,buildProps:i,execute:async b=>{var w;let{sequentially:g,onTxUpdate:I,recentBlockHash:T,skipPreflight:N=!0}=b||{};if(T&&m.forEach(P=>P.message.recentBlockhash=T),Be(m),(w=this.owner)!=null&&w.isKeyPair){if(g){let P=[];for(let x of m){let S=await this.connection.sendTransaction(x,{skipPreflight:N});await bt(this.connection,S),P.push(S)}return{txIds:P,signedTxs:m}}return{txIds:await Promise.all(m.map(async P=>await this.connection.sendTransaction(P,{skipPreflight:N}))),signedTxs:m}}if(this.signAllTransactions){let P=await this.signAllTransactions(m);if(g){let x=0,S=[],F=async()=>{if(!P[x])return;let v=await this.connection.sendTransaction(P[x],{skipPreflight:N});S.push({txId:v,status:"sent",signedTx:P[x]}),I==null||I([...S]),x++;let A=!1,h=null,B=null,C=L=>{h!==null&&clearInterval(h),B!==null&&this.connection.removeSignatureListener(B);let _=S.findIndex(oe=>oe.txId===v);if(_>-1){if(S[_].status==="error"||S[_].status==="success")return;S[_].status=L.err?"error":"success"}I==null||I([...S]),L.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var L;if(A){clearInterval(h);return}try{let _=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(A=!0,clearInterval(h),C({err:((L=_.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(_){A=!0,clearInterval(h),console.error("getTransaction timeout:",_,v)}},gt)),B=this.connection.onSignature(v,L=>{if(A){this.connection.removeSignatureListener(B);return}A=!0,C(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:P}}else{let x=[];for(let S=0;S<P.length;S+=1){let F=await this.connection.sendTransaction(P[S],{skipPreflight:N});x.push(F)}return{txIds:x,signedTxs:P}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(e){var I;let g=e||{},{splitIns:n=[],computeBudgetConfig:i}=g,a=me(g,["splitIns","computeBudgetConfig"]),c=i?yt(i):{instructions:[],instructionTypes:[]},m=this.signers.reduce((T,N)=>E(O({},T),{[N.publicKey.toBase58()]:N}),{}),p=[],y=[],k=[],b=0;if(this.allInstructions.forEach(T=>{let N=[...k,T],w=i?[...c.instructions,...N]:N,x=[...new Set(N.map(S=>S.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(S=>new Fe(S));if(T!==n[b]&&k.length<12&&(Qe({instructions:w,payer:this.feePayer,signers:x})||Qe({instructions:N,payer:this.feePayer,signers:x})))k.push(T);else{if(k.length===0)throw Error("item ins too big");b+=T===n[b]?1:0,Qe({instructions:i?[...c.instructions,...k]:[...k],payer:this.feePayer,signers:x})?p.push(new $e().add(...c.instructions,...k)):p.push(new $e().add(...k)),y.push(Array.from(new Set(k.map(S=>S.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(S=>m[S]).filter(S=>S!==void 0)),k=[T]}}),k.length>0){let N=[...new Set(k.map(w=>w.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(w=>m[w]).filter(w=>w!==void 0);Qe({instructions:i?[...c.instructions,...k]:[...k],payer:this.feePayer,signers:N.map(w=>w.publicKey)})?p.push(new $e().add(...c.instructions,...k)):p.push(new $e().add(...k)),y.push(N)}return p.forEach(T=>T.feePayer=this.feePayer),(I=this.owner)!=null&&I.signer&&y.forEach(T=>{T.some(N=>N.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:p,signers:y,instructionTypes:this.instructionTypes,execute:async T=>{var v;let{sequentially:N,onTxUpdate:w,skipTxCount:P=0,recentBlockHash:x,skipPreflight:S=!0}=T||{},F=x!=null?x:await Me(this.connection,this.blockhashCommitment);if(p.forEach(async(A,h)=>{A.recentBlockhash=F,y[h].length&&A.sign(...y[h])}),Be(p),(v=this.owner)!=null&&v.isKeyPair){if(N){let A=0,h=[];for(let B of p){if(++A,A<=P){h.push("tx skipped");continue}let C=await Xt(this.connection,B,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:S});h.push(C)}return{txIds:h,signedTxs:p}}return{txIds:await Promise.all(p.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:S}))),signedTxs:p}}if(this.signAllTransactions){let A=await this.signAllTransactions(p.slice(P,p.length)),h=[...p.slice(0,P),...A];if(N){let B=0,C=[],L=async()=>{if(!h[B])return;B<P&&(C.push({txId:"",status:"success",signedTx:h[B]}),w==null||w([...C]),B++,L());let _=await this.connection.sendRawTransaction(h[B].serialize(),{skipPreflight:S});C.push({txId:_,status:"sent",signedTx:h[B]}),w==null||w([...C]),B++;let oe=!1,G=null,V=null,Q=q=>{G!==null&&clearInterval(G),V!==null&&this.connection.removeSignatureListener(V);let Z=C.findIndex(J=>J.txId===_);if(Z>-1){if(C[Z].status==="error"||C[Z].status==="success")return;C[Z].status=q.err?"error":"success"}w==null||w([...C]),q.err||L()};this.loopMultiTxStatus&&(G=setInterval(async()=>{var q;if(oe){clearInterval(G);return}try{let Z=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});Z&&(oe=!0,clearInterval(G),Q({err:((q=Z.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",_))}catch(Z){oe=!0,clearInterval(G),console.error("getTransaction timeout:",Z,_)}},gt)),V=this.connection.onSignature(_,q=>{if(oe){this.connection.removeSignatureListener(V);return}oe=!0,Q(q)},"confirmed"),this.connection.getSignatureStatus(_)};return await L(),{txIds:C.map(_=>_.txId),signedTxs:h}}else{let B=[];for(let C=0;C<h.length;C+=1){let L=await this.connection.sendRawTransaction(h[C].serialize(),{skipPreflight:S});B.push(L)}return{txIds:B,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:i=[],lookupTableCache:a={},lookupTableAddress:c=[],insCountLimit:m=12}=F,p=me(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=O(O({},this.cluster==="devnet"?await Gt(this.connection):await Ut(this.connection)),a),k=Array.from(new Set([...this.lookupTableAddress,...c])),b=[];for(let A of k)y[A]===void 0&&b.push(new Fe(A));let g=await qt({connection:this.connection,address:b});for(let[A,h]of Object.entries(g))y[A]=h;let I=n?yt(n):{instructions:[],instructionTypes:[]},T=await Me(this.connection,this.blockhashCommitment),N=this.signers.reduce((A,h)=>E(O({},A),{[h.publicKey.toBase58()]:h}),{}),w=[],P=[],x=[],S=0;if(this.allInstructions.forEach(A=>{let h=[...x,A],B=n?[...I.instructions,...h]:h;if(A!==i[S]&&x.length<m&&(Ze({instructions:B,payer:this.feePayer,lookupTableAddressAccount:y})||Ze({instructions:h,payer:this.feePayer,lookupTableAddressAccount:y})))x.push(A);else{if(x.length===0)throw Error("item ins too big");S+=A===i[S]?1:0;let C={};for(let L of[...new Set(k)])y[L]!==void 0&&(C[L]=y[L]);if(n&&Ze({instructions:[...I.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:T})){let L=new je({payerKey:this.feePayer,recentBlockhash:T,instructions:[...I.instructions,...x]}).compileToV0Message(Object.values(y));w.push(new Je(L))}else{let L=new je({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x]}).compileToV0Message(Object.values(y));w.push(new Je(L))}P.push(Array.from(new Set(x.map(L=>L.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(L=>N[L]).filter(L=>L!==void 0)),x=[A]}}),x.length>0){let h=[...new Set(x.map(B=>B.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(B=>N[B]).filter(B=>B!==void 0);if(n&&Ze({instructions:[...I.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:T})){let B=new je({payerKey:this.feePayer,recentBlockhash:T,instructions:[...I.instructions,...x]}).compileToV0Message(Object.values(y));w.push(new Je(B))}else{let B=new je({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x]}).compileToV0Message(Object.values(y));w.push(new Je(B))}P.push(h)}return(v=this.owner)!=null&&v.signer&&P.forEach(A=>{A.some(h=>h.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),w.forEach((A,h)=>{A.sign(P[h])}),{builder:this,transactions:w,buildProps:e,signers:P,instructionTypes:this.instructionTypes,execute:async A=>{var oe;let{sequentially:h,onTxUpdate:B,skipTxCount:C=0,recentBlockHash:L,skipPreflight:_=!0}=A||{};if(w.map(async(G,V)=>{P[V].length&&G.sign(P[V]),L&&(G.message.recentBlockhash=L)}),Be(w),(oe=this.owner)!=null&&oe.isKeyPair){if(h){let G=0,V=[];for(let Q of w){if(++G,G<=C){console.log("skip tx: ",G),V.push("tx skipped");continue}let q=await this.connection.sendTransaction(Q,{skipPreflight:_});await bt(this.connection,q),V.push(q)}return{txIds:V,signedTxs:w}}return{txIds:await Promise.all(w.map(async G=>await this.connection.sendTransaction(G,{skipPreflight:_}))),signedTxs:w}}if(this.signAllTransactions){let G=await this.signAllTransactions(w.slice(C,w.length)),V=[...w.slice(0,C),...G];if(h){let Q=0,q=[],Z=async()=>{if(!V[Q])return;if(Q<C){q.push({txId:"",status:"success",signedTx:V[Q]}),B==null||B([...q]),Q++,Z();return}let J=await this.connection.sendTransaction(V[Q],{skipPreflight:_});q.push({txId:J,status:"sent",signedTx:V[Q]}),B==null||B([...q]),Q++;let ke=!1,Ce=null,ut=null,gn=Te=>{Ce!==null&&clearInterval(Ce),ut!==null&&this.connection.removeSignatureListener(ut);let ye=q.findIndex(Oo=>Oo.txId===J);if(ye>-1){if(q[ye].status==="error"||q[ye].status==="success")return;q[ye].status=Te.err?"error":"success"}B==null||B([...q]),Te.err||Z()};this.loopMultiTxStatus&&(Ce=setInterval(async()=>{var Te;if(ke){clearInterval(Ce);return}try{let ye=await this.connection.getTransaction(J,{commitment:"confirmed",maxSupportedTransactionVersion:1});ye&&(ke=!0,clearInterval(Ce),gn({err:((Te=ye.meta)==null?void 0:Te.err)||null}),console.log("tx status from getTransaction:",J))}catch(ye){ke=!0,clearInterval(Ce),console.error("getTransaction timeout:",ye,J)}},gt)),ut=this.connection.onSignature(J,Te=>{if(ke){this.connection.removeSignatureListener(ut);return}ke=!0,gn(Te)},"confirmed"),this.connection.getSignatureStatus(J)};return Z(),{txIds:[],signedTxs:V}}else{let Q=[];for(let q=0;q<V.length;q+=1){let Z=await this.connection.sendTransaction(V[q],{skipPreflight:_});Q.push(Z)}return{txIds:Q,signedTxs:V}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}};var Yt=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),re=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=D(n)}createTxBuilder(e){return this.scope.checkOwner(),new Pt({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(Yt(e))}logInfo(...e){this.logger.info(Yt(e))}logAndCreateError(...e){let n=Yt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Ol,SystemProgram as Ml}from"@solana/web3.js";import _l from"bn.js";import{createCloseAccountInstruction as Wl,createInitializeAccountInstruction as ql,createTransferInstruction as Ul,TOKEN_PROGRAM_ID as Gl}from"@solana/spl-token";import{PublicKey as wi}from"@solana/web3.js";import En,{isBN as Dn}from"bn.js";import{bits as ci,BitStructure as _c,blob as li,Blob as Vc,cstr as Ec,f32 as Dc,f32be as Wc,f64 as qc,f64be as Uc,greedy as Gc,Layout as mi,ns64 as zc,ns64be as Xc,nu64 as Yc,nu64be as Hc,offset as di,s16 as Qc,s16be as Zc,s24 as $c,s24be as jc,s32 as pi,s32be as Jc,s40 as el,s40be as tl,s48 as nl,s48be as ol,s8 as il,seq as fi,struct as rl,Structure as yi,u16 as bi,u16be as al,u24 as sl,u24be as ul,u32 as gi,u32be as cl,u40 as ll,u40be as ml,u48 as dl,u48be as pl,u8 as Pi,UInt as Ai,union as fl,Union as yl,unionLayoutDiscriminator as bl,utf8 as gl}from"@solana/buffer-layout";var At=mi,Fn=yi;var Ht=Ai;var vn=Pi,H=bi;var wt=gi;var ue=pi;var _n=fi;var M=li;var Qt=ci,Vn=di;var xe=class extends At{constructor(n,i,a){super(n,a);this.blob=M(n),this.signed=i}decode(n,i=0){let a=new En(this.blob.decode(n,i),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,i,a=0){return typeof n=="number"&&(n=new En(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),i,a)}},kt=class extends At{constructor(n){super(8,n);this._lower=Qt(wt(),!1),this._upper=Qt(wt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,i=0){let a=this._lower.decode(n,i),c=this._upper.decode(n,i+this._lower.span);return O(O({},a),c)}encode(n,i,a=0){return this._lower.encode(n,i,a)+this._upper.encode(n,i,a+this._lower.span)}};function l(o){return new Ht(1,o)}function X(o){return new Ht(4,o)}function t(o){return new xe(8,!1,o)}function R(o){return new xe(16,!1,o)}function Wn(o){return new xe(1,!0,o)}function ve(o){return new xe(8,!0,o)}function qn(o){return new xe(16,!0,o)}var et=class extends At{constructor(n,i,a,c){super(n.span,c);this.layout=n,this.decoder=i,this.encoder=a}decode(n,i){return this.decoder(this.layout.decode(n,i))}encode(n,i,a){return this.layout.encode(this.encoder(n),i,a)}getSpan(n,i){return this.layout.getSpan(n,i)}};function r(o){return new et(M(32),e=>new wi(e),e=>e.toBuffer(),o)}function ae(o){return new et(vn(),ki,Ti,o)}function ki(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function Ti(o){return o?1:0}function $t(o,e){let n=wt("length"),i=d([n,f(o,Vn(n,-n.span),"values")]);return new et(i,({values:a})=>a,a=>({values:a}),e)}var Zt=class extends Fn{decode(e,n){return super.decode(e,n)}};function d(o,e,n){return new Zt(o,e,n)}function f(o,e,n){let i,a=typeof e=="number"?e:Dn(e)?e.toNumber():new Proxy(e,{get(c,m){if(!i){let p=Reflect.get(c,"count");i=Dn(p)?p.toNumber():p,Reflect.set(c,"count",i)}return Reflect.get(c,m)},set(c,m,p){return m==="count"&&(i=p),Reflect.set(c,m,p)}});return _n(o,a,n)}var Tt=d([r("mint"),r("owner"),t("amount"),X("delegateOption"),r("delegate"),l("state"),X("isNativeOption"),t("isNative"),t("delegatedAmount"),X("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as tP,SystemProgram as nP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as iP}from"@solana/spl-token";import{PublicKey as gm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Am}from"@solana/spl-token";import{PublicKey as K}from"@solana/web3.js";var Gn=new K("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),zn=new K("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Xn=new K("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),jt=new K("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),hm=new K("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Bi=new K("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Yn=new K("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Hn=new K("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Bm=new K("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ii=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Qn=new K("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),xi=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Si=new K("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Zn=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Im=new K("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ki=new K("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Jt=new K("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ci=new K("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),xm=new K("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ri=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Li=new K("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Oi=new K("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Sm=new K("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Km=new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Cm=new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Rm=new K("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Lm=new K("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Pe={OPEN_BOOK_PROGRAM:new K("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new K("Ray1111111111111111111111111111111111111111"),AMM_V4:new K("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new K("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new K("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new K("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new K("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new K("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new K("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new K("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new K("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new K("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:K.default,Router:new K("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new K("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new K("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new K("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new K("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new K("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new K("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new K("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new K("Ray1111111111111111111111111111111111111111")};import fP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as vy,TOKEN_2022_PROGRAM_ID as _y,TOKEN_PROGRAM_ID as Vy}from"@solana/spl-token";import{PublicKey as Dy}from"@solana/web3.js";import qy from"bn.js";import Gy from"decimal.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import{PublicKey as Qm}from"@solana/web3.js";var Ni=d([X("mintAuthorityOption"),r("mintAuthority"),t("supply"),l("decimals"),l("isInitialized"),X("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as oy,TOKEN_2022_PROGRAM_ID as iy,TOKEN_PROGRAM_ID as ry}from"@solana/spl-token";import{Keypair as uy,PublicKey as cy,SystemProgram as my,TransactionInstruction as dy}from"@solana/web3.js";import fy from"bn.js";import W from"bn.js";var Ve=new W(1).shln(64);var Mi=new W(1).shln(128),en=new W(1).shln(64).subn(1),Fi=new W(1).shln(128).subn(1);var Ee=new W("4295048016"),De=new W("79226673521066979257578248091"),vi=new W("59543866431248"),_i=new W("184467440737095516"),Vi=new W("15793534762490258745");var tn=60,sd=new W("18446743708227953217"),Ei=[{bit:0,factor:new W("fffcb933bd6fb800",16)},{bit:1,factor:new W("fff97272373d4000",16)},{bit:2,factor:new W("fff2e50f5f657000",16)},{bit:3,factor:new W("ffe5caca7e10f000",16)},{bit:4,factor:new W("ffcb9843d60f7000",16)},{bit:5,factor:new W("ff973b41fa98e800",16)},{bit:6,factor:new W("ff2ea16466c9b000",16)},{bit:7,factor:new W("fe5dee046a9a3800",16)},{bit:8,factor:new W("fcbe86c7900bb000",16)},{bit:9,factor:new W("f987a7253ac65800",16)},{bit:10,factor:new W("f3392b0822bb6000",16)},{bit:11,factor:new W("e7159475a2caf000",16)},{bit:12,factor:new W("d097f3bdfd2f2000",16)},{bit:13,factor:new W("a9f746462d9f8000",16)},{bit:14,factor:new W("70d869a156f31c00",16)},{bit:15,factor:new W("31be135f97ed3200",16)},{bit:16,factor:new W("9aa508b5b85a500",16)},{bit:17,factor:new W("5d6af8dedc582c",16)},{bit:18,factor:new W("2216e584f5fa",16)}];var tt=3,$n=100;var jn=10,Jn=100,ht=14;var $=new W(0),We=new W(1),ud=new W(-1);var cd=new W("18446744073700000000");var Di=d([M(8),l("bump"),H("index"),r("owner"),X("protocolFeeRate"),X("tradeFeeRate"),H("tickSpacing"),X("fundFeeRate"),f(X(),1),r("fundOwner"),f(t(),3)]),Wi=d([X("blockTimestamp"),ve("tickCumulative"),f(t(),4)]),eo=d([M(8),ae("initialized"),t("recentEpoch"),H("observationIndex"),r("poolId"),f(Wi,$n,"observations"),f(t(),4)]),qi=d([H("filterPeriod"),H("decayPeriod"),H("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),ue("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),t("lastUpdateTimestamp"),f(l(),46)]),Ui=d([l("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),R("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),r("mint"),r("vault"),r("creator"),R("growthGlobalX64")]),nn=d([M(8),l("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),l("mintDecimalsA"),l("mintDecimalsB"),H("tickSpacing"),R("liquidity"),R("sqrtPriceX64"),ue("tickCurrent"),X(),R("feeGrowthGlobalX64A"),R("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(R(),4),l("status"),l("feeOn"),M(6),f(Ui,tt,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),qi.replicate("dynamicFeeInfo"),f(t(),46)]),Gi=d([R("growthInsideLastX64"),t("rewardAmountOwed")]),zi=d([M(8),l("bump"),r("nftMint"),r("poolId"),ue("tickLower"),ue("tickUpper"),R("liquidity"),R("feeGrowthInsideLastX64A"),R("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(Gi,tt,"rewardInfos"),t("recentEpoch"),f(t(),7)]),pd=d([M(8),l("bump"),r("poolId"),ue("tickLower"),ue("tickUpper"),R("liquidity"),R("feeGrowthInsideLastX64A"),R("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(R(),tt,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Xi=d([ue("tick"),qn("liquidityNet"),R("liquidityGross"),R("feeGrowthOutsideX64A"),R("feeGrowthOutsideX64B"),f(R(),tt,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),R("unfilledRatioX64"),f(X(),3)]),to=d([M(8),r("poolId"),ue("startTickIndex"),f(Xi,tn,"ticks"),l("initializedTickCount"),t("recentEpoch"),f(l(),107)]),Yi=d([M(8),l("bump"),f(r(),jn,"operationOwners"),f(r(),Jn,"whitelistMints")]),Hi=d([M(8),r("poolId"),r("owner"),ue("tick"),ae("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),R("unfilledRatioX64"),f(t(),4)]),no=d([M(8),r("poolId"),M(8*8*ht,"positiveTickArrayBitmap"),M(8*8*ht,"negativeTickArrayBitmap")]),fd=d([M(8),H("index"),H("filterPeriod"),H("decayPeriod"),H("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),f(t(),8)]),Qi=d([M(8),r("wallet"),l("nonceIndex"),t("orderNonce"),f(t(),4)]),yd=d([t(),l("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),f(t(),8)]),Zi=d([M(8),l("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),t("recentEpoch"),f(t(),8)]);import Pd from"bn.js";var Cd=Buffer.from("amm_config","utf8"),ji=Buffer.from("pool","utf8"),Ji=Buffer.from("pool_vault","utf8"),Rd=Buffer.from("pool_reward_vault","utf8"),Ld=Buffer.from("position","utf8"),Od=Buffer.from("tick_array","utf8"),Nd=Buffer.from("operation","utf8"),Md=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Fd=Buffer.from("observation","utf8"),vd=Buffer.from("support_mint","utf8"),_d=Buffer.from("dynamic_fee_config","utf8"),Vd=Buffer.from("permission","utf8");var Ed=Buffer.from("locked_position","utf8");import{sha256 as fr}from"js-sha256";import er from"bn.js";import Ud from"decimal.js";var zd=new er(1).shln(256).subn(1);import cp from"bn.js";import jd from"bn.js";import ep from"decimal.js";import fp from"bn.js";import bp from"decimal.js";import{PublicKey as nf}from"@solana/web3.js";import rf from"bn.js";import{TOKEN_2022_PROGRAM_ID as pf,TOKEN_PROGRAM_ID as ff}from"@solana/spl-token";import Pf from"decimal.js";import zp from"bn.js";import Op from"bn.js";import Cf from"bn.js";function ee(o){let e=`global:${o}`;return Buffer.from(fr.digest(e)).slice(0,8)}eo.span;var hy=D("Raydium_Clmm"),By={createPool:ee("create_pool"),createCustomizablePool:ee("create_customizable_pool"),createPermissionedPool:ee("create_permissioned_pool"),openPositionV2:ee("open_position_v2"),openPositionWithToken22Nft:ee("open_position_with_token22_nft"),closePosition:ee("close_position"),increaseLiquidityV2:ee("increase_liquidity_v2"),decreaseLiquidityV2:ee("decrease_liquidity_v2"),initializeReward:ee("initialize_reward"),setRewardParams:ee("set_reward_params"),updateRewardInfos:ee("update_reward_infos"),collectRemainingRewards:ee("collect_remaining_rewards"),swapV2:ee("swap_v2"),openLimitOrder:ee("open_limit_order"),increaseLimitOrder:ee("increase_limit_order"),decreaseLimitOrder:ee("decrease_limit_order"),settleLimitOrder:ee("settle_limit_order"),closeLimitOrder:ee("close_limit_order")};import{PublicKey as sn}from"@solana/web3.js";var Pr=d([l("instruction")]),Ar=d([l("instruction")]),wr=d([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t("rewardPerSecond"),R("accRewardPerShare"),r("rewardVault"),r("rewardMint"),r("rewardSender"),t("rewardType"),f(t(),15,"padding")]),kr=d([t("state"),t("nonce"),r("lpVault"),r("rewardVault"),r(),r(),t(),t(),t("totalReward"),R("perShareReward"),t("lastSlot"),t("perSlotReward")]),Tr=d([t("state"),t("nonce"),r("lpVault"),r("rewardVaultA"),t("totalRewardA"),R("perShareRewardA"),t("perSlotRewardA"),l("option"),r("rewardVaultB"),M(7),t("totalRewardB"),R("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),r()]),hr=d([t(),t("state"),t("nonce"),t("validRewardTokenNum"),R("rewardMultiplier"),t("rewardPeriodMax"),t("rewardPeriodMin"),t("rewardPeriodExtend"),r("lpMint"),r("lpVault"),f(wr,5,"rewardInfos"),r("creator"),r(),f(t(),32,"padding")]),Br=new Proxy(kr,{get(o,e,n){return e==="decode"?(...i)=>{let a=o.decode(...i);return E(O({},a),{version:3,rewardInfos:[{rewardVault:a.rewardVault,totalReward:a.totalReward,perSlotReward:a.perSlotReward,perShareReward:a.perShareReward}]})}:Reflect.get(o,e,n)}}),Ir=new Proxy(Tr,{get(o,e,n){return e==="decode"?(...i)=>{let a=o.decode(...i);return E(O({},a),{version:5,rewardInfos:[{rewardVault:a.rewardVaultA,totalReward:a.totalRewardA,perSlotReward:a.perSlotRewardA,perShareReward:a.perShareRewardA},{rewardVault:a.rewardVaultB,totalReward:a.totalRewardB,perSlotReward:a.perSlotRewardB,perShareReward:a.perShareRewardB}]})}:Reflect.get(o,e,n)}}),co=new Proxy(hr,{get(o,e,n){return e==="decode"?(...i)=>{let a=o.decode(...i);return E(O({},a),{version:6,rewardInfos:a.rewardInfos.map(c=>{var m;return E(O({},c),{rewardType:((m=Object.entries(it).find(p=>String(p[1])===c.rewardType.toString()))!=null?m:["Standard SPL"])[0]})})})}:Reflect.get(o,e,n)}}),xr=d([t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),Sr=d([l("instruction"),t("nonce"),f(xr,5,"rewardTimeInfo")]),Kr=d([l("instruction"),t("rewardReopenTime"),t("rewardEndTime"),t("rewardPerSecond")]),Cr=d([l("instruction"),t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),Ab=d([t("state"),r("id"),r("owner"),t("deposited"),f(t(),1,"rewardDebts")]),lo=d([t("state"),r("id"),r("owner"),t("deposited"),f(R(),1,"rewardDebts"),t(""),t("voteLockedBalance"),f(t(),15)]),wb=d([t("state"),r("id"),r("owner"),t("deposited"),f(t(),2,"rewardDebts")]),Rr=d([t("state"),r("id"),r("owner"),t("deposited"),f(R(),2,"rewardDebts"),f(t(),17)]),Lr=d([t(),t("state"),r("id"),r("owner"),t("deposited"),f(R(),5,"rewardDebts"),f(t(),16)]),Or=d([l("instruction"),t("amount")]),Nr=d([r("mint"),r("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),Wn("digitShift"),f(l(),7,"reserved1"),f(t(),7,"reserved2")]),Mr=d([M(8),r("governanceProgramId"),r("realm"),r("realmGoverningTokenMint"),r("realmAuthority"),f(l(),32,"reserved1"),f(Nr,4,"votingMints"),ve("timeOffset"),l("bump"),f(l(),7,"reserved2"),f(t(),11,"reserved3")]),Fr=d([ve("startTime"),ve("endTime"),l("kind"),f(l(),15,"reserved")]),vr=d([f(Fr,1,"lockup"),t("amountDeposited_native"),t("amountInitiallyLockedNative"),ae("isUsed"),ae("allowClawback"),l("votingMintConfigIdx"),f(l(),29,"reserved")]),_r=d([M(8),r("voterAuthority"),r("registrar"),f(vr,32,"deposits"),l("voterBump"),l("voterWweightRecordBump"),f(l(),94,"reserved")]);import{NATIVE_MINT as Cb}from"@solana/spl-token";var Rb=D("Raydium_farm_config"),Vr=new sn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Er=new sn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Lb=new sn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var it={"Standard SPL":0,"Option tokens":1},mo={[Gn.toString()]:3,[zn.toString()]:4,[Xn.toString()]:5,[jt.toString()]:6,[Pe.FARM_PROGRAM_ID_V3.toString()]:3,[Pe.FARM_PROGRAM_ID_V4.toString()]:4,[Pe.FARM_PROGRAM_ID_V5.toString()]:5,[Pe.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as bg,SystemProgram as gg,SYSVAR_CLOCK_PUBKEY as Pg,SYSVAR_RENT_PUBKEY as Ag,TransactionInstruction as wg}from"@solana/web3.js";import Tg from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Bg,createAssociatedTokenAccountIdempotentInstruction as Ig,TOKEN_PROGRAM_ID as xg}from"@solana/spl-token";import Xb from"bn.js";import{PublicKey as _b}from"@solana/web3.js";import Eb from"bn.js";var rg=D("Raydium.farm.util");var _g=D("Raydium_farm_instruction"),Vg={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 IP from"bn.js";import{PublicKey as JA}from"@solana/web3.js";import{AccountLayout as nw,MintLayout as ow,NATIVE_MINT as iw,TOKEN_PROGRAM_ID as aw}from"@solana/spl-token";import KP from"bn.js";import fo from"bn.js";var Yr=new fo(25),Hr=new fo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as ZP,TOKEN_PROGRAM_ID as $P}from"@solana/spl-token";import{PublicKey as JP,SystemProgram as eA,SYSVAR_RENT_PUBKEY as tA,TransactionInstruction as nA}from"@solana/web3.js";import lA from"bn.js";var Qr=d([l("instruction"),t("amountIn"),t("minAmountOut")]),Zr=d([l("instruction"),t("maxAmountIn"),t("amountOut")]),XP=d([l("instruction"),l("nonce")]),$r=d([l("instruction"),l("nonce"),t("startTime")]),yo=d([t("status"),t("nonce"),t("maxOrder"),t("depth"),t("baseDecimal"),t("quoteDecimal"),t("state"),t("resetFlag"),t("minSize"),t("volMaxCutRatio"),t("amountWaveRatio"),t("baseLotSize"),t("quoteLotSize"),t("minPriceMultiplier"),t("maxPriceMultiplier"),t("systemDecimalValue"),t("minSeparateNumerator"),t("minSeparateDenominator"),t("tradeFeeNumerator"),t("tradeFeeDenominator"),t("pnlNumerator"),t("pnlDenominator"),t("swapFeeNumerator"),t("swapFeeDenominator"),t("baseNeedTakePnl"),t("quoteNeedTakePnl"),t("quoteTotalPnl"),t("baseTotalPnl"),t("poolOpenTime"),t("punishPcAmount"),t("punishCoinAmount"),t("orderbookToInitTime"),R("swapBaseInAmount"),R("swapQuoteOutAmount"),t("swapBase2QuoteFee"),R("swapQuoteInAmount"),R("swapBaseOutAmount"),t("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"),t("lpReserve"),f(t(),3,"padding")]),YP=d([t("accountType"),t("status"),t("nonce"),t("maxOrder"),t("depth"),t("baseDecimal"),t("quoteDecimal"),t("state"),t("resetFlag"),t("minSize"),t("volMaxCutRatio"),t("amountWaveRatio"),t("baseLotSize"),t("quoteLotSize"),t("minPriceMultiplier"),t("maxPriceMultiplier"),t("systemDecimalsValue"),t("abortTradeFactor"),t("priceTickMultiplier"),t("priceTick"),t("minSeparateNumerator"),t("minSeparateDenominator"),t("tradeFeeNumerator"),t("tradeFeeDenominator"),t("pnlNumerator"),t("pnlDenominator"),t("swapFeeNumerator"),t("swapFeeDenominator"),t("baseNeedTakePnl"),t("quoteNeedTakePnl"),t("quoteTotalPnl"),t("baseTotalPnl"),t("poolOpenTime"),t("punishPcAmount"),t("punishCoinAmount"),t("orderbookToInitTime"),R("swapBaseInAmount"),R("swapQuoteOutAmount"),R("swapQuoteInAmount"),R("swapBaseOutAmount"),t("swapQuote2BaseFee"),t("swapBase2QuoteFee"),r("baseVault"),r("quoteVault"),r("baseMint"),r("quoteMint"),r("lpMint"),r("modelDataAccount"),r("openOrders"),r("marketId"),r("marketProgramId"),r("targetOrders"),r("owner"),f(t(),64,"padding")]),jr=d([l("instruction"),t("baseAmountIn"),t("quoteAmountIn"),t("fixedSide"),t("otherAmountMin")]),Jr=d([l("instruction"),t("lpAmount"),t("baseAmountMin"),t("quoteAmountMin")]);var ea=d([t("fee")]);var pA=D("Raydium_liquidity_instruction");var ta=5e4,na=d([t("x"),t("y"),t("price")]),gA=d([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),f(na,ta,"DataElement")]);import{PublicKey as CA}from"@solana/web3.js";import LA from"decimal.js";import{TOKEN_PROGRAM_ID as NA}from"@solana/spl-token";import{PublicKey as kA}from"@solana/web3.js";var BA=D("Raydium_liquidity_serum");import xw from"bn.js";import Kw from"decimal.js";import{PublicKey as nT}from"@solana/web3.js";import{AccountLayout as iT,NATIVE_MINT as rT,TOKEN_2022_PROGRAM_ID as aT,TOKEN_PROGRAM_ID as sT,createAssociatedTokenAccountIdempotentInstruction as uT}from"@solana/spl-token";import jw from"bn.js";import sa from"bn.js";var Vw=new sa(0);import Gw from"bn.js";import ua from"bn.js";var xt=new ua(1e6);import bT from"bn.js";import PT from"decimal.js";import{PublicKey as Pk,TransactionInstruction as Ak,Keypair as kk,SystemProgram as Tk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Bk,TOKEN_2022_PROGRAM_ID as Ik,TOKEN_PROGRAM_ID as xk}from"@solana/spl-token";var ok=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ik=Buffer.from("amm_config","utf8"),rk=Buffer.from("pool","utf8"),ak=Buffer.from("pool_lp_mint","utf8"),sk=Buffer.from("pool_vault","utf8"),uk=Buffer.from("observation","utf8"),ck=Buffer.from("permission","utf8"),lk=Buffer.from("support_mint","utf8"),mk=Buffer.from("creator_fee_share","utf8");var dk=Buffer.from("locked_liquidity","utf8");var Nk=D("Raydium_cpmm"),Mk={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 ma=d([M(8),l("bump"),ae("disableCreatePool"),H("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),r("protocolOwner"),r("fundOwner"),t("creatorFeeRate"),t("creatorFeeShareRate"),f(t(),14)]),bo=d([M(8),r("configId"),r("poolCreator"),r("vaultA"),r("vaultB"),r("mintLp"),r("mintA"),r("mintB"),r("mintProgramA"),r("mintProgramB"),r("observationId"),l("bump"),l("status"),l("lpDecimals"),l("mintDecimalA"),l("mintDecimalB"),t("lpAmount"),t("protocolFeesMintA"),t("protocolFeesMintB"),t("fundFeesMintA"),t("fundFeesMintB"),t("openTime"),t("epoch"),l("feeOn"),ae("enableCreatorFee"),f(l(),6),t("creatorFeesMintA"),t("creatorFeesMintB"),f(t(),28)]),_k=d([M(8),r("configId"),f(t(),30)]),Vk=d([M(8),l("bump"),r("creator"),r("ammConfig"),t("shareRate"),f(t(),8)]);import{PublicKey as RS,SystemProgram as LS}from"@solana/web3.js";import{createTransferInstruction as NS,TOKEN_PROGRAM_ID as MS,TOKEN_2022_PROGRAM_ID as FS,createAssociatedTokenAccountIdempotentInstruction as vS,createSyncNativeInstruction as VS,createTransferCheckedInstruction as ES}from"@solana/spl-token";import Oa from"bn.js";import qS from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as xh,TOKEN_2022_PROGRAM_ID as Sh,TOKEN_PROGRAM_ID as Kh}from"@solana/spl-token";import{SystemProgram as Oh,TransactionInstruction as Nh}from"@solana/web3.js";import fa from"bn.js";var mh=Buffer.from("vault_auth_seed","utf8"),dh=Buffer.from("global_config","utf8"),ph=Buffer.from("pool_vesting","utf8"),fh=Buffer.from("platform_config","utf8"),yh=Buffer.from("platform_fee_vault_auth_seed","utf8"),bh=Buffer.from("creator_fee_vault_auth_seed","utf8"),gh=Buffer.from("platform_global_access","utf8"),Ph=Buffer.from("platform_allow_config","utf8"),Ah=Buffer.from("platform_curve_rule","utf8");var vh={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 _h=new fa("18446744073709551615");var ya=d([t(),t("epoch"),l("curveType"),H("index"),t("migrateFee"),t("tradeFeeRate"),t("maxShareFeeRate"),t("minSupplyA"),t("maxLockRate"),t("minSellRateA"),t("minMigrateRateA"),t("minFundRaisingB"),r("mintB"),r("protocolFeeOwner"),r("migrateFeeOwner"),r("migrateToAmmWallet"),r("migrateToCpmmWallet"),f(t(),16)]),ba=d([t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod"),t("startTime"),t("totalAllocatedShare")]),ga=d([t(),t("epoch"),l("bump"),l("status"),l("mintDecimalsA"),l("mintDecimalsB"),l("migrateType"),t("supply"),t("totalSellA"),t("virtualA"),t("virtualB"),t("realA"),t("realB"),t("totalFundRaisingB"),t("protocolFee"),t("platformFee"),t("migrateFee"),ba.replicate("vestingSchedule"),r("configId"),r("platformId"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("creator"),l("mintProgramFlag"),l("cpmmCreatorFeeOn"),t("platformVestingShare"),f(l(),54)]),Wh=d([t(),t("epoch"),r("poolId"),r("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),f(t(),8)]),Pa=d([l("migrateType"),l("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),qh=d([t("epoch"),l("index"),r("configId"),Pa.replicate("bondingCurveParam"),f(t(),50)]),Po=d([t(),t("epoch"),r("platformClaimFeeWallet"),r("platformLockNftWallet"),t("platformScale"),t("creatorScale"),t("burnScale"),t("feeRate"),f(l(),64,"name"),f(l(),256,"web"),f(l(),256,"img"),r("cpConfigId"),t("creatorFeeRate"),r("transferFeeExtensionAuth"),r("platformVestingWallet"),t("platformVestingScale"),r("platformCpCreator"),l("restrictGlobalConfig"),l("restrictCurveParam"),r("curveRuleManager"),f(l(),78)]),Aa=d([l("field"),l("op"),R("value")]),wa=d([H("groupId"),t("epoch"),$t(Aa,"constraints")]),ka=d([t(),l("bump"),l("version"),r("platformId"),r("configId"),t("epoch"),f(t(),8),$t(wa,"groups")]);import{TOKEN_2022_PROGRAM_ID as zh,TOKEN_PROGRAM_ID as Xh}from"@solana/spl-token";import Ta from"bn.js";var iB=new Ta(1e6);import uB from"bn.js";import lB from"decimal.js";import qB from"bn.js";import GB from"decimal.js";import bB from"bn.js";import PB from"decimal.js";import KB from"bn.js";import RB from"decimal.js";import ko from"bn.js";import ln from"decimal.js";var Ct=class{static _multipler(e){return new ln(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:i}){return new ln(e.toString()).div(this._Q64).mul(this._multipler(n)).div(this._multipler(i))}static getPriceX64({price:e,decimalA:n,decimalB:i}){let a=e.mul(this._multipler(i)).div(this._multipler(n));return new ko(a.mul(this._Q64).toFixed(0))}};Ct._Q64=new ln(new ko(1).shln(64).toString());import{NATIVE_MINT as rx,TOKEN_2022_PROGRAM_ID as ax,TOKEN_PROGRAM_ID as sx,createAssociatedTokenAccountIdempotentInstruction as cx,createSyncNativeInstruction as lx,getTransferFeeConfig as mx,unpackMint as dx}from"@solana/spl-token";import j from"bn.js";import{PublicKey as Ca,SystemProgram as yx}from"@solana/web3.js";import Tx from"decimal.js";var hx={initPriceX64:new j("515752397214619"),supply:new j(1e15),totalSellA:new j(7931e11),totalFundRaisingB:new j(85e9),totalFundRaisingBUSD:new j(125e8),totalLockedAmount:new j("0"),cliffPeriod:new j("0"),unlockPeriod:new j("0"),decimals:6,virtualA:new j("1073471847374405"),virtualB:new j("30050573465"),realA:new j(0),realB:new j(0),protocolFee:new j(0),platformId:new Ca("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new j(0),cliffPeriod:new j(0),unlockPeriod:new j(0),startTime:new j(0),totalAllocatedShare:new j(0)}},Bx=new j(1e4);var Ra={[Yn.toBase58()]:3};var La=d([M(5),M(8),r("ownAddress"),t("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),r("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),M(7)]);import{PublicKey as Hx}from"@solana/web3.js";var Jx=D("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as uS,TOKEN_2022_PROGRAM_ID as cS,TOKEN_PROGRAM_ID as lS}from"@solana/spl-token";import{PublicKey as dS,SystemProgram as pS,TransactionInstruction as fS}from"@solana/web3.js";import bS from"bn.js";var PK=new Oa(0);import{PublicKey as Na,Transaction as mn,TransactionInstruction as Ma}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fa}from"@solana/spl-token";import To from"bn.js";var ne=class extends re{static getPdaPoolId(e,n){return pe([ne.SEED_CONFIG.pool.id,n.toBuffer()],e)}static getPdaOwnerId(e,n,i,a){return pe([ne.SEED_CONFIG.owner.id,n.toBuffer(),i.toBuffer(),Buffer.from(new To(a).toArray())],e)}static async getAllInfo({connection:e,programId:n,poolIds:i,wallet:a,chainTime:c}){if(i.length===0)return[];let m=i.map(b=>ne.getPdaPoolId(n,b).publicKey),p=[];for(let b=0;b<ne.VERSION_PROJECT.length;b++)p.push(...m.map(g=>ne.getPdaOwnerId(n,g,a,b).publicKey));let y=await be(e,[...m,...p]),k=[];for(let b=0;b<y.length;b++){let g=Math.floor(b/i.length),I=b%i.length,T=m[I],N=p[b],w=y[I],P=y[i.length+b];if(!(w&&P)||w.data.length!==ne.POOL_LAYOUT.span||P.data.length!==ne.OWNER_LAYOUT.span)continue;let x=ne.POOL_LAYOUT.decode(w.data),S=ne.OWNER_LAYOUT.decode(P.data),F=x.openTime.toNumber(),v=x.endTime.toNumber(),A=S.tokenInfo.map(C=>C.debtAmount.gt(new To(0))).filter(C=>!C).length!==3,h=c>F&&c<v&&x.status===1,B=A&&h;k.push({programId:n,poolId:T,ammId:x.ammId,ownerAccountId:N,snapshotLpAmount:S.lpAmount,project:ne.VERSION_PROJECT[g],openTime:F,endTime:v,canClaim:B,canClaimErrorType:A?h?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:x.tokenInfo.map((C,L)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:S.tokenInfo[L].debtAmount.add(S.tokenInfo[L].claimedAmount)}))})}return k}async makeClaimTransaction({poolInfo:e,ownerInfo:n,feePayer:i}){n.wallet||this.scope.checkOwner();let a=this.createTxBuilder(i),c=n.wallet||this.scope.ownerPubKey,m=[];for(let k of e.tokenInfo){let{account:b,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({mint:k.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:k.mintAddress.equals(te.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!k.mintAddress.equals(te.WSOL.mint),associatedOnly:k.mintAddress.equals(te.WSOL.mint)?!1:n.associatedOnly});g&&a.addInstruction(g),m.push(b)}a.addInstruction({instructions:[ne.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:c,ownerPda:e.ownerAccountId,claimAddress:m}})]});let{transaction:p,signers:y}=a.build();return[{transaction:p,signer:y}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:n,feePayer:i}){let a=this.createTxBuilder(i),c=n.wallet||this.scope.ownerPubKey,m={};for(let b of e){let g=[];for(let I of b.tokenInfo){let{account:T,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:I.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:I.mintAddress.equals(te.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!I.mintAddress.equals(te.WSOL.mint),associatedOnly:I.mintAddress.equals(te.WSOL.mint)?!1:n.associatedOnly});N&&a.addInstruction(N),T&&(m[I.mintAddress.toString()]=T,g.push(T))}a.addInstruction({instructions:[ne.makeClaimInstruction({programId:b.programId,poolInfo:b,ownerInfo:{wallet:c,ownerPda:b.ownerAccountId,claimAddress:g}})]})}let{transaction:p,signers:y}=a.build(),k=a.allInstructions;return zt(k,[c,...y.map(b=>b.publicKey)])?[{transaction:p,signer:y}]:[{transaction:new mn().add(...k.slice(0,a.AllTxData.instructions.length-1)),signer:y},{transaction:new mn().add(...k.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new mn().add(...a.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:n,ownerInfo:i}){let a=d([]),c=[{pubkey:i.wallet,isSigner:!0,isWritable:!0},{pubkey:n.poolId,isSigner:!1,isWritable:!0},{pubkey:i.ownerPda,isSigner:!1,isWritable:!0},...i.claimAddress.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})),...n.tokenInfo.map(({mintVault:y})=>({pubkey:y,isSigner:!1,isWritable:!0})),{pubkey:Fa,isSigner:!1,isWritable:!1}],m=Buffer.alloc(a.span);a.encode({},m);let p=Buffer.from([10,66,208,184,161,6,191,98,...m]);return new Ma({keys:c,programId:e,data:p})}},ce=ne;ce.CLAIMED_NUM=3,ce.POOL_LAYOUT=d([M(8),l("bump"),l("status"),t("openTime"),t("endTime"),r("ammId"),f(d([l("mintDecimals"),r("mintAddress"),r("mintVault"),t("perLpLoss"),t("totalClaimedAmount")]),ne.CLAIMED_NUM,"tokenInfo"),f(t(),10,"padding")]),ce.OWNER_LAYOUT=d([M(8),l("bump"),l("version"),r("poolId"),r("owner"),t("lpAmount"),f(d([r("mintAddress"),t("debtAmount"),t("claimedAmount")]),ne.CLAIMED_NUM,"tokenInfo"),f(t(),4,"padding")]),ce.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Na(e)),ce.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ce.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as FK}from"@solana/web3.js";import{getTransferFeeConfig as _K,MintLayout as VK,TOKEN_2022_PROGRAM_ID as EK,TOKEN_PROGRAM_ID as DK,unpackMint as WK}from"@solana/spl-token";var yR=new Se(2),bR=new Se(3),gR=new Se(5),Yo=new Se(10),PR=new Se(100),AR=new Se(1e3),wR=new Se(1e4);function Ft(o,e=1,n=[]){let i=[...o];if(e<=0)return n;for(;i.length;)n.push(i.splice(0,e));return n}import{TOKEN_PROGRAM_ID as qa}from"@solana/spl-token";function va(o){return o instanceof Uint8Array||o!=null&&typeof o=="object"&&o.constructor.name==="Uint8Array"}function dn(o,...e){if(!va(o))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(o.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${o.length}`)}function pn(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function ho(o,e){dn(o);let n=e.outputLen;if(o.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}var Lt=o=>new DataView(o.buffer,o.byteOffset,o.byteLength),le=(o,e)=>o<<32-e|o>>>e;var GR=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function _a(o){if(typeof o!="string")throw new Error(`utf8ToBytes expected string, got ${typeof o}`);return new Uint8Array(new TextEncoder().encode(o))}function fn(o){return typeof o=="string"&&(o=_a(o)),dn(o),o}var Rt=class{clone(){return this._cloneInto()}},zR={}.toString;function Bo(o){let e=i=>o().update(fn(i)).digest(),n=o();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>o(),e}function Va(o,e,n,i){if(typeof o.setBigUint64=="function")return o.setBigUint64(e,n,i);let a=BigInt(32),c=BigInt(4294967295),m=Number(n>>a&c),p=Number(n&c),y=i?4:0,k=i?0:4;o.setUint32(e+y,m,i),o.setUint32(e+k,p,i)}var Io=(o,e,n)=>o&e^~o&n,xo=(o,e,n)=>o&e^o&n^e&n,Ot=class extends Rt{constructor(e,n,i,a){super(),this.blockLen=e,this.outputLen=n,this.padOffset=i,this.isLE=a,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Lt(this.buffer)}update(e){pn(this);let{view:n,buffer:i,blockLen:a}=this;e=fn(e);let c=e.length;for(let m=0;m<c;){let p=Math.min(a-this.pos,c-m);if(p===a){let y=Lt(e);for(;a<=c-m;m+=a)this.process(y,m);continue}i.set(e.subarray(m,m+p),this.pos),this.pos+=p,m+=p,this.pos===a&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){pn(this),ho(e,this),this.finished=!0;let{buffer:n,view:i,blockLen:a,isLE:c}=this,{pos:m}=this;n[m++]=128,this.buffer.subarray(m).fill(0),this.padOffset>a-m&&(this.process(i,0),m=0);for(let g=m;g<a;g++)n[g]=0;Va(i,a-8,BigInt(this.length*8),c),this.process(i,0);let p=Lt(e),y=this.outputLen;if(y%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let k=y/4,b=this.get();if(k>b.length)throw new Error("_sha2: outputLen bigger than state");for(let g=0;g<k;g++)p.setUint32(4*g,b[g],c)}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let i=e.slice(0,n);return this.destroy(),i}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:n,buffer:i,length:a,finished:c,destroyed:m,pos:p}=this;return e.length=a,e.pos=p,e.finished=c,e.destroyed=m,a%n&&e.buffer.set(i),e}};var Ea=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ae=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),we=new Uint32Array(64),yn=class extends Ot{constructor(){super(64,32,8,!1),this.A=Ae[0]|0,this.B=Ae[1]|0,this.C=Ae[2]|0,this.D=Ae[3]|0,this.E=Ae[4]|0,this.F=Ae[5]|0,this.G=Ae[6]|0,this.H=Ae[7]|0}get(){let{A:e,B:n,C:i,D:a,E:c,F:m,G:p,H:y}=this;return[e,n,i,a,c,m,p,y]}set(e,n,i,a,c,m,p,y){this.A=e|0,this.B=n|0,this.C=i|0,this.D=a|0,this.E=c|0,this.F=m|0,this.G=p|0,this.H=y|0}process(e,n){for(let g=0;g<16;g++,n+=4)we[g]=e.getUint32(n,!1);for(let g=16;g<64;g++){let I=we[g-15],T=we[g-2],N=le(I,7)^le(I,18)^I>>>3,w=le(T,17)^le(T,19)^T>>>10;we[g]=w+we[g-7]+N+we[g-16]|0}let{A:i,B:a,C:c,D:m,E:p,F:y,G:k,H:b}=this;for(let g=0;g<64;g++){let I=le(p,6)^le(p,11)^le(p,25),T=b+I+Io(p,y,k)+Ea[g]+we[g]|0,w=(le(i,2)^le(i,13)^le(i,22))+xo(i,a,c)|0;b=k,k=y,y=p,p=m+T|0,m=c,c=a,a=i,i=T+w|0}i=i+this.A|0,a=a+this.B|0,c=c+this.C|0,m=m+this.D|0,p=p+this.E|0,y=y+this.F|0,k=k+this.G|0,b=b+this.H|0,this.set(i,a,c,m,p,y,k,b)}roundClean(){we.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var So=Bo(()=>new yn);function se({fromPublicKey:o,programId:e=qa,assignSeed:n}){let i=n?btoa(n).slice(0,32):Da.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ua(o,i,e),seed:i}}function Ua(o,e,n){let i=Buffer.concat([o.toBuffer(),Buffer.from(e),n.toBuffer()]),a=So(i);return new Wa(a)}import{SystemProgram as Ke,SYSVAR_RENT_PUBKEY as za,Transaction as Ko,TransactionInstruction as Xa}from"@solana/web3.js";import{createInitializeAccountInstruction as Co,TOKEN_PROGRAM_ID as Ro}from"@solana/spl-token";function Ga(o="accountFlags"){let e=new kt(o);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var bn=d([M(5),Ga("accountFlags"),r("ownAddress"),t("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),r("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),M(7)]);function Ya({programId:o,marketInfo:e}){let n=d([l("version"),X("instruction"),t("baseLotSize"),t("quoteLotSize"),H("feeRateBps"),t("vaultSignerNonce"),t("quoteDustThreshold")]),i=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:za,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),a=Buffer.alloc(n.span);return n.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},a),new Xa({keys:i,programId:o,data:a})}async function cn({connection:o,wallet:e,marketInfo:n}){var m,p,y,k,b,g,I,T;let i=new Ko,a=await o.getMinimumBalanceForRentExemption(165);i.add(Ke.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:n.baseVault.seed,newAccountPubkey:n.baseVault.publicKey,lamports:a,space:165,programId:Ro}),Ke.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:n.quoteVault.seed,newAccountPubkey:n.quoteVault.publicKey,lamports:a,space:165,programId:Ro}),Co(n.baseVault.publicKey,n.baseMint,n.vaultOwner),Co(n.quoteVault.publicKey,n.quoteMint,n.vaultOwner),Ke.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:n.id.seed,newAccountPubkey:n.id.publicKey,lamports:await o.getMinimumBalanceForRentExemption(bn.span),space:bn.span,programId:n.programId}));let c=new Ko;return c.add(Ke.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:n.requestQueue.seed,newAccountPubkey:n.requestQueue.publicKey,lamports:n.lowestFeeMarket?6208320:await o.getMinimumBalanceForRentExemption((m=n.requestQueueSpace)!=null?m:5120+12),space:n.lowestFeeMarket?764:(p=n.requestQueueSpace)!=null?p:5120+12,programId:n.programId}),Ke.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:n.eventQueue.seed,newAccountPubkey:n.eventQueue.publicKey,lamports:n.lowestFeeMarket?79594560:await o.getMinimumBalanceForRentExemption((y=n.eventQueueSpace)!=null?y:262144+12),space:n.lowestFeeMarket?11308:(k=n.eventQueueSpace)!=null?k:262144+12,programId:n.programId}),Ke.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:n.bids.seed,newAccountPubkey:n.bids.publicKey,lamports:n.lowestFeeMarket?101977920:await o.getMinimumBalanceForRentExemption((b=n.orderbookQueueSpace)!=null?b:65536+12),space:n.lowestFeeMarket?14524:(g=n.orderbookQueueSpace)!=null?g:65536+12,programId:n.programId}),Ke.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:n.asks.seed,newAccountPubkey:n.asks.publicKey,lamports:n.lowestFeeMarket?101977920:await o.getMinimumBalanceForRentExemption((I=n.orderbookQueueSpace)!=null?I:65536+12),space:n.lowestFeeMarket?14524:(T=n.orderbookQueueSpace)!=null?T:65536+12,programId:n.programId}),Ya({programId:n.programId,marketInfo:{id:n.id.publicKey,requestQueue:n.requestQueue.publicKey,eventQueue:n.eventQueue.publicKey,bids:n.bids.publicKey,asks:n.asks.publicKey,baseVault:n.baseVault.publicKey,quoteVault:n.quoteVault.publicKey,baseMint:n.baseMint,quoteMint:n.quoteMint,baseLotSize:n.baseLotSize,quoteLotSize:n.quoteLotSize,feeRateBps:n.feeRateBps,vaultSignerNonce:n.vaultSignerNonce,quoteDustThreshold:n.quoteDustThreshold}})),[{transaction:i,signer:[],instructionTypes:[U.CreateAccount,U.CreateAccount,U.InitAccount,U.InitAccount]},{transaction:c,signer:[],instructionTypes:[U.CreateAccount,U.CreateAccount,U.CreateAccount,U.CreateAccount,U.CreateAccount,U.InitMarket]}]}var rt=class extends re{async create({baseInfo:e,quoteInfo:n,lotSize:i,tickSize:a,dexProgramId:c,requestQueueSpace:m,eventQueueSpace:p,orderbookQueueSpace:y,lowestFeeMarket:k,assignSeed:b,txVersion:g,computeBudgetConfig:I,txTipConfig:T,feePayer:N}){let w=this.scope.ownerPubKey,P=b?`${e.mint.toBase58().slice(0,10)}-${n.mint.toBase58().slice(0,10)}-${b}`:void 0,x=se({fromPublicKey:w,programId:c,assignSeed:P&&`${P}-market`}),S=se({fromPublicKey:w,programId:c,assignSeed:P&&`${P}-request`}),F=se({fromPublicKey:w,programId:c,assignSeed:P&&`${P}-event`}),v=se({fromPublicKey:w,programId:c,assignSeed:P&&`${P}-bids`}),A=se({fromPublicKey:w,programId:c,assignSeed:P&&`${P}-asks`}),h=se({fromPublicKey:w,programId:Lo,assignSeed:P&&`${P}-baseVault`}),B=se({fromPublicKey:w,programId:Lo,assignSeed:P&&`${P}-quoteVault`}),C=0,L=new st(100);function _(){let J=new st(0);for(;;)try{return{vaultOwner:at.createProgramAddressSync([x.publicKey.toBuffer(),J.toArrayLike(Buffer,"le",8)],c),vaultSignerNonce:J}}catch{if(J.iaddn(1),J.gt(new st(25555)))throw Error("find vault owner error")}}let{vaultOwner:oe,vaultSignerNonce:G}=_(),V=new st(Math.round(10**e.decimals*i)),Q=new st(Math.round(i*10**n.decimals*a));if(V.eq($))throw Error("lot size is too small");if(Q.eq($))throw Error("tick size or lot size is too small");let q=await cn({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:c,id:x,baseMint:e.mint,quoteMint:n.mint,baseVault:h,quoteVault:B,vaultOwner:oe,requestQueue:S,eventQueue:F,bids:v,asks:A,feeRateBps:C,quoteDustThreshold:L,vaultSignerNonce:G,baseLotSize:V,quoteLotSize:Q,requestQueueSpace:m,eventQueueSpace:p,orderbookQueueSpace:y,lowestFeeMarket:k}}),Z=this.createTxBuilder(N);Z.addInstruction({instructions:q[0].transaction.instructions,signers:q[0].signer});for await(let J of q.slice(1,q.length))Z.addInstruction({instructions:J.transaction.instructions,signers:J.signer,instructionTypes:J.instructionTypes});return g===0?Z.sizeCheckBuildV0({computeBudgetConfig:I,address:{marketId:x.publicKey,requestQueue:S.publicKey,eventQueue:F.publicKey,bids:v.publicKey,asks:A.publicKey,baseVault:h.publicKey,quoteVault:B.publicKey,baseMint:new at(e.mint),quoteMint:new at(n.mint)}}):Z.sizeCheckBuild({computeBudgetConfig:I,address:{marketId:x.publicKey,requestQueue:S.publicKey,eventQueue:F.publicKey,bids:v.publicKey,asks:A.publicKey,baseVault:h.publicKey,quoteVault:B.publicKey,baseMint:new at(e.mint),quoteMint:new at(n.mint)}})}};export{bn as MARKET_STATE_LAYOUT_V2,rt as default,Ya as initializeMarket,cn as makeCreateMarketInstruction};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=index.mjs.map