UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 97.4 kB
var ei=Object.defineProperty,ti=Object.defineProperties;var ni=Object.getOwnPropertyDescriptors;var yt=Object.getOwnPropertySymbols;var Vn=Object.prototype.hasOwnProperty,En=Object.prototype.propertyIsEnumerable;var _n=(o,e,t)=>e in o?ei(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,N=(o,e)=>{for(var t in e||(e={}))Vn.call(e,t)&&_n(o,t,e[t]);if(yt)for(var t of yt(e))En.call(e,t)&&_n(o,t,e[t]);return o},W=(o,e)=>ti(o,ni(e));var Ae=(o,e)=>{var t={};for(var i in o)Vn.call(o,i)&&e.indexOf(i)<0&&(t[i]=o[i]);if(o!=null&&yt)for(var i of yt(o))e.indexOf(i)<0&&En.call(o,i)&&(t[i]=o[i]);return t};import{PublicKey as fi}from"@solana/web3.js";import Gn,{isBN as zn}from"bn.js";import{bits as oi,BitStructure as hs,blob as ii,Blob as Is,cstr as Bs,f32 as Ss,f32be as Ks,f64 as xs,f64be as Cs,greedy as Rs,Layout as ri,ns64 as Ls,ns64be as Os,nu64 as Ns,nu64be as Ms,offset as ai,s16 as Fs,s16be as vs,s24 as _s,s24be as Vs,s32 as si,s32be as Es,s40 as Ds,s40be as Ws,s48 as qs,s48be as Us,s8 as Gs,seq as ui,struct as zs,Structure as ci,u16 as li,u16be as Xs,u24 as Ys,u24be as Hs,u32 as mi,u32be as Qs,u40 as Zs,u40be as $s,u48 as js,u48be as Js,u8 as di,UInt as pi,union as eu,Union as tu,unionLayoutDiscriminator as nu,utf8 as ou}from"@solana/buffer-layout";var bt=ri,Dn=ci;var Et=pi;var Wn=di,$=li;var gt=mi;var be=si;var qn=ui;var _=ii;var Dt=oi,Un=ai;var Re=class extends bt{constructor(t,i,r){super(t,r);this.blob=_(t),this.signed=i}decode(t,i=0){let r=new Gn(this.blob.decode(t,i),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,i,r=0){return typeof t=="number"&&(t=new Gn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),i,r)}},Pt=class extends bt{constructor(t){super(8,t);this._lower=Dt(gt(),!1),this._upper=Dt(gt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,i=0){let r=this._lower.decode(t,i),s=this._upper.decode(t,i+this._lower.span);return N(N({},r),s)}encode(t,i,r=0){return this._lower.encode(t,i,r)+this._upper.encode(t,i,r+this._lower.span)}};function b(o){return new Et(1,o)}function H(o){return new Et(4,o)}function n(o){return new Re(8,!1,o)}function M(o){return new Re(16,!1,o)}function Xn(o){return new Re(1,!0,o)}function Ee(o){return new Re(8,!0,o)}function Yn(o){return new Re(16,!0,o)}var Je=class extends bt{constructor(t,i,r,s){super(t.span,s);this.layout=t,this.decoder=i,this.encoder=r}decode(t,i){return this.decoder(this.layout.decode(t,i))}encode(t,i,r){return this.layout.encode(this.encoder(t),i,r)}getSpan(t,i){return this.layout.getSpan(t,i)}};function a(o){return new Je(_(32),e=>new fi(e),e=>e.toBuffer(),o)}function pe(o){return new Je(Wn(),yi,bi,o)}function yi(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function bi(o){return o?1:0}function qt(o,e){let t=gt("length"),i=A([t,h(o,Un(t,-t.span),"values")]);return new Je(i,({values:r})=>r,r=>({values:r}),e)}var Wt=class extends Dn{decode(e,t){return super.decode(e,t)}};function A(o,e,t){return new Wt(o,e,t)}function h(o,e,t){let i,r=typeof e=="number"?e:zn(e)?e.toNumber():new Proxy(e,{get(s,u){if(!i){let d=Reflect.get(s,"count");i=zn(d)?d.toNumber():d,Reflect.set(s,"count",i)}return Reflect.get(s,u)},set(s,u,d){return u==="count"&&(i=d),Reflect.set(s,u,d)}});return qn(o,r,t)}import{PublicKey as Xt}from"@solana/web3.js";import{get as Hn,set as gi}from"lodash";var Ut=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(i=>typeof i=="object"?JSON.stringify(i):i).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Qn={},Pi={};function q(o){let e=Hn(Qn,o);if(!e){let t=Hn(Pi,o);e=new Ut({name:o,logLevel:t}),gi(Qn,o,e)}return e}import{PublicKey as R}from"@solana/web3.js";var Zn=new R("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),$n=new R("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),jn=new R("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Gt=new R("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),bu=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ai=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Jn=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),eo=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),gu=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),wi=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),to=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ki=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ti=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),no=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pu=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),hi=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),zt=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ii=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Au=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Bi=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Si=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ki=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),wu=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),ku=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Tu=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),hu=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Iu=new R("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Se={OPEN_BOOK_PROGRAM:new R("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new R("Ray1111111111111111111111111111111111111111"),AMM_V4:new R("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new R("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new R("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new R("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new R("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new R("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new R("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new R("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:R.default,Router:new R("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new R("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new R("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new R("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new R("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new R("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new R("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new R("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new R("Ray1111111111111111111111111111111111111111")};import{NATIVE_MINT as xi}from"@solana/spl-token";var Nu=q("Raydium_farm_config"),Ci=new Xt("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ri=new Xt("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Mu=xi,Fu=new Xt("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),Yt={3:io,5:ro,6:Qt},Ht={3:et,5:ao,6:so},Li=o=>[3,4,5,6].indexOf(o)!==-1,Oi=o=>{var u;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:i}=o,r=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(i)}`,s={3:()=>{if(t.length!==1||i.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${r}`},5:()=>{if(t.length!==i.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!i.length||t.length!==i.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(u=s[e])==null?void 0:u.call(s)},Le={"Standard SPL":0,"Option tokens":1},oo={[Zn.toString()]:3,[$n.toString()]:4,[jn.toString()]:5,[Gt.toString()]:6,[Se.FARM_PROGRAM_ID_V3.toString()]:3,[Se.FARM_PROGRAM_ID_V4.toString()]:4,[Se.FARM_PROGRAM_ID_V5.toString()]:5,[Se.FARM_PROGRAM_ID_V6.toString()]:6};var Zt=A([b("instruction")]),$t=A([b("instruction")]),Ni=A([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),M("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),h(n(),15,"padding")]),Mi=A([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),M("perShareReward"),n("lastSlot"),n("perSlotReward")]),Fi=A([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),M("perShareRewardA"),n("perSlotRewardA"),b("option"),a("rewardVaultB"),_(7),n("totalRewardB"),M("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),vi=A([n(),n("state"),n("nonce"),n("validRewardTokenNum"),M("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),h(Ni,5,"rewardInfos"),a("creator"),a(),h(n(),32,"padding")]),io=new Proxy(Mi,{get(o,e,t){return e==="decode"?(...i)=>{let r=o.decode(...i);return W(N({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(o,e,t)}}),ro=new Proxy(Fi,{get(o,e,t){return e==="decode"?(...i)=>{let r=o.decode(...i);return W(N({},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(o,e,t)}}),Qt=new Proxy(vi,{get(o,e,t){return e==="decode"?(...i)=>{let r=o.decode(...i);return W(N({},r),{version:6,rewardInfos:r.rewardInfos.map(s=>{var u;return W(N({},s),{rewardType:((u=Object.entries(Le).find(d=>String(d[1])===s.rewardType.toString()))!=null?u:["Standard SPL"])[0]})})})}:Reflect.get(o,e,t)}}),_i=A([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),jt=A([b("instruction"),n("nonce"),h(_i,5,"rewardTimeInfo")]),Jt=A([b("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),en=A([b("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),qu=A([n("state"),a("id"),a("owner"),n("deposited"),h(n(),1,"rewardDebts")]),et=A([n("state"),a("id"),a("owner"),n("deposited"),h(M(),1,"rewardDebts"),n(""),n("voteLockedBalance"),h(n(),15)]),Uu=A([n("state"),a("id"),a("owner"),n("deposited"),h(n(),2,"rewardDebts")]),ao=A([n("state"),a("id"),a("owner"),n("deposited"),h(M(),2,"rewardDebts"),h(n(),17)]),so=A([n(),n("state"),a("id"),a("owner"),n("deposited"),h(M(),5,"rewardDebts"),h(n(),16)]),ue=A([b("instruction"),n("amount")]),Vi=A([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Xn("digitShift"),h(b(),7,"reserved1"),h(n(),7,"reserved2")]),uo=A([_(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),h(b(),32,"reserved1"),h(Vi,4,"votingMints"),Ee("timeOffset"),b("bump"),h(b(),7,"reserved2"),h(n(),11,"reserved3")]),Ei=A([Ee("startTime"),Ee("endTime"),b("kind"),h(b(),15,"reserved")]),Di=A([h(Ei,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),pe("isUsed"),pe("allowClawback"),b("votingMintConfigIdx"),h(b(),29,"reserved")]),co=A([_(8),a("voterAuthority"),a("registrar"),h(Di,32,"deposits"),b("voterBump"),b("voterWweightRecordBump"),h(b(),94,"reserved")]);import de from"bn.js";import{PublicKey as Wi}from"@solana/web3.js";import{MINT_SIZE as ju,TOKEN_PROGRAM_ID as Ju,getTransferFeeConfig as ec,unpackMint as tc}from"@solana/spl-token";var tn=q("Raydium_accountInfo_util");async function we(o,e,t){let{batchRequest:i,commitment:r="confirmed",chunkCount:s=100}=N({batchRequest:!1},t),u=nn(e,s),d=new Array(u.length).fill([]);if(i){let p=u.map(w=>{let P=o._buildArgs([w.map(y=>y.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:P}}),f=nn(p,10);d=(await(await Promise.all(f.map(async w=>await o._rpcBatchRequest(w)))).flat()).map(w=>(w.error&&tn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${w.error.message}`),w.result.value.map(P=>{if(P){let{data:y,executable:B,lamports:k,owner:T,rentEpoch:S}=P;return y.length!==2&&y[1]!=="base64"&&tn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(y[0],"base64"),executable:B,lamports:k,owner:new Wi(T),rentEpoch:S}}return null})))}else try{d=await Promise.all(u.map(p=>o.getMultipleAccountsInfo(p,r)))}catch(p){p instanceof Error&&tn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.message}`)}return d.flat()}async function Ke(o,e,t){let i=await we(o,e.map(r=>r.pubkey),t);return e.map((r,s)=>W(N({},r),{accountInfo:i[s]}))}import _e from"bn.js";import fR from"decimal.js";import Qi from"big.js";import kt from"bn.js";import qi from"toformat";var Ui=qi,nt=Ui;import wt from"big.js";import zi from"bn.js";import Xi from"decimal.js-light";import ot from"bn.js";var lo=9007199254740991;function V(o){let e=q("Raydium_parseBigNumberish");if(o instanceof ot)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new ot(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=lo||o<=-lo)&&e.logWithError(`BigNumberish number overflow: ${o}`),new ot(String(o))):typeof o=="bigint"?new ot(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new ot(0))}var At=q("module/fraction"),on=nt(wt),it=nt(Xi),Yi={[0]:it.ROUND_DOWN,[1]:it.ROUND_HALF_UP,[2]:it.ROUND_UP},Hi={[0]:wt.roundDown,[1]:wt.roundHalfUp,[2]:wt.roundUp},G=class{constructor(e,t=new zi(1)){this.numerator=V(e),this.denominator=V(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let t=e instanceof G?e:new G(V(e));return this.denominator.eq(t.denominator)?new G(this.numerator.add(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof G?e:new G(V(e));return this.denominator.eq(t.denominator)?new G(this.numerator.sub(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof G?e:new G(V(e));return new G(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof G?e:new G(V(e));return new G(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},i=1){Number.isInteger(e)||At.logWithError(`${e} is not an integer.`),e<=0&&At.logWithError(`${e} is not positive.`),it.set({precision:e+1,rounding:Yi[i]});let r=new it(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},i=1){return Number.isInteger(e)||At.logWithError(`${e} is not an integer.`),e<0&&At.logWithError(`${e} is negative.`),on.DP=e,on.RM=Hi[i]||1,new on(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Zi=q("Raydium_amount"),mo=nt(Qi);function $i(o,e){let t="0",i="0";if(o.includes(".")){let r=o.split(".");r.length===2?([t,i]=r,i=i.padEnd(e,"0")):Zi.logWithError(`invalid number string, num: ${o}`)}else t=o;return[t,i.slice(0,e)||i]}var fe=class extends G{constructor(t,i,r=!0,s){let u=new kt(0),d=rn.pow(new kt(t.decimals));if(r)u=V(i);else{let p=new kt(0),f=new kt(0);if(typeof i=="string"||typeof i=="number"||typeof i=="bigint"){let[g,w]=$i(i.toString(),t.decimals);p=V(g),f=V(w)}p=p.mul(d),u=p.add(f)}super(u,d);this.logger=q(s||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new fe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new fe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,i,r=0){return super.toSignificant(t,i,r)}toFixed(t=this.token.decimals,i,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,i,r)}toExact(t={groupSeparator:""}){return mo.DP=this.token.decimals,new mo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as ji}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as po}from"@solana/spl-token";var Tt={chainId:101,address:ji.default.toBase58(),programId:po.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ke={chainId:101,address:"So11111111111111111111111111111111111111112",programId:po.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 cn}from"@solana/web3.js";import{PublicKey as Q,SystemProgram as fo,SYSVAR_RENT_PUBKEY as Ji}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as er}from"@solana/spl-token";function c({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var an=[c({pubkey:er,isWritable:!1}),c({pubkey:fo.programId,isWritable:!1}),c({pubkey:Ji,isWritable:!1})];function yo({publicKey:o,transformSol:e}){let t=sn(o.toString());if(t instanceof Q)return e&&t.equals(xe)?Ie:t;if(e&&t.toString()===xe.toBase58())return Ie;if(typeof t=="string"){if(t===Q.default.toBase58())return Q.default;try{return new Q(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function sn(o){try{return new Q(o)}catch{return o}}var un=new Q("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Oe=new Q("SysvarRent111111111111111111111111111111111"),Nc=new Q("SysvarC1ock11111111111111111111111111111111"),ht=new Q("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),It=new Q("Sysvar1nstructions1111111111111111111111111"),tr=fo.programId,Mc=new Q("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Fc=new Q("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),vc=new Q("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),_c=new Q("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Vc=new Q("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ec=new Q("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Dc=new Q("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Wc=new Q("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qc=new Q("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Uc=new Q("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gc=new Q("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ie=new Q("So11111111111111111111111111111111111111112"),xe=Q.default;var ln=class{constructor({mint:e,decimals:t,symbol:i,name:r,skipMint:s=!1,isToken2022:u=!1}){if(e===xe.toBase58()||e instanceof cn&&xe.equals(e)){this.decimals=ke.decimals,this.symbol=ke.symbol,this.name=ke.name,this.mint=new cn(ke.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=i||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=s?cn.default:yo({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ie=ln;ie.WSOL=new ln(W(N({},ke),{mint:ke.address}));var mn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=i}equals(e){return this===e}},Bt=mn;Bt.SOL=new mn(Tt);import nr from"bn.js";var bo=new G(new nr(100)),Be=class extends G{toSignificant(e=5,t,i){return this.mul(bo).toSignificant(e,t,i)}toFixed(e=2,t,i){return this.mul(bo).toFixed(e,t,i)}};var or=q("Raydium_price"),ge=class extends G{constructor(t){let{baseToken:i,quoteToken:r,numerator:s,denominator:u}=t;super(s,u);this.baseToken=i,this.quoteToken=r,this.scalar=new G(dn(i.decimals),dn(r.decimals))}get raw(){return new G(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&or.logWithError("mul token not equals");let i=super.mul(t);return new ge({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:i.denominator,numerator:i.numerator})}toSignificant(t=this.quoteToken.decimals,i,r){return this.adjusted.toSignificant(t,i,r)}toFixed(t=this.quoteToken.decimals,i,r){return this.adjusted.toFixed(t,i,r)}};import{merge as bC}from"lodash";import fl from"axios";var go={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"},ir=W(N({},go),{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 _l=q("Raydium_Api");import{PublicKey as md,SystemProgram as dd}from"@solana/web3.js";import{AccountLayout as gd,createAssociatedTokenAccountIdempotentInstruction as Pd,TOKEN_PROGRAM_ID as Ad,TOKEN_2022_PROGRAM_ID as wd}from"@solana/spl-token";import{PublicKey as Ge,sendAndConfirmTransaction as Pn,SystemProgram as lr,Transaction as st,TransactionMessage as ut,VersionedTransaction as ct}from"@solana/web3.js";import mr from"axios";import{PublicKey as pn,AddressLookupTableAccount as qe}from"@solana/web3.js";async function fn({connection:o,address:e,cluster:t="mainnet"}){let i=await we(o,[...new Set(e.map(s=>s.toString()))].map(s=>new pn(s))),r={};for(let s=0;s<e.length;s++){let u=i[s],d=e[s];if(!u)continue;let p=new qe({key:d,state:qe.deserialize(u.data)});r[d.toString()]=p,t==="devnet"?We[d.toString()]=p:De[d.toString()]=p}return r}var De={},yn=async o=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(De[e])return De;let t=new pn(e),i=await o.getAccountInfo(t);return i&&(De[e]=new qe({key:t,state:qe.deserialize(i.data)})),De},We={},bn=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(We[e])return We;let t=new pn(e),i=await o.getAccountInfo(t);return i&&(We[e]=new qe({key:t,state:qe.deserialize(i.data)})),We};var Z={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Po,Keypair as wo,PublicKey as rr,Transaction as ko,TransactionMessage as ar,VersionedTransaction as To}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as sr}from"@solana/spl-token";var Ao=q("Raydium_txUtil"),ho=1644;function St(o){let e=[],t=[];return o.microLamports&&(e.push(Po.setComputeUnitPrice({microLamports:o.microLamports})),t.push(Z.SetComputeUnitPrice)),o.units&&(e.push(Po.setComputeUnitLimit({units:o.units})),t.push(Z.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ue(o,e){var i,r;let t=e!=null?e:"confirmed";return(r=await((i=o.getLatestBlockhash)==null?void 0:i.call(o,{commitment:t})))==null?void 0:r.blockhash}async function Kt(o,e){return o.getSignatureStatuses([e]),new Promise((t,i)=>{let r=setTimeout(i,6e4);o.onSignature(e,s=>{if(clearTimeout(r),!s.err){t("");return}i(Object.assign(s.err,{txId:e}))},"confirmed")})}function gn(o,e){o.length<1&&Ao.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&Ao.logWithError(`no signers provided:, ${e.toString()}`);let t=new ko;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...o);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ho}catch{return!1}}function j(o,e){let[t,i]=rr.findProgramAddressSync(o,e);return{publicKey:t,nonce:i}}function rt({instructions:o,payer:e,signers:t}){return gn(o,[e,...t])}function at({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:i=wo.generate().publicKey.toString()}){let s=new ar({payerKey:e,recentBlockhash:i,instructions:o}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new To(s).serialize()).toString("base64").length<ho}catch{return!1}}var ur=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),cr=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof To&&(e=ur(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ne(o){let e=[];return o.forEach(t=>{t instanceof ko&&(t.recentBlockhash||(t.recentBlockhash=sr.toBase58()),t.feePayer||(t.feePayer=wo.generate().publicKey)),e.push(cr(t))}),console.log("simulate tx string:",e),e}var xt=2e3,Ct=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 mr.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(i=e==null?void 0:e[15])!=null?i:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:i}=St(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(lr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ge(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(Z.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let i=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:i=[],instructionTypes:r=[],endInstructionTypes:s=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...i),this.instructionTypes.push(...r),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...u.filter(d=>d!==Ge.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:i}){return e===0?await this.buildV0(W(N({},t||{}),{lookupTableAddress:i})):this.build(t)}build(e){var i;let t=new st;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var g;let{recentBlockHash:s,skipPreflight:u=!0,sendAndConfirm:d,notSendToRpc:p}=r||{},f=s!=null?s:await Ue(this.connection,this.blockhashCommitment);if(t.recentBlockhash=f,this.signers.length&&t.sign(...this.signers),Ne([t]),(g=this.owner)!=null&&g.isKeyPair)return{txId:d?await Pn(this.connection,t,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let w=await this.signAllTransactions([t]);if(this.signers.length)for(let P of w)try{P.sign(...this.signers)}catch{}return{txId:p?"":await this.connection.sendRawTransaction(w[0].serialize(),{skipPreflight:u}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var f;let{extraPreBuildData:t=[],extInfo:i}=e,{transaction:r}=this.build(i),s=t.filter(g=>g.transaction.instructions.length>0),u=[r,...s.map(g=>g.transaction)],d=[this.signers,...s.map(g=>g.signers)],p=[...this.instructionTypes,...s.map(g=>g.instructionTypes).flat()];return(f=this.owner)!=null&&f.signer&&d.forEach(g=>{g.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:d,instructionTypes:p,execute:async g=>{var S;let{sequentially:w,onTxUpdate:P,skipTxCount:y=0,recentBlockHash:B,skipPreflight:k=!0}=g||{},T=B!=null?B:await Ue(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(w){let K=[],v=0;for(let E of u){if(++v,v<=y)continue;let I=await Pn(this.connection,E,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});K.push(I)}return{txIds:K,signedTxs:u}}return{txIds:await await Promise.all(u.map(async K=>(K.recentBlockhash=T,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:k})))),signedTxs:u}}if(this.signAllTransactions){let K=u.map((E,I)=>(E.recentBlockhash=T,d[I].length&&E.sign(...d[I]),E));Ne(K);let v=await this.signAllTransactions(K);if(w){let E=0,I=[],x=async()=>{if(!v[E])return;let C=await this.connection.sendRawTransaction(v[E].serialize(),{skipPreflight:k});I.push({txId:C,status:"sent",signedTx:v[E]}),P==null||P([...I]),E++;let O=!1,F=null,D=null,ae=X=>{F!==null&&clearInterval(F),D!==null&&this.connection.removeSignatureListener(D);let z=I.findIndex(oe=>oe.txId===C);if(z>-1){if(I[z].status==="error"||I[z].status==="success")return;I[z].status=X.err?"error":"success"}P==null||P([...I]),X.err||x()};this.loopMultiTxStatus&&(F=setInterval(async()=>{var X;if(O){clearInterval(F);return}try{let z=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:1});z&&(O=!0,clearInterval(F),ae({err:((X=z.meta)==null?void 0:X.err)||null}),console.log("tx status from getTransaction:",C))}catch(z){O=!0,clearInterval(F),console.error("getTransaction timeout:",z,C)}},xt)),D=this.connection.onSignature(C,X=>{if(O){this.connection.removeSignatureListener(D);return}O=!0,ae(X)},"confirmed"),this.connection.getSignatureStatus(C)};return await x(),{txIds:I.map(C=>C.txId),signedTxs:v}}else{let E=[];for(let I=0;I<v.length;I+=1){let x=await this.connection.sendRawTransaction(v[I].serialize(),{skipPreflight:k});E.push(x)}return{txIds:E,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:i}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:i})}async buildV0(e){var k;let B=e||{},{lookupTableCache:t={},lookupTableAddress:i=[],forerunCreate:r,recentBlockhash:s}=B,u=Ae(B,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),d=N(N({},this.cluster==="devnet"?await bn(this.connection):await yn(this.connection)),t),p=Array.from(new Set([...i,...this.lookupTableAddress])),f=[];for(let T of p)d[T]===void 0&&f.push(new Ge(T));let g=await fn({connection:this.connection,address:f});for(let[T,S]of Object.entries(g))d[T]=S;let w=r?Ge.default.toBase58():s!=null?s:await Ue(this.connection,this.blockhashCommitment),P=new ut({payerKey:this.feePayer,recentBlockhash:w,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(d));((k=this.owner)==null?void 0:k.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let y=new ct(P);return y.sign(this.signers),{builder:this,transaction:y,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var E;let{skipPreflight:S=!0,sendAndConfirm:K,notSendToRpc:v}=T||{};if(Ne([y]),(E=this.owner)!=null&&E.isKeyPair){let I=await this.connection.sendTransaction(y,{skipPreflight:S});return K&&await Kt(this.connection,I),{txId:I,signedTx:y}}if(this.signAllTransactions){let I=await this.signAllTransactions([y]);if(this.signers.length)for(let x of I)try{x.sign(this.signers)}catch{}return{txId:v?"":await this.connection.sendTransaction(I[0],{skipPreflight:S}),signedTx:I[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var f;let{extraPreBuildData:t=[],buildProps:i}=e,{transaction:r}=await this.buildV0(i),s=t.filter(g=>g.builder.instructions.length>0),u=[r,...s.map(g=>g.transaction)],d=[this.signers,...s.map(g=>g.signers)],p=[...this.instructionTypes,...s.map(g=>g.instructionTypes).flat()];return(f=this.owner)!=null&&f.signer&&d.forEach(g=>{g.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(g,w)=>{g.sign(d[w])}),{builder:this,transactions:u,signers:d,instructionTypes:p,buildProps:i,execute:async g=>{var k;let{sequentially:w,onTxUpdate:P,recentBlockHash:y,skipPreflight:B=!0}=g||{};if(y&&u.forEach(T=>T.message.recentBlockhash=y),Ne(u),(k=this.owner)!=null&&k.isKeyPair){if(w){let T=[];for(let S of u){let K=await this.connection.sendTransaction(S,{skipPreflight:B});await Kt(this.connection,K),T.push(K)}return{txIds:T,signedTxs:u}}return{txIds:await Promise.all(u.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:B}))),signedTxs:u}}if(this.signAllTransactions){let T=await this.signAllTransactions(u);if(w){let S=0,K=[],v=async()=>{if(!T[S])return;let E=await this.connection.sendTransaction(T[S],{skipPreflight:B});K.push({txId:E,status:"sent",signedTx:T[S]}),P==null||P([...K]),S++;let I=!1,x=null,C=null,O=F=>{x!==null&&clearInterval(x),C!==null&&this.connection.removeSignatureListener(C);let D=K.findIndex(ae=>ae.txId===E);if(D>-1){if(K[D].status==="error"||K[D].status==="success")return;K[D].status=F.err?"error":"success"}P==null||P([...K]),F.err||v()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var F;if(I){clearInterval(x);return}try{let D=await this.connection.getTransaction(E,{commitment:"confirmed",maxSupportedTransactionVersion:1});D&&(I=!0,clearInterval(x),O({err:((F=D.meta)==null?void 0:F.err)||null}),console.log("tx status from getTransaction:",E))}catch(D){I=!0,clearInterval(x),console.error("getTransaction timeout:",D,E)}},xt)),C=this.connection.onSignature(E,F=>{if(I){this.connection.removeSignatureListener(C);return}I=!0,O(F)},"confirmed"),this.connection.getSignatureStatus(E)};return v(),{txIds:[],signedTxs:T}}else{let S=[];for(let K=0;K<T.length;K+=1){let v=await this.connection.sendTransaction(T[K],{skipPreflight:B});S.push(v)}return{txIds:S,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(e){var P;let w=e||{},{splitIns:t=[],computeBudgetConfig:i}=w,r=Ae(w,["splitIns","computeBudgetConfig"]),s=i?St(i):{instructions:[],instructionTypes:[]},u=this.signers.reduce((y,B)=>W(N({},y),{[B.publicKey.toBase58()]:B}),{}),d=[],p=[],f=[],g=0;if(this.allInstructions.forEach(y=>{let B=[...f,y],k=i?[...s.instructions,...B]:B,S=[...new Set(B.map(K=>K.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat()).values()].map(K=>new Ge(K));if(y!==t[g]&&f.length<12&&(rt({instructions:k,payer:this.feePayer,signers:S})||rt({instructions:B,payer:this.feePayer,signers:S})))f.push(y);else{if(f.length===0)throw Error("item ins too big");g+=y===t[g]?1:0,rt({instructions:i?[...s.instructions,...f]:[...f],payer:this.feePayer,signers:S})?d.push(new st().add(...s.instructions,...f)):d.push(new st().add(...f)),p.push(Array.from(new Set(f.map(K=>K.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(K=>u[K]).filter(K=>K!==void 0)),f=[y]}}),f.length>0){let B=[...new Set(f.map(k=>k.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(k=>u[k]).filter(k=>k!==void 0);rt({instructions:i?[...s.instructions,...f]:[...f],payer:this.feePayer,signers:B.map(k=>k.publicKey)})?d.push(new st().add(...s.instructions,...f)):d.push(new st().add(...f)),p.push(B)}return d.forEach(y=>y.feePayer=this.feePayer),(P=this.owner)!=null&&P.signer&&p.forEach(y=>{y.some(B=>B.publicKey.equals(this.owner.publicKey))||y.push(this.owner.signer)}),{builder:this,transactions:d,signers:p,instructionTypes:this.instructionTypes,execute:async y=>{var E;let{sequentially:B,onTxUpdate:k,skipTxCount:T=0,recentBlockHash:S,skipPreflight:K=!0}=y||{},v=S!=null?S:await Ue(this.connection,this.blockhashCommitment);if(d.forEach(async(I,x)=>{I.recentBlockhash=v,p[x].length&&I.sign(...p[x])}),Ne(d),(E=this.owner)!=null&&E.isKeyPair){if(B){let I=0,x=[];for(let C of d){if(++I,I<=T){x.push("tx skipped");continue}let O=await Pn(this.connection,C,this.signers.find(F=>F.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});x.push(O)}return{txIds:x,signedTxs:d}}return{txIds:await Promise.all(d.map(async I=>await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:K}))),signedTxs:d}}if(this.signAllTransactions){let I=await this.signAllTransactions(d.slice(T,d.length)),x=[...d.slice(0,T),...I];if(B){let C=0,O=[],F=async()=>{if(!x[C])return;C<T&&(O.push({txId:"",status:"success",signedTx:x[C]}),k==null||k([...O]),C++,F());let D=await this.connection.sendRawTransaction(x[C].serialize(),{skipPreflight:K});O.push({txId:D,status:"sent",signedTx:x[C]}),k==null||k([...O]),C++;let ae=!1,X=null,z=null,oe=Y=>{X!==null&&clearInterval(X),z!==null&&this.connection.removeSignatureListener(z);let se=O.findIndex(Te=>Te.txId===D);if(se>-1){if(O[se].status==="error"||O[se].status==="success")return;O[se].status=Y.err?"error":"success"}k==null||k([...O]),Y.err||F()};this.loopMultiTxStatus&&(X=setInterval(async()=>{var Y;if(ae){clearInterval(X);return}try{let se=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:1});se&&(ae=!0,clearInterval(X),oe({err:((Y=se.meta)==null?void 0:Y.err)||null}),console.log("tx status from getTransaction:",D))}catch(se){ae=!0,clearInterval(X),console.error("getTransaction timeout:",se,D)}},xt)),z=this.connection.onSignature(D,Y=>{if(ae){this.connection.removeSignatureListener(z);return}ae=!0,oe(Y)},"confirmed"),this.connection.getSignatureStatus(D)};return await F(),{txIds:O.map(D=>D.txId),signedTxs:x}}else{let C=[];for(let O=0;O<x.length;O+=1){let F=await this.connection.sendRawTransaction(x[O].serialize(),{skipPreflight:K});C.push(F)}return{txIds:C,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var E;let v=e||{},{computeBudgetConfig:t,splitIns:i=[],lookupTableCache:r={},lookupTableAddress:s=[],insCountLimit:u=12}=v,d=Ae(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),p=N(N({},this.cluster==="devnet"?await bn(this.connection):await yn(this.connection)),r),f=Array.from(new Set([...this.lookupTableAddress,...s])),g=[];for(let I of f)p[I]===void 0&&g.push(new Ge(I));let w=await fn({connection:this.connection,address:g});for(let[I,x]of Object.entries(w))p[I]=x;let P=t?St(t):{instructions:[],instructionTypes:[]},y=await Ue(this.connection,this.blockhashCommitment),B=this.signers.reduce((I,x)=>W(N({},I),{[x.publicKey.toBase58()]:x}),{}),k=[],T=[],S=[],K=0;if(this.allInstructions.forEach(I=>{let x=[...S,I],C=t?[...P.instructions,...x]:x;if(I!==i[K]&&S.length<u&&(at({instructions:C,payer:this.feePayer,lookupTableAddressAccount:p})||at({instructions:x,payer:this.feePayer,lookupTableAddressAccount:p})))S.push(I);else{if(S.length===0)throw Error("item ins too big");K+=I===i[K]?1:0;let O={};for(let F of[...new Set(f)])p[F]!==void 0&&(O[F]=p[F]);if(t&&at({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:p,recentBlockhash:y})){let F=new ut({payerKey:this.feePayer,recentBlockhash:y,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(p));k.push(new ct(F))}else{let F=new ut({payerKey:this.feePayer,recentBlockhash:y,instructions:[...S]}).compileToV0Message(Object.values(p));k.push(new ct(F))}T.push(Array.from(new Set(S.map(F=>F.keys.filter(D=>D.isSigner).map(D=>D.pubkey.toString())).flat())).map(F=>B[F]).filter(F=>F!==void 0)),S=[I]}}),S.length>0){let x=[...new Set(S.map(C=>C.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(C=>B[C]).filter(C=>C!==void 0);if(t&&at({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:p,recentBlockhash:y})){let C=new ut({payerKey:this.feePayer,recentBlockhash:y,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(p));k.push(new ct(C))}else{let C=new ut({payerKey:this.feePayer,recentBlockhash:y,instructions:[...S]}).compileToV0Message(Object.values(p));k.push(new ct(C))}T.push(x)}return(E=this.owner)!=null&&E.signer&&T.forEach(I=>{I.some(x=>x.publicKey.equals(this.owner.publicKey))||I.push(this.owner.signer)}),k.forEach((I,x)=>{I.sign(T[x])}),{builder:this,transactions:k,buildProps:e,signers:T,instructionTypes:this.instructionTypes,execute:async I=>{var ae;let{sequentially:x,onTxUpdate:C,skipTxCount:O=0,recentBlockHash:F,skipPreflight:D=!0}=I||{};if(k.map(async(X,z)=>{T[z].length&&X.sign(T[z]),F&&(X.message.recentBlockhash=F)}),Ne(k),(ae=this.owner)!=null&&ae.isKeyPair){if(x){let X=0,z=[];for(let oe of k){if(++X,X<=O){console.log("skip tx: ",X),z.push("tx skipped");continue}let Y=await this.connection.sendTransaction(oe,{skipPreflight:D});await Kt(this.connection,Y),z.push(Y)}return{txIds:z,signedTxs:k}}return{txIds:await Promise.all(k.map(async X=>await this.connection.sendTransaction(X,{skipPreflight:D}))),signedTxs:k}}if(this.signAllTransactions){let X=await this.signAllTransactions(k.slice(O,k.length)),z=[...k.slice(0,O),...X];if(x){let oe=0,Y=[],se=async()=>{if(!z[oe])return;if(oe<O){Y.push({txId:"",status:"success",signedTx:z[oe]}),C==null||C([...Y]),oe++,se();return}let Te=await this.connection.sendTransaction(z[oe],{skipPreflight:D});Y.push({txId:Te,status:"sent",signedTx:z[oe]}),C==null||C([...Y]),oe++;let je=!1,Ve=null,ft=null,vn=Ce=>{Ve!==null&&clearInterval(Ve),ft!==null&&this.connection.removeSignatureListener(ft);let he=Y.findIndex(Jo=>Jo.txId===Te);if(he>-1){if(Y[he].status==="error"||Y[he].status==="success")return;Y[he].status=Ce.err?"error":"success"}C==null||C([...Y]),Ce.err||se()};this.loopMultiTxStatus&&(Ve=setInterval(async()=>{var Ce;if(je){clearInterval(Ve);return}try{let he=await this.connection.getTransaction(Te,{commitment:"confirmed",maxSupportedTransactionVersion:1});he&&(je=!0,clearInterval(Ve),vn({err:((Ce=he.meta)==null?void 0:Ce.err)||null}),console.log("tx status from getTransaction:",Te))}catch(he){je=!0,clearInterval(Ve),console.error("getTransaction timeout:",he,Te)}},xt)),ft=this.connection.onSignature(Te,Ce=>{if(je){this.connection.removeSignatureListener(ft);return}je=!0,vn(Ce)},"confirmed"),this.connection.getSignatureStatus(Te)};return se(),{txIds:[],signedTxs:z}}else{let oe=[];for(let Y=0;Y<z.length;Y+=1){let se=await this.connection.sendTransaction(z[Y],{skipPreflight:D});oe.push(se)}return{txIds:oe,signedTxs:z}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:d||{}}}};var An=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),le=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=q(t)}createTxBuilder(e){return this.scope.checkOwner(),new Ct({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(An(e))}logInfo(...e){this.logger.info(An(e))}logAndCreateError(...e){let t=An(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as qm,SystemProgram as Gm}from"@solana/web3.js";import Ym from"bn.js";import{createCloseAccountInstruction as $m,createInitializeAccountInstruction as jm,createTransferInstruction as Jm,TOKEN_PROGRAM_ID as ed}from"@solana/spl-token";import{Keypair as Cm,PublicKey as Rm}from"@solana/web3.js";import Nm from"bn.js";import{TOKEN_PROGRAM_ID as vm}from"@solana/spl-token";var ze=A([a("mint"),a("owner"),n("amount"),H("delegateOption"),a("delegate"),b("state"),H("isNativeOption"),n("isNative"),n("delegatedAmount"),H("closeAuthorityOption"),a("closeAuthority")]);import{PublicKey as Og,SystemProgram as Ng}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Fg}from"@solana/spl-token";import{PublicKey as pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fr}from"@solana/spl-token";function ce(o,e,t){return j([o.toBuffer(),(t!=null?t:fr).toBuffer(),e.toBuffer()],new pr("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import zg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Nb,TOKEN_2022_PROGRAM_ID as Mb,TOKEN_PROGRAM_ID as Fb}from"@solana/spl-token";import{PublicKey as _b}from"@solana/web3.js";import Eb from"bn.js";import Wb from"decimal.js";import{TOKEN_PROGRAM_ID as qd}from"@solana/spl-token";import{PublicKey as Xd}from"@solana/web3.js";var yr=A([H("mintAuthorityOption"),a("mintAuthority"),n("supply"),b("decimals"),b("isInitialized"),H("freezeAuthorityOption"),a("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as eb,TOKEN_2022_PROGRAM_ID as tb,TOKEN_PROGRAM_ID as nb}from"@solana/spl-token";import{Keypair as rb,PublicKey as ab,SystemProgram as ub,TransactionInstruction as cb}from"@solana/web3.js";import mb from"bn.js";import U from"bn.js";var Xe=new U(1).shln(64);var br=new U(1).shln(128),wn=new U(1).shln(64).subn(1),gr=new U(1).shln(128).subn(1);var Ye=new U("4295048016"),He=new U("79226673521066979257578248091"),Pr=new U("59543866431248"),Ar=new U("184467440737095516"),wr=new U("15793534762490258745");var kn=60,ip=new U("18446743708227953217"),kr=[{bit:0,factor:new U("fffcb933bd6fb800",16)},{bit:1,factor:new U("fff97272373d4000",16)},{bit:2,factor:new U("fff2e50f5f657000",16)},{bit:3,factor:new U("ffe5caca7e10f000",16)},{bit:4,factor:new U("ffcb9843d60f7000",16)},{bit:5,factor:new U("ff973b41fa98e800",16)},{bit:6,factor:new U("ff2ea16466c9b000",16)},{bit:7,factor:new U("fe5dee046a9a3800",16)},{bit:8,factor:new U("fcbe86c7900bb000",16)},{bit:9,factor:new U("f987a7253ac65800",16)},{bit:10,factor:new U("f3392b0822bb6000",16)},{bit:11,factor:new U("e7159475a2caf000",16)},{bit:12,factor:new U("d097f3bdfd2f2000",16)},{bit:13,factor:new U("a9f746462d9f8000",16)},{bit:14,factor:new U("70d869a156f31c00",16)},{bit:15,factor:new U("31be135f97ed3200",16)},{bit:16,factor:new U("9aa508b5b85a500",16)},{bit:17,factor:new U("5d6af8dedc582c",16)},{bit:18,factor:new U("2216e584f5fa",16)}];var lt=3,Bo=100;var So=10,Ko=100,Lt=14;var te=new U(0),Qe=new U(1),rp=new U(-1);var ap=new U("18446744073700000000");var Tr=A([_(8),b("bump"),$("index"),a("owner"),H("protocolFeeRate"),H("tradeFeeRate"),$("tickSpacing"),H("fundFeeRate"),h(H(),1),a("fundOwner"),h(n(),3)]),hr=A([H("blockTimestamp"),Ee("tickCumulative"),h(n(),4)]),xo=A([_(8),pe("initialized"),n("recentEpoch"),$("observationIndex"),a("poolId"),h(hr,Bo,"observations"),h(n(),4)]),Ir=A([$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),H("dynamicFeeControl"),H("maxVolatilityAccumulator"),be("tickSpacingIndexReference"),H("volatilityReference"),H("volatilityAccumulator"),n("lastUpdateTimestamp"),h(b(),46)]),Br=A([b("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),M("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),M("growthGlobalX64")]),Tn=A([_(8),b("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),b("mintDecimalsA"),b("mintDecimalsB"),$("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),be("tickCurrent"),H(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),h(M(),4),b("status"),b("feeOn"),_(6),h(Br,lt,"rewardInfos"),_(8*16,"tickArrayBitmap"),h(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),Ir.replicate("dynamicFeeInfo"),h(n(),46)]),Sr=A([M("growthInsideLastX64"),n("rewardAmountOwed")]),Kr=A([_(8),b("bump"),a("nftMint"),a("poolId"),be("tickLower"),be("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),h(Sr,lt,"rewardInfos"),n("recentEpoch"),h(n(),7)]),lp=A([_(8),b("bump"),a("poolId"),be("tickLower"),be("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),h(M(),lt,"rewardGrowthInside"),n("recentEpoch"),h(n(),7)]),xr=A([be("tick"),Yn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),h(M(),lt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),M("unfilledRatioX64"),h(H(),3)]),Co=A([_(8),a("poolId"),be("startTickIndex"),h(xr,kn,"ticks"),b("initializedTickCount"),n("recentEpoch"),h(b(),107)]),Cr=A([_(8),b("bump"),h(a(),So,"operationOwners"),h(a(),Ko,"whitelistMints")]),Rr=A([_(8),a("poolId"),a("owner"),be("tick"),pe("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),M("unfilledRatioX64"),h(n(),4)]),Ro=A([_(8),a("poolId"),_(8*8*Lt,"positiveTickArrayBitmap"),_(8*8*Lt,"negativeTickArrayBitmap")]),mp=A([_(8),$("index"),$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),H("dynamicFeeControl"),H("maxVolatilityAccumulator"),h(n(),8)]),Lr=A([_(8),a("wallet"),b("nonceIndex"),n("orderNonce"),h(n(),4)]),dp=A([n(),b("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),h(n(),8)]),Or=A([_(8),b("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),h(n(),8)]);import yp from"bn.js";var Sp=Buffer.from("amm_config","utf8"),Mr=Buffer.from("pool","utf8"),Fr=Buffer.from("pool_vault","utf8"),Kp=Buffer.from("pool_reward_vault","utf8"),xp=Buffer.from("position","utf8"),Cp=Buffer.from("tick_array","utf8"),Rp=Buffer.from("operation","utf8"),Lp=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Op=Buffer.from("observation","utf8"),Np=Buffer.from("support_mint","utf8"),Mp=Buffer.from("dynamic_fee_config","utf8"),Fp=Buffer.from("permission","utf8");var vp=Buffer.from("locked_position","utf8");import{sha256 as Zr}from"js-sha256";import vr from"bn.js";import Dp from"decimal.js";var qp=new vr(1).shln(256).subn(1);import sf from"bn.js";import Qp from"bn.js";import $p from"decimal.js";import df from"bn.js";import ff from"decimal.js";import{PublicKey as ey}from"@solana/web3.js";import ny from"bn.js";import{TOKEN_2022_PROGRAM_ID as ly,TOKEN_PROGRAM_ID as my}from"@solana/spl-token";import yy from"decimal.js";import Uf from"bn.js";import Rf from"bn.js";import Sy from"bn.js";function ne(o){let e=`global:${o}`;return Buffer.from(Zr.digest(e)).slice(0,8)}xo.span;var wb=q("Raydium_Clmm"),kb={createPool:ne("create_pool"),createCustomizablePool:ne("create_customizable_pool"),createPermissionedPool:ne("create_permissioned_pool"),openPositionV2:ne("open_position_v2"),openPositionWithToken22Nft:ne("open_position_with_token22_nft"),closePosition:ne("close_position"),increaseLiquidityV2:ne("increase_liquidity_v2"),decreaseLiquidityV2:ne("decrease_liquidity_v2"),initializeReward:ne("initialize_reward"),setRewardParams:ne("set_reward_params"),updateRewardInfos:ne("update_reward_infos"),collectRemainingRewards:ne("collect_remaining_rewards"),swapV2:ne("swap_v2"),openLimitOrder:ne("open_limit_order"),increaseLimitOrder:ne("increase_limit_order"),decreaseLimitOrder:ne("decrease_limit_order"),settleLimitOrder:ne("settle_limit_order"),closeLimitOrder:ne("close_limit_order")};import{PublicKey as L,SystemProgram as Fe,SYSVAR_CLOCK_PUBKEY as $e,SYSVAR_RENT_PUBKEY as ea,TransactionInstruction as J}from"@solana/web3.js";import vt from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ta,createAssociatedTokenAccountIdempotentInstruction as na,TOKEN_PROGRAM_ID as me}from"@solana/spl-token";function Sn(o,e,t){return j([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],o)}function Kn(o,e){return j([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],o)}function xn(o,e){return j([e.toBuffer()],o)}function Cn(o,e,t){return j([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],o)}function Rn(o,e,t){return j([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],o)}function Ln(o,e,t,i){return j([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),i.toBuffer()],o)}var oa=q("Raydium_farm_instruction"),dt={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])};function _o(o){let{version:e,id:t,ledger:i,programId:r,owner:s}=o,u={3:9,5:10}[e];u||oa.logWithError(`invalid farm pool version: ${e}`);let d=Buffer.alloc(Zt.span);Zt.encode({instruction:u},d);let p=[c({pubkey:t}),c({pubkey:i}),c({pubkey:s,isWritable:!1}),c({pubkey:Fe.programId,isWritable:!1}),c({pubkey:ea,isWritable:!1})];return{instruction:new J({programId:r,keys:p,data:d}),instructionType:Z.FarmV3CreateLedger}}function ia(o){var i;let e=Buffer.alloc(jt.span);jt.encode({instruction:0,nonce:new vt(o.nonce),rewardTimeInfo:o.rewardInfoConfig},e);let t=[...an,c({pubkey:o.farmId}),c({pubkey:o.farmAuthority,isWritable:!1}),c({pubkey:o.lpVault}),c({pubkey:o.lpMint,isWritable:!1}),c({pubkey:o.lockVault}),c({pubkey:o.lockMint,isWritable:!1}),c({pubkey:(i=o.lockUserAccount)!=null?i:xe}),c({pubkey:o.owner,isWritable:!1,isSigner:!0})];for(let r of o.rewardInfo)t.push(c({pubkey:r.rewardMint,isWritable:!1}),c({pubkey:r.rewardVault}),c({pubkey:r.userRewardToken}));return{instruction:new J({programId:o.programId,keys:t,data:e}),instructionType:Z.FarmV6Create}}function ra(o){let e=Buffer.alloc($t.span);$t.encode({instruction:5},e);let t=[c({pubkey:me,isWritable:!1}),c({pubkey:o.id}),c({pubkey:o.authority,isWritable:!1}),c({pubkey:o.lpVault,isWritable:!1}),c({pubkey:o.rewardVault}),c({pubkey:o.userRewardToken}),c({pubkey:o.owner,isWritable:!1,isSigner:!0})];return{instruction:new J({programId:o.programId,keys:t,data:e}),instructionType:Z.FarmV6CreatorWithdraw}}function aa(o,e,t,i,r,s,u,d,p,f,g,w,P){let y=A([b("depositEntryIndex"),n("amount")]),B=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],k=Buffer.alloc(y.span);y.encode({depositEntryIndex:w,amount:P},k);let T=Buffer.from([...dt.voterStakeRegistryDeposit,...k]);return new J({keys:B,programId:o,data:T})}function sa(o,e,t,i){let r=A([]),s=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Fe.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(r.span);r.encode({},u);let d=Buffer.from([...dt.voterStakeRegistryUpdateVoterWeightRecord,...u]);return new J({keys:s,programId:o,data:d})}function ua(o,e,t,i,r,s,u,d,p,f,g,w,P,y,B){let k=A([b("depositEntryIndex"),n("amount")]),T=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],S=Buffer.alloc(k.span);k.encode({depositEntryIndex:y,amount:B},S);let K=Buffer.from([...dt.voterStakeRegistryWithdraw,...S]);return new J({keys:T,programId:o,data:K})}function ca(o,e,t,i,r,s){let u=A([b("ins")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:Fe.programId,isSigner:!1,isWritable:!1}],p=Buffer.alloc(u.span);return u.encode({ins:23},p),new J({keys:d,programId:o,data:p})}function la(o,e,t,i,r,s,u,d){let p=A([b("voterBump"),b("voterWeightRecordBump")]),f=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:Fe.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],g=Buffer.alloc(p.span);p.encode({voterBump:u,voterWeightRecordBump:d},g);let w=Buffer.from([...dt.voterStakeRegistryCreateVoter,...g]);return new J({keys:f,programId:o,data:w})}function ma(o,e,t,i,r,s,u,d,p,f,g,w){let P=A([b("depositEntryIndex"),b("kind"),b("option"),n("startTs"),H("periods"),pe("allowClawback")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:Fe.programId,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:ta,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1}],B=Buffer.alloc(P.span);P.encode({depositEntryIndex:d,kind:p,option:f===void 0?0:1,startTs:f,periods:g,allowClawback:w},B);let k=Buffer.from([...dt.voterStakeRegistryCreateDepositEntry,...B]);return new J({keys:y,programId:o,data:k})}async function Kg({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:i,realm:r,communityTokenMint:s,owner:u,poolId:d,tokenProgram:p}){let f=Sn(i,r,s).publicKey,g=ye({programId:e,poolId:d,owner:u,version:3}),w=await o.getAccountInfo(g);if(w===null)throw Error("user is not staker");let P=et.decode(w.data),y=P.deposited.sub(P.voteLockedBalance);if(console.log("amount",y.toString()),y.eq(new vt(0)))throw Error("user do not has new stake amount");let B=Kn(e,d).publicKey,k=xn(e,d).publicKey,{publicKey:T,nonce:S}=Cn(i,f,u),K=ce(T,B,p).publicKey,{publicKey:v,nonce:E}=Rn(i,f,u),I=Ln(t,r,s,u).publicKey,x=[],C=ce(u,B,p).publicKey;if(await o.getAccountInfo(C)===null&&x.push(na(u,C,u,B)),await o.getAccountInfo(T)===null){let X=ca(t,r,u,s,u,I);x.push(X,la(i,f,T,v,u,u,S,E))}let{index:D,isInit:ae}=await On(o,f,T,B);return ae||x.push(ma(i,f,T,K,u,u,B,D,0,void 0,0,!1)),x.push(aa(i,f,T,K,C,u,g,d,B,k,e,D,y),sa(i,f,T,v)),x}async function xg({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:i,realm:r,communityTokenMint:s,owner:u,poolId:d,tokenProgram:p}){let f=Sn(i,r,s).publicKey,g=ye({programId:e,poolId:d,owner:u,version:3}),w=await o.getAccountInfo(g);if(w===null)throw Error("user is not staker");let P=et.decode(w.data);if(P.voteLockedBalance.eq(new vt(0)))throw Error("user has vote locked balance = 0");let y=Kn(e,d).publicKey,B=xn(e,d).publicKey,{publicKey:k}=Cn(i,f,u),T=ce(k,y,p).publicKey,{publicKey:S}=Rn(i,f,u),K=Ln(t,r,s,u).publicKey,v=[],{index:E,isInit:I}=await On(o,f,k,y);if(!I)throw Error("deposit entry index check error");return v.push(ua(i,f,k,u,K,S,T,ce(u,y,p).publicKey,g,d,y,B,e,E,P.voteLockedBalance)),v}function da({payer:o,rewardVault:e,userRewardTokenPub:t,farmKeys:i,rewardInfo:r}){let s=Buffer.alloc(Jt.span);Jt.encode({instruction:3,rewardReopenTime:V(r.openTime),rewardEndTime:V(r.endTime),rewardPerSecond:V(r.perSecond)},s);let u=[c({pubkey:me,isWritable:!1}),c({pubkey:i.id}),c({pubkey:i.lpVault,isWritable:!1}),c({pubkey:e}),c({pubkey:t}),c({pubkey:o,isWritable:!1,isSigner:!0})];return new J({programId:i.programId,keys:u,data:s})}function pa({payer:o,userRewardTokenPub:e,farmKeys:t,rewardVault:i,rewardInfo:r}){let s=Buffer.alloc(en.span);en.encode({instruction:4,isSet:new vt(1),rewardPerSecond:V(r.perSecond),rewardOpenTime:V(r.openTime),rewardEndTime:V(r.endTime),rewardType:V(Le[r.rewardType])},s);let u=[...an,c({pubkey:t.id}),c({pubkey:t.authority,isWritable:!1}),c({pubkey:r.mint,isWritable:!1}),c({pubkey:i}),c({pubkey:e}),c({pubkey:o,isWritable:!1,isSigner:!0})];return new J({programId:t.programId,keys:u,data:s})}function Cg(o){let{farmInfo:e,farmKeys:t,version:i,lpAccount:r,rewardAccounts:s,owner:u,instruction:d,amount:p,deposit:f}=o,[g,w]=[new L(e.programId),new L(e.id)],P=ye({programId:g,poolId:w,owner:u,version:i}),y=Buffer.alloc(ue.span);ue.encode({instruction:d,amount:p},y);let B=i===6?[c({pubkey:me,isWritable:!1}),...f?[c({pubkey:Fe.programId,isWritable:!1})]:[],c({pubkey:w}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:new L(t.lpVault)}),c({pubkey:P}),c({pubkey:u,isWritable:!1,isSigner:!0}),c({pubkey:r})]:[c({pubkey:w}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:P}),c({pubkey:u,isWritable:!1,isSigner:!0}),c({pubkey:r}),c({pubkey:new L(t.lpVault)}),c({pubkey:s[0]}),c({pubkey:new L(t.rewardInfos[0].vault)}),c({pubkey:$e,isWritable:!1}),c({pubkey:me,isWritable:!1})];if(i===5)for(let k=1;k<t.rewardInfos.length;k++)B.push(c({pubkey:s[k]})),B.push(c({pubkey:new L(t.rewardInfos[k].vault)}));if(i===6)for(let k=0;k<t.rewardInfos.length;k++)B.push(c({pubkey:new L(t.rewardInfos[k].vault)})),B.push(c({pubkey:s[k]}));return new J({programId:g,keys:B,data:y})}function Vo(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u}=o,[d,p]=[new L(e.programId),new L(e.id)],f=ye({programId:d,poolId:p,owner:s,version:6}),g=Buffer.alloc(ue.span);ue.encode({instruction:2,amount:V(u)},g);let w=[c({pubkey:me,isWritable:!1}),c({pubkey:p}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:new L(t.lpVault)}),c({pubkey:f}),c({pubkey:s,isWritable:!1,isSigner:!0}),c({pubkey:i})];for(let P=0;P<t.rewardInfos.length;P++)w.push(c({pubkey:new L(t.rewardInfos[P].vault)})),w.push(c({pubkey:r[P]}));return new J({programId:d,keys:w,data:g})}function Eo(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:d}=o,[p,f]=[new L(e.programId),new L(e.id)],g=ye({programId:p,poolId:f,owner:s,version:5}),w=Buffer.alloc(ue.span);ue.encode({instruction:12,amount:V(u)},w);let P=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:g}),c({pubkey:s,isWritable:!1,isSigner:!0}),c({pubkey:i}),c({pubkey:new L(t.lpVault)}),c({pubkey:r[0]}),c({pubkey:new L(t.rewardInfos[0].vault)}),c({pubkey:$e,isWritable:!1}),c({pubkey:me,isWritable:!1})];for(let y=1;y<t.rewardInfos.length;y++)P.push(c({pubkey:r[y]})),P.push(c({pubkey:new L(t.rewardInfos[y].vault)}));if(d)for(let y of d)P.push(c({pubkey:y}));return new J({programId:p,keys:P,data:w})}function fa(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:d}=o,[p,f]=[new L(e.programId),new L(e.id)],g=A([b("instruction"),n("amount")]),w=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:d[0]}),c({pubkey:s,isSigner:!0,isWritable:!1}),c({pubkey:i}),c({pubkey:new L(t.lpVault)}),c({pubkey:r[0]}),c({pubkey:new L(t.rewardInfos[0].vault)}),c({pubkey:$e,isWritable:!1}),c({pubkey:me,isWritable:!1}),c({pubkey:r[1]}),c({pubkey:new L(t.rewardInfos[1].vault)})],P=Buffer.alloc(g.span);return g.encode({instruction:2,amount:u},P),new J({keys:w,programId:p,data:P})}function Do(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:d}=o,[p,f]=[new L(e.programId),new L(e.id)],g=ye({programId:p,poolId:f,owner:s,version:3}),w=Buffer.alloc(ue.span);ue.encode({instruction:11,amount:V(u)},w);let P=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:g}),c({pubkey:s,isWritable:!1,isSigner:!0}),c({pubkey:i}),c({pubkey:new L(t.lpVault)}),c({pubkey:r[0]}),c({pubkey:new L(t.rewardInfos[0].vault)}),c({pubkey:$e,isWritable:!1}),c({pubkey:me,isWritable:!1})];if(d)for(let y of d)P.push(c({pubkey:y}));return new J({programId:p,keys:P,data:w})}function ya(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:d}=o,[p,f]=[new L(e.programId),new L(e.id)],g=ye({programId:p,poolId:f,owner:s,version:3}),w=Buffer.alloc(ue.span);ue.encode({instruction:10,amount:V(u)},w);let P=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:g}),c({pubkey:s,isWritable:!1,isSigner:!0}),c({pubkey:i}),c({pubkey:new L(t.lpVault)}),c({pubkey:r[0]}),c({pubkey:new L(t.rewardInfos[0].vault)}),c({pubkey:$e,isWritable:!1}),c({pubkey:me,isWritable:!1})];if(d)for(let y of d)P.push(c({pubkey:y}));return new J({programId:p,keys:P,data:w})}function ba(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:d}=o,[p,f]=[new L(e.programId),new L(e.id)],g=ye({programId:p,poolId:f,owner:s,version:5}),w=Buffer.alloc(ue.span);ue.encode({instruction:11,amount:V(u)},w);let P=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:g}),c({pubkey:s,isWritable:!1,isSigner:!0}),c({pubkey:i}),c({pubkey:new L(t.lpVault)}),c({pubkey:r[0]}),c({pubkey:new L(t.rewardInfos[0].vault)}),c({pubkey:$e,isWritable:!1}),c({pubkey:me,isWritable:!1})];for(let y=1;y<t.rewardInfos.length;y++)P.push(c({pubkey:r[y]})),P.push(c({pubkey:new L(t.rewardInfos[y].vault)}));if(d)for(let y of d)P.push(c({pubkey:y}));return new J({programId:p,keys:P,data:w})}function ga(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u}=o,[d,p]=[new L(e.programId),new L(e.id)],f=ye({programId:d,poolId:p,owner:s,version:6}),g=Buffer.alloc(ue.span);ue.encode({instruction:1,amount:V(u)},g);let w=[c({pubkey:me,isWritable:!1}),c({pubkey:Fe.programId,isWritable:!1}),c({pubkey:p}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:new L(t.lpVault)}),c({pubkey:f}),c({pubkey:s,isWritable:!1,isSigner:!0}),c({pubkey:i})];for(let P=0;P<t.rewardInfos.length;P++)w.push(c({pubkey:new L(t.rewardInfos[P].vault)})),w.push(c({pubkey:r[P]}));return new J({programId:d,keys:w,data:g})}import nP from"bn.js";import{PublicKey as uw}from"@solana/web3.js";import{AccountLayout as mw,MintLayout as dw,NATIVE_MINT as pw,TOKEN_PROGRAM_ID as yw}from"@solana/spl-token";import rP from"bn.js";import Wo from"bn.js";var Ta=new Wo(25),ha=new Wo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as BP,TOKEN_PROGRAM_ID as SP}from"@solana/spl-token";import{PublicKey as xP,SystemProgram as CP,SYSVAR_RENT_PUBKEY as RP,TransactionInstruction as LP}from"@solana/web3.js";import{PublicKey as Ia}from"@solana/web3.js";import Ba from"bn.js";function Sa(o){return typeof o=="object"&&o!==null&&![ie,fe,Ia,G,Ba,ge,Be].some(e=>typeof e=="object"&&o instanceof e)}function ve(o){return typeof o=="string"?sn(o):Array.isArray(o)?o.map(e=>ve(e)):Sa(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,ve(t)])):o}import EP from"bn.js";var Ka=A([b("instruction"),n("amountIn"),n("minAmountOut")]),xa=A([b("instruction"),n("maxAmountIn"),n("amountOut")]),kP=A([b("instruction"),b("nonce")]),Ca=A([b("instruction"),b("nonce"),n("startTime")]),qo=A([n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalValue"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),n("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),n("swapQuote2BaseFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("withdrawQueue"),a("lpVault"),a("owner"),n("lpReserve"),h(n(),3,"padding")]),TP=A([n("accountType"),n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalsValue"),n("abortTradeFactor"),n("priceTickMultiplier"),n("priceTick"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("modelDataAccount"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("owner"),h(n(),64,"padding")]),Ra=A([b("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),La=A([b("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Oa=A([n("fee")]);var qP=q("Raydium_liquidity_instruction");var Na=5e4,Ma=A([n("x"),n("y"),n("price")]),XP=A([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),h(Ma,Na,"DataElement")]);import{PublicKey as iA}from"@solana/web3.js";import aA from"decimal.js";import{TOKEN_PROGRAM_ID as uA}from"@solana/spl-token";import{PublicKey as ZP}from"@solana/web3.js";var JP=q("Raydium_liquidity_serum");import Fw from"bn.js";import _w from"decimal.js";import{TOKEN_PROGRAM_ID as FA}from"@solana/spl-token";import{PublicKey as _A}from"@solana/web3.js";import EA from"bn.js";import{SystemProgram as TA,SYSVAR_RENT_PUBKEY as hA,Transaction as IA,TransactionInstruction as BA}from"@solana/web3.js";import{createInitializeAccountInstruction as KA,TOKEN_PROGRAM_ID as xA}from"@solana/spl-token";function Fa(o="accountFlags"){let e=new Pt(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 va=A([_(5),Fa("accountFlags"),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),_(7)]);import{PublicKey as mT}from"@solana/web3.js";import{AccountLayout as pT,NATIVE_MINT as fT,TOKEN_2022_PROGRAM_ID as yT,TOKEN_PROGRAM_ID as bT,createAssociatedTokenAccountIdempotentInstruction as gT}from"@solana/spl-token";import sk from"bn.js";import Ua from"bn.js";var Yw=new Ua(0);import Jw from"bn.js";import Ga from"bn.js";var Mt=new Ga(1e6);import BT from"bn.js";import KT from"decimal.js";import{PublicKey as Kk,TransactionInstruction as xk,Keypair as Rk,SystemProgram as Lk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Nk,TOKEN_2022_PROGRAM_ID as Mk,TOKEN_PROGRAM_ID as Fk}from"@solana/spl-token";var dk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),pk=Buffer.from("amm_config","utf8"),fk=Buffer.from("pool","utf8"),yk=Buffer.from("pool_lp_mint","utf8"),bk=Buffer.from("pool_vault","utf8"),gk=Buffer.from("observation","utf8"),Pk=Buffer.from("permission","utf8"),Ak=Buffer.from("support_mint","utf8"),wk=Buffer.from("creator_fee_share","utf8");var kk=Buffer.from("locked_liquidity","utf8");var qk=q("Raydium_cpmm"),Uk={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 Ya=A([_(8),b("bump"),pe("disableCreatePool"),$("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),n("creatorFeeShareRate"),h(n(),14)]),Uo=A([_(8),a("configId"),a("poolCreator"),a("vaultA"),a("vaultB"),a("mintLp"),a("mintA"),a("mintB"),a("mintProgramA"),a("mintProgramB"),a("observationId"),b("bump"),b("status"),b("lpDecimals"),b("mintDecimalA"),b("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),b("feeOn"),pe("enableCreatorFee"),h(b(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),h(n(),28)]),Xk=A([_(8),a("configId"),h(n(),30)]),Yk=A([_(8),b("bump"),a("creator"),a("ammConfig"),n("shareRate"),h(n(),8)]);import{PublicKey as EK,SystemProgram as DK}from"@solana/web3.js";import{createTransferInstruction as qK,TOKEN_PROGRAM_ID as UK,TOKEN_2022_PROGRAM_ID as GK,createAssociatedTokenAccountIdempotentInstruction as zK,createSyncNativeInstruction as YK,createTransferCheckedInstruction as HK}from"@solana/spl-token";import fs from"bn.js";import $K from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Fh,TOKEN_2022_PROGRAM_ID as vh,TOKEN_PROGRAM_ID as _h}from"@solana/spl-token";import{SystemProgram as Wh,TransactionInstruction as qh}from"@solana/web3.js";import Za from"bn.js";var wh=Buffer.from("vault_auth_seed","utf8"),kh=Buffer.from("global_config","utf8"),Th=Buffer.from("pool_vesting","utf8"),hh=Buffer.from("platform_config","utf8"),Ih=Buffer.from("platform_fee_vault_auth_seed","utf8"),Bh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Sh=Buffer.from("platform_global_access","utf8"),Kh=Buffer.from("platform_allow_config","utf8"),xh=Buffer.from("platform_curve_rule","utf8");var zh={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 Xh=new Za("18446744073709551615");var $a=A([n(),n("epoch"),b("curveType"),$("index"),n("migrateFee"),n("tradeFeeRate"),n("maxShareFeeRate"),n("minSupplyA"),n("maxLockRate"),n("minSellRateA"),n("minMigrateRateA"),n("minFundRaisingB"),a("mintB"),a("protocolFeeOwner"),a("migrateFeeOwner"),a("migrateToAmmWallet"),a("migrateToCpmmWallet"),h(n(),16)]),ja=A([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),Ja=A([n(),n("epoch"),b("bump"),b("status"),b("mintDecimalsA"),b("mintDecimalsB"),b("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),ja.replicate("vestingSchedule"),a("configId"),a("platformId"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("creator"),b("mintProgramFlag"),b("cpmmCreatorFeeOn"),n("platformVestingShare"),h(b(),54)]),Zh=A([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),h(n(),8)]),es=A([b("migrateType"),b("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),$h=A([n("epoch"),b("index"),a("configId"),es.replicate("bondingCurveParam"),h(n(),50)]),zo=A([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),h(b(),64,"name"),h(b(),256,"web"),h(b(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),b("restrictGlobalConfig"),b("restrictCurveParam"),a("curveRuleManager"),h(b(),78)]),ts=A([b("field"),b("op"),M("value")]),ns=A([$("groupId"),n("epoch"),qt(ts,"constraints")]),os=A([n(),b("bump"),b("version"),a("platformId"),a("configId"),n("epoch"),h(n(),8),qt(ns,"groups")]);import{TOKEN_2022_PROGRAM_ID as eI,TOKEN_PROGRAM_ID as tI}from"@solana/spl-token";import is from"bn.js";var pI=new is(1e6);import gI from"bn.js";import AI from"decimal.js";import $I from"bn.js";import JI from"decimal.js";import BI from"bn.js";import KI from"decimal.js";import _I from"bn.js";import EI from"decimal.js";import Ho from"bn.js";import Mn from"decimal.js";var _t=class{static _multipler(e){return new Mn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:i}){return new Mn(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(i))}static getPriceX64({price:e,decimalA:t,decimalB:i}){let r=e.mul(this._multipler(i)).div(this._multipler(t));return new Ho(r.mul(this._Q64).toFixed(0))}};_t._Q64=new Mn(new Ho(1).shln(64).toString());import{NATIVE_MINT as fS,TOKEN_2022_PROGRAM_ID as yS,TOKEN_PROGRAM_ID as bS,createAssociatedTokenAccountIdempotentInstruction as PS,createSyncNativeInstruction as AS,getTransferFeeConfig as wS,unpackMint as kS}from"@solana/spl-token";import ee from"bn.js";import{PublicKey as ms,SystemProgram as IS}from"@solana/web3.js";import LS from"decimal.js";var OS={initPriceX64:new ee("515752397214619"),supply:new ee(1e15),totalSellA:new ee(7931e11),totalFundRaisingB:new ee(85e9),totalFundRaisingBUSD:new ee(125e8),totalLockedAmount:new ee("0"),cliffPeriod:new ee("0"),unlockPeriod:new ee("0"),decimals:6,virtualA:new ee("1073471847374405"),virtualB:new ee("30050573465"),realA:new ee(0),realB:new ee(0),protocolFee:new ee(0),platformId:new ms("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ee(0),cliffPeriod:new ee(0),unlockPeriod:new ee(0),startTime:new ee(0),totalAllocatedShare:new ee(0)}},NS=new ee(1e4);var ds={[Jn.toBase58()]:3};var ps=A([_(5),_(8),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),_(7)]);import{PublicKey as oK}from"@solana/web3.js";var uK=q("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as gK,TOKEN_2022_PROGRAM_ID as PK,TOKEN_PROGRAM_ID as AK}from"@solana/spl-token";import{PublicKey as kK,SystemProgram as TK,TransactionInstruction as hK}from"@solana/web3.js";import BK from"bn.js";var Kx=new fs(0);import{PublicKey as ys,Transaction as Fn,TransactionInstruction as bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as gs}from"@solana/spl-token";import Qo from"bn.js";var re=class extends le{static getPdaPoolId(e,t){return j([re.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,i,r){return j([re.SEED_CONFIG.owner.id,t.toBuffer(),i.toBuffer(),Buffer.from(new Qo(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:i,wallet:r,chainTime:s}){if(i.length===0)return[];let u=i.map(g=>re.getPdaPoolId(t,g).publicKey),d=[];for(let g=0;g<re.VERSION_PROJECT.length;g++)d.push(...u.map(w=>re.getPdaOwnerId(t,w,r,g).publicKey));let p=await we(e,[...u,...d]),f=[];for(let g=0;g<p.length;g++){let w=Math.floor(g/i.length),P=g%i.length,y=u[P],B=d[g],k=p[P],T=p[i.length+g];if(!(k&&T)||k.data.length!==re.POOL_LAYOUT.span||T.data.length!==re.OWNER_LAYOUT.span)continue;let S=re.POOL_LAYOUT.decode(k.data),K=re.OWNER_LAYOUT.decode(T.data),v=S.openTime.toNumber(),E=S.endTime.toNumber(),I=K.tokenInfo.map(O=>O.debtAmount.gt(new Qo(0))).filter(O=>!O).length!==3,x=s>v&&s<E&&S.status===1,C=I&&x;f.push({programId:t,poolId:y,ammId:S.ammId,ownerAccountId:B,snapshotLpAmount:K.lpAmount,project:re.VERSION_PROJECT[w],openTime:v,endTime:E,canClaim:C,canClaimErrorType:I?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:S.tokenInfo.map((O,F)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:K.tokenInfo[F].debtAmount.add(K.tokenInfo[F].claimedAmount)}))})}return f}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:i}){t.wallet||this.scope.checkOwner();let r=this.createTxBuilder(i),s=t.wallet||this.scope.ownerPubKey,u=[];for(let f of e.tokenInfo){let{account:g,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({mint:f.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:f.mintAddress.equals(ie.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!f.mintAddress.equals(ie.WSOL.mint),associatedOnly:f.mintAddress.equals(ie.WSOL.mint)?!1:t.associatedOnly});w&&r.addInstruction(w),u.push(g)}r.addInstruction({instructions:[re.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:s,ownerPda:e.ownerAccountId,claimAddress:u}})]});let{transaction:d,signers:p}=r.build();return[{transaction:d,signer:p}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:i}){let r=this.createTxBuilder(i),s=t.wallet||this.scope.ownerPubKey,u={};for(let g of e){let w=[];for(let P of g.tokenInfo){let{account:y,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:P.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:P.mintAddress.equals(ie.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!P.mintAddress.equals(ie.WSOL.mint),associatedOnly:P.mintAddress.equals(ie.WSOL.mint)?!1:t.associatedOnly});B&&r.addInstruction(B),y&&(u[P.mintAddress.toString()]=y,w.push(y))}r.addInstruction({instructions:[re.makeClaimInstruction({programId:g.programId,poolInfo:g,ownerInfo:{wallet:s,ownerPda:g.ownerAccountId,claimAddress:w}})]})}let{transaction:d,signers:p}=r.build(),f=r.allInstructions;return gn(f,[s,...p.map(g=>g.publicKey)])?[{transaction:d,signer:p}]:[{transaction:new Fn().add(...f.slice(0,r.AllTxData.instructions.length-1)),signer:p},{transaction:new Fn().add(...f.slice(r.AllTxData.instructions.length-1)),signer:[]},{transaction:new Fn().add(...r.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:i}){let r=A([]),s=[{pubkey:i.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:i.ownerPda,isSigner:!1,isWritable:!0},...i.claimAddress.map(p=>({pubkey:p,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:p})=>({pubkey:p,isSigner:!1,isWritable:!0})),{pubkey:gs,isSigner:!1,isWritable:!1}],u=Buffer.alloc(r.span);r.encode({},u);let d=Buffer.from([10,66,208,184,161,6,191,98,...u]);return new bs({keys:s,programId:e,data:d})}},Pe=re;Pe.CLAIMED_NUM=3,Pe.POOL_LAYOUT=A([_(8),b("bump"),b("status"),n("openTime"),n("endTime"),a("ammId"),h(A([b("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),re.CLAIMED_NUM,"tokenInfo"),h(n(),10,"padding")]),Pe.OWNER_LAYOUT=A([_(8),b("bump"),b("version"),a("poolId"),a("owner"),n("lpAmount"),h(A([a("mintAddress"),n("debtAmount"),n("claimedAmount")]),re.CLAIMED_NUM,"tokenInfo"),h(n(),4,"padding")]),Pe.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new ys(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 Gx}from"@solana/web3.js";import{getTransferFeeConfig as Xx,MintLayout as Yx,TOKEN_2022_PROGRAM_ID as Hx,TOKEN_PROGRAM_ID as Qx,unpackMint as Zx}from"@solana/spl-token";var IR=new _e(2),BR=new _e(3),SR=new _e(5),rn=new _e(10),KR=new _e(100),xR=new _e(1e3),CR=new _e(1e4);function dn(o){return rn.pow(V(o))}var Zo=o=>typeof o=="number",Ps=o=>o?new Date(o):new Date,Vt=o=>Ps(o).getTime();function $o(o,e,t){let i=Zo(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):Vt(e);return Vt(o)<=i}function jo(o,e,t){let i=Zo(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):Vt(e);return Vt(o)>i}function nn(o,e=1,t=[]){let i=[...o];if(e<=0)return t;for(;i.length;)t.push(i.splice(0,e));return t}var pt=q("Raydium.farm.util");function Pa({programId:o,poolId:e,mint:t,type:i}){let{publicKey:r}=j([e.toBuffer(),t.toBuffer(),Buffer.from(i==="lpVault"?"lp_vault_associated_seed":i==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],o);return r}function ye({programId:o,poolId:e,owner:t,version:i}){let{publicKey:r}=j([e.toBuffer(),t.toBuffer(),Buffer.from(i===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],o);return r}var Aa=({programId:o,poolId:e})=>j([e.toBuffer()],o);function wa(o){return{isSet:new de(1),rewardPerSecond:V(o.perSecond),rewardOpenTime:V(o.openTime),rewardEndTime:V(o.endTime),rewardType:V(Le[o.rewardType])}}function ka(o){return V(o.endTime).sub(V(o.openTime)).mul(V(o.perSecond))}function Nn(o){let e=Ht[o];return e||pt.logWithError("invalid version",o),e}function As(o){let e=Yt[o];return e||pt.logWithError("invalid version",o),e}function ws(o,e,t,i){if(o.version===3||o.version===5){if(o.lastSlot.gte(new de(t)))return o;let r=new de(t).sub(o.lastSlot);o.lastSlot=new de(t);for(let s of o.rewardInfos){if(e.amount.eq(new de(0)))continue;let u=s.perSlotReward.mul(r);s.perShareReward=s.perShareReward.add(u.mul(new de(10).pow(new de(o.version===3?9:15))).div(e.amount)),s.totalReward=s.totalReward.add(u)}}else if(o.version===6)for(let r of o.rewardInfos){if(r.rewardState.eq(new de(0)))continue;let s=de.min(new de(i),r.rewardEndTime);if(r.rewardOpenTime.gte(s))continue;let d=s.sub(r.rewardLastUpdateTime).mul(r.rewardPerSecond),p=r.totalReward.sub(r.totalRewardEmissioned);p.lt(d)?(d=p,r.rewardLastUpdateTime=r.rewardLastUpdateTime.add(p.div(r.rewardPerSecond))):r.rewardLastUpdateTime=s,!e.amount.eq(new de(0))&&(r.accRewardPerShare=r.accRewardPerShare.add(d.mul(o.rewardMultiplier).div(e.amount)),r.totalRewardEmissioned=r.totalRewardEmissioned.add(d))}return o}async function mL({connection:o,farmPools:e,owner:t,config:i,chainTime:r}){let s=!1,u=!1,d=new de(10),p=[];for(let P of e){let y=ve(P);y.version===6?u=!0:s=!0,p.push({pubkey:y.id,version:y.version,key:"state",poolId:y.id},{pubkey:y.lpVault,version:y.version,key:"lpVault",poolId:y.id}),t&&p.push({pubkey:ye({programId:y.programId,poolId:y.id,owner:t,version:P.version}),version:y.version,key:"ledger",poolId:y.id})}let f={},g=await Ke(o,p,i);for(let{pubkey:P,version:y,key:B,poolId:k,accountInfo:T}of g){let S=k.toBase58();if(f[S]=N({},f[S]),B==="state"){let K=As(y);(!T||!T.data||T.data.length!==K.span)&&pt.logWithError(`invalid farm state account info, pools.id, ${P}`),f[S].state=K.decode(T.data)}else if(B==="lpVault")(!T||!T.data||T.data.length!==ze.span)&&pt.logWithError(`invalid farm lp vault account info, pools.lpVault, ${P}`),f[S].lpVault=ze.decode(T.data);else if(B==="ledger"){let K=Nn(y);T&&T.data&&(T.data.length!==K.span&&pt.logWithError(`invalid farm ledger account info, ledger, ${P}`),f[S].ledger=K.decode(T.data))}}let w=u||s?await o.getSlot():0;for(let P of Object.keys(f))f[P]!==void 0&&(f[P].state=ws(f[P].state,f[P].lpVault,w,r));for(let[P,{state:y,ledger:B}]of Object.entries(f))if(B){let k=y.version===6?y.rewardMultiplier:y.rewardInfos.length===1?d.pow(new de(9)):d.pow(new de(15)),T=y.rewardInfos.map((S,K)=>{let v=B.rewardDebts[K];return B.deposited.mul(y.version===6?S.accRewardPerShare:S.perShareReward).div(k).sub(v)});f[P].wrapped=W(N({},f[P].wrapped),{pendingRewards:T})}return f}function dL(o,e=Date.now()){if(o.version===6){let t=o.state.rewardInfos;if(t.every(({rewardOpenTime:i})=>$o(e,i.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:i})=>jo(e,i.toNumber(),{unit:"s"})))return"closed pool"}else{let t=o.state.rewardInfos.map(({perSlotReward:i})=>i);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function On(o,e,t,i){let r=await o.getAccountInfo(e);if(r===null)throw Error("registrar info check error");let u=uo.decode(r.data).votingMints.findIndex(g=>g.mint.equals(i));if(u===-1)throw Error("find voter mint error");let d=await o.getAccountInfo(t);if(d===null)return{index:u,isInit:!1};let f=co.decode(d.data).deposits.findIndex(g=>g.isUsed&&g.votingMintConfigIdx===u);return f===-1?{index:u,isInit:!1}:{index:f,isInit:!0}}export{Mu as DEV_FARM_LOCK_MINT,Fu as DEV_FARM_LOCK_VAULT,Ci as FARM_LOCK_MINT,Ri as FARM_LOCK_VAULT,oo as FARM_PROGRAM_TO_VERSION,Ht as FARM_VERSION_TO_LEDGER_LAYOUT,Yt as FARM_VERSION_TO_STATE_LAYOUT,co as Voter,Di as VoterDepositEntry,Ei as VoterLockup,uo as VoterRegistrar,Vi as VoterVotingMintConfig,Zt as associatedLedgerAccountLayout,ka as calFarmRewardAmount,_o as createAssociatedLedgerAccountInstruction,ue as dwLayout,en as farmAddRewardLayout,qu as farmLedgerLayoutV3_1,et as farmLedgerLayoutV3_2,Uu as farmLedgerLayoutV5_1,ao as farmLedgerLayoutV5_2,so as farmLedgerLayoutV6_1,wa as farmRewardInfoToConfig,jt as farmRewardLayout,Jt as farmRewardRestartLayout,_i as farmRewardTimeInfoLayout,io as farmStateV3Layout,ro as farmStateV5Layout,Qt as farmStateV6Layout,mL as fetchMultipleFarmInfoAndUpdate,Aa as getAssociatedAuthority,ye as getAssociatedLedgerAccount,Pa as getAssociatedLedgerPoolAccount,On as getDepositEntryIndex,Nn as getFarmLedgerLayout,As as getFarmStateLayout,Sn as getRegistrarAddress,Ln as getTokenOwnerRecordAddress,Cn as getVoterAddress,Rn as getVoterWeightRecordAddress,xn as getVotingMintAuthority,Kn as getVotingTokenMint,ca as governanceCreateTokenOwnerRecord,Li as isValidFarmVersion,dL as judgeFarmType,pa as makeAddNewRewardInstruction,ia as makeCreateFarmInstruction,ra as makeCreatorWithdrawFarmRewardInstruction,ya as makeDepositInstructionV3,ba as makeDepositInstructionV5,ga as makeDepositInstructionV6,Kg as makeDepositTokenInstruction,Cg as makeDepositWithdrawInstruction,da as makeRestartRewardInstruction,Do as makeWithdrawInstructionV3,fa as makeWithdrawInstructionV4,Eo as makeWithdrawInstructionV5,Vo as makeWithdrawInstructionV6,xg as makeWithdrawTokenInstruction,Le as poolTypeV6,Mi as realFarmStateV3Layout,Fi as realFarmStateV5Layout,vi as realFarmV6Layout,ws as updateFarmPoolInfo,Oi as validateFarmRewards,ma as voterStakeRegistryCreateDepositEntry,la as voterStakeRegistryCreateVoter,aa as voterStakeRegistryDeposit,sa as voterStakeRegistryUpdateVoterWeightRecord,ua as voterStakeRegistryWithdraw,$t as withdrawRewardLayout};
//# sourceMappingURL=index.mjs.map