@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 96.8 kB
JavaScript
var ti=Object.defineProperty,ni=Object.defineProperties;var oi=Object.getOwnPropertyDescriptors;var yt=Object.getOwnPropertySymbols;var Vn=Object.prototype.hasOwnProperty,_n=Object.prototype.propertyIsEnumerable;var vn=(o,e,t)=>e in o?ti(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)&&vn(o,t,e[t]);if(yt)for(var t of yt(e))_n.call(e,t)&&vn(o,t,e[t]);return o},W=(o,e)=>ni(o,oi(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&&_n.call(o,i)&&(t[i]=o[i]);return t};import{PublicKey as yi}from"@solana/web3.js";import Un,{isBN as Gn}from"bn.js";import{bits as ii,BitStructure as ws,blob as ri,Blob as ks,cstr as Ts,f32 as hs,f32be as Is,f64 as Bs,f64be as Ss,greedy as Ks,Layout as ai,ns64 as xs,ns64be as Cs,nu64 as Rs,nu64be as Ls,offset as si,s16 as Os,s16be as Ns,s24 as Ms,s24be as Fs,s32 as ui,s32be as vs,s40 as Vs,s40be as _s,s48 as Es,s48be as Ds,s8 as Ws,seq as ci,struct as qs,Structure as li,u16 as mi,u16be as Us,u24 as Gs,u24be as zs,u32 as di,u32be as Xs,u40 as Ys,u40be as Qs,u48 as Zs,u48be as Hs,u8 as pi,UInt as fi,union as js,Union as $s,unionLayoutDiscriminator as Js,utf8 as eu}from"@solana/buffer-layout";var bt=ai,En=li;var Et=fi;var Dn=pi,$=mi;var gt=di;var be=ui;var Wn=ci;var E=ri;var Dt=ii,qn=si;var Re=class extends bt{constructor(t,i,r){super(t,r);this.blob=E(t),this.signed=i}decode(t,i=0){let r=new Un(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 Un(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 P(o){return new Et(1,o)}function Q(o){return new Et(4,o)}function n(o){return new Re(8,!1,o)}function F(o){return new Re(16,!1,o)}function zn(o){return new Re(1,!0,o)}function Ee(o){return new Re(8,!0,o)}function Xn(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(E(32),e=>new yi(e),e=>e.toBuffer(),o)}function pe(o){return new Je(Dn(),bi,gi,o)}function bi(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function gi(o){return o?1:0}function Yn(o,e){let t=gt("length"),i=A([t,h(o,qn(t,-t.span),"values")]);return new Je(i,({values:r})=>r,r=>({values:r}),e)}var Wt=class extends En{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:Gn(e)?e.toNumber():new Proxy(e,{get(s,u){if(!i){let l=Reflect.get(s,"count");i=Gn(l)?l.toNumber():l,Reflect.set(s,"count",i)}return Reflect.get(s,u)},set(s,u,l){return u==="count"&&(i=l),Reflect.set(s,u,l)}});return Wn(o,r,t)}import{PublicKey as zt}from"@solana/web3.js";import{get as Qn,set as Pi}from"lodash";var qt=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(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}},Zn={},Ai={};function q(o){let e=Qn(Zn,o);if(!e){let t=Qn(Ai,o);e=new qt({name:o,logLevel:t}),Pi(Zn,o,e)}return e}import{PublicKey as R}from"@solana/web3.js";var Hn=new R("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),jn=new R("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),$n=new R("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ut=new R("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),pu=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),wi=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Jn=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),eo=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),fu=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ki=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),to=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ti=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),hi=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),no=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),yu=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ii=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Gt=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Bi=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),bu=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Si=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ki=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),xi=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),gu=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Pu=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Au=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),wu=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),ku=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 Ci}from"@solana/spl-token";var Ru=q("Raydium_farm_config"),Ri=new zt("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Li=new zt("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Lu=Ci,Ou=new zt("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),Xt={3:io,5:ro,6:Qt},Yt={3:et,5:ao,6:so},Oi=o=>[3,4,5,6].indexOf(o)!==-1,Ni=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={[Hn.toString()]:3,[jn.toString()]:4,[$n.toString()]:5,[Ut.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([P("instruction")]),Ht=A([P("instruction")]),Mi=A([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),F("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),h(n(),15,"padding")]),Fi=A([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),F("perShareReward"),n("lastSlot"),n("perSlotReward")]),vi=A([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),F("perShareRewardA"),n("perSlotRewardA"),P("option"),a("rewardVaultB"),E(7),n("totalRewardB"),F("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),Vi=A([n(),n("state"),n("nonce"),n("validRewardTokenNum"),F("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),h(Mi,5,"rewardInfos"),a("creator"),a(),h(n(),32,"padding")]),io=new Proxy(Fi,{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(vi,{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(l=>String(l[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([P("instruction"),n("nonce"),h(_i,5,"rewardTimeInfo")]),$t=A([P("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),Jt=A([P("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),Eu=A([n("state"),a("id"),a("owner"),n("deposited"),h(n(),1,"rewardDebts")]),et=A([n("state"),a("id"),a("owner"),n("deposited"),h(F(),1,"rewardDebts"),n(""),n("voteLockedBalance"),h(n(),15)]),Du=A([n("state"),a("id"),a("owner"),n("deposited"),h(n(),2,"rewardDebts")]),ao=A([n("state"),a("id"),a("owner"),n("deposited"),h(F(),2,"rewardDebts"),h(n(),17)]),so=A([n(),n("state"),a("id"),a("owner"),n("deposited"),h(F(),5,"rewardDebts"),h(n(),16)]),ue=A([P("instruction"),n("amount")]),Ei=A([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),zn("digitShift"),h(P(),7,"reserved1"),h(n(),7,"reserved2")]),uo=A([E(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),h(P(),32,"reserved1"),h(Ei,4,"votingMints"),Ee("timeOffset"),P("bump"),h(P(),7,"reserved2"),h(n(),11,"reserved3")]),Di=A([Ee("startTime"),Ee("endTime"),P("kind"),h(P(),15,"reserved")]),Wi=A([h(Di,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),pe("isUsed"),pe("allowClawback"),P("votingMintConfigIdx"),h(P(),29,"reserved")]),co=A([E(8),a("voterAuthority"),a("registrar"),h(Wi,32,"deposits"),P("voterBump"),P("voterWweightRecordBump"),h(P(),94,"reserved")]);import de from"bn.js";import{PublicKey as qi}from"@solana/web3.js";import{MINT_SIZE as Zu,TOKEN_PROGRAM_ID as Hu,getTransferFeeConfig as ju,unpackMint as $u}from"@solana/spl-token";var en=q("Raydium_accountInfo_util");async function we(o,e,t){let{batchRequest:i,commitment:r="confirmed",chunkCount:s=100}=N({batchRequest:!1},t),u=tn(e,s),l=new Array(u.length).fill([]);if(i){let p=u.map(w=>{let g=o._buildArgs([w.map(y=>y.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:g}}),f=tn(p,10);l=(await(await Promise.all(f.map(async w=>await o._rpcBatchRequest(w)))).flat()).map(w=>(w.error&&en.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${w.error.message}`),w.result.value.map(g=>{if(g){let{data:y,executable:B,lamports:k,owner:T,rentEpoch:S}=g;return y.length!==2&&y[1]!=="base64"&&en.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(y[0],"base64"),executable:B,lamports:k,owner:new qi(T),rentEpoch:S}}return null})))}else try{l=await Promise.all(u.map(p=>o.getMultipleAccountsInfo(p,r)))}catch(p){p instanceof Error&&en.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.message}`)}return l.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 Ve from"bn.js";import GC from"decimal.js";import Hi from"big.js";import kt from"bn.js";import Ui from"toformat";var Gi=Ui,nt=Gi;import wt from"big.js";import Xi from"bn.js";import Yi 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"),nn=nt(wt),it=nt(Yi),Qi={[0]:it.ROUND_DOWN,[1]:it.ROUND_HALF_UP,[2]:it.ROUND_UP},Zi={[0]:wt.roundDown,[1]:wt.roundHalfUp,[2]:wt.roundUp},G=class{constructor(e,t=new Xi(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:Qi[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.`),nn.DP=e,nn.RM=Zi[i]||1,new nn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ji=q("Raydium_amount"),mo=nt(Hi);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")):ji.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),l=on.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[b,w]=$i(i.toString(),t.decimals);p=V(b),f=V(w)}p=p.mul(l),u=p.add(f)}super(u,l);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 un}from"@solana/web3.js";import{PublicKey as Z,SystemProgram as fo,SYSVAR_RENT_PUBKEY as er}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tr}from"@solana/spl-token";function c({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var rn=[c({pubkey:tr,isWritable:!1}),c({pubkey:fo.programId,isWritable:!1}),c({pubkey:er,isWritable:!1})];function yo({publicKey:o,transformSol:e}){let t=an(o.toString());if(t instanceof Z)return e&&t.equals(xe)?Ie:t;if(e&&t.toString()===xe.toBase58())return Ie;if(typeof t=="string"){if(t===Z.default.toBase58())return Z.default;try{return new Z(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function an(o){try{return new Z(o)}catch{return o}}var sn=new Z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Oe=new Z("SysvarRent111111111111111111111111111111111"),Rc=new Z("SysvarC1ock11111111111111111111111111111111"),ht=new Z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),It=new Z("Sysvar1nstructions1111111111111111111111111"),nr=fo.programId,Lc=new Z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Oc=new Z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Nc=new Z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Mc=new Z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fc=new Z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vc=new Z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Vc=new Z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),_c=new Z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ec=new Z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Dc=new Z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Wc=new Z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ie=new Z("So11111111111111111111111111111111111111112"),xe=Z.default;var cn=class{constructor({mint:e,decimals:t,symbol:i,name:r,skipMint:s=!1,isToken2022:u=!1}){if(e===xe.toBase58()||e instanceof un&&xe.equals(e)){this.decimals=ke.decimals,this.symbol=ke.symbol,this.name=ke.name,this.mint=new un(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?un.default:yo({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ie=cn;ie.WSOL=new cn(W(N({},ke),{mint:ke.address}));var ln=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=ln;Bt.SOL=new ln(Tt);import or from"bn.js";var bo=new G(new or(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 ir=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(mn(i.decimals),mn(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&&ir.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 Xx}from"lodash";import ml 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"},rr=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 Ml=q("Raydium_Api");import{PublicKey as ud,SystemProgram as cd}from"@solana/web3.js";import{AccountLayout as fd,createAssociatedTokenAccountIdempotentInstruction as yd,TOKEN_PROGRAM_ID as bd,TOKEN_2022_PROGRAM_ID as gd}from"@solana/spl-token";import{PublicKey as Ge,sendAndConfirmTransaction as gn,SystemProgram as mr,Transaction as st,TransactionMessage as ut,VersionedTransaction as ct}from"@solana/web3.js";import dr from"axios";import{PublicKey as dn,AddressLookupTableAccount as qe}from"@solana/web3.js";async function pn({connection:o,address:e,cluster:t="mainnet"}){let i=await we(o,[...new Set(e.map(s=>s.toString()))].map(s=>new dn(s))),r={};for(let s=0;s<e.length;s++){let u=i[s],l=e[s];if(!u)continue;let p=new qe({key:l,state:qe.deserialize(u.data)});r[l.toString()]=p,t==="devnet"?We[l.toString()]=p:De[l.toString()]=p}return r}var De={},fn=async o=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(De[e])return De;let t=new dn(e),i=await o.getAccountInfo(t);return i&&(De[e]=new qe({key:t,state:qe.deserialize(i.data)})),De},We={},yn=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(We[e])return We;let t=new dn(e),i=await o.getAccountInfo(t);return i&&(We[e]=new qe({key:t,state:qe.deserialize(i.data)})),We};var H={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 ar,Transaction as ko,TransactionMessage as sr,VersionedTransaction as To}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ur}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(H.SetComputeUnitPrice)),o.units&&(e.push(Po.setComputeUnitLimit({units:o.units})),t.push(H.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 bn(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]=ar.findProgramAddressSync(o,e);return{publicKey:t,nonce:i}}function rt({instructions:o,payer:e,signers:t}){return bn(o,[e,...t])}function at({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:i=wo.generate().publicKey.toString()}){let s=new sr({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 cr=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),lr=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof To&&(e=cr(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=ur.toBase58()),t.feePayer||(t.feePayer=wo.generate().publicKey)),e.push(lr(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 dr.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(mr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ge(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(H.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(l=>l!==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 b;let{recentBlockHash:s,skipPreflight:u=!0,sendAndConfirm:l,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]),(b=this.owner)!=null&&b.isKeyPair)return{txId:l?await gn(this.connection,t,this.signers.find(g=>g.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 g of w)try{g.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(b=>b.transaction.instructions.length>0),u=[r,...s.map(b=>b.transaction)],l=[this.signers,...s.map(b=>b.signers)],p=[...this.instructionTypes,...s.map(b=>b.instructionTypes).flat()];return(f=this.owner)!=null&&f.signer&&l.forEach(b=>{b.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:l,instructionTypes:p,execute:async b=>{var S;let{sequentially:w,onTxUpdate:g,skipTxCount:y=0,recentBlockHash:B,skipPreflight:k=!0}=b||{},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 _ of u){if(++v,v<=y)continue;let I=await gn(this.connection,_,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((_,I)=>(_.recentBlockhash=T,l[I].length&&_.sign(...l[I]),_));Ne(K);let v=await this.signAllTransactions(K);if(w){let _=0,I=[],x=async()=>{if(!v[_])return;let C=await this.connection.sendRawTransaction(v[_].serialize(),{skipPreflight:k});I.push({txId:C,status:"sent",signedTx:v[_]}),g==null||g([...I]),_++;let O=!1,M=null,D=null,ae=X=>{M!==null&&clearInterval(M),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"}g==null||g([...I]),X.err||x()};this.loopMultiTxStatus&&(M=setInterval(async()=>{var X;if(O){clearInterval(M);return}try{let z=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});z&&(O=!0,clearInterval(M),ae({err:((X=z.meta)==null?void 0:X.err)||null}),console.log("tx status from getTransaction:",C))}catch(z){O=!0,clearInterval(M),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 _=[];for(let I=0;I<v.length;I+=1){let x=await this.connection.sendRawTransaction(v[I].serialize(),{skipPreflight:k});_.push(x)}return{txIds:_,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"]),l=N(N({},this.cluster==="devnet"?await yn(this.connection):await fn(this.connection)),t),p=Array.from(new Set([...i,...this.lookupTableAddress])),f=[];for(let T of p)l[T]===void 0&&f.push(new Ge(T));let b=await pn({connection:this.connection,address:f});for(let[T,S]of Object.entries(b))l[T]=S;let w=r?Ge.default.toBase58():s!=null?s:await Ue(this.connection,this.blockhashCommitment),g=new ut({payerKey:this.feePayer,recentBlockhash:w,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(l));((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(g);return y.sign(this.signers),{builder:this,transaction:y,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var _;let{skipPreflight:S=!0,sendAndConfirm:K,notSendToRpc:v}=T||{};if(Ne([y]),(_=this.owner)!=null&&_.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(b=>b.builder.instructions.length>0),u=[r,...s.map(b=>b.transaction)],l=[this.signers,...s.map(b=>b.signers)],p=[...this.instructionTypes,...s.map(b=>b.instructionTypes).flat()];return(f=this.owner)!=null&&f.signer&&l.forEach(b=>{b.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(b,w)=>{b.sign(l[w])}),{builder:this,transactions:u,signers:l,instructionTypes:p,buildProps:i,execute:async b=>{var k;let{sequentially:w,onTxUpdate:g,recentBlockHash:y,skipPreflight:B=!0}=b||{};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 _=await this.connection.sendTransaction(T[S],{skipPreflight:B});K.push({txId:_,status:"sent",signedTx:T[S]}),g==null||g([...K]),S++;let I=!1,x=null,C=null,O=M=>{x!==null&&clearInterval(x),C!==null&&this.connection.removeSignatureListener(C);let D=K.findIndex(ae=>ae.txId===_);if(D>-1){if(K[D].status==="error"||K[D].status==="success")return;K[D].status=M.err?"error":"success"}g==null||g([...K]),M.err||v()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var M;if(I){clearInterval(x);return}try{let D=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(I=!0,clearInterval(x),O({err:((M=D.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",_))}catch(D){I=!0,clearInterval(x),console.error("getTransaction timeout:",D,_)}},xt)),C=this.connection.onSignature(_,M=>{if(I){this.connection.removeSignatureListener(C);return}I=!0,O(M)},"confirmed"),this.connection.getSignatureStatus(_)};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 g;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}),{}),l=[],p=[],f=[],b=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[b]&&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");b+=y===t[b]?1:0,rt({instructions:i?[...s.instructions,...f]:[...f],payer:this.feePayer,signers:S})?l.push(new st().add(...s.instructions,...f)):l.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)})?l.push(new st().add(...s.instructions,...f)):l.push(new st().add(...f)),p.push(B)}return l.forEach(y=>y.feePayer=this.feePayer),(g=this.owner)!=null&&g.signer&&p.forEach(y=>{y.some(B=>B.publicKey.equals(this.owner.publicKey))||y.push(this.owner.signer)}),{builder:this,transactions:l,signers:p,instructionTypes:this.instructionTypes,execute:async y=>{var _;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(l.forEach(async(I,x)=>{I.recentBlockhash=v,p[x].length&&I.sign(...p[x])}),Ne(l),(_=this.owner)!=null&&_.isKeyPair){if(B){let I=0,x=[];for(let C of l){if(++I,I<=T){x.push("tx skipped");continue}let O=await gn(this.connection,C,this.signers.find(M=>M.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});x.push(O)}return{txIds:x,signedTxs:l}}return{txIds:await Promise.all(l.map(async I=>await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:K}))),signedTxs:l}}if(this.signAllTransactions){let I=await this.signAllTransactions(l.slice(T,l.length)),x=[...l.slice(0,T),...I];if(B){let C=0,O=[],M=async()=>{if(!x[C])return;C<T&&(O.push({txId:"",status:"success",signedTx:x[C]}),k==null||k([...O]),C++,M());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||M()};this.loopMultiTxStatus&&(X=setInterval(async()=>{var Y;if(ae){clearInterval(X);return}try{let se=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:0});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 M(),{txIds:O.map(D=>D.txId),signedTxs:x}}else{let C=[];for(let O=0;O<x.length;O+=1){let M=await this.connection.sendRawTransaction(x[O].serialize(),{skipPreflight:K});C.push(M)}return{txIds:C,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var _;let v=e||{},{computeBudgetConfig:t,splitIns:i=[],lookupTableCache:r={},lookupTableAddress:s=[],insCountLimit:u=12}=v,l=Ae(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),p=N(N({},this.cluster==="devnet"?await yn(this.connection):await fn(this.connection)),r),f=Array.from(new Set([...this.lookupTableAddress,...s])),b=[];for(let I of f)p[I]===void 0&&b.push(new Ge(I));let w=await pn({connection:this.connection,address:b});for(let[I,x]of Object.entries(w))p[I]=x;let g=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?[...g.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 M of[...new Set(f)])p[M]!==void 0&&(O[M]=p[M]);if(t&&at({instructions:[...g.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:p,recentBlockhash:y})){let M=new ut({payerKey:this.feePayer,recentBlockhash:y,instructions:[...g.instructions,...S]}).compileToV0Message(Object.values(p));k.push(new ct(M))}else{let M=new ut({payerKey:this.feePayer,recentBlockhash:y,instructions:[...S]}).compileToV0Message(Object.values(p));k.push(new ct(M))}T.push(Array.from(new Set(S.map(M=>M.keys.filter(D=>D.isSigner).map(D=>D.pubkey.toString())).flat())).map(M=>B[M]).filter(M=>M!==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:[...g.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:p,recentBlockhash:y})){let C=new ut({payerKey:this.feePayer,recentBlockhash:y,instructions:[...g.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(_=this.owner)!=null&&_.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:M,skipPreflight:D=!0}=I||{};if(k.map(async(X,z)=>{T[z].length&&X.sign(T[z]),M&&(X.message.recentBlockhash=M)}),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 $e=!1,_e=null,ft=null,Fn=Ce=>{_e!==null&&clearInterval(_e),ft!==null&&this.connection.removeSignatureListener(ft);let he=Y.findIndex(ei=>ei.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&&(_e=setInterval(async()=>{var Ce;if($e){clearInterval(_e);return}try{let he=await this.connection.getTransaction(Te,{commitment:"confirmed",maxSupportedTransactionVersion:0});he&&($e=!0,clearInterval(_e),Fn({err:((Ce=he.meta)==null?void 0:Ce.err)||null}),console.log("tx status from getTransaction:",Te))}catch(he){$e=!0,clearInterval(_e),console.error("getTransaction timeout:",he,Te)}},xt)),ft=this.connection.onSignature(Te,Ce=>{if($e){this.connection.removeSignatureListener(ft);return}$e=!0,Fn(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:l||{}}}};var Pn=(...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(Pn(e))}logInfo(...e){this.logger.info(Pn(e))}logAndCreateError(...e){let t=Pn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Em,SystemProgram as Wm}from"@solana/web3.js";import Gm from"bn.js";import{createCloseAccountInstruction as Qm,createInitializeAccountInstruction as Zm,createTransferInstruction as Hm,TOKEN_PROGRAM_ID as jm}from"@solana/spl-token";import{Keypair as Sm,PublicKey as Km}from"@solana/web3.js";import Rm from"bn.js";import{TOKEN_PROGRAM_ID as Nm}from"@solana/spl-token";var ze=A([a("mint"),a("owner"),n("amount"),Q("delegateOption"),a("delegate"),P("state"),Q("isNativeOption"),n("isNative"),n("delegatedAmount"),Q("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 fr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yr}from"@solana/spl-token";function ce(o,e,t){return j([o.toBuffer(),(t!=null?t:yr).toBuffer(),e.toBuffer()],new fr("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import zg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Cb,TOKEN_2022_PROGRAM_ID as Rb,TOKEN_PROGRAM_ID as Lb}from"@solana/spl-token";import{PublicKey as Nb}from"@solana/web3.js";import Fb from"bn.js";import Vb from"decimal.js";import{TOKEN_PROGRAM_ID as Ed}from"@solana/spl-token";import{PublicKey as Ud}from"@solana/web3.js";var br=A([Q("mintAuthorityOption"),a("mintAuthority"),n("supply"),P("decimals"),P("isInitialized"),Q("freezeAuthorityOption"),a("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as jy,TOKEN_2022_PROGRAM_ID as $y,TOKEN_PROGRAM_ID as Jy}from"@solana/spl-token";import{Keypair as nb,PublicKey as ob,SystemProgram as rb,TransactionInstruction as ab}from"@solana/web3.js";import ub from"bn.js";import U from"bn.js";var Xe=new U(1).shln(64);var gr=new U(1).shln(128),An=new U(1).shln(64).subn(1),Pr=new U(1).shln(128).subn(1);var Ye=new U("4295048016"),Qe=new U("79226673521066979257578248091"),Ar=new U("59543866431248"),wr=new U("184467440737095516"),kr=new U("15793534762490258745");var wn=60,tp=new U("18446743708227953217"),Tr=[{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),Ze=new U(1),np=new U(-1);var op=new U("18446744073700000000");var hr=A([E(8),P("bump"),$("index"),a("owner"),Q("protocolFeeRate"),Q("tradeFeeRate"),$("tickSpacing"),Q("fundFeeRate"),h(Q(),1),a("fundOwner"),h(n(),3)]),Ir=A([Q("blockTimestamp"),Ee("tickCumulative"),h(n(),4)]),xo=A([E(8),pe("initialized"),n("recentEpoch"),$("observationIndex"),a("poolId"),h(Ir,Bo,"observations"),h(n(),4)]),Br=A([$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),be("tickSpacingIndexReference"),Q("volatilityReference"),Q("volatilityAccumulator"),n("lastUpdateTimestamp"),h(P(),46)]),Sr=A([P("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),F("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),F("growthGlobalX64")]),kn=A([E(8),P("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),P("mintDecimalsA"),P("mintDecimalsB"),$("tickSpacing"),F("liquidity"),F("sqrtPriceX64"),be("tickCurrent"),Q(),F("feeGrowthGlobalX64A"),F("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),h(F(),4),P("status"),P("feeOn"),E(6),h(Sr,lt,"rewardInfos"),E(8*16,"tickArrayBitmap"),h(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),Br.replicate("dynamicFeeInfo"),h(n(),46)]),Kr=A([F("growthInsideLastX64"),n("rewardAmountOwed")]),xr=A([E(8),P("bump"),a("nftMint"),a("poolId"),be("tickLower"),be("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),h(Kr,lt,"rewardInfos"),n("recentEpoch"),h(n(),7)]),sp=A([E(8),P("bump"),a("poolId"),be("tickLower"),be("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),h(F(),lt,"rewardGrowthInside"),n("recentEpoch"),h(n(),7)]),Cr=A([be("tick"),Xn("liquidityNet"),F("liquidityGross"),F("feeGrowthOutsideX64A"),F("feeGrowthOutsideX64B"),h(F(),lt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),F("unfilledRatioX64"),h(Q(),3)]),Co=A([E(8),a("poolId"),be("startTickIndex"),h(Cr,wn,"ticks"),P("initializedTickCount"),n("recentEpoch"),h(P(),107)]),Rr=A([E(8),P("bump"),h(a(),So,"operationOwners"),h(a(),Ko,"whitelistMints")]),Lr=A([E(8),a("poolId"),a("owner"),be("tick"),pe("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),F("unfilledRatioX64"),h(n(),4)]),Ro=A([E(8),a("poolId"),E(8*8*Lt,"positiveTickArrayBitmap"),E(8*8*Lt,"negativeTickArrayBitmap")]),up=A([E(8),$("index"),$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),h(n(),8)]),Or=A([E(8),a("wallet"),P("nonceIndex"),n("orderNonce"),h(n(),4)]),cp=A([n(),P("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),h(n(),8)]),Nr=A([E(8),P("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),h(n(),8)]);import dp from"bn.js";var hp=Buffer.from("amm_config","utf8"),Fr=Buffer.from("pool","utf8"),vr=Buffer.from("pool_vault","utf8"),Ip=Buffer.from("pool_reward_vault","utf8"),Bp=Buffer.from("position","utf8"),Sp=Buffer.from("tick_array","utf8"),Kp=Buffer.from("operation","utf8"),xp=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Cp=Buffer.from("observation","utf8"),Rp=Buffer.from("support_mint","utf8"),Lp=Buffer.from("dynamic_fee_config","utf8"),Op=Buffer.from("permission","utf8");var Np=Buffer.from("locked_position","utf8");import{sha256 as jr}from"js-sha256";import Vr from"bn.js";import Vp from"decimal.js";var Ep=new Vr(1).shln(256).subn(1);import of from"bn.js";import Xp from"bn.js";import Qp from"decimal.js";import cf from"bn.js";import mf from"decimal.js";import{PublicKey as jf}from"@solana/web3.js";import Jf from"bn.js";import{TOKEN_2022_PROGRAM_ID as sy,TOKEN_PROGRAM_ID as uy}from"@solana/spl-token";import dy from"decimal.js";import Df from"bn.js";import Kf from"bn.js";import hy from"bn.js";function ne(o){let e=`global:${o}`;return Buffer.from(jr.digest(e)).slice(0,8)}xo.span;var bb=q("Raydium_Clmm"),gb={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 je,SYSVAR_RENT_PUBKEY as ta,TransactionInstruction as J}from"@solana/web3.js";import vt from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as na,createAssociatedTokenAccountIdempotentInstruction as oa,TOKEN_PROGRAM_ID as me}from"@solana/spl-token";function Bn(o,e,t){return j([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],o)}function Sn(o,e){return j([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],o)}function Kn(o,e){return j([e.toBuffer()],o)}function xn(o,e,t){return j([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],o)}function Cn(o,e,t){return j([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],o)}function Rn(o,e,t,i){return j([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),i.toBuffer()],o)}var ia=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 Vo(o){let{version:e,id:t,ledger:i,programId:r,owner:s}=o,u={3:9,5:10}[e];u||ia.logWithError(`invalid farm pool version: ${e}`);let l=Buffer.alloc(Zt.span);Zt.encode({instruction:u},l);let p=[c({pubkey:t}),c({pubkey:i}),c({pubkey:s,isWritable:!1}),c({pubkey:Fe.programId,isWritable:!1}),c({pubkey:ta,isWritable:!1})];return{instruction:new J({programId:r,keys:p,data:l}),instructionType:H.FarmV3CreateLedger}}function ra(o){var i;let e=Buffer.alloc(jt.span);jt.encode({instruction:0,nonce:new vt(o.nonce),rewardTimeInfo:o.rewardInfoConfig},e);let t=[...rn,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:H.FarmV6Create}}function aa(o){let e=Buffer.alloc(Ht.span);Ht.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:H.FarmV6CreatorWithdraw}}function sa(o,e,t,i,r,s,u,l,p,f,b,w,g){let y=A([P("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:l,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],k=Buffer.alloc(y.span);y.encode({depositEntryIndex:w,amount:g},k);let T=Buffer.from([...dt.voterStakeRegistryDeposit,...k]);return new J({keys:B,programId:o,data:T})}function ua(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 l=Buffer.from([...dt.voterStakeRegistryUpdateVoterWeightRecord,...u]);return new J({keys:s,programId:o,data:l})}function ca(o,e,t,i,r,s,u,l,p,f,b,w,g,y,B){let k=A([P("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:l,isSigner:!1,isWritable:!0},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:g,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 la(o,e,t,i,r,s){let u=A([P("ins")]),l=[{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:l,programId:o,data:p})}function ma(o,e,t,i,r,s,u,l){let p=A([P("voterBump"),P("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}],b=Buffer.alloc(p.span);p.encode({voterBump:u,voterWeightRecordBump:l},b);let w=Buffer.from([...dt.voterStakeRegistryCreateVoter,...b]);return new J({keys:f,programId:o,data:w})}function da(o,e,t,i,r,s,u,l,p,f,b,w){let g=A([P("depositEntryIndex"),P("kind"),P("option"),n("startTs"),Q("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:na,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1}],B=Buffer.alloc(g.span);g.encode({depositEntryIndex:l,kind:p,option:f===void 0?0:1,startTs:f,periods:b,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:l,tokenProgram:p}){let f=Bn(i,r,s).publicKey,b=ye({programId:e,poolId:l,owner:u,version:3}),w=await o.getAccountInfo(b);if(w===null)throw Error("user is not staker");let g=et.decode(w.data),y=g.deposited.sub(g.voteLockedBalance);if(console.log("amount",y.toString()),y.eq(new vt(0)))throw Error("user do not has new stake amount");let B=Sn(e,l).publicKey,k=Kn(e,l).publicKey,{publicKey:T,nonce:S}=xn(i,f,u),K=ce(T,B,p).publicKey,{publicKey:v,nonce:_}=Cn(i,f,u),I=Rn(t,r,s,u).publicKey,x=[],C=ce(u,B,p).publicKey;if(await o.getAccountInfo(C)===null&&x.push(oa(u,C,u,B)),await o.getAccountInfo(T)===null){let X=la(t,r,u,s,u,I);x.push(X,ma(i,f,T,v,u,u,S,_))}let{index:D,isInit:ae}=await Ln(o,f,T,B);return ae||x.push(da(i,f,T,K,u,u,B,D,0,void 0,0,!1)),x.push(sa(i,f,T,K,C,u,b,l,B,k,e,D,y),ua(i,f,T,v)),x}async function xg({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:i,realm:r,communityTokenMint:s,owner:u,poolId:l,tokenProgram:p}){let f=Bn(i,r,s).publicKey,b=ye({programId:e,poolId:l,owner:u,version:3}),w=await o.getAccountInfo(b);if(w===null)throw Error("user is not staker");let g=et.decode(w.data);if(g.voteLockedBalance.eq(new vt(0)))throw Error("user has vote locked balance = 0");let y=Sn(e,l).publicKey,B=Kn(e,l).publicKey,{publicKey:k}=xn(i,f,u),T=ce(k,y,p).publicKey,{publicKey:S}=Cn(i,f,u),K=Rn(t,r,s,u).publicKey,v=[],{index:_,isInit:I}=await Ln(o,f,k,y);if(!I)throw Error("deposit entry index check error");return v.push(ca(i,f,k,u,K,S,T,ce(u,y,p).publicKey,b,l,y,B,e,_,g.voteLockedBalance)),v}function pa({payer:o,rewardVault:e,userRewardTokenPub:t,farmKeys:i,rewardInfo:r}){let s=Buffer.alloc($t.span);$t.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 fa({payer:o,userRewardTokenPub:e,farmKeys:t,rewardVault:i,rewardInfo:r}){let s=Buffer.alloc(Jt.span);Jt.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=[...rn,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:l,amount:p,deposit:f}=o,[b,w]=[new L(e.programId),new L(e.id)],g=ye({programId:b,poolId:w,owner:u,version:i}),y=Buffer.alloc(ue.span);ue.encode({instruction:l,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:g}),c({pubkey:u,isWritable:!1,isSigner:!0}),c({pubkey:r})]:[c({pubkey:w}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:g}),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:je,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:b,keys:B,data:y})}function _o(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u}=o,[l,p]=[new L(e.programId),new L(e.id)],f=ye({programId:l,poolId:p,owner:s,version:6}),b=Buffer.alloc(ue.span);ue.encode({instruction:2,amount:V(u)},b);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 g=0;g<t.rewardInfos.length;g++)w.push(c({pubkey:new L(t.rewardInfos[g].vault)})),w.push(c({pubkey:r[g]}));return new J({programId:l,keys:w,data:b})}function Eo(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:l}=o,[p,f]=[new L(e.programId),new L(e.id)],b=ye({programId:p,poolId:f,owner:s,version:5}),w=Buffer.alloc(ue.span);ue.encode({instruction:12,amount:V(u)},w);let g=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:b}),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:je,isWritable:!1}),c({pubkey:me,isWritable:!1})];for(let y=1;y<t.rewardInfos.length;y++)g.push(c({pubkey:r[y]})),g.push(c({pubkey:new L(t.rewardInfos[y].vault)}));if(l)for(let y of l)g.push(c({pubkey:y}));return new J({programId:p,keys:g,data:w})}function ya(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:l}=o,[p,f]=[new L(e.programId),new L(e.id)],b=A([P("instruction"),n("amount")]),w=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:l[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:je,isWritable:!1}),c({pubkey:me,isWritable:!1}),c({pubkey:r[1]}),c({pubkey:new L(t.rewardInfos[1].vault)})],g=Buffer.alloc(b.span);return b.encode({instruction:2,amount:u},g),new J({keys:w,programId:p,data:g})}function Do(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:l}=o,[p,f]=[new L(e.programId),new L(e.id)],b=ye({programId:p,poolId:f,owner:s,version:3}),w=Buffer.alloc(ue.span);ue.encode({instruction:11,amount:V(u)},w);let g=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:b}),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:je,isWritable:!1}),c({pubkey:me,isWritable:!1})];if(l)for(let y of l)g.push(c({pubkey:y}));return new J({programId:p,keys:g,data:w})}function ba(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:l}=o,[p,f]=[new L(e.programId),new L(e.id)],b=ye({programId:p,poolId:f,owner:s,version:3}),w=Buffer.alloc(ue.span);ue.encode({instruction:10,amount:V(u)},w);let g=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:b}),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:je,isWritable:!1}),c({pubkey:me,isWritable:!1})];if(l)for(let y of l)g.push(c({pubkey:y}));return new J({programId:p,keys:g,data:w})}function ga(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u,userAuxiliaryLedgers:l}=o,[p,f]=[new L(e.programId),new L(e.id)],b=ye({programId:p,poolId:f,owner:s,version:5}),w=Buffer.alloc(ue.span);ue.encode({instruction:11,amount:V(u)},w);let g=[c({pubkey:f}),c({pubkey:new L(t.authority),isWritable:!1}),c({pubkey:b}),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:je,isWritable:!1}),c({pubkey:me,isWritable:!1})];for(let y=1;y<t.rewardInfos.length;y++)g.push(c({pubkey:r[y]})),g.push(c({pubkey:new L(t.rewardInfos[y].vault)}));if(l)for(let y of l)g.push(c({pubkey:y}));return new J({programId:p,keys:g,data:w})}function Pa(o){let{farmInfo:e,farmKeys:t,lpAccount:i,rewardAccounts:r,owner:s,amount:u}=o,[l,p]=[new L(e.programId),new L(e.id)],f=ye({programId:l,poolId:p,owner:s,version:6}),b=Buffer.alloc(ue.span);ue.encode({instruction:1,amount:V(u)},b);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 g=0;g<t.rewardInfos.length;g++)w.push(c({pubkey:new L(t.rewardInfos[g].vault)})),w.push(c({pubkey:r[g]}));return new J({programId:l,keys:w,data:b})}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 ha=new Wo(25),Ia=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 Ba}from"@solana/web3.js";import Sa from"bn.js";function Ka(o){return typeof o=="object"&&o!==null&&![ie,fe,Ba,G,Sa,ge,Be].some(e=>typeof e=="object"&&o instanceof e)}function ve(o){return typeof o=="string"?an(o):Array.isArray(o)?o.map(e=>ve(e)):Ka(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,ve(t)])):o}import EP from"bn.js";var xa=A([P("instruction"),n("amountIn"),n("minAmountOut")]),Ca=A([P("instruction"),n("maxAmountIn"),n("amountOut")]),kP=A([P("instruction"),P("nonce")]),Ra=A([P("instruction"),P("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"),F("swapBaseInAmount"),F("swapQuoteOutAmount"),n("swapBase2QuoteFee"),F("swapQuoteInAmount"),F("swapBaseOutAmount"),n("swapQuote2BaseFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("withdrawQueue"),a("lpVault"),a("owner"),n("lpReserve"),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"),F("swapBaseInAmount"),F("swapQuoteOutAmount"),F("swapQuoteInAmount"),F("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("modelDataAccount"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("owner"),h(n(),64,"padding")]),La=A([P("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Oa=A([P("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Na=A([n("fee")]);var qP=q("Raydium_liquidity_instruction");var Ma=5e4,Fa=A([n("x"),n("y"),n("price")]),XP=A([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),h(Fa,Ma,"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 HP}from"@solana/web3.js";var JP=q("Raydium_liquidity_serum");import Fw from"bn.js";import Vw from"decimal.js";import{TOKEN_PROGRAM_ID as FA}from"@solana/spl-token";import{PublicKey as VA}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 va(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([E(5),va("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"),E(7)]);import{PublicKey as uT}from"@solana/web3.js";import{AccountLayout as lT,NATIVE_MINT as mT,TOKEN_2022_PROGRAM_ID as dT,TOKEN_PROGRAM_ID as pT,createAssociatedTokenAccountIdempotentInstruction as fT}from"@solana/spl-token";import sk from"bn.js";import Ga from"bn.js";var Yw=new Ga(0);import Jw from"bn.js";import za from"bn.js";var Mt=new za(1e6);import TT from"bn.js";import IT from"decimal.js";import{PublicKey as Bk,TransactionInstruction as Sk,Keypair as xk,SystemProgram as Ck}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Lk,TOKEN_2022_PROGRAM_ID as Ok,TOKEN_PROGRAM_ID as Nk}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");var wk=Buffer.from("locked_liquidity","utf8");var Dk=q("Raydium_cpmm"),Wk={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 Qa=A([E(8),P("bump"),pe("disableCreatePool"),$("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),h(n(),15)]),Uo=A([E(8),a("configId"),a("poolCreator"),a("vaultA"),a("vaultB"),a("mintLp"),a("mintA"),a("mintB"),a("mintProgramA"),a("mintProgramB"),a("observationId"),P("bump"),P("status"),P("lpDecimals"),P("mintDecimalA"),P("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),P("feeOn"),pe("enableCreatorFee"),h(P(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),h(n(),28)]),Gk=A([E(8),a("configId"),h(n(),30)]);import{PublicKey as yK,SystemProgram as bK}from"@solana/web3.js";import{createTransferInstruction as PK,TOKEN_PROGRAM_ID as AK,TOKEN_2022_PROGRAM_ID as wK,createAssociatedTokenAccountIdempotentInstruction as kK,createSyncNativeInstruction as hK,createTransferCheckedInstruction as IK}from"@solana/spl-token";import ms from"bn.js";import KK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Mh,TOKEN_2022_PROGRAM_ID as Fh,TOKEN_PROGRAM_ID as vh}from"@solana/spl-token";import{SystemProgram as Dh,TransactionInstruction as Wh}from"@solana/web3.js";import ts from"bn.js";var ja=A([n(),n("epoch"),P("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)]),$a=A([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),Ja=A([n(),n("epoch"),P("bump"),P("status"),P("mintDecimalsA"),P("mintDecimalsB"),P("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),$a.replicate("vestingSchedule"),a("configId"),a("platformId"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("creator"),P("mintProgramFlag"),P("cpmmCreatorFeeOn"),n("platformVestingShare"),h(P(),54)]),yh=A([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),h(n(),8)]),zo=A([P("migrateType"),P("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),es=A([n("epoch"),P("index"),a("configId"),zo.replicate("bondingCurveParam"),h(n(),50)]),Xo=A([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),h(P(),64,"name"),h(P(),256,"web"),h(P(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),P("restrictGlobalConfig"),h(P(),107),Yn(es,"platformCurve")]);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");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]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var Xh=new ts("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as Hh,TOKEN_PROGRAM_ID as jh}from"@solana/spl-token";import tI from"bn.js";import oI from"decimal.js";import FI from"bn.js";import VI from"decimal.js";import cI from"bn.js";import mI from"decimal.js";import kI from"bn.js";import hI from"decimal.js";import Zo from"bn.js";import Nn from"decimal.js";var Vt=class{static _multipler(e){return new Nn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:i}){return new Nn(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 Zo(r.mul(this._Q64).toFixed(0))}};Vt._Q64=new Nn(new Zo(1).shln(64).toString());import{NATIVE_MINT as zB,TOKEN_2022_PROGRAM_ID as XB,TOKEN_PROGRAM_ID as YB,createAssociatedTokenAccountIdempotentInstruction as ZB,createSyncNativeInstruction as HB,getTransferFeeConfig as jB,unpackMint as $B}from"@solana/spl-token";import ee from"bn.js";import{PublicKey as us,SystemProgram as tS}from"@solana/web3.js";import uS from"decimal.js";var cS={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 us("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ee(0),cliffPeriod:new ee(0),unlockPeriod:new ee(0),startTime:new ee(0),totalAllocatedShare:new ee(0)}},lS=new ee(1e4);var cs={[Jn.toBase58()]:3};var ls=A([E(5),E(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"),E(7)]);import{PublicKey as NS}from"@solana/web3.js";var _S=q("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as YS,TOKEN_2022_PROGRAM_ID as QS,TOKEN_PROGRAM_ID as ZS}from"@solana/spl-token";import{PublicKey as jS,SystemProgram as $S,TransactionInstruction as JS}from"@solana/web3.js";import tK from"bn.js";var ox=new ms(0);import{PublicKey as ds,Transaction as Mn,TransactionInstruction as ps}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fs}from"@solana/spl-token";import Ho 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 Ho(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(b=>re.getPdaPoolId(t,b).publicKey),l=[];for(let b=0;b<re.VERSION_PROJECT.length;b++)l.push(...u.map(w=>re.getPdaOwnerId(t,w,r,b).publicKey));let p=await we(e,[...u,...l]),f=[];for(let b=0;b<p.length;b++){let w=Math.floor(b/i.length),g=b%i.length,y=u[g],B=l[b],k=p[g],T=p[i.length+b];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(),_=S.endTime.toNumber(),I=K.tokenInfo.map(O=>O.debtAmount.gt(new Ho(0))).filter(O=>!O).length!==3,x=s>v&&s<_&&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:_,canClaim:C,canClaimErrorType:I?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:S.tokenInfo.map((O,M)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:K.tokenInfo[M].debtAmount.add(K.tokenInfo[M].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:b,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(b)}r.addInstruction({instructions:[re.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:s,ownerPda:e.ownerAccountId,claimAddress:u}})]});let{transaction:l,signers:p}=r.build();return[{transaction:l,signer:p}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:i}){let r=this.createTxBuilder(i),s=t.wallet||this.scope.ownerPubKey,u={};for(let b of e){let w=[];for(let g of b.tokenInfo){let{account:y,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(ie.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!g.mintAddress.equals(ie.WSOL.mint),associatedOnly:g.mintAddress.equals(ie.WSOL.mint)?!1:t.associatedOnly});B&&r.addInstruction(B),y&&(u[g.mintAddress.toString()]=y,w.push(y))}r.addInstruction({instructions:[re.makeClaimInstruction({programId:b.programId,poolInfo:b,ownerInfo:{wallet:s,ownerPda:b.ownerAccountId,claimAddress:w}})]})}let{transaction:l,signers:p}=r.build(),f=r.allInstructions;return bn(f,[s,...p.map(b=>b.publicKey)])?[{transaction:l,signer:p}]:[{transaction:new Mn().add(...f.slice(0,r.AllTxData.instructions.length-1)),signer:p},{transaction:new Mn().add(...f.slice(r.AllTxData.instructions.length-1)),signer:[]},{transaction:new Mn().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:fs,isSigner:!1,isWritable:!1}],u=Buffer.alloc(r.span);r.encode({},u);let l=Buffer.from([10,66,208,184,161,6,191,98,...u]);return new ps({keys:s,programId:e,data:l})}},Pe=re;Pe.CLAIMED_NUM=3,Pe.POOL_LAYOUT=A([E(8),P("bump"),P("status"),n("openTime"),n("endTime"),a("ammId"),h(A([P("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),re.CLAIMED_NUM,"tokenInfo"),h(n(),10,"padding")]),Pe.OWNER_LAYOUT=A([E(8),P("bump"),P("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 ds(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 wx}from"@solana/web3.js";import{getTransferFeeConfig as Tx,MintLayout as hx,TOKEN_2022_PROGRAM_ID as Ix,TOKEN_PROGRAM_ID as Bx,unpackMint as Sx}from"@solana/spl-token";var eR=new Ve(2),tR=new Ve(3),nR=new Ve(5),on=new Ve(10),oR=new Ve(100),iR=new Ve(1e3),rR=new Ve(1e4);function mn(o){return on.pow(V(o))}var jo=o=>typeof o=="number",ys=o=>o?new Date(o):new Date,_t=o=>ys(o).getTime();function $o(o,e,t){let i=jo(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):_t(e);return _t(o)<=i}function Jo(o,e,t){let i=jo(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):_t(e);return _t(o)>i}function tn(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 Aa({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 wa=({programId:o,poolId:e})=>j([e.toBuffer()],o);function ka(o){return{isSet:new de(1),rewardPerSecond:V(o.perSecond),rewardOpenTime:V(o.openTime),rewardEndTime:V(o.endTime),rewardType:V(Le[o.rewardType])}}function Ta(o){return V(o.endTime).sub(V(o.openTime)).mul(V(o.perSecond))}function On(o){let e=Yt[o];return e||pt.logWithError("invalid version",o),e}function bs(o){let e=Xt[o];return e||pt.logWithError("invalid version",o),e}function gs(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 l=s.sub(r.rewardLastUpdateTime).mul(r.rewardPerSecond),p=r.totalReward.sub(r.totalRewardEmissioned);p.lt(l)?(l=p,r.rewardLastUpdateTime=r.rewardLastUpdateTime.add(p.div(r.rewardPerSecond))):r.rewardLastUpdateTime=s,!e.amount.eq(new de(0))&&(r.accRewardPerShare=r.accRewardPerShare.add(l.mul(o.rewardMultiplier).div(e.amount)),r.totalRewardEmissioned=r.totalRewardEmissioned.add(l))}return o}async function WR({connection:o,farmPools:e,owner:t,config:i,chainTime:r}){let s=!1,u=!1,l=new de(10),p=[];for(let g of e){let y=ve(g);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:g.version}),version:y.version,key:"ledger",poolId:y.id})}let f={},b=await Ke(o,p,i);for(let{pubkey:g,version:y,key:B,poolId:k,accountInfo:T}of b){let S=k.toBase58();if(f[S]=N({},f[S]),B==="state"){let K=bs(y);(!T||!T.data||T.data.length!==K.span)&&pt.logWithError(`invalid farm state account info, pools.id, ${g}`),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, ${g}`),f[S].lpVault=ze.decode(T.data);else if(B==="ledger"){let K=On(y);T&&T.data&&(T.data.length!==K.span&&pt.logWithError(`invalid farm ledger account info, ledger, ${g}`),f[S].ledger=K.decode(T.data))}}let w=u||s?await o.getSlot():0;for(let g of Object.keys(f))f[g]!==void 0&&(f[g].state=gs(f[g].state,f[g].lpVault,w,r));for(let[g,{state:y,ledger:B}]of Object.entries(f))if(B){let k=y.version===6?y.rewardMultiplier:y.rewardInfos.length===1?l.pow(new de(9)):l.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[g].wrapped=W(N({},f[g].wrapped),{pendingRewards:T})}return f}function qR(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 Ln(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(b=>b.mint.equals(i));if(u===-1)throw Error("find voter mint error");let l=await o.getAccountInfo(t);if(l===null)return{index:u,isInit:!1};let f=co.decode(l.data).deposits.findIndex(b=>b.isUsed&&b.votingMintConfigIdx===u);return f===-1?{index:u,isInit:!1}:{index:f,isInit:!0}}export{Lu as DEV_FARM_LOCK_MINT,Ou as DEV_FARM_LOCK_VAULT,Ri as FARM_LOCK_MINT,Li as FARM_LOCK_VAULT,oo as FARM_PROGRAM_TO_VERSION,Yt as FARM_VERSION_TO_LEDGER_LAYOUT,Xt as FARM_VERSION_TO_STATE_LAYOUT,co as Voter,Wi as VoterDepositEntry,Di as VoterLockup,uo as VoterRegistrar,Ei as VoterVotingMintConfig,Zt as associatedLedgerAccountLayout,Ta as calFarmRewardAmount,Vo as createAssociatedLedgerAccountInstruction,ue as dwLayout,Jt as farmAddRewardLayout,Eu as farmLedgerLayoutV3_1,et as farmLedgerLayoutV3_2,Du as farmLedgerLayoutV5_1,ao as farmLedgerLayoutV5_2,so as farmLedgerLayoutV6_1,ka as farmRewardInfoToConfig,jt as farmRewardLayout,$t as farmRewardRestartLayout,_i as farmRewardTimeInfoLayout,io as farmStateV3Layout,ro as farmStateV5Layout,Qt as farmStateV6Layout,WR as fetchMultipleFarmInfoAndUpdate,wa as getAssociatedAuthority,ye as getAssociatedLedgerAccount,Aa as getAssociatedLedgerPoolAccount,Ln as getDepositEntryIndex,On as getFarmLedgerLayout,bs as getFarmStateLayout,Bn as getRegistrarAddress,Rn as getTokenOwnerRecordAddress,xn as getVoterAddress,Cn as getVoterWeightRecordAddress,Kn as getVotingMintAuthority,Sn as getVotingTokenMint,la as governanceCreateTokenOwnerRecord,Oi as isValidFarmVersion,qR as judgeFarmType,fa as makeAddNewRewardInstruction,ra as makeCreateFarmInstruction,aa as makeCreatorWithdrawFarmRewardInstruction,ba as makeDepositInstructionV3,ga as makeDepositInstructionV5,Pa as makeDepositInstructionV6,Kg as makeDepositTokenInstruction,Cg as makeDepositWithdrawInstruction,pa as makeRestartRewardInstruction,Do as makeWithdrawInstructionV3,ya as makeWithdrawInstructionV4,Eo as makeWithdrawInstructionV5,_o as makeWithdrawInstructionV6,xg as makeWithdrawTokenInstruction,Le as poolTypeV6,Fi as realFarmStateV3Layout,vi as realFarmStateV5Layout,Vi as realFarmV6Layout,gs as updateFarmPoolInfo,Ni as validateFarmRewards,da as voterStakeRegistryCreateDepositEntry,ma as voterStakeRegistryCreateVoter,sa as voterStakeRegistryDeposit,ua as voterStakeRegistryUpdateVoterWeightRecord,ca as voterStakeRegistryWithdraw,Ht as withdrawRewardLayout};
//# sourceMappingURL=index.mjs.map