@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
3 lines • 87.2 kB
JavaScript
var Fo=Object.defineProperty,vo=Object.defineProperties;var _o=Object.getOwnPropertyDescriptors;var mt=Object.getOwnPropertySymbols;var kn=Object.prototype.hasOwnProperty,Tn=Object.prototype.propertyIsEnumerable;var wn=(i,e,n)=>e in i?Fo(i,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[e]=n,L=(i,e)=>{for(var n in e||(e={}))kn.call(e,n)&&wn(i,n,e[n]);if(mt)for(var n of mt(e))Tn.call(e,n)&&wn(i,n,e[n]);return i},D=(i,e)=>vo(i,_o(e));var se=(i,e)=>{var n={};for(var o in i)kn.call(i,o)&&e.indexOf(o)<0&&(n[o]=i[o]);if(i!=null&&mt)for(var o of mt(i))e.indexOf(o)<0&&Tn.call(i,o)&&(n[o]=i[o]);return n};import{PublicKey as Ft,SystemProgram as Ja}from"@solana/web3.js";import{PublicKey as Do}from"@solana/web3.js";import{get as hn,set as Vo}from"lodash";var vt=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(o=>typeof o=="object"?JSON.stringify(o):o).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}},In={},Eo={};function V(i){let e=hn(In,i);if(!e){let n=hn(Eo,i);e=new vt({name:i,logLevel:n}),Vo(In,i,e)}return e}import{MINT_SIZE as ms,TOKEN_PROGRAM_ID as ds,getTransferFeeConfig as ps,unpackMint as fs}from"@solana/spl-token";var _t=V("Raydium_accountInfo_util");async function be(i,e,n){let{batchRequest:o,commitment:r="confirmed",chunkCount:s=100}=L({batchRequest:!1},n),l=Vt(e,s),m=new Array(l.length).fill([]);if(o){let d=l.map(g=>{let T=i._buildArgs([g.map(w=>w.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:T}}),y=Vt(d,10);m=(await(await Promise.all(y.map(async g=>await i._rpcBatchRequest(g)))).flat()).map(g=>(g.error&&_t.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.error.message}`),g.result.value.map(T=>{if(T){let{data:w,executable:k,lamports:h,owner:I,rentEpoch:K}=T;return w.length!==2&&w[1]!=="base64"&&_t.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:k,lamports:h,owner:new Do(I),rentEpoch:K}}return null})))}else try{m=await Promise.all(l.map(d=>i.getMultipleAccountsInfo(d,r)))}catch(d){d instanceof Error&&_t.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.message}`)}return m.flat()}import Ke from"bn.js";import bR from"decimal.js";import Ho from"big.js";import Ls from"bn.js";import Wo from"toformat";var qo=Wo,Qe=qo;import pt from"big.js";import Go from"bn.js";import zo from"decimal.js-light";import Ze from"bn.js";var Bn=9007199254740991;function J(i){let e=V("Raydium_parseBigNumberish");if(i instanceof Ze)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ze(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Bn||i<=-Bn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ze(String(i))):typeof i=="bigint"?new Ze(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ze(0))}var dt=V("module/fraction"),Et=Qe(pt),je=Qe(zo),Xo={[0]:je.ROUND_DOWN,[1]:je.ROUND_HALF_UP,[2]:je.ROUND_UP},Yo={[0]:pt.roundDown,[1]:pt.roundHalfUp,[2]:pt.roundUp},G=class{constructor(e,n=new Go(1)){this.numerator=J(e),this.denominator=J(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let n=e instanceof G?e:new G(J(e));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof G?e:new G(J(e));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof G?e:new G(J(e));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof G?e:new G(J(e));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},o=1){Number.isInteger(e)||dt.logWithError(`${e} is not an integer.`),e<=0&&dt.logWithError(`${e} is not positive.`),je.set({precision:e+1,rounding:Xo[o]});let r=new je(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},o=1){return Number.isInteger(e)||dt.logWithError(`${e} is not an integer.`),e<0&&dt.logWithError(`${e} is negative.`),Et.DP=e,Et.RM=Yo[o]||1,new Et(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var Ds=V("Raydium_amount"),Ws=Qe(Ho);import{PublicKey as Zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xn}from"@solana/spl-token";var ft={chainId:101,address:Zo.default.toBase58(),programId:xn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ce={chainId:101,address:"So11111111111111111111111111111111111111112",programId:xn.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 Wt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Sn,SYSVAR_RENT_PUBKEY as jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";function Re({pubkey:i,isSigner:e=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:e}}var Jo=[Re({pubkey:$o,isWritable:!1}),Re({pubkey:Sn.programId,isWritable:!1}),Re({pubkey:jo,isWritable:!1})];function Kn({publicKey:i,transformSol:e}){let n=Cn(i.toString());if(n instanceof X)return e&&n.equals(Te)?re:n;if(e&&n.toString()===Te.toBase58())return re;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Cn(i){try{return new X(i)}catch{return i}}var Dt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),$e=new X("SysvarRent111111111111111111111111111111111"),Qs=new X("SysvarC1ock11111111111111111111111111111111"),yt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ei=new X("Sysvar1nstructions1111111111111111111111111"),ti=Sn.programId,Zs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),js=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),$s=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Js=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),eu=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),tu=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),nu=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ou=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),iu=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ru=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),au=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),re=new X("So11111111111111111111111111111111111111112"),Te=X.default;var qt=class{constructor({mint:e,decimals:n,symbol:o,name:r,skipMint:s=!1,isToken2022:l=!1}){if(e===Te.toBase58()||e instanceof Wt&&Te.equals(e)){this.decimals=ce.decimals,this.symbol=ce.symbol,this.name=ce.name,this.mint=new Wt(ce.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=s?Wt.default:Kn({publicKey:e}),this.isToken2022=l}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ee=qt;ee.WSOL=new qt(D(L({},ce),{mint:ce.address}));var Ut=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},bt=Ut;bt.SOL=new Ut(ft);import ni from"bn.js";var Pu=new G(new ni(100));var Iu=V("Raydium_price");import{merge as PC}from"lodash";import Nu from"axios";var Rn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},oi=D(L({},Rn),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var nc=V("Raydium_Api");import{PublicKey as oP,SystemProgram as iP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as aP}from"@solana/spl-token";import{PublicKey as ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as li}from"@solana/spl-token";import{ComputeBudgetProgram as Ln,Keypair as Nn,PublicKey as ii,Transaction as Mn,TransactionMessage as ri,VersionedTransaction as Fn}from"@solana/web3.js";var W={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 ai}from"@solana/spl-token";var On=V("Raydium_txUtil"),vn=1644;function gt(i){let e=[],n=[];return i.microLamports&&(e.push(Ln.setComputeUnitPrice({microLamports:i.microLamports})),n.push(W.SetComputeUnitPrice)),i.units&&(e.push(Ln.setComputeUnitLimit({units:i.units})),n.push(W.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function Le(i,e){var o,r;let n=e!=null?e:"confirmed";return(r=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:n})))==null?void 0:r.blockhash}async function Pt(i,e){return i.getSignatureStatuses([e]),new Promise((n,o)=>{let r=setTimeout(o,6e4);i.onSignature(e,s=>{if(clearTimeout(r),!s.err){n("");return}o(Object.assign(s.err,{txId:e}))},"confirmed")})}function Gt(i,e){i.length<1&&On.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&On.logWithError(`no signers provided:, ${e.toString()}`);let n=new Mn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<vn}catch{return!1}}function le(i,e){let[n,o]=ii.findProgramAddressSync(i,e);return{publicKey:n,nonce:o}}function Je({instructions:i,payer:e,signers:n}){return Gt(i,[e,...n])}function et({instructions:i,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=Nn.generate().publicKey.toString()}){let s=new ri({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Fn(s).serialize()).toString("base64").length<vn}catch{return!1}}var si=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),ui=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Fn&&(e=si(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function he(i){let e=[];return i.forEach(n=>{n instanceof Mn&&(n.recentBlockhash||(n.recentBlockhash=ai.toBase58()),n.feePayer||(n.feePayer=Nn.generate().publicKey)),e.push(ui(n))}),console.log("simulate tx string:",e),e}function ae(i,e,n){return le([i.toBuffer(),(n!=null?n:li).toBuffer(),e.toBuffer()],new ci("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as C}from"@solana/web3.js";var _n=new C("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Vn=new C("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),En=new C("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),zt=new C("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Kc=new C("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),mi=new C("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Dn=new C("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Wn=new C("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Cc=new C("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),di=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qn=new C("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),pi=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),fi=new C("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Un=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Rc=new C("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),yi=new C("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Xt=new C("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),bi=new C("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Lc=new C("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),gi=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pi=new C("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ai=new C("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Oc=new C("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Nc=new C("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Mc=new C("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Fc=new C("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vc=new C("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ge={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{Keypair as Vi,PublicKey as io}from"@solana/web3.js";import Ei from"bn.js";import{TOKEN_PROGRAM_ID as Di}from"@solana/spl-token";function wi(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Yt(i,...e){if(!wi(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Ht(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function Gn(i,e){Yt(i);let n=e.outputLen;if(i.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}var wt=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),me=(i,e)=>i<<32-e|i>>>e;var Dc=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ki(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Qt(i){return typeof i=="string"&&(i=ki(i)),Yt(i),i}var At=class{clone(){return this._cloneInto()}},Wc={}.toString;function zn(i){let e=o=>i().update(Qt(o)).digest(),n=i();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>i(),e}function Ti(i,e,n,o){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,n,o);let r=BigInt(32),s=BigInt(4294967295),l=Number(n>>r&s),m=Number(n&s),d=o?4:0,y=o?0:4;i.setUint32(e+d,l,o),i.setUint32(e+y,m,o)}var Xn=(i,e,n)=>i&e^~i&n,Yn=(i,e,n)=>i&e^i&n^e&n,kt=class extends At{constructor(e,n,o,r){super(),this.blockLen=e,this.outputLen=n,this.padOffset=o,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=wt(this.buffer)}update(e){Ht(this);let{view:n,buffer:o,blockLen:r}=this;e=Qt(e);let s=e.length;for(let l=0;l<s;){let m=Math.min(r-this.pos,s-l);if(m===r){let d=wt(e);for(;r<=s-l;l+=r)this.process(d,l);continue}o.set(e.subarray(l,l+m),this.pos),this.pos+=m,l+=m,this.pos===r&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Ht(this),Gn(e,this),this.finished=!0;let{buffer:n,view:o,blockLen:r,isLE:s}=this,{pos:l}=this;n[l++]=128,this.buffer.subarray(l).fill(0),this.padOffset>r-l&&(this.process(o,0),l=0);for(let g=l;g<r;g++)n[g]=0;Ti(o,r-8,BigInt(this.length*8),s),this.process(o,0);let m=wt(e),d=this.outputLen;if(d%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let y=d/4,b=this.get();if(y>b.length)throw new Error("_sha2: outputLen bigger than state");for(let g=0;g<y;g++)m.setUint32(4*g,b[g],s)}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let o=e.slice(0,n);return this.destroy(),o}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:n,buffer:o,length:r,finished:s,destroyed:l,pos:m}=this;return e.length=r,e.pos=m,e.finished=s,e.destroyed=l,r%n&&e.buffer.set(o),e}};var hi=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]),Pe=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ae=new Uint32Array(64),Zt=class extends kt{constructor(){super(64,32,8,!1),this.A=Pe[0]|0,this.B=Pe[1]|0,this.C=Pe[2]|0,this.D=Pe[3]|0,this.E=Pe[4]|0,this.F=Pe[5]|0,this.G=Pe[6]|0,this.H=Pe[7]|0}get(){let{A:e,B:n,C:o,D:r,E:s,F:l,G:m,H:d}=this;return[e,n,o,r,s,l,m,d]}set(e,n,o,r,s,l,m,d){this.A=e|0,this.B=n|0,this.C=o|0,this.D=r|0,this.E=s|0,this.F=l|0,this.G=m|0,this.H=d|0}process(e,n){for(let g=0;g<16;g++,n+=4)Ae[g]=e.getUint32(n,!1);for(let g=16;g<64;g++){let T=Ae[g-15],w=Ae[g-2],k=me(T,7)^me(T,18)^T>>>3,h=me(w,17)^me(w,19)^w>>>10;Ae[g]=h+Ae[g-7]+k+Ae[g-16]|0}let{A:o,B:r,C:s,D:l,E:m,F:d,G:y,H:b}=this;for(let g=0;g<64;g++){let T=me(m,6)^me(m,11)^me(m,25),w=b+T+Xn(m,d,y)+hi[g]+Ae[g]|0,h=(me(o,2)^me(o,13)^me(o,22))+Yn(o,r,s)|0;b=y,y=d,d=m,m=l+w|0,l=s,s=r,r=o,o=w+h|0}o=o+this.A|0,r=r+this.B|0,s=s+this.C|0,l=l+this.D|0,m=m+this.E|0,d=d+this.F|0,y=y+this.G|0,b=b+this.H|0,this.set(o,r,s,l,m,d,y,b)}roundClean(){Ae.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Hn=zn(()=>new Zt);import{PublicKey as Fi}from"@solana/web3.js";import Jn,{isBN as eo}from"bn.js";import{bits as Ii,BitStructure as Zc,blob as Bi,Blob as jc,cstr as $c,f32 as Jc,f32be as el,f64 as tl,f64be as nl,greedy as ol,Layout as xi,ns64 as il,ns64be as rl,nu64 as al,nu64be as sl,offset as Si,s16 as ul,s16be as cl,s24 as ll,s24be as ml,s32 as Ki,s32be as dl,s40 as pl,s40be as fl,s48 as yl,s48be as bl,s8 as gl,seq as Ci,struct as Pl,Structure as Ri,u16 as Li,u16be as Al,u24 as wl,u24be as kl,u32 as Oi,u32be as Tl,u40 as hl,u40be as Il,u48 as Bl,u48be as xl,u8 as Ni,UInt as Mi,union as Sl,Union as Kl,unionLayoutDiscriminator as Cl,utf8 as Rl}from"@solana/buffer-layout";var Tt=xi,Qn=Ri;var jt=Mi;var Zn=Ni,H=Li;var ht=Oi;var de=Ki;var jn=Ci;var v=Bi;var $t=Ii,$n=Si;var Ie=class extends Tt{constructor(n,o,r){super(n,r);this.blob=v(n),this.signed=o}decode(n,o=0){let r=new Jn(this.blob.decode(n,o),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(n,o,r=0){return typeof n=="number"&&(n=new Jn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,r)}},It=class extends Tt{constructor(n){super(8,n);this._lower=$t(ht(),!1),this._upper=$t(ht(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let r=this._lower.decode(n,o),s=this._upper.decode(n,o+this._lower.span);return L(L({},r),s)}encode(n,o,r=0){return this._lower.encode(n,o,r)+this._upper.encode(n,o,r+this._lower.span)}};function p(i){return new jt(1,i)}function Y(i){return new jt(4,i)}function t(i){return new Ie(8,!1,i)}function M(i){return new Ie(16,!1,i)}function to(i){return new Ie(1,!0,i)}function Oe(i){return new Ie(8,!0,i)}function no(i){return new Ie(16,!0,i)}var tt=class extends Tt{constructor(n,o,r,s){super(n.span,s);this.layout=n,this.decoder=o,this.encoder=r}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,r){return this.layout.encode(this.encoder(n),o,r)}getSpan(n,o){return this.layout.getSpan(n,o)}};function a(i){return new tt(v(32),e=>new Fi(e),e=>e.toBuffer(),i)}function ue(i){return new tt(Zn(),vi,_i,i)}function vi(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function _i(i){return i?1:0}function oo(i,e){let n=ht("length"),o=f([n,A(i,$n(n,-n.span),"values")]);return new tt(o,({values:r})=>r,r=>({values:r}),e)}var Jt=class extends Qn{decode(e,n){return super.decode(e,n)}};function f(i,e,n){return new Jt(i,e,n)}function A(i,e,n){let o,r=typeof e=="number"?e:eo(e)?e.toNumber():new Proxy(e,{get(s,l){if(!o){let m=Reflect.get(s,"count");o=eo(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 jn(i,r,n)}var Be=f([a("mint"),a("owner"),t("amount"),Y("delegateOption"),a("delegate"),p("state"),Y("isNativeOption"),t("isNative"),t("delegatedAmount"),Y("closeAuthorityOption"),a("closeAuthority")]);function ro({owner:i,solAccountResp:e,tokenAccountResp:n}){let o=[],r=[];for(let{pubkey:s,account:l}of n.value){let m=Be.decode(l.data),{mint:d,amount:y}=m;o.push({publicKey:s,mint:d,amount:y,isAssociated:ae(i,d,l.owner).publicKey.equals(s),isNative:!1,programId:l.owner}),r.push({pubkey:s,accountInfo:m,programId:l.owner})}return e&&o.push({mint:io.default,amount:new Ei(String(e.lamports)),isNative:!0,programId:e.owner}),{tokenAccounts:o,tokenAccountRawInfos:r}}function xe({fromPublicKey:i,programId:e=Di,assignSeed:n}){let o=n?btoa(n).slice(0,32):Vi.generate().publicKey.toBase58().slice(0,32);return{publicKey:Wi(i,o,e),seed:o}}function Wi(i,e,n){let o=Buffer.concat([i.toBuffer(),Buffer.from(e),n.toBuffer()]),r=Hn(o);return new io(r)}import bP from"decimal.js";import{PublicKey as qi,SystemProgram as Ui}from"@solana/web3.js";import Gi from"bn.js";import{createCloseAccountInstruction as zi,createInitializeAccountInstruction as Xi,createTransferInstruction as Yi,TOKEN_PROGRAM_ID as Ne}from"@solana/spl-token";function en(i){let{mint:e,tokenAccount:n,owner:o,programId:r=Ne}=i;return Xi(n,e,o,r)}function Me(i){let{tokenAccount:e,payer:n,multiSigners:o=[],owner:r,programId:s=Ne}=i;return zi(e,n,r,o,s)}async function nt(i){let{connection:e,amount:n,commitment:o,payer:r,owner:s,skipCloseAccount:l}=i,m=await e.getMinimumBalanceForRentExemption(Be.span,o),d=J(n).add(new Gi(m)),y=xe({fromPublicKey:r,programId:Ne});return{addresses:{newAccount:y.publicKey},signers:[],instructions:[Ui.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:y.seed,newAccountPubkey:y.publicKey,lamports:d.toNumber(),space:Be.span,programId:Ne}),en({mint:new qi(ce.address),tokenAccount:y.publicKey,owner:s,programId:Ne})],instructionTypes:[W.CreateAccount,W.InitAccount],endInstructionTypes:l?[]:[W.CloseAccount],endInstructions:l?[]:[Me({tokenAccount:y.publicKey,payer:r,owner:s})]}}function ao({source:i,destination:e,owner:n,amount:o,multiSigners:r=[],tokenProgram:s=Ne}){return Yi(i,e,n,BigInt(String(o)),r,s)}import{createAssociatedTokenAccountIdempotentInstruction as My,TOKEN_2022_PROGRAM_ID as Fy,TOKEN_PROGRAM_ID as vy}from"@solana/spl-token";import{PublicKey as Vy}from"@solana/web3.js";import Dy from"bn.js";import qy from"decimal.js";import{TOKEN_PROGRAM_ID as Im}from"@solana/spl-token";import{PublicKey as Km}from"@solana/web3.js";var Hi=f([Y("mintAuthorityOption"),a("mintAuthority"),t("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),a("freezeAuthority")]);import{PublicKey as Ee,sendAndConfirmTransaction as an,SystemProgram as Qi,Transaction as ot,TransactionMessage as it,VersionedTransaction as rt}from"@solana/web3.js";import Zi from"axios";import{PublicKey as tn,AddressLookupTableAccount as Ve}from"@solana/web3.js";async function nn({connection:i,address:e,cluster:n="mainnet"}){let o=await be(i,[...new Set(e.map(s=>s.toString()))].map(s=>new tn(s))),r={};for(let s=0;s<e.length;s++){let l=o[s],m=e[s];if(!l)continue;let d=new Ve({key:m,state:Ve.deserialize(l.data)});r[m.toString()]=d,n==="devnet"?_e[m.toString()]=d:ve[m.toString()]=d}return r}var ve={},on=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(ve[e])return ve;let n=new tn(e),o=await i.getAccountInfo(n);return o&&(ve[e]=new Ve({key:n,state:Ve.deserialize(o.data)})),ve},_e={},rn=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(_e[e])return _e;let n=new tn(e),o=await i.getAccountInfo(n);return o&&(_e[e]=new Ve({key:n,state:Ve.deserialize(o.data)})),_e};var Bt=2e3,xt=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 Zi.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=e==null?void 0:e[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:o}=gt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Qi.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new Ee(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(W.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:o=[],instructionTypes:r=[],endInstructionTypes:s=[],lookupTableAddress:l=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...r),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...l.filter(m=>m!==Ee.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(D(L({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new ot;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(r=>r.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 r=>{var b;let{recentBlockHash:s,skipPreflight:l=!0,sendAndConfirm:m,notSendToRpc:d}=r||{},y=s!=null?s:await Le(this.connection,this.blockhashCommitment);if(n.recentBlockhash=y,this.signers.length&&n.sign(...this.signers),he([n]),(b=this.owner)!=null&&b.isKeyPair)return{txId:m?await an(this.connection,n,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:l}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:l}),signedTx:n};if(this.signAllTransactions){let g=await this.signAllTransactions([n]);if(this.signers.length)for(let T of g)try{T.sign(...this.signers)}catch{}return{txId:d?"":await this.connection.sendRawTransaction(g[0].serialize(),{skipPreflight:l}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var y;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:r}=this.build(o),s=n.filter(b=>b.transaction.instructions.length>0),l=[r,...s.map(b=>b.transaction)],m=[this.signers,...s.map(b=>b.signers)],d=[...this.instructionTypes,...s.map(b=>b.instructionTypes).flat()];return(y=this.owner)!=null&&y.signer&&m.forEach(b=>{b.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:l,signers:m,instructionTypes:d,execute:async b=>{var K;let{sequentially:g,onTxUpdate:T,skipTxCount:w=0,recentBlockHash:k,skipPreflight:h=!0}=b||{},I=k!=null?k:await Le(this.connection,this.blockhashCommitment);if((K=this.owner)!=null&&K.isKeyPair){if(g){let B=[],R=0;for(let F of l){if(++R,R<=w)continue;let P=await an(this.connection,F,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});B.push(P)}return{txIds:B,signedTxs:l}}return{txIds:await await Promise.all(l.map(async B=>(B.recentBlockhash=I,await this.connection.sendRawTransaction(B.serialize(),{skipPreflight:h})))),signedTxs:l}}if(this.signAllTransactions){let B=l.map((F,P)=>(F.recentBlockhash=I,m[P].length&&F.sign(...m[P]),F));he(B);let R=await this.signAllTransactions(B);if(g){let F=0,P=[],x=async()=>{if(!R[F])return;let S=await this.connection.sendRawTransaction(R[F].serialize(),{skipPreflight:h});P.push({txId:S,status:"sent",signedTx:R[F]}),T==null||T([...P]),F++;let O=!1,N=null,_=null,ie=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let q=P.findIndex($=>$.txId===S);if(q>-1){if(P[q].status==="error"||P[q].status==="success")return;P[q].status=U.err?"error":"success"}T==null||T([...P]),U.err||x()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(O){clearInterval(N);return}try{let q=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});q&&(O=!0,clearInterval(N),ie({err:((U=q.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",S))}catch(q){O=!0,clearInterval(N),console.error("getTransaction timeout:",q,S)}},Bt)),_=this.connection.onSignature(S,U=>{if(O){this.connection.removeSignatureListener(_);return}O=!0,ie(U)},"confirmed"),this.connection.getSignatureStatus(S)};return await x(),{txIds:P.map(S=>S.txId),signedTxs:R}}else{let F=[];for(let P=0;P<R.length;P+=1){let x=await this.connection.sendRawTransaction(R[P].serialize(),{skipPreflight:h});F.push(x)}return{txIds:F,signedTxs:R}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:n,extInfo:o}){return n===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var h;let k=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:r,recentBlockhash:s}=k,l=se(k,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),m=L(L({},this.cluster==="devnet"?await rn(this.connection):await on(this.connection)),n),d=Array.from(new Set([...o,...this.lookupTableAddress])),y=[];for(let I of d)m[I]===void 0&&y.push(new Ee(I));let b=await nn({connection:this.connection,address:y});for(let[I,K]of Object.entries(b))m[I]=K;let g=r?Ee.default.toBase58():s!=null?s:await Le(this.connection,this.blockhashCommitment),T=new it({payerKey:this.feePayer,recentBlockhash:g,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(m));((h=this.owner)==null?void 0:h.signer)&&!this.signers.some(I=>I.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new rt(T);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async I=>{var F;let{skipPreflight:K=!0,sendAndConfirm:B,notSendToRpc:R}=I||{};if(he([w]),(F=this.owner)!=null&&F.isKeyPair){let P=await this.connection.sendTransaction(w,{skipPreflight:K});return B&&await Pt(this.connection,P),{txId:P,signedTx:w}}if(this.signAllTransactions){let P=await this.signAllTransactions([w]);if(this.signers.length)for(let x of P)try{x.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(P[0],{skipPreflight:K}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:l||{}}}async buildV0MultiTx(e){var y;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:r}=await this.buildV0(o),s=n.filter(b=>b.builder.instructions.length>0),l=[r,...s.map(b=>b.transaction)],m=[this.signers,...s.map(b=>b.signers)],d=[...this.instructionTypes,...s.map(b=>b.instructionTypes).flat()];return(y=this.owner)!=null&&y.signer&&m.forEach(b=>{b.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),l.forEach(async(b,g)=>{b.sign(m[g])}),{builder:this,transactions:l,signers:m,instructionTypes:d,buildProps:o,execute:async b=>{var h;let{sequentially:g,onTxUpdate:T,recentBlockHash:w,skipPreflight:k=!0}=b||{};if(w&&l.forEach(I=>I.message.recentBlockhash=w),he(l),(h=this.owner)!=null&&h.isKeyPair){if(g){let I=[];for(let K of l){let B=await this.connection.sendTransaction(K,{skipPreflight:k});await Pt(this.connection,B),I.push(B)}return{txIds:I,signedTxs:l}}return{txIds:await Promise.all(l.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:k}))),signedTxs:l}}if(this.signAllTransactions){let I=await this.signAllTransactions(l);if(g){let K=0,B=[],R=async()=>{if(!I[K])return;let F=await this.connection.sendTransaction(I[K],{skipPreflight:k});B.push({txId:F,status:"sent",signedTx:I[K]}),T==null||T([...B]),K++;let P=!1,x=null,S=null,O=N=>{x!==null&&clearInterval(x),S!==null&&this.connection.removeSignatureListener(S);let _=B.findIndex(ie=>ie.txId===F);if(_>-1){if(B[_].status==="error"||B[_].status==="success")return;B[_].status=N.err?"error":"success"}T==null||T([...B]),N.err||R()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var N;if(P){clearInterval(x);return}try{let _=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(P=!0,clearInterval(x),O({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",F))}catch(_){P=!0,clearInterval(x),console.error("getTransaction timeout:",_,F)}},Bt)),S=this.connection.onSignature(F,N=>{if(P){this.connection.removeSignatureListener(S);return}P=!0,O(N)},"confirmed"),this.connection.getSignatureStatus(F)};return R(),{txIds:[],signedTxs:I}}else{let K=[];for(let B=0;B<I.length;B+=1){let R=await this.connection.sendTransaction(I[B],{skipPreflight:k});K.push(R)}return{txIds:K,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var T;let g=e||{},{splitIns:n=[],computeBudgetConfig:o}=g,r=se(g,["splitIns","computeBudgetConfig"]),s=o?gt(o):{instructions:[],instructionTypes:[]},l=this.signers.reduce((w,k)=>D(L({},w),{[k.publicKey.toBase58()]:k}),{}),m=[],d=[],y=[],b=0;if(this.allInstructions.forEach(w=>{let k=[...y,w],h=o?[...s.instructions,...k]:k,K=[...new Set(k.map(B=>B.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(B=>new Ee(B));if(w!==n[b]&&y.length<12&&(Je({instructions:h,payer:this.feePayer,signers:K})||Je({instructions:k,payer:this.feePayer,signers:K})))y.push(w);else{if(y.length===0)throw Error("item ins too big");b+=w===n[b]?1:0,Je({instructions:o?[...s.instructions,...y]:[...y],payer:this.feePayer,signers:K})?m.push(new ot().add(...s.instructions,...y)):m.push(new ot().add(...y)),d.push(Array.from(new Set(y.map(B=>B.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(B=>l[B]).filter(B=>B!==void 0)),y=[w]}}),y.length>0){let k=[...new Set(y.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(h=>l[h]).filter(h=>h!==void 0);Je({instructions:o?[...s.instructions,...y]:[...y],payer:this.feePayer,signers:k.map(h=>h.publicKey)})?m.push(new ot().add(...s.instructions,...y)):m.push(new ot().add(...y)),d.push(k)}return m.forEach(w=>w.feePayer=this.feePayer),(T=this.owner)!=null&&T.signer&&d.forEach(w=>{w.some(k=>k.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:m,signers:d,instructionTypes:this.instructionTypes,execute:async w=>{var F;let{sequentially:k,onTxUpdate:h,skipTxCount:I=0,recentBlockHash:K,skipPreflight:B=!0}=w||{},R=K!=null?K:await Le(this.connection,this.blockhashCommitment);if(m.forEach(async(P,x)=>{P.recentBlockhash=R,d[x].length&&P.sign(...d[x])}),he(m),(F=this.owner)!=null&&F.isKeyPair){if(k){let P=0,x=[];for(let S of m){if(++P,P<=I){x.push("tx skipped");continue}let O=await an(this.connection,S,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:B});x.push(O)}return{txIds:x,signedTxs:m}}return{txIds:await Promise.all(m.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:B}))),signedTxs:m}}if(this.signAllTransactions){let P=await this.signAllTransactions(m.slice(I,m.length)),x=[...m.slice(0,I),...P];if(k){let S=0,O=[],N=async()=>{if(!x[S])return;S<I&&(O.push({txId:"",status:"success",signedTx:x[S]}),h==null||h([...O]),S++,N());let _=await this.connection.sendRawTransaction(x[S].serialize(),{skipPreflight:B});O.push({txId:_,status:"sent",signedTx:x[S]}),h==null||h([...O]),S++;let ie=!1,U=null,q=null,$=z=>{U!==null&&clearInterval(U),q!==null&&this.connection.removeSignatureListener(q);let ne=O.findIndex(fe=>fe.txId===_);if(ne>-1){if(O[ne].status==="error"||O[ne].status==="success")return;O[ne].status=z.err?"error":"success"}h==null||h([...O]),z.err||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(ie){clearInterval(U);return}try{let ne=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});ne&&(ie=!0,clearInterval(U),$({err:((z=ne.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(ne){ie=!0,clearInterval(U),console.error("getTransaction timeout:",ne,_)}},Bt)),q=this.connection.onSignature(_,z=>{if(ie){this.connection.removeSignatureListener(q);return}ie=!0,$(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:O.map(_=>_.txId),signedTxs:x}}else{let S=[];for(let O=0;O<x.length;O+=1){let N=await this.connection.sendRawTransaction(x[O].serialize(),{skipPreflight:B});S.push(N)}return{txIds:S,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var F;let R=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:r={},lookupTableAddress:s=[],insCountLimit:l=12}=R,m=se(R,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),d=L(L({},this.cluster==="devnet"?await rn(this.connection):await on(this.connection)),r),y=Array.from(new Set([...this.lookupTableAddress,...s])),b=[];for(let P of y)d[P]===void 0&&b.push(new Ee(P));let g=await nn({connection:this.connection,address:b});for(let[P,x]of Object.entries(g))d[P]=x;let T=n?gt(n):{instructions:[],instructionTypes:[]},w=await Le(this.connection,this.blockhashCommitment),k=this.signers.reduce((P,x)=>D(L({},P),{[x.publicKey.toBase58()]:x}),{}),h=[],I=[],K=[],B=0;if(this.allInstructions.forEach(P=>{let x=[...K,P],S=n?[...T.instructions,...x]:x;if(P!==o[B]&&K.length<l&&(et({instructions:S,payer:this.feePayer,lookupTableAddressAccount:d})||et({instructions:x,payer:this.feePayer,lookupTableAddressAccount:d})))K.push(P);else{if(K.length===0)throw Error("item ins too big");B+=P===o[B]?1:0;let O={};for(let N of[...new Set(y)])d[N]!==void 0&&(O[N]=d[N]);if(n&&et({instructions:[...T.instructions,...K],payer:this.feePayer,lookupTableAddressAccount:d,recentBlockhash:w})){let N=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...T.instructions,...K]}).compileToV0Message(Object.values(d));h.push(new rt(N))}else{let N=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...K]}).compileToV0Message(Object.values(d));h.push(new rt(N))}I.push(Array.from(new Set(K.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>k[N]).filter(N=>N!==void 0)),K=[P]}}),K.length>0){let x=[...new Set(K.map(S=>S.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(S=>k[S]).filter(S=>S!==void 0);if(n&&et({instructions:[...T.instructions,...K],payer:this.feePayer,lookupTableAddressAccount:d,recentBlockhash:w})){let S=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...T.instructions,...K]}).compileToV0Message(Object.values(d));h.push(new rt(S))}else{let S=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...K]}).compileToV0Message(Object.values(d));h.push(new rt(S))}I.push(x)}return(F=this.owner)!=null&&F.signer&&I.forEach(P=>{P.some(x=>x.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),h.forEach((P,x)=>{P.sign(I[x])}),{builder:this,transactions:h,buildProps:e,signers:I,instructionTypes:this.instructionTypes,execute:async P=>{var ie;let{sequentially:x,onTxUpdate:S,skipTxCount:O=0,recentBlockHash:N,skipPreflight:_=!0}=P||{};if(h.map(async(U,q)=>{I[q].length&&U.sign(I[q]),N&&(U.message.recentBlockhash=N)}),he(h),(ie=this.owner)!=null&&ie.isKeyPair){if(x){let U=0,q=[];for(let $ of h){if(++U,U<=O){console.log("skip tx: ",U),q.push("tx skipped");continue}let z=await this.connection.sendTransaction($,{skipPreflight:_});await Pt(this.connection,z),q.push(z)}return{txIds:q,signedTxs:h}}return{txIds:await Promise.all(h.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:_}))),signedTxs:h}}if(this.signAllTransactions){let U=await this.signAllTransactions(h.slice(O,h.length)),q=[...h.slice(0,O),...U];if(x){let $=0,z=[],ne=async()=>{if(!q[$])return;if($<O){z.push({txId:"",status:"success",signedTx:q[$]}),S==null||S([...z]),$++,ne();return}let fe=await this.connection.sendTransaction(q[$],{skipPreflight:_});z.push({txId:fe,status:"sent",signedTx:q[$]}),S==null||S([...z]),$++;let Ye=!1,Ce=null,lt=null,An=ke=>{Ce!==null&&clearInterval(Ce),lt!==null&&this.connection.removeSignatureListener(lt);let ye=z.findIndex(Mo=>Mo.txId===fe);if(ye>-1){if(z[ye].status==="error"||z[ye].status==="success")return;z[ye].status=ke.err?"error":"success"}S==null||S([...z]),ke.err||ne()};this.loopMultiTxStatus&&(Ce=setInterval(async()=>{var ke;if(Ye){clearInterval(Ce);return}try{let ye=await this.connection.getTransaction(fe,{commitment:"confirmed",maxSupportedTransactionVersion:0});ye&&(Ye=!0,clearInterval(Ce),An({err:((ke=ye.meta)==null?void 0:ke.err)||null}),console.log("tx status from getTransaction:",fe))}catch(ye){Ye=!0,clearInterval(Ce),console.error("getTransaction timeout:",ye,fe)}},Bt)),lt=this.connection.onSignature(fe,ke=>{if(Ye){this.connection.removeSignatureListener(lt);return}Ye=!0,An(ke)},"confirmed"),this.connection.getSignatureStatus(fe)};return ne(),{txIds:[],signedTxs:q}}else{let $=[];for(let z=0;z<q.length;z+=1){let ne=await this.connection.sendTransaction(q[z],{skipPreflight:_});$.push(ne)}return{txIds:$,signedTxs:q}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:m||{}}}};var sn=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),oe=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=V(n)}createTxBuilder(e){return this.scope.checkOwner(),new xt({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(sn(e))}logInfo(...e){this.logger.info(sn(e))}logAndCreateError(...e){let n=sn(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{ASSOCIATED_TOKEN_PROGRAM_ID as ny,TOKEN_2022_PROGRAM_ID as oy,TOKEN_PROGRAM_ID as iy}from"@solana/spl-token";import{Keypair as sy,PublicKey as uy,SystemProgram as ly,TransactionInstruction as my}from"@solana/web3.js";import py from"bn.js";import E from"bn.js";var De=new E(1).shln(64);var ji=new E(1).shln(128),un=new E(1).shln(64).subn(1),$i=new E(1).shln(128).subn(1);var We=new E("4295048016"),qe=new E("79226673521066979257578248091"),Ji=new E("59543866431248"),er=new E("184467440737095516"),tr=new E("15793534762490258745");var cn=60,ad=new E("18446743708227953217"),nr=[{bit:0,factor:new E("fffcb933bd6fb800",16)},{bit:1,factor:new E("fff97272373d4000",16)},{bit:2,factor:new E("fff2e50f5f657000",16)},{bit:3,factor:new E("ffe5caca7e10f000",16)},{bit:4,factor:new E("ffcb9843d60f7000",16)},{bit:5,factor:new E("ff973b41fa98e800",16)},{bit:6,factor:new E("ff2ea16466c9b000",16)},{bit:7,factor:new E("fe5dee046a9a3800",16)},{bit:8,factor:new E("fcbe86c7900bb000",16)},{bit:9,factor:new E("f987a7253ac65800",16)},{bit:10,factor:new E("f3392b0822bb6000",16)},{bit:11,factor:new E("e7159475a2caf000",16)},{bit:12,factor:new E("d097f3bdfd2f2000",16)},{bit:13,factor:new E("a9f746462d9f8000",16)},{bit:14,factor:new E("70d869a156f31c00",16)},{bit:15,factor:new E("31be135f97ed3200",16)},{bit:16,factor:new E("9aa508b5b85a500",16)},{bit:17,factor:new E("5d6af8dedc582c",16)},{bit:18,factor:new E("2216e584f5fa",16)}];var at=3,so=100;var uo=10,co=100,St=14;var Z=new E(0),Ue=new E(1),sd=new E(-1);var ud=new E("18446744073700000000");var or=f([v(8),p("bump"),H("index"),a("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),H("tickSpacing"),Y("fundFeeRate"),A(Y(),1),a("fundOwner"),A(t(),3)]),ir=f([Y("blockTimestamp"),Oe("tickCumulative"),A(t(),4)]),lo=f([v(8),ue("initialized"),t("recentEpoch"),H("observationIndex"),a("poolId"),A(ir,so,"observations"),A(t(),4)]),rr=f([H("filterPeriod"),H("decayPeriod"),H("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),de("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),A(p(),46)]),ar=f([p("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),M("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),a("mint"),a("vault"),a("creator"),M("growthGlobalX64")]),ln=f([v(8),p("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),H("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),de("tickCurrent"),Y(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),A(M(),4),p("status"),p("feeOn"),v(6),A(ar,at,"rewardInfos"),v(8*16,"tickArrayBitmap"),A(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),rr.replicate("dynamicFeeInfo"),A(t(),46)]),sr=f([M("growthInsideLastX64"),t("rewardAmountOwed")]),ur=f([v(8),p("bump"),a("nftMint"),a("poolId"),de("tickLower"),de("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),A(sr,at,"rewardInfos"),t("recentEpoch"),A(t(),7)]),dd=f([v(8),p("bump"),a("poolId"),de("tickLower"),de("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),A(M(),at,"rewardGrowthInside"),t("recentEpoch"),A(t(),7)]),cr=f([de("tick"),no("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),A(M(),at,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),M("unfilledRatioX64"),A(Y(),3)]),mo=f([v(8),a("poolId"),de("startTickIndex"),A(cr,cn,"ticks"),p("initializedTickCount"),t("recentEpoch"),A(p(),107)]),lr=f([v(8),p("bump"),A(a(),uo,"operationOwners"),A(a(),co,"whitelistMints")]),mr=f([v(8),a("poolId"),a("owner"),de("tick"),ue("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),M("unfilledRatioX64"),A(t(),4)]),po=f([v(8),a("poolId"),v(8*8*St,"positiveTickArrayBitmap"),v(8*8*St,"negativeTickArrayBitmap")]),pd=f([v(8),H("index"),H("filterPeriod"),H("decayPeriod"),H("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),A(t(),8)]),dr=f([v(8),a("wallet"),p("nonceIndex"),t("orderNonce"),A(t(),4)]),fd=f([t(),p("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),A(t(),8)]),pr=f([v(8),p("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),t("recentEpoch"),A(t(),8)]);import gd from"bn.js";var Kd=Buffer.from("amm_config","utf8"),yr=Buffer.from("pool","utf8"),br=Buffer.from("pool_vault","utf8"),Cd=Buffer.from("pool_reward_vault","utf8"),Rd=Buffer.from("position","utf8"),Ld=Buffer.from("tick_array","utf8"),Od=Buffer.from("operation","utf8"),Nd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Md=Buffer.from("observation","utf8"),Fd=Buffer.from("support_mint","utf8"),vd=Buffer.from("dynamic_fee_config","utf8"),_d=Buffer.from("permission","utf8");var Vd=Buffer.from("locked_position","utf8");import{sha256 as Lr}from"js-sha256";import gr from"bn.js";import qd from"decimal.js";var Gd=new gr(1).shln(256).subn(1);import up from"bn.js";import jd from"bn.js";import Jd from"decimal.js";import pp from"bn.js";import yp from"decimal.js";import{PublicKey as tf}from"@solana/web3.js";import of from"bn.js";import{TOKEN_2022_PROGRAM_ID as df,TOKEN_PROGRAM_ID as pf}from"@solana/spl-token";import gf from"decimal.js";import Gp from"bn.js";import Lp from"bn.js";import Kf from"bn.js";function j(i){let e=`global:${i}`;return Buffer.from(Lr.digest(e)).slice(0,8)}lo.span;var ky=V("Raydium_Clmm"),Ty={createPool:j("create_pool"),createCustomizablePool:j("create_customizable_pool"),createPermissionedPool:j("create_permissioned_pool"),openPositionV2:j("open_position_v2"),openPositionWithToken22Nft:j("open_position_with_token22_nft"),closePosition:j("close_position"),increaseLiquidityV2:j("increase_liquidity_v2"),decreaseLiquidityV2:j("decrease_liquidity_v2"),initializeReward:j("initialize_reward"),setRewardParams:j("set_reward_params"),updateRewardInfos:j("update_reward_infos"),collectRemainingRewards:j("collect_remaining_rewards"),swapV2:j("swap_v2"),openLimitOrder:j("open_limit_order"),increaseLimitOrder:j("increase_limit_order"),decreaseLimitOrder:j("decrease_limit_order"),settleLimitOrder:j("settle_limit_order"),closeLimitOrder:j("close_limit_order")};import{PublicKey as fn}from"@solana/web3.js";var Fr=f([p("instruction")]),vr=f([p("instruction")]),_r=f([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t("rewardPerSecond"),M("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),t("rewardType"),A(t(),15,"padding")]),Vr=f([t("state"),t("nonce"),a("lpVault"),a("rewardVault"),a(),a(),t(),t(),t("totalReward"),M("perShareReward"),t("lastSlot"),t("perSlotReward")]),Er=f([t("state"),t("nonce"),a("lpVault"),a("rewardVaultA"),t("totalRewardA"),M("perShareRewardA"),t("perSlotRewardA"),p("option"),a("rewardVaultB"),v(7),t("totalRewardB"),M("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),a()]),Dr=f([t(),t("state"),t("nonce"),t("validRewardTokenNum"),M("rewardMultiplier"),t("rewardPeriodMax"),t("rewardPeriodMin"),t("rewardPeriodExtend"),a("lpMint"),a("lpVault"),A(_r,5,"rewardInfos"),a("creator"),a(),A(t(),32,"padding")]),Wr=new Proxy(Vr,{get(i,e,n){return e==="decode"?(...o)=>{let r=i.decode(...o);return D(L({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,n)}}),qr=new Proxy(Er,{get(i,e,n){return e==="decode"?(...o)=>{let r=i.decode(...o);return D(L({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,n)}}),wo=new Proxy(Dr,{get(i,e,n){return e==="decode"?(...o)=>{let r=i.decode(...o);return D(L({},r),{version:6,rewardInfos:r.rewardInfos.map(s=>{var l;return D(L({},s),{rewardType:((l=Object.entries(ct).find(m=>String(m[1])===s.rewardType.toString()))!=null?l:["Standard SPL"])[0]})})})}:Reflect.get(i,e,n)}}),Ur=f([t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),Gr=f([p("instruction"),t("nonce"),A(Ur,5,"rewardTimeInfo")]),zr=f([p("instruction"),t("rewardReopenTime"),t("rewardEndTime"),t("rewardPerSecond")]),Xr=f([p("instruction"),t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),kb=f([t("state"),a("id"),a("owner"),t("deposited"),A(t(),1,"rewardDebts")]),ko=f([t("state"),a("id"),a("owner"),t("deposited"),A(M(),1,"rewardDebts"),t(""),t("voteLockedBalance"),A(t(),15)]),Tb=f([t("state"),a("id"),a("owner"),t("deposited"),A(t(),2,"rewardDebts")]),Yr=f([t("state"),a("id"),a("owner"),t("deposited"),A(M(),2,"rewardDebts"),A(t(),17)]),Hr=f([t(),t("state"),a("id"),a("owner"),t("deposited"),A(M(),5,"rewardDebts"),A(t(),16)]),Qr=f([p("instruction"),t("amount")]),Zr=f([a("mint"),a("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),to("digitShift"),A(p(),7,"reserved1"),A(t(),7,"reserved2")]),jr=f([v(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),A(p(),32,"reserved1"),A(Zr,4,"votingMints"),Oe("timeOffset"),p("bump"),A(p(),7,"reserved2"),A(t(),11,"reserved3")]),$r=f([Oe("startTime"),Oe("endTime"),p("kind"),A(p(),15,"reserved")]),Jr=f([A($r,1,"lockup"),t("amountDeposited_native"),t("amountInitiallyLockedNative"),ue("isUsed"),ue("allowClawback"),p("votingMintConfigIdx"),A(p(),29,"reserved")]),ea=f([v(8),a("voterAuthority"),a("registrar"),A(Jr,32,"deposits"),p("voterBump"),p("voterWweightRecordBump"),A(p(),94,"reserved")]);import{NATIVE_MINT as Lb}from"@solana/spl-token";var Ob=V("Raydium_farm_config"),ta=new fn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),na=new fn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Nb=new fn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var ct={"Standard SPL":0,"Option tokens":1},To={[_n.toString()]:3,[Vn.toString()]:4,[En.toString()]:5,[zt.toString()]:6,[ge.FARM_PROGRAM_ID_V3.toString()]:3,[ge.FARM_PROGRAM_ID_V4.toString()]:4,[ge.FARM_PROGRAM_ID_V5.toString()]:5,[ge.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Pg,SystemProgram as Ag,SYSVAR_CLOCK_PUBKEY as wg,SYSVAR_RENT_PUBKEY as kg,TransactionInstruction as Tg}from"@solana/web3.js";import Ig from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as xg,createAssociatedTokenAccountIdempotentInstruction as Sg,TOKEN_PROGRAM_ID as Kg}from"@solana/spl-token";import Hb from"bn.js";import{PublicKey as Eb}from"@solana/web3.js";import Wb from"bn.js";var sg=V("Raydium.farm.util");var Eg=V("Raydium_farm_instruction"),Dg={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 SP from"bn.js";import{PublicKey as Fw}from"@solana/web3.js";import{AccountLayout as Vw,MintLayout as Ew,NATIVE_MINT as Dw,TOKEN_PROGRAM_ID as qw}from"@solana/spl-token";import RP from"bn.js";import Io from"bn.js";var la=new Io(25),ma=new Io(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as $P,TOKEN_PROGRAM_ID as JP}from"@solana/spl-token";import{PublicKey as tA,SystemProgram as nA,SYSVAR_RENT_PUBKEY as oA,TransactionInstruction as iA}from"@solana/web3.js";import dA from"bn.js";var da=f([p("instruction"),t("amountIn"),t("minAmountOut")]),pa=f([p("instruction"),t("maxAmountIn"),t("amountOut")]),HP=f([p("instruction"),p("nonce")]),fa=f([p("instruction"),p("nonce"),t("startTime")]),Bo=f([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"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),t("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),t("swapQuote2BaseFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("withdrawQueue"),a("lpVault"),a("owner"),t("lpReserve"),A(t(),3,"padding")]),QP=f([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"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),t("swapQuote2BaseFee"),t("swapBase2QuoteFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("modelDataAccount"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("owner"),A(t(),64,"padding")]),ya=f([p("instruction"),t("baseAmountIn"),t("quoteAmountIn"),t("fixedSide"),t("otherAmountMin")]),ba=f([p("instruction"),t("lpAmount"),t("baseAmountMin"),t("quoteAmountMin")]);var ga=f([t("fee")]);var yA=V("Raydium_liquidity_instruction");var Pa=5e4,Aa=f([t("x"),t("y"),t("price")]),AA=f([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),A(Aa,Pa,"DataElement")]);import{PublicKey as LA}from"@solana/web3.js";import NA from"decimal.js";import{TOKEN_PROGRAM_ID as FA}from"@solana/spl-token";import{PublicKey as hA}from"@solana/web3.js";var xA=V("Raydium_liquidity_serum");import uk from"bn.js";import lk from"decimal.js";import{TOKEN_PROGRAM_ID as uw}from"@solana/spl-token";import{PublicKey as lw}from"@solana/web3.js";import dw from"bn.js";import{SystemProgram as QA,SYSVAR_RENT_PUBKEY as ZA,Transaction as jA,TransactionInstruction as $A}from"@solana/web3.js";import{createInitializeAccountInstruction as ew,TOKEN_PROGRAM_ID as tw}from"@solana/spl-token";function wa(i="accountFlags"){let e=new It(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ka=f([v(5),wa("accountFlags"),a("ownAddress"),t("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),a("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),v(7)]);import{PublicKey as FT}from"@solana/web3.js";import{AccountLayout as _T,NATIVE_MINT as VT,TOKEN_2022_PROGRAM_ID as ET,TOKEN_PROGRAM_ID as DT,createAssociatedTokenAccountIdempotentInstruction as WT}from"@solana/spl-token";import Mk from"bn.js";import Ka from"bn.js";var wk=new Ka(0);import xk from"bn.js";import Ca from"bn.js";var Rt=new Ca(1e6);import QT from"bn.js";import jT from"decimal.js";import{PublicKey as $k,TransactionInstruction as Jk,Keypair as tT,SystemProgram as nT}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as iT,TOKEN_2022_PROGRAM_ID as rT,TOKEN_PROGRAM_ID as aT}from"@solana/spl-token";var Ek=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Dk=Buffer.from("amm_config","utf8"),Wk=Buffer.from("pool","utf8"),qk=Buffer.from("pool_lp_mint","utf8"),Uk=Buffer.from("pool_vault","utf8"),Gk=Buffer.from("observation","utf8"),zk=Buffer.from("permission","utf8"),Xk=Buffer.from("support_mint","utf8");var Yk=Buffer.from("locked_liquidity","utf8");var pT=V("Raydium_cpmm"),fT={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 Oa=f([v(8),p("bump"),ue("disableCreatePool"),H("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),a("protocolOwner"),a("fundOwner"),t("creatorFeeRate"),A(t(),15)]),xo=f([v(8),a("configId"),a("poolCreator"),a("vaultA"),a("vaultB"),a("mintLp"),a("mintA"),a("mintB"),a("mintProgramA"),a("mintProgramB"),a("observationId"),p("bump"),p("status"),p("lpDecimals"),p("mintDecimalA"),p("mintDecimalB"),t("lpAmount"),t("protocolFeesMintA"),t("protocolFeesMintB"),t("fundFeesMintA"),t("fundFeesMintB"),t("openTime"),t("epoch"),p("feeOn"),ue("enableCreatorFee"),A(p(),6),t("creatorFeesMintA"),t("creatorFeesMintB"),A(t(),28)]),gT=f([v(8),a("configId"),A(t(),30)]);import{PublicKey as qS,SystemProgram as US}from"@solana/web3.js";import{createTransferInstruction as zS,TOKEN_PROGRAM_ID as XS,TOKEN_2022_PROGRAM_ID as YS,createAssociatedTokenAccountIdempotentInstruction as HS,createSyncNativeInstruction as ZS,createTransferCheckedInstruction as jS}from"@solana/spl-token";import Qa from"bn.js";import eK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as sI,TOKEN_2022_PROGRAM_ID as uI,TOKEN_PROGRAM_ID as cI}from"@solana/spl-token";import{SystemProgram as pI,TransactionInstruction as fI}from"@solana/web3.js";import Ea from"bn.js";var Fa=f([t(),t("epoch"),p("curveType"),H("index"),t("migrateFee"),t("tradeFeeRate"),t("maxShareFeeRate"),t("minSupplyA"),t("maxLockRate"),t("minSellRateA"),t("minMigrateRateA"),t("minFundRaisingB"),a("mintB"),a("protocolFeeOwner"),a("migrateFeeOwner"),a("migrateToAmmWallet"),a("migrateToCpmmWallet"),A(t(),16)]),va=f([t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod"),t("startTime"),t("totalAllocatedShare")]),_a=f([t(),t("epoch"),p("bump"),p("status"),p("mintDecimalsA"),p("mintDecimalsB"),p("migrateType"),t("supply"),t("totalSellA"),t("virtualA"),t("virtualB"),t("realA"),t("realB"),t("totalFundRaisingB"),t("protocolFee"),t("platformFee"),t("migrateFee"),va.replicate("vestingSchedule"),a("configId"),a("platformId"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("creator"),p("mintProgramFlag"),p("cpmmCreatorFeeOn"),t("platformVestingShare"),A(p(),54)]),qh=f([t(),t("epoch"),a("poolId"),a("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),A(t(),8)]),Ko=f([p("migrateType"),p("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),Va=f([t("epoch"),p("index"),a("configId"),Ko.replicate("bondingCurveParam"),A(t(),50)]),Co=f([t(),t("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),t("platformScale"),t("creatorScale"),t("burnScale"),t("feeRate"),A(p(),64,"name"),A(p(),256,"web"),A(p(),256,"img"),a("cpConfigId"),t("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),t("platformVestingScale"),a("platformCpCreator"),p("restrictGlobalConfig"),A(p(),107),oo(Va,"platformCurve")]);var Yh=Buffer.from("vault_auth_seed","utf8"),Hh=Buffer.from("global_config","utf8"),Qh=Buffer.from("pool_vesting","utf8"),Zh=Buffer.from("platform_config","utf8"),jh=Buffer.from("platform_fee_vault_auth_seed","utf8"),$h=Buffer.from("creator_fee_vault_auth_seed","utf8"),Jh=Buffer.from("platform_global_access","utf8"),eI=Buffer.from("platform_allow_config","utf8");var PI={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var AI=new Ea("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as hI,TOKEN_PROGRAM_ID as II}from"@solana/spl-token";import KI from"bn.js";import RI from"decimal.js";import uB from"bn.js";import lB from"decimal.js";import vI from"bn.js";import VI from"decimal.js";import HI from"bn.js";import ZI from"decimal.js";import Oo from"bn.js";import bn from"decimal.js";var Nt=class{static _multipler(e){return new bn(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:o}){return new bn(e.toString()).div(this._Q64).mul(this._multipler(n)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:n,decimalB:o}){let r=e.mul(this._multipler(o)).div(this._multipler(n));return new Oo(r.mul(this._Q64).toFixed(0))}};Nt._Q64=new bn(new Oo(1).shln(64).toString());import{NATIVE_MINT as Px,TOKEN_2022_PROGRAM_ID as Ax,TOKEN_PROGRAM_ID as wx,createAssociatedTokenAccountIdempotentInstruction as Tx,createSyncNativeInstruction as hx,getTransferFeeConfig as Ix,unpackMint as Bx}from"@solana/spl-token";import Q from"bn.js";import{PublicKey as Xa,SystemProgram as Kx}from"@solana/web3.js";import Fx from"decimal.js";var vx={initPriceX64:new Q("515752397214619"),supply:new Q(1e15),totalSellA:new Q(7931e11),totalFundRaisingB:new Q(85e9),totalFundRaisingBUSD:new Q(125e8),totalLockedAmount:new Q("0"),cliffPeriod:new Q("0"),unlockPeriod:new Q("0"),decimals:6,virtualA:new Q("1073471847374405"),virtualB:new Q("30050573465"),realA:new Q(0),realB:new Q(0),protocolFee:new Q(0),platformId:new Xa("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Q(0),cliffPeriod:new Q(0),unlockPeriod:new Q(0),startTime:new Q(0),totalAllocatedShare:new Q(0)}},_x=new Q(1e4);var Ya={[Dn.toBase58()]:3};var Ha=f([v(5),v(8),a("ownAddress"),t("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),a("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),v(7)]);import{PublicKey as aS}from"@solana/web3.js";var mS=V("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as wS,TOKEN_2022_PROGRAM_ID as kS,TOKEN_PROGRAM_ID as TS}from"@solana/spl-token";import{PublicKey as IS,SystemProgram as BS,TransactionInstruction as xS}from"@solana/web3.js";import KS from"bn.js";var RK=new Qa(0);import{PublicKey as Za,Transaction as gn,TransactionInstruction as ja}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $a}from"@solana/spl-token";import No from"bn.js";var te=class extends oe{static getPdaPoolId(e,n){return le([te.SEED_CONFIG.pool.id,n.toBuffer()],e)}static getPdaOwnerId(e,n,o,r){return le([te.SEED_CONFIG.owner.id,n.toBuffer(),o.toBuffer(),Buffer.from(new No(r).toArray())],e)}static async getAllInfo({connection:e,programId:n,poolIds:o,wallet:r,chainTime:s}){if(o.length===0)return[];let l=o.map(b=>te.getPdaPoolId(n,b).publicKey),m=[];for(let b=0;b<te.VERSION_PROJECT.length;b++)m.push(...l.map(g=>te.getPdaOwnerId(n,g,r,b).publicKey));let d=await be(e,[...l,...m]),y=[];for(let b=0;b<d.length;b++){let g=Math.floor(b/o.length),T=b%o.length,w=l[T],k=m[b],h=d[T],I=d[o.length+b];if(!(h&&I)||h.data.length!==te.POOL_LAYOUT.span||I.data.length!==te.OWNER_LAYOUT.span)continue;let K=te.POOL_LAYOUT.decode(h.data),B=te.OWNER_LAYOUT.decode(I.data),R=K.openTime.toNumber(),F=K.endTime.toNumber(),P=B.tokenInfo.map(O=>O.debtAmount.gt(new No(0))).filter(O=>!O).length!==3,x=s>R&&s<F&&K.status===1,S=P&&x;y.push({programId:n,poolId:w,ammId:K.ammId,ownerAccountId:k,snapshotLpAmount:B.lpAmount,project:te.VERSION_PROJECT[g],openTime:R,endTime:F,canClaim:S,canClaimErrorType:P?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:K.tokenInfo.map((O,N)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:B.tokenInfo[N].debtAmount.add(B.tokenInfo[N].claimedAmount)}))})}return y}async makeClaimTransaction({poolInfo:e,ownerInfo:n,feePayer:o}){n.wallet||this.scope.checkOwner();let r=this.createTxBuilder(o),s=n.wallet||this.scope.ownerPubKey,l=[];for(let y of e.tokenInfo){let{account:b,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({mint:y.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:y.mintAddress.equals(ee.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!y.mintAddress.equals(ee.WSOL.mint),associatedOnly:y.mintAddress.equals(ee.WSOL.mint)?!1:n.associatedOnly});g&&r.addInstruction(g),l.push(b)}r.addInstruction({instructions:[te.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:s,ownerPda:e.ownerAccountId,claimAddress:l}})]});let{transaction:m,signers:d}=r.build();return[{transaction:m,signer:d}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:n,feePayer:o}){let r=this.createTxBuilder(o),s=n.wallet||this.scope.ownerPubKey,l={};for(let b of e){let g=[];for(let T of b.tokenInfo){let{account:w,instructionParams:k}=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:n.associatedOnly});k&&r.addInstruction(k),w&&(l[T.mintAddress.toString()]=w,g.push(w))}r.addInstruction({instructions:[te.makeClaimInstruction({programId:b.programId,poolInfo:b,ownerInfo:{wallet:s,ownerPda:b.ownerAccountId,claimAddress:g}})]})}let{transaction:m,signers:d}=r.build(),y=r.allInstructions;return Gt(y,[s,...d.map(b=>b.publicKey)])?[{transaction:m,signer:d}]:[{transaction:new gn().add(...y.slice(0,r.AllTxData.instructions.length-1)),signer:d},{transaction:new gn().add(...y.slice(r.AllTxData.instructions.length-1)),signer:[]},{transaction:new gn().add(...r.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:n,ownerInfo:o}){let r=f([]),s=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:n.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(d=>({pubkey:d,isSigner:!1,isWritable:!0})),...n.tokenInfo.map(({mintVault:d})=>({pubkey:d,isSigner:!1,isWritable:!0})),{pubkey:$a,isSigner:!1,isWritable:!1}],l=Buffer.alloc(r.span);r.encode({},l);let m=Buffer.from([10,66,208,184,161,6,191,98,...l]);return new ja({keys:s,programId:e,data:m})}},pe=te;pe.CLAIMED_NUM=3,pe.POOL_LAYOUT=f([v(8),p("bump"),p("status"),t("openTime"),t("endTime"),a("ammId"),A(f([p("mintDecimals"),a("mintAddress"),a("mintVault"),t("perLpLoss"),t("totalClaimedAmount")]),te.CLAIMED_NUM,"tokenInfo"),A(t(),10,"padding")]),pe.OWNER_LAYOUT=f([v(8),p("bump"),p("version"),a("poolId"),a("owner"),t("lpAmount"),A(f([a("mintAddress"),t("debtAmount"),t("claimedAmount")]),te.CLAIMED_NUM,"tokenInfo"),A(t(),4,"padding")]),pe.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Za(e)),pe.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},pe.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as YK}from"@solana/web3.js";import{getTransferFeeConfig as QK,MintLayout as ZK,TOKEN_2022_PROGRAM_ID as jK,TOKEN_PROGRAM_ID as $K,unpackMint as JK}from"@solana/spl-token";var xR=new Ke(2),SR=new Ke(3),KR=new Ke(5),Qo=new Ke(10),CR=new Ke(100),RR=new Ke(1e3),LR=new Ke(1e4);function Vt(i,e=1,n=[]){let o=[...i];if(e<=0)return n;for(;o.length;)n.push(o.splice(0,e));return n}import{AccountLayout as Xe,createAssociatedTokenAccountIdempotentInstruction as Pn,TOKEN_PROGRAM_ID as we,TOKEN_2022_PROGRAM_ID as es}from"@solana/spl-token";var Mt=class extends oe{constructor(n){super(n);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;this._notSubscribeAccountChange=!1;this._accountFetchTime=0;let{tokenAccounts:o,tokenAccountRawInfos:r,notSubscribeAccountChange:s}=n;this._tokenAccounts=o||[],this._tokenAccountRawInfos=r||[],this._notSubscribeAccountChange=s!=null?s:!0,this._clientOwnedToken=!!(o||r)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}set notSubscribeAccountChange(n){this._notSubscribeAccountChange=n}updateTokenAccount({tokenAccounts:n,tokenAccountRawInfos:o}){return n&&(this._tokenAccounts=n),o&&(this._tokenAccountRawInfos=o),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(n){return this._accountListener.push(n),this}removeAccountChangeListener(n){return this._accountListener=this._accountListener.filter(o=>o!==n),this}getAssociatedTokenAccount(n,o){return ae(this.scope.ownerPubKey,n,o).publicKey}resetTokenAccounts(){this._clientOwnedToken||(this._tokenAccounts=[],this._tokenAccountRawInfos=[])}async fetchWalletTokenAccounts(n){if(this._clientOwnedToken||!(n!=null&&n.forceUpdate)&&this._tokenAccounts.length&&Date.now()-this._accountFetchTime<(this._notSubscribeAccountChange?1e3*5:1e3*60*3))return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let r=L(L({},{}),n),[s,l,m]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:we},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:es},r.commitment)]),{tokenAccounts:d,tokenAccountRawInfos:y}=ro({owner:this.scope.ownerPubKey,solAccountResp:s,tokenAccountResp:{context:l.context,value:[...l.value,...m.value]}});return this._tokenAccounts=d,this._tokenAccountRawInfos=y,this._accountFetchTime=Date.now(),this._notSubscribeAccountChange||(this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>{this.fetchWalletTokenAccounts({forceUpdate:!0}),this._accountListener.forEach(b=>b({tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos}))},{commitment:n==null?void 0:n.commitment})),{tokenAccounts:d,tokenAccountRawInfos:y}}clearAccountChangeCkb(){this._accountChangeListenerId!==void 0&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId)}async getCreatedTokenAccount({mint:n,programId:o=we,associatedOnly:r=!0}){await this.fetchWalletTokenAccounts();let s=this._tokenAccounts.filter(({mint:m})=>m==null?void 0:m.equals(n)).sort((m,d)=>m.amount.lt(d.amount)?1:-1),l=this.getAssociatedTokenAccount(n,o);for(let m of s){let{publicKey:d}=m;if(d&&(!r||r&&l.equals(d)))return d}}async getOrCreateTokenAccount(n){var h,I,K,B;await this.fetchWalletTokenAccounts();let{mint:o,createInfo:r,associatedOnly:s,owner:l,notUseTokenAccount:m=!1,skipCloseAccount:d=!1,checkCreateATAOwner:y=!1,assignSeed:b}=n,g=new Ft(n.tokenProgram||we),T=this.getAssociatedTokenAccount(o,new Ft(g)),w=(m?[]:this.tokenAccountRawInfos).filter(R=>R.accountInfo.mint.equals(o)&&(!s||R.pubkey.equals(T))).sort((R,F)=>R.accountInfo.amount.lt(F.accountInfo.amount)?1:-1);if(r===void 0||w.length>0)return w.length>0?{account:w[0].pubkey}:{};let k={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(s){let R=Pn(r.payer||l,T,l,o,g),F=this.tokenAccountRawInfos.find(P=>P.pubkey.equals(T));if(y){let P=await this.scope.connection.getAccountInfo(T);if(P===null)(h=k.instructions)==null||h.push(R),k.instructionTypes.push(W.CreateATA);else if(!(P.owner.equals(g)&&Xe.decode(P.data).mint.equals(o)&&Xe.decode(P.data).owner.equals(l)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${T.toString()}`)}else F===void 0&&(k.instructions.push(R),k.instructionTypes.push(W.CreateATA));if(o.equals(re)&&r.amount){let P=await nt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(I=r.amount)!=null?I:0,skipCloseAccount:d});k.instructions.push(...P.instructions||[]),k.endInstructions.push(...P.endInstructions||[]),k.instructionTypes.push(...P.instructionTypes||[]),k.endInstructionTypes.push(...P.endInstructionTypes||[]),r.amount&&(k.instructions.push(ao({source:P.addresses.newAccount,destination:T,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:we})),k.instructionTypes.push(W.TransferAmount))}return!d&&F===void 0&&(k.endInstructions.push(Me({owner:l,payer:r.payer||l,tokenAccount:T,programId:g})),k.endInstructionTypes.push(W.CloseAccount)),{account:T,instructionParams:k}}else{let R=xe({fromPublicKey:l,programId:g,assignSeed:b}),F=await this.scope.connection.getMinimumBalanceForRentExemption(Xe.span),P=Ja.createAccountWithSeed({fromPubkey:l,basePubkey:l,seed:R.seed,newAccountPubkey:R.publicKey,lamports:F+Number((B=(K=r.amount)==null?void 0:K.toString())!=null?B:0),space:Xe.span,programId:g});return k.instructions.push(P,en({mint:o,tokenAccount:R.publicKey,owner:this.scope.ownerPubKey,programId:g})),k.instructionTypes.push(W.CreateAccount),k.instructionTypes.push(W.InitAccount),d||(k.endInstructions.push(Me({owner:l,payer:r.payer||l,tokenAccount:R.publicKey,programId:g})),k.endInstructionTypes.push(W.CloseAccount)),{account:R.publicKey,instructionParams:k}}}async checkOrCreateAta({mint:n,programId:o=we,autoUnwrapWSOLToSOL:r}){var d;await this.fetchWalletTokenAccounts();let s=(d=this.scope.account.tokenAccounts.find(({mint:y})=>(y==null?void 0:y.toBase58())===n.toBase58()))==null?void 0:d.publicKey,l=this.scope.ownerPubKey,m={};if(!s){let y=this.getAssociatedTokenAccount(n,o),b=await Pn(l,y,l,n,o);m.instructions=[b],m.instructionTypes=[W.CreateATA],s=y}return r&&re.toBase58()===n.toBase58()&&(m.endInstructions=[Me({owner:l,payer:l,tokenAccount:s,programId:o})],m.endInstructionTypes=[W.CloseAccount]),{pubKey:s,newInstructions:m}}async handleTokenAccount(n){let{side:o,amount:r,mint:s,programId:l=we,tokenAccount:m,payer:d=this.scope.ownerPubKey,bypassAssociatedCheck:y,skipCloseAccount:b,checkCreateATAOwner:g}=n,T=this.getAssociatedTokenAccount(s,l);if(new Ft(re).equals(s)){let w=await nt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:d,amount:r,skipCloseAccount:b});return L({tokenAccount:w.addresses.newAccount},w)}else if(!m||o==="out"&&!T.equals(m)&&!y){let w=[],k=Pn(this.scope.ownerPubKey,T,this.scope.ownerPubKey,s,l);if(g){let h=await this.scope.connection.getAccountInfo(T);if(h===null)w.push(k);else if(!(h.owner.equals(we)&&Xe.decode(h.data).mint.equals(s)&&Xe.decode(h.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${s.toString()}, ata: ${T.toString()}`)}else w.push(k);return{tokenAccount:T,instructions:w,instructionTypes:[W.CreateATA]}}return{tokenAccount:m}}async processTokenAccount(n){let{mint:o,programId:r=we,amount:s,useSOLBalance:l,handleTokenAccount:m,feePayer:d}=n,y,b=this.createTxBuilder(d);if(o.equals(new Ft(re))&&l){let g=await this.handleTokenAccount({side:"in",amount:s||0,mint:o,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:w}=g,k=se(g,["tokenAccount"]);y=w,b.addInstruction(k)}else if(y=await this.getCreatedTokenAccount({mint:o,associatedOnly:!1,programId:r}),!y&&m){let T=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:o,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:w}=T,k=se(T,["tokenAccount"]);y=w,b.addInstruction(k)}return L({tokenAccount:y},b.AllTxData)}};export{Mt as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=account.mjs.map