UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 176 kB
var Ba=Object.create;var Jt=Object.defineProperty,xa=Object.defineProperties,Sa=Object.getOwnPropertyDescriptor,Ka=Object.getOwnPropertyDescriptors,Ca=Object.getOwnPropertyNames,Pn=Object.getOwnPropertySymbols,Ra=Object.getPrototypeOf,jn=Object.prototype.hasOwnProperty,wi=Object.prototype.propertyIsEnumerable;var Ai=(i,e,t)=>e in i?Jt(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))jn.call(e,t)&&Ai(i,t,e[t]);if(Pn)for(var t of Pn(e))wi.call(e,t)&&Ai(i,t,e[t]);return i},G=(i,e)=>xa(i,Ka(e));var Ce=(i,e)=>{var t={};for(var n in i)jn.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&Pn)for(var n of Pn(i))e.indexOf(n)<0&&wi.call(i,n)&&(t[n]=i[n]);return t};var La=(i,e)=>{for(var t in e)Jt(i,t,{get:e[t],enumerable:!0})},ki=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ca(e))!jn.call(i,o)&&o!==t&&Jt(i,o,{get:()=>e[o],enumerable:!(n=Sa(e,o))||n.enumerable});return i};var F=(i,e,t)=>(t=i!=null?Ba(Ra(i)):{},ki(e||!i||!i.__esModule?Jt(t,"default",{value:i,enumerable:!0}):t,i)),Oa=i=>ki(Jt({},"__esModule",{value:!0}),i);var Mc={};La(Mc,{default:()=>gn});module.exports=Oa(Mc);var pe=require("@solana/web3.js"),he=require("@solana/spl-token");var ka=require("@solana/web3.js");var Tt=F(require("bn.js")),Nc=F(require("decimal.js"));var Ki=F(require("big.js")),rn=F(require("bn.js"));var en=require("lodash");var $n=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(n=>typeof n=="object"?JSON.stringify(n):n).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}},Ti={},Na={};function Q(i){let e=(0,en.get)(Ti,i);if(!e){let t=(0,en.get)(Na,i);e=new $n({name:i,logLevel:t}),(0,en.set)(Ti,i,e)}return e}var hi=F(require("toformat")),Ma=hi.default,tn=Ma;var nn=F(require("big.js")),Bi=F(require("bn.js")),xi=F(require("decimal.js-light"));var Wt=F(require("bn.js"));var Ii=9007199254740991;function ee(i){let e=Q("Raydium_parseBigNumberish");if(i instanceof Wt.default)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Wt.default(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Ii||i<=-Ii)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Wt.default(String(i))):typeof i=="bigint"?new Wt.default(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Wt.default(0))}var An=Q("module/fraction"),Jn=tn(nn.default),on=tn(xi.default),va={[0]:on.ROUND_DOWN,[1]:on.ROUND_HALF_UP,[2]:on.ROUND_UP},_a={[0]:nn.default.roundDown,[1]:nn.default.roundHalfUp,[2]:nn.default.roundUp},te=class{constructor(e,t=new Bi.default(1)){this.numerator=ee(e),this.denominator=ee(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(ee(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(ee(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(ee(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(ee(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||An.logWithError(`${e} is not an integer.`),e<=0&&An.logWithError(`${e} is not positive.`),on.set({precision:e+1,rounding:va[n]});let o=new on(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||An.logWithError(`${e} is not an integer.`),e<0&&An.logWithError(`${e} is negative.`),Jn.DP=e,Jn.RM=_a[n]||1,new Jn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Va=Q("Raydium_amount"),Si=tn(Ki.default);function Ea(i,e){let t="0",n="0";if(i.includes(".")){let o=i.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):Va.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Re=class extends te{constructor(t,n,o=!0,u){let r=new rn.default(0),a=eo.pow(new rn.default(t.decimals));if(o)r=ee(n);else{let c=new rn.default(0),d=new rn.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Ea(n.toString(),t.decimals);c=ee(l),d=ee(m)}c=c.mul(a),r=c.add(d)}super(r,a);this.logger=Q(u||"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 Re(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Re(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.token.decimals,n,o=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return Si.DP=this.token.decimals,new Si(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var Ci=require("@solana/web3.js"),to=require("@solana/spl-token"),wn={chainId:101,address:Ci.PublicKey.default.toBase58(),programId:to.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ot={chainId:101,address:"So11111111111111111111111111111111111111112",programId:to.TOKEN_PROGRAM_ID.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"}};var kn=require("@solana/web3.js");var ie=require("@solana/web3.js"),Ri=require("@solana/spl-token");function B({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Da=[B({pubkey:Ri.TOKEN_PROGRAM_ID,isWritable:!1}),B({pubkey:ie.SystemProgram.programId,isWritable:!1}),B({pubkey:ie.SYSVAR_RENT_PUBKEY,isWritable:!1})];function no({publicKey:i,transformSol:e}){let t=oo(i.toString());if(t instanceof ie.PublicKey)return e&&t.equals(It)?Ye:t;if(e&&t.toString()===It.toBase58())return Ye;if(typeof t=="string"){if(t===ie.PublicKey.default.toBase58())return ie.PublicKey.default;try{return new ie.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function oo(i){try{return new ie.PublicKey(i)}catch{return i}}var yt=new ie.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),De=new ie.PublicKey("SysvarRent111111111111111111111111111111111"),nl=new ie.PublicKey("SysvarC1ock11111111111111111111111111111111"),bt=new ie.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Wa=new ie.PublicKey("Sysvar1nstructions1111111111111111111111111"),qa=ie.SystemProgram.programId,ol=new ie.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),il=new ie.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),rl=new ie.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),al=new ie.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),sl=new ie.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ul=new ie.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),cl=new ie.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ll=new ie.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ml=new ie.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),dl=new ie.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),pl=new ie.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ye=new ie.PublicKey("So11111111111111111111111111111111111111112"),It=ie.PublicKey.default;function Bt(i){return no({publicKey:i,transformSol:!0})}var io=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:u=!1,isToken2022:r=!1}){if(e===It.toBase58()||e instanceof kn.PublicKey&&It.equals(e)){this.decimals=ot.decimals,this.symbol=ot.symbol,this.name=ot.name,this.mint=new kn.PublicKey(ot.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=u?kn.PublicKey.default:no({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=io;ye.WSOL=new io(G(v({},ot),{mint:ot.address}));var ro=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Tn=ro;Tn.SOL=new ro(wn);var Oi=F(require("bn.js"));var Li=new te(new Oi.default(100)),He=class extends te{toSignificant(e=5,t,n){return this.mul(Li).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Li).toFixed(e,t,n)}};var Ua=Q("Raydium_price"),Qe=class extends te{constructor(t){let{baseToken:n,quoteToken:o,numerator:u,denominator:r}=t;super(u,r);this.baseToken=n,this.quoteToken=o,this.scalar=new te(ao(n.decimals),ao(o.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Qe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ua.logWithError("mul token not equals");let n=super.mul(t);return new Qe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};var Oc=require("lodash");var za=F(require("axios"));var Ni={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"},Ga=G(v({},Ni),{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 nm=Q("Raydium_Api");var er=require("@solana/web3.js");var vn=require("@solana/spl-token");var ne=require("@solana/web3.js"),_i=F(require("axios"));var Ze=require("@solana/web3.js");async function so({connection:i,address:e,cluster:t="mainnet"}){let n=await je(i,[...new Set(e.map(u=>u.toString()))].map(u=>new Ze.PublicKey(u))),o={};for(let u=0;u<e.length;u++){let r=n[u],a=e[u];if(!r)continue;let c=new Ze.AddressLookupTableAccount({key:a,state:Ze.AddressLookupTableAccount.deserialize(r.data)});o[a.toString()]=c,t==="devnet"?Ut[a.toString()]=c:qt[a.toString()]=c}return o}var qt={},uo=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(qt[e])return qt;let t=new Ze.PublicKey(e),n=await i.getAccountInfo(t);return n&&(qt[e]=new Ze.AddressLookupTableAccount({key:t,state:Ze.AddressLookupTableAccount.deserialize(n.data)})),qt},Ut={},co=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ut[e])return Ut;let t=new Ze.PublicKey(e),n=await i.getAccountInfo(t);return n&&(Ut[e]=new Ze.AddressLookupTableAccount({key:t,state:Ze.AddressLookupTableAccount.deserialize(n.data)})),Ut};var _={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"};var Le=require("@solana/web3.js");var Fi=require("@solana/spl-token"),Mi=Q("Raydium_txUtil"),vi=1644;function hn(i){let e=[],t=[];return i.microLamports&&(e.push(Le.ComputeBudgetProgram.setComputeUnitPrice({microLamports:i.microLamports})),t.push(_.SetComputeUnitPrice)),i.units&&(e.push(Le.ComputeBudgetProgram.setComputeUnitLimit({units:i.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Gt(i,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=i.getLatestBlockhash)==null?void 0:n.call(i,{commitment:t})))==null?void 0:o.blockhash}async function In(i,e){return i.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);i.onSignature(e,u=>{if(clearTimeout(o),!u.err){t("");return}n(Object.assign(u.err,{txId:e}))},"confirmed")})}function lo(i,e){i.length<1&&Mi.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Mi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Le.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<vi}catch{return!1}}function oe(i,e){let[t,n]=Le.PublicKey.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function an({instructions:i,payer:e,signers:t}){return lo(i,[e,...t])}function sn({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Le.Keypair.generate().publicKey.toString()}){let u=new Le.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Le.VersionedTransaction(u).serialize()).toString("base64").length<vi}catch{return!1}}var Xa=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Ya=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Le.VersionedTransaction&&(e=Xa(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function xt(i){let e=[];return i.forEach(t=>{t instanceof Le.Transaction&&(t.recentBlockhash||(t.recentBlockhash=Fi.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=Le.Keypair.generate().publicKey)),e.push(Ya(t))}),console.log("simulate tx string:",e),e}var Bn=2e3,xn=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 n;let e=(await _i.default.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=hn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ne.SystemProgram.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new ne.PublicKey(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(_.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:o=[],endInstructionTypes:u=[],lookupTableAddress:r=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...u),this.lookupTableAddress.push(...r.filter(a=>a!==ne.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(G(v({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new ne.Transaction;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.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 o=>{var l;let{recentBlockHash:u,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},d=u!=null?u:await Gt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),xt([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await(0,ne.sendAndConfirmTransaction)(this.connection,t,this.signers.find(f=>f.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:r}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:r}),signedTx:t};if(this.signAllTransactions){let m=await this.signAllTransactions([t]);if(this.signers.length)for(let f of m)try{f.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:r}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),u=t.filter(l=>l.transaction.instructions.length>0),r=[o,...u.map(l=>l.transaction)],a=[this.signers,...u.map(l=>l.signers)],c=[...this.instructionTypes,...u.map(l=>l.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:c,execute:async l=>{var P;let{sequentially:m,onTxUpdate:f,skipTxCount:p=0,recentBlockHash:y,skipPreflight:b=!0}=l||{},g=y!=null?y:await Gt(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(m){let w=[],I=0;for(let C of r){if(++I,I<=p)continue;let k=await(0,ne.sendAndConfirmTransaction)(this.connection,C,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});w.push(k)}return{txIds:w,signedTxs:r}}return{txIds:await await Promise.all(r.map(async w=>(w.recentBlockhash=g,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:b})))),signedTxs:r}}if(this.signAllTransactions){let w=r.map((C,k)=>(C.recentBlockhash=g,a[k].length&&C.sign(...a[k]),C));xt(w);let I=await this.signAllTransactions(w);if(m){let C=0,k=[],x=async()=>{if(!I[C])return;let S=await this.connection.sendRawTransaction(I[C].serialize(),{skipPreflight:b});k.push({txId:S,status:"sent",signedTx:I[C]}),f==null||f([...k]),C++;let O=!1,N=null,K=null,z=U=>{N!==null&&clearInterval(N),K!==null&&this.connection.removeSignatureListener(K);let V=k.findIndex(H=>H.txId===S);if(V>-1){if(k[V].status==="error"||k[V].status==="success")return;k[V].status=U.err?"error":"success"}f==null||f([...k]),U.err||x()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(O){clearInterval(N);return}try{let V=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(O=!0,clearInterval(N),z({err:((U=V.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",S))}catch(V){O=!0,clearInterval(N),console.error("getTransaction timeout:",V,S)}},Bn)),K=this.connection.onSignature(S,U=>{if(O){this.connection.removeSignatureListener(K);return}O=!0,z(U)},"confirmed"),this.connection.getSignatureStatus(S)};return await x(),{txIds:k.map(S=>S.txId),signedTxs:I}}else{let C=[];for(let k=0;k<I.length;k+=1){let x=await this.connection.sendRawTransaction(I[k].serialize(),{skipPreflight:b});C.push(x)}return{txIds:C,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var b;let y=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:u}=y,r=Ce(y,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=v(v({},this.cluster==="devnet"?await co(this.connection):await uo(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),d=[];for(let g of c)a[g]===void 0&&d.push(new ne.PublicKey(g));let l=await so({connection:this.connection,address:d});for(let[g,P]of Object.entries(l))a[g]=P;let m=o?ne.PublicKey.default.toBase58():u!=null?u:await Gt(this.connection,this.blockhashCommitment),f=new ne.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new ne.VersionedTransaction(f);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async g=>{var C;let{skipPreflight:P=!0,sendAndConfirm:w,notSendToRpc:I}=g||{};if(xt([p]),(C=this.owner)!=null&&C.isKeyPair){let k=await this.connection.sendTransaction(p,{skipPreflight:P});return w&&await In(this.connection,k),{txId:k,signedTx:p}}if(this.signAllTransactions){let k=await this.signAllTransactions([p]);if(this.signers.length)for(let x of k)try{x.sign(this.signers)}catch{}return{txId:I?"":await this.connection.sendTransaction(k[0],{skipPreflight:P}),signedTx:k[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),u=t.filter(l=>l.builder.instructions.length>0),r=[o,...u.map(l=>l.transaction)],a=[this.signers,...u.map(l=>l.signers)],c=[...this.instructionTypes,...u.map(l=>l.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:r,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var b;let{sequentially:m,onTxUpdate:f,recentBlockHash:p,skipPreflight:y=!0}=l||{};if(p&&r.forEach(g=>g.message.recentBlockhash=p),xt(r),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let P of r){let w=await this.connection.sendTransaction(P,{skipPreflight:y});await In(this.connection,w),g.push(w)}return{txIds:g,signedTxs:r}}return{txIds:await Promise.all(r.map(async g=>await this.connection.sendTransaction(g,{skipPreflight:y}))),signedTxs:r}}if(this.signAllTransactions){let g=await this.signAllTransactions(r);if(m){let P=0,w=[],I=async()=>{if(!g[P])return;let C=await this.connection.sendTransaction(g[P],{skipPreflight:y});w.push({txId:C,status:"sent",signedTx:g[P]}),f==null||f([...w]),P++;let k=!1,x=null,S=null,O=N=>{x!==null&&clearInterval(x),S!==null&&this.connection.removeSignatureListener(S);let K=w.findIndex(z=>z.txId===C);if(K>-1){if(w[K].status==="error"||w[K].status==="success")return;w[K].status=N.err?"error":"success"}f==null||f([...w]),N.err||I()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var N;if(k){clearInterval(x);return}try{let K=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});K&&(k=!0,clearInterval(x),O({err:((N=K.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",C))}catch(K){k=!0,clearInterval(x),console.error("getTransaction timeout:",K,C)}},Bn)),S=this.connection.onSignature(C,N=>{if(k){this.connection.removeSignatureListener(S);return}k=!0,O(N)},"confirmed"),this.connection.getSignatureStatus(C)};return I(),{txIds:[],signedTxs:g}}else{let P=[];for(let w=0;w<g.length;w+=1){let I=await this.connection.sendTransaction(g[w],{skipPreflight:y});P.push(I)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var f;let m=e||{},{splitIns:t=[],computeBudgetConfig:n}=m,o=Ce(m,["splitIns","computeBudgetConfig"]),u=n?hn(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((p,y)=>G(v({},p),{[y.publicKey.toBase58()]:y}),{}),a=[],c=[],d=[],l=0;if(this.allInstructions.forEach(p=>{let y=[...d,p],b=n?[...u.instructions,...y]:y,P=[...new Set(y.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(w=>new ne.PublicKey(w));if(p!==t[l]&&d.length<12&&(an({instructions:b,payer:this.feePayer,signers:P})||an({instructions:y,payer:this.feePayer,signers:P})))d.push(p);else{if(d.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,an({instructions:n?[...u.instructions,...d]:[...d],payer:this.feePayer,signers:P})?a.push(new ne.Transaction().add(...u.instructions,...d)):a.push(new ne.Transaction().add(...d)),c.push(Array.from(new Set(d.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(w=>r[w]).filter(w=>w!==void 0)),d=[p]}}),d.length>0){let y=[...new Set(d.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(b=>r[b]).filter(b=>b!==void 0);an({instructions:n?[...u.instructions,...d]:[...d],payer:this.feePayer,signers:y.map(b=>b.publicKey)})?a.push(new ne.Transaction().add(...u.instructions,...d)):a.push(new ne.Transaction().add(...d)),c.push(y)}return a.forEach(p=>p.feePayer=this.feePayer),(f=this.owner)!=null&&f.signer&&c.forEach(p=>{p.some(y=>y.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var C;let{sequentially:y,onTxUpdate:b,skipTxCount:g=0,recentBlockHash:P,skipPreflight:w=!0}=p||{},I=P!=null?P:await Gt(this.connection,this.blockhashCommitment);if(a.forEach(async(k,x)=>{k.recentBlockhash=I,c[x].length&&k.sign(...c[x])}),xt(a),(C=this.owner)!=null&&C.isKeyPair){if(y){let k=0,x=[];for(let S of a){if(++k,k<=g){x.push("tx skipped");continue}let O=await(0,ne.sendAndConfirmTransaction)(this.connection,S,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});x.push(O)}return{txIds:x,signedTxs:a}}return{txIds:await Promise.all(a.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:w}))),signedTxs:a}}if(this.signAllTransactions){let k=await this.signAllTransactions(a.slice(g,a.length)),x=[...a.slice(0,g),...k];if(y){let S=0,O=[],N=async()=>{if(!x[S])return;S<g&&(O.push({txId:"",status:"success",signedTx:x[S]}),b==null||b([...O]),S++,N());let K=await this.connection.sendRawTransaction(x[S].serialize(),{skipPreflight:w});O.push({txId:K,status:"sent",signedTx:x[S]}),b==null||b([...O]),S++;let z=!1,U=null,V=null,H=Y=>{U!==null&&clearInterval(U),V!==null&&this.connection.removeSignatureListener(V);let ce=O.findIndex(se=>se.txId===K);if(ce>-1){if(O[ce].status==="error"||O[ce].status==="success")return;O[ce].status=Y.err?"error":"success"}b==null||b([...O]),Y.err||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var Y;if(z){clearInterval(U);return}try{let ce=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});ce&&(z=!0,clearInterval(U),H({err:((Y=ce.meta)==null?void 0:Y.err)||null}),console.log("tx status from getTransaction:",K))}catch(ce){z=!0,clearInterval(U),console.error("getTransaction timeout:",ce,K)}},Bn)),V=this.connection.onSignature(K,Y=>{if(z){this.connection.removeSignatureListener(V);return}z=!0,H(Y)},"confirmed"),this.connection.getSignatureStatus(K)};return await N(),{txIds:O.map(K=>K.txId),signedTxs:x}}else{let S=[];for(let O=0;O<x.length;O+=1){let N=await this.connection.sendRawTransaction(x[O].serialize(),{skipPreflight:w});S.push(N)}return{txIds:S,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var C;let I=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:u=[],insCountLimit:r=12}=I,a=Ce(I,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=v(v({},this.cluster==="devnet"?await co(this.connection):await uo(this.connection)),o),d=Array.from(new Set([...this.lookupTableAddress,...u])),l=[];for(let k of d)c[k]===void 0&&l.push(new ne.PublicKey(k));let m=await so({connection:this.connection,address:l});for(let[k,x]of Object.entries(m))c[k]=x;let f=t?hn(t):{instructions:[],instructionTypes:[]},p=await Gt(this.connection,this.blockhashCommitment),y=this.signers.reduce((k,x)=>G(v({},k),{[x.publicKey.toBase58()]:x}),{}),b=[],g=[],P=[],w=0;if(this.allInstructions.forEach(k=>{let x=[...P,k],S=t?[...f.instructions,...x]:x;if(k!==n[w]&&P.length<r&&(sn({instructions:S,payer:this.feePayer,lookupTableAddressAccount:c})||sn({instructions:x,payer:this.feePayer,lookupTableAddressAccount:c})))P.push(k);else{if(P.length===0)throw Error("item ins too big");w+=k===n[w]?1:0;let O={};for(let N of[...new Set(d)])c[N]!==void 0&&(O[N]=c[N]);if(t&&sn({instructions:[...f.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let N=new ne.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...f.instructions,...P]}).compileToV0Message(Object.values(c));b.push(new ne.VersionedTransaction(N))}else{let N=new ne.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P]}).compileToV0Message(Object.values(c));b.push(new ne.VersionedTransaction(N))}g.push(Array.from(new Set(P.map(N=>N.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(N=>y[N]).filter(N=>N!==void 0)),P=[k]}}),P.length>0){let x=[...new Set(P.map(S=>S.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(S=>y[S]).filter(S=>S!==void 0);if(t&&sn({instructions:[...f.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let S=new ne.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...f.instructions,...P]}).compileToV0Message(Object.values(c));b.push(new ne.VersionedTransaction(S))}else{let S=new ne.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P]}).compileToV0Message(Object.values(c));b.push(new ne.VersionedTransaction(S))}g.push(x)}return(C=this.owner)!=null&&C.signer&&g.forEach(k=>{k.some(x=>x.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),b.forEach((k,x)=>{k.sign(g[x])}),{builder:this,transactions:b,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async k=>{var z;let{sequentially:x,onTxUpdate:S,skipTxCount:O=0,recentBlockHash:N,skipPreflight:K=!0}=k||{};if(b.map(async(U,V)=>{g[V].length&&U.sign(g[V]),N&&(U.message.recentBlockhash=N)}),xt(b),(z=this.owner)!=null&&z.isKeyPair){if(x){let U=0,V=[];for(let H of b){if(++U,U<=O){console.log("skip tx: ",U),V.push("tx skipped");continue}let Y=await this.connection.sendTransaction(H,{skipPreflight:K});await In(this.connection,Y),V.push(Y)}return{txIds:V,signedTxs:b}}return{txIds:await Promise.all(b.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:K}))),signedTxs:b}}if(this.signAllTransactions){let U=await this.signAllTransactions(b.slice(O,b.length)),V=[...b.slice(0,O),...U];if(x){let H=0,Y=[],ce=async()=>{if(!V[H])return;if(H<O){Y.push({txId:"",status:"success",signedTx:V[H]}),S==null||S([...Y]),H++,ce();return}let se=await this.connection.sendTransaction(V[H],{skipPreflight:K});Y.push({txId:se,status:"sent",signedTx:V[H]}),S==null||S([...Y]),H++;let ke=!1,Ve=null,Xe=null,et=Ee=>{Ve!==null&&clearInterval(Ve),Xe!==null&&this.connection.removeSignatureListener(Xe);let Ie=Y.findIndex(tt=>tt.txId===se);if(Ie>-1){if(Y[Ie].status==="error"||Y[Ie].status==="success")return;Y[Ie].status=Ee.err?"error":"success"}S==null||S([...Y]),Ee.err||ce()};this.loopMultiTxStatus&&(Ve=setInterval(async()=>{var Ee;if(ke){clearInterval(Ve);return}try{let Ie=await this.connection.getTransaction(se,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ie&&(ke=!0,clearInterval(Ve),et({err:((Ee=Ie.meta)==null?void 0:Ee.err)||null}),console.log("tx status from getTransaction:",se))}catch(Ie){ke=!0,clearInterval(Ve),console.error("getTransaction timeout:",Ie,se)}},Bn)),Xe=this.connection.onSignature(se,Ee=>{if(ke){this.connection.removeSignatureListener(Xe);return}ke=!0,et(Ee)},"confirmed"),this.connection.getSignatureStatus(se)};return ce(),{txIds:[],signedTxs:V}}else{let H=[];for(let Y=0;Y<V.length;Y+=1){let ce=await this.connection.sendTransaction(V[Y],{skipPreflight:K});H.push(ce)}return{txIds:H,signedTxs:V}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var mo=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ne=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=Q(t)}createTxBuilder(e){return this.scope.checkOwner(),new xn({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(mo(e))}logInfo(...e){this.logger.info(mo(e))}logAndCreateError(...e){let t=mo(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var $i=require("@solana/web3.js"),ns=F(require("bn.js"));var Fn=require("@solana/spl-token");var Mn=require("@solana/web3.js"),es=F(require("bn.js"));var ji=require("@solana/spl-token");function Ha(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function po(i,...e){if(!Ha(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function fo(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function Vi(i,e){po(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Kn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),$e=(i,e)=>i<<32-e|i>>>e;var Dm=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Qa(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function yo(i){return typeof i=="string"&&(i=Qa(i)),po(i),i}var Sn=class{clone(){return this._cloneInto()}},Wm={}.toString;function Ei(i){let e=n=>i().update(yo(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Za(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let o=BigInt(32),u=BigInt(4294967295),r=Number(t>>o&u),a=Number(t&u),c=n?4:0,d=n?0:4;i.setUint32(e+c,r,n),i.setUint32(e+d,a,n)}var Di=(i,e,t)=>i&e^~i&t,Wi=(i,e,t)=>i&e^i&t^e&t,Cn=class extends Sn{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Kn(this.buffer)}update(e){fo(this);let{view:t,buffer:n,blockLen:o}=this;e=yo(e);let u=e.length;for(let r=0;r<u;){let a=Math.min(o-this.pos,u-r);if(a===o){let c=Kn(e);for(;o<=u-r;r+=o)this.process(c,r);continue}n.set(e.subarray(r,r+a),this.pos),this.pos+=a,r+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){fo(this),Vi(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:u}=this,{pos:r}=this;t[r++]=128,this.buffer.subarray(r).fill(0),this.padOffset>o-r&&(this.process(n,0),r=0);for(let m=r;m<o;m++)t[m]=0;Za(n,o-8,BigInt(this.length*8),u),this.process(n,0);let a=Kn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let d=c/4,l=this.get();if(d>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<d;m++)a.setUint32(4*m,l[m],u)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:u,destroyed:r,pos:a}=this;return e.length=o,e.pos=a,e.finished=u,e.destroyed=r,o%t&&e.buffer.set(n),e}};var ja=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),gt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Pt=new Uint32Array(64),bo=class extends Cn{constructor(){super(64,32,8,!1),this.A=gt[0]|0,this.B=gt[1]|0,this.C=gt[2]|0,this.D=gt[3]|0,this.E=gt[4]|0,this.F=gt[5]|0,this.G=gt[6]|0,this.H=gt[7]|0}get(){let{A:e,B:t,C:n,D:o,E:u,F:r,G:a,H:c}=this;return[e,t,n,o,u,r,a,c]}set(e,t,n,o,u,r,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=u|0,this.F=r|0,this.G=a|0,this.H=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)Pt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let f=Pt[m-15],p=Pt[m-2],y=$e(f,7)^$e(f,18)^f>>>3,b=$e(p,17)^$e(p,19)^p>>>10;Pt[m]=b+Pt[m-7]+y+Pt[m-16]|0}let{A:n,B:o,C:u,D:r,E:a,F:c,G:d,H:l}=this;for(let m=0;m<64;m++){let f=$e(a,6)^$e(a,11)^$e(a,25),p=l+f+Di(a,c,d)+ja[m]+Pt[m]|0,b=($e(n,2)^$e(n,13)^$e(n,22))+Wi(n,o,u)|0;l=d,d=c,c=a,a=r+p|0,r=u,u=o,o=n,n=p+b|0}n=n+this.A|0,o=o+this.B|0,u=u+this.C|0,r=r+this.D|0,a=a+this.E|0,c=c+this.F|0,d=d+this.G|0,l=l+this.H|0,this.set(n,o,u,r,a,c,d,l)}roundClean(){Pt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var qi=Ei(()=>new bo);var Yi=require("@solana/web3.js"),zt=F(require("bn.js"));var E=require("@solana/buffer-layout"),Rn=E.Layout,Ui=E.Structure;var go=E.UInt;var Gi=E.u8,be=E.u16;var Ln=E.u32;var ge=E.s32;var zi=E.seq;var X=E.blob;var Po=E.bits,Xi=E.offset;var Kt=class extends Rn{constructor(t,n,o){super(t,o);this.blob=X(t),this.signed=n}decode(t,n=0){let o=new zt.default(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new zt.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},On=class extends Rn{constructor(t){super(8,t);this._lower=Po(Ln(),!1),this._upper=Po(Ln(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),u=this._upper.decode(t,n+this._lower.span);return v(v({},o),u)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function L(i){return new go(1,i)}function me(i){return new go(4,i)}function s(i){return new Kt(8,!1,i)}function W(i){return new Kt(16,!1,i)}function Hi(i){return new Kt(1,!0,i)}function Xt(i){return new Kt(8,!0,i)}function Qi(i){return new Kt(16,!0,i)}var un=class extends Rn{constructor(t,n,o,u){super(t.span,u);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function A(i){return new un(X(32),e=>new Yi.PublicKey(e),e=>e.toBuffer(),i)}function fe(i){return new un(Gi(),$a,Ja,i)}function $a(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Ja(i){return i?1:0}function Zi(i,e){let t=Ln("length"),n=R([t,M(i,Xi(t,-t.span),"values")]);return new un(n,({values:o})=>o,o=>({values:o}),e)}var Ao=class extends Ui{decode(e,t){return super.decode(e,t)}};function R(i,e,t){return new Ao(i,e,t)}function M(i,e,t){let n,o=typeof e=="number"?e:(0,zt.isBN)(e)?e.toNumber():new Proxy(e,{get(u,r){if(!n){let a=Reflect.get(u,"count");n=(0,zt.isBN)(a)?a.toNumber():a,Reflect.set(u,"count",n)}return Reflect.get(u,r)},set(u,r,a){return r==="count"&&(n=a),Reflect.set(u,r,a)}});return zi(i,o,t)}var Nn=R([A("mint"),A("owner"),s("amount"),me("delegateOption"),A("delegate"),L("state"),me("isNativeOption"),s("isNative"),s("delegatedAmount"),me("closeAuthorityOption"),A("closeAuthority")]);function Ge({fromPublicKey:i,programId:e=ji.TOKEN_PROGRAM_ID,assignSeed:t}){let n=t?btoa(t).slice(0,32):Mn.Keypair.generate().publicKey.toBase58().slice(0,32);return{publicKey:ts(i,n,e),seed:n}}function ts(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),o=qi(n);return new Mn.PublicKey(o)}var Xr=require("@solana/web3.js"),Iu=require("@solana/spl-token");var tr=require("@solana/web3.js"),nr=require("@solana/spl-token");function Z(i,e,t){return oe([i.toBuffer(),(t!=null?t:nr.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new tr.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var q=require("@solana/web3.js"),or=new q.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ir=new q.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),rr=new q.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),wo=new q.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),vd=new q.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ar=new q.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),sr=new q.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ko=new q.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),_d=new q.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),is=new q.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ur=new q.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),rs=new q.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),as=new q.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Ct=new q.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Vd=new q.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),cr=new q.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),To=new q.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ss=new q.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Ed=new q.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),us=new q.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),cs=new q.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ls=new q.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Dd=new q.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Wd=new q.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),qd=new q.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Ud=new q.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Gd=new q.PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var st={OPEN_BOOK_PROGRAM:new q.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new q.PublicKey("Ray1111111111111111111111111111111111111111"),AMM_V4:new q.PublicKey("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new q.PublicKey("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new q.PublicKey("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new q.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new q.PublicKey("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new q.PublicKey("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new q.PublicKey("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new q.PublicKey("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new q.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new q.PublicKey("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:q.PublicKey.default,Router:new q.PublicKey("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new q.PublicKey("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new q.PublicKey("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new q.PublicKey("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new q.PublicKey("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new q.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new q.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new q.PublicKey("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new q.PublicKey("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new q.PublicKey("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new q.PublicKey("Ray1111111111111111111111111111111111111111")};var Bu=F(require("decimal.js"));var No=require("@solana/spl-token"),Qs=require("@solana/web3.js"),Zs=F(require("bn.js")),js=F(require("decimal.js"));var ds=require("@solana/spl-token"),ps=require("@solana/web3.js");var ms=R([me("mintAuthorityOption"),A("mintAuthority"),s("supply"),L("decimals"),L("isInitialized"),me("freezeAuthorityOption"),A("freezeAuthority")]);var ho=i=>new ye({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});var At=o=>{var u=o,{address:i,programId:e,decimals:t}=u,n=Ce(u,["address","programId","decimals"]);return v({chainId:101,address:Bt(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};var D=require("@solana/spl-token"),T=require("@solana/web3.js"),mn=F(require("bn.js"));var j=F(require("bn.js")),Pe=new j.default(1).shln(64);var fs=new j.default(1).shln(128),Rt=new j.default(1).shln(64).subn(1),ys=new j.default(1).shln(128).subn(1),ut=-443636,ct=443636,Lt=new j.default("4295048016"),Ot=new j.default("79226673521066979257578248091"),lr=new j.default("59543866431248"),mr=new j.default("184467440737095516"),dr=new j.default("15793534762490258745"),pr=16,_n=512,ve=60,yp=new j.default("18446743708227953217"),fr=[{bit:0,factor:new j.default("fffcb933bd6fb800",16)},{bit:1,factor:new j.default("fff97272373d4000",16)},{bit:2,factor:new j.default("fff2e50f5f657000",16)},{bit:3,factor:new j.default("ffe5caca7e10f000",16)},{bit:4,factor:new j.default("ffcb9843d60f7000",16)},{bit:5,factor:new j.default("ff973b41fa98e800",16)},{bit:6,factor:new j.default("ff2ea16466c9b000",16)},{bit:7,factor:new j.default("fe5dee046a9a3800",16)},{bit:8,factor:new j.default("fcbe86c7900bb000",16)},{bit:9,factor:new j.default("f987a7253ac65800",16)},{bit:10,factor:new j.default("f3392b0822bb6000",16)},{bit:11,factor:new j.default("e7159475a2caf000",16)},{bit:12,factor:new j.default("d097f3bdfd2f2000",16)},{bit:13,factor:new j.default("a9f746462d9f8000",16)},{bit:14,factor:new j.default("70d869a156f31c00",16)},{bit:15,factor:new j.default("31be135f97ed3200",16)},{bit:16,factor:new j.default("9aa508b5b85a500",16)},{bit:17,factor:new j.default("5d6af8dedc582c",16)},{bit:18,factor:new j.default("2216e584f5fa",16)}];var cn=3,yr=100;var br=10,gr=100,Yt=14;var $=new j.default(0),wt=new j.default(1),bp=new j.default(-1);var gp=new j.default("18446744073700000000");var bs=R([X(8),L("bump"),be("index"),A("owner"),me("protocolFeeRate"),me("tradeFeeRate"),be("tickSpacing"),me("fundFeeRate"),M(me(),1),A("fundOwner"),M(s(),3)]),gs=R([me("blockTimestamp"),Xt("tickCumulative"),M(s(),4)]),Pr=R([X(8),fe("initialized"),s("recentEpoch"),be("observationIndex"),A("poolId"),M(gs,yr,"observations"),M(s(),4)]),Ps=R([be("filterPeriod"),be("decayPeriod"),be("reductionFactor"),me("dynamicFeeControl"),me("maxVolatilityAccumulator"),ge("tickSpacingIndexReference"),me("volatilityReference"),me("volatilityAccumulator"),s("lastUpdateTimestamp"),M(L(),46)]),As=R([L("state"),s("openTime"),s("endTime"),s("lastUpdateTime"),W("emissionsPerSecondX64"),s("totalEmissioned"),s("claimed"),A("mint"),A("vault"),A("creator"),W("growthGlobalX64")]),Io=R([X(8),L("bump"),A("configId"),A("creator"),A("mintA"),A("mintB"),A("vaultA"),A("vaultB"),A("observationId"),L("mintDecimalsA"),L("mintDecimalsB"),be("tickSpacing"),W("liquidity"),W("sqrtPriceX64"),ge("tickCurrent"),me(),W("feeGrowthGlobalX64A"),W("feeGrowthGlobalX64B"),s("protocolFeesTokenA"),s("protocolFeesTokenB"),M(W(),4),L("status"),L("feeOn"),X(6),M(As,cn,"rewardInfos"),X(8*16,"tickArrayBitmap"),M(s(),4),s("fundFeesTokenA"),s("fundFeesTokenB"),s("startTime"),s("recentEpoch"),Ps.replicate("dynamicFeeInfo"),M(s(),46)]),ws=R([W("growthInsideLastX64"),s("rewardAmountOwed")]),ks=R([X(8),L("bump"),A("nftMint"),A("poolId"),ge("tickLower"),ge("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),s("tokenFeesOwedA"),s("tokenFeesOwedB"),M(ws,cn,"rewardInfos"),s("recentEpoch"),M(s(),7)]),kp=R([X(8),L("bump"),A("poolId"),ge("tickLower"),ge("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),s("tokenFeesOwedA"),s("tokenFeesOwedB"),M(W(),cn,"rewardGrowthInside"),s("recentEpoch"),M(s(),7)]),Ts=R([ge("tick"),Qi("liquidityNet"),W("liquidityGross"),W("feeGrowthOutsideX64A"),W("feeGrowthOutsideX64B"),M(W(),cn,"rewardGrowthsOutsideX64"),s("orderPhase"),s("ordersAmount"),s("partFilledOrdersRemaining"),W("unfilledRatioX64"),M(me(),3)]),Ar=R([X(8),A("poolId"),ge("startTickIndex"),M(Ts,ve,"ticks"),L("initializedTickCount"),s("recentEpoch"),M(L(),107)]),hs=R([X(8),L("bump"),M(A(),br,"operationOwners"),M(A(),gr,"whitelistMints")]),Is=R([X(8),A("poolId"),A("owner"),ge("tick"),fe("zeroForOne"),s("orderPhase"),s("totalAmount"),s("filledAmount"),s("settleBase"),s("settleOutput"),s("openTime"),W("unfilledRatioX64"),M(s(),4)]),wr=R([X(8),A("poolId"),X(8*8*Yt,"positiveTickArrayBitmap"),X(8*8*Yt,"negativeTickArrayBitmap")]),Tp=R([X(8),be("index"),be("filterPeriod"),be("decayPeriod"),be("reductionFactor"),me("dynamicFeeControl"),me("maxVolatilityAccumulator"),M(s(),8)]),Bs=R([X(8),A("wallet"),L("nonceIndex"),s("orderNonce"),M(s(),4)]),hp=R([s(),L("bump"),A("owner"),A("poolId"),A("positionId"),A("nftAccount"),M(s(),8)]),xs=R([X(8),L("bump"),A("lockOwner"),A("poolId"),A("positionId"),A("nftAccount"),A("lockNftMint"),s("recentEpoch"),M(s(),8)]);var Ss=F(require("bn.js"));function Bo(i){let e=Buffer.alloc(2);return e.writeUInt16LE(i),e}function xo(i){let e=Buffer.alloc(4);return e.writeInt32LE(i),e}function kr(i){let e=Buffer.alloc(4);return e.writeInt32BE(i),e}var Np=Buffer.from("amm_config","utf8"),So=Buffer.from("pool","utf8"),Tr=Buffer.from("pool_vault","utf8"),Ks=Buffer.from("pool_reward_vault","utf8"),hr=Buffer.from("position","utf8"),Cs=Buffer.from("tick_array","utf8"),Rs=Buffer.from("operation","utf8"),Ls=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Os=Buffer.from("observation","utf8"),Mp=Buffer.from("support_mint","utf8"),Fp=Buffer.from("dynamic_fee_config","utf8"),Ns=Buffer.from("permission","utf8");function Ir(i,e,t,n){return oe([So,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Br(i,e){return oe([Ns,e.toBuffer()],i)}function xr(i,e,t,n,o){return oe([So,e.toBuffer(),t.toBuffer(),n.toBuffer(),Bo(o)],i)}function Ht(i,e,t){return oe([Tr,e.toBuffer(),t.toBuffer()],i)}function Sr(i,e,t){return oe([Ks,e.toBuffer(),t.toBuffer()],i)}function Te(i,e,t){return oe([Cs,e.toBuffer(),kr(t)],i)}function lt(i,e,t,n){return oe([hr,e.toBuffer(),xo(t),xo(n)],i)}function ze(i,e){return oe([hr,e.toBuffer()],i)}function Nt(i){return oe([Buffer.from("metadata","utf8"),bt.toBuffer(),i.toBuffer()],bt)}function Vn(i){return oe([Rs],i)}function Be(i,e){return oe([Ls,e.toBuffer()],i)}function Ko(i,e){return oe([Os,e.toBuffer()],i)}var Kr=Buffer.from("locked_position","utf8");function Co(i,e){return oe([Kr,e.toBuffer()],i)}function Ro(i,e){return oe([Kr,e.toBuffer()],i)}var Vr=require("js-sha256");var Cr=F(require("bn.js")),Lo=F(require("decimal.js"));function _e(i,e,t){if(t.isZero())throw new Error("Division by zero");return i.mul(e).div(t)}function We(i,e,t){if(t.isZero())throw new Error("Division by zero");let n=i.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}var Vp=new Cr.default(1).shln(256).subn(1);function Rr(i){return i.isZero()?-1:i.bitLength()-1}function Lr(i,e){return new Lo.default(i.toString()).div(Lo.default.pow(2,64)).toDecimalPlaces(e)}var Ms=F(require("bn.js"));var Ae=F(require("bn.js")),Mt=F(require("decimal.js"));var ln=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:o}){let u=[],r=e.length*8,a=0,c=r-1;if(o){let m=o.tick/(t*ve)-n;o.valueType==="gte"?a=Math.max(0,Math.ceil(m)):c=Math.min(r-1,Math.floor(m))}if(a>c)return u;let d=Math.floor(a/8),l=Math.floor(c/8);for(let m=d;m<=l;m++){if(!e[m])continue;let f=m===d?a%8:0,p=m===l?c%8:7;for(let y=f;y<=p;y++)e[m]&1<<y&&u.push((m*8+y+n)*t*ve)}return u}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/ve/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-_n,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/ve/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:_n,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let u=[];if(o){let c=Math.floor(o.tick/ve/t);if(o.valueType==="gte"&&c>=-512)return u}let r=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(ve*t))+7680:1/0,a=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(ve*t))+7680:0;e:for(let c=0;c<Yt;c++){let d=Yt-1-c;for(let l=0;l<512;l++){let m=c*512+l;if(m>r)break e;if(m<a)continue;let f=d*64+Math.floor(l/8);if(!e[f]){l=Math.floor(l/8)*8+7;continue}if(e[f]&1<<l%8){let p=(c*512+l-7680)*ve*t;if(u.push(p),n!==void 0&&u.length>=n)break e}}}return u}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:o}){if(o.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap})];let u=le.getTickArrayStartIndex(o.tickArrayCurrent,e),{count:r}=o;if(o.type==="oneForZero"){let a={tick:u,valueType:"gte"},c=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a})];return this.collectUntil(c,r)}if(o.type==="zeroForOne"){let a={tick:u,valueType:"lte"},c=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a}).sort((d,l)=>l-d),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}).sort((d,l)=>l-d),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}).sort((d,l)=>l-d)];return this.collectUntil(c,r)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let o of e){if(t!==void 0&&n.length>=t)break;n.push(...o())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>Te(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*ve*_n}},le=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(de.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(de.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:o}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let r=Math.floor((t-e.startTickIndex)/n);if(o){for(let a=r;a>=0;a--)if(de.isInitialized({data:e.ticks[a]}))return e.ticks[a]}else for(let a=r+1;a<ve;a++)if(de.isInitialized({data:e.ticks[a]}))return e.ticks[a]}static getTickArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=this.getTickArrayStartIndex(e,t);return Math.floor((e-n)/t)}static tickCount(e){return ve*e}static getMinTick(e){return Math.ceil(ut/e)*e}static getMaxTick(e){return Math.floor(ct/e)*e}},de=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=ut&&e<=ct}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${ut}, ${ct}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=Pe.clone();for(let{bit:o,factor:u}of fr)(t&1<<o)!==0&&(n=_e(n,u,Pe));return e>0&&(n=_e(Pe,Pe,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=de.getPriceAtTick(t,!1);return _e(e,o,Pe)}else{let o=de.getPriceAtTick(t,!0);return _e(e,Pe,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=de.getPriceAtTick(t,!0);return We(e,o,Pe)}else{let o=de.getPriceAtTick(t,!1);return We(e,Pe,o)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:o,feeRate:u,isFeeOnInput:r}){let a={amountIn:$,amountOut:$,ammFeeAmount:$},c=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||c.isZero())return a;if(o)r?(a.ammFeeAmount=We(t,new Ae.default(u),it),a.amountIn=t.sub(a.ammFeeAmount)):a.amountIn=t,a.amountOut=this.getLimitOrderOutput({amountIn:a.amountIn,tick:e.tick,zeroForOne:n}),a.amountOut.gt(c)&&(a.amountOut=c,a.amountIn=this.getLimitOrderInput({amountOut:c,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=We(a.amountIn,new Ae.default(u),it.sub(new Ae.default(u)))));else{let m=Ae.default.min(t,c);r?a.amountOut=m:a.amountOut=Ae.default.min(We(m,it,it.sub(new Ae.default(u))),c),a.amountIn=this.getLimitOrderInput({amountOut:a.amountOut,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=We(a.amountIn,new Ae.default(u),it.sub(new Ae.default(u))))}let d=$;e.partFilledOrdersRemaining.gt($)&&(d=Ae.default.min(e.partFilledOrdersRemaining,a.amountOut),d.gt($)&&(e.unfilledRatioX64=_e(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(d),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(d));let l=a.amountOut.sub(d);if(l.gt($)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(l))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(wt),e.unfilledRatioX64=_e(Pe,e.ordersAmount.sub(l),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(l),e.ordersAmount=$}return r||(a.ammFeeAmount=We(a.amountOut,new Ae.default(u),it),a.amountOut=a.amountOut.sub(a.ammFeeAmount)),a}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(Pe.subn(1)).div(Pe):n.mul(n).div(Pe)}static getTickAtSqrtPrice(e){if(!(e.gte(Lt)&&e.lte(Ot)))throw Error("SqrtPriceX64");let t=Rr(e),n=t-64,o;n>=0?o=new Ae.default(n).shln(32):o=new Ae.default(-n).shln(32).neg();let u;t>=64?u=e.shrn(t-63):u=e.shln(63-t);let r=new Ae.default(0),a=new Ae.default(1).shln(63);for(let g=0;g<pr&&!a.isZero();g++){u=u.mul(u);let P=u.shrn(127).toNumber();u=u.shrn(63+P),P&&(r=r.add(a)),a=a.shrn(1)}let c=r.shrn(32),l=o.add(c).mul(lr),m=l.sub(mr),f=l.add(dr),p=this.signedShrn64(m),y=this.signedShrn64(f);return p===y?p:de.getSqrtPriceAtTick(y).lte(e)?y:p}static signedShrn64(e){if(e.isNeg()){let t=new Ae.default(1).shln(64),n=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?n.subn(1).toNumber():n.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,n){let o=e.mul(e),u=t-n,r=20,a=new Ae.default(10).pow(new Ae.default(r)),c=o.mul(a),d=new Ae.default(1).shln(128),m=c.div(d).toString();for(;m.length<=r;)m="0"+m;let f=m.slice(0,-r),p=m.slice(-r),y=f+"."+p;return new Mt.default(y).mul(new Mt.default(10).pow(u))}static tickToPrice(e,t,n){let o=de.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(o,t,n)}static priceToTick(e,t,n){let u=e.div(Math.pow(10,t-n)).log().div(new Mt.default(1.0001).log()).floor();return Math.max(ut,Math.min(ct,u.toNumber()))}static priceToSqrtPriceX64(e,t,n){let r=e.div(Math.pow(10,t-n)).sqrt().mul(new Mt.default(2).pow(64));return new Ae.default(r.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:n,zeroForOne:o,tickSpacing:u}){let r=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);o||(r=new Mt.default(1).div(r));let a=de.toTickIndex(de.priceToTick(r,t,n),u),c=de.tickToPrice(a,t,n);return{price:o?c:new Mt.default(1).div(c),tick:a}}};var _s=F(require("bn.js")),Vs=F(require("decimal.js"));var Oo=require("@solana/web3.js"),Nr=F(require("bn.js"));var Mr=require("@solana/spl-token");var Us=F(require("decimal.js"));var Ws=F(require("bn.js"));var Ds=F(require("bn.js"));var qe=class{static isFeeOnInput(e,t){switch(e){case 0:return!0;case 1:return t;case 2:return!t;default:return!0}}static isFeeOnTokenA(e,t){return e.feeOn===0?t:e.feeOn===1}static isOverflowDefaultTickarrayBitmap({tickSpacing:e,tickIndexs:t}){let{maxTickBoundary:n,minTickBoundary:o}=this.tickArrayStartIndexRange({tickSpacing:e});for(let u of t){let r=le.getTickArrayStartIndex(u,e);if(r>=n||r<o)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=ln.maxTickInTickarrayBitmap(e),n=-t;return t>ct&&(t=le.getTickArrayStartIndex(ct,e)+le.tickCount(e)),n<ut&&(n=le.getTickArrayStartIndex(ut,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:u}){var a,c,d;let r=[];for(let l=0;l<u.length;l++){let m=u[l],f=(d=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?d:(c=await e.getAccountInfo(m.mint))==null?void 0:c.owner;if(f===void 0)throw Error("get new reward mint info error");let p=G(v({},m),{perSecond:Lr(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Oo.PublicKey(f)});if(p.mint.equals(Oo.PublicKey.default)||p.totalEmissioned.eq(Rt))continue;if(n<=p.openTime.toNumber()||o.eq($)){r.push(p);continue}let y=new Nr.default(Math.min(p.endTime.toNumber(),n)),b=y.sub(p.lastUpdateTime);if(b.isZero()){r.push(p);continue}let g=We(b,p.emissionsPerSecondX64,Pe),P=_e(b,p.emissionsPerSecondX64,o),w,I=p.totalEmissioned.add(g);if(I.lte(Rt))w=I;else{let k=Rt.sub(p.totalEmissioned);w=Rt,P=_e(k,Pe,o)}let C=p.growthGlobalX64.add(P);r.push(G(v({},p),{growthGlobalX64:C,totalEmissioned:w,lastUpdateTime:y}))}return r}};var Xs=F(require("bn.js"));function xe(i){let e=`global:${i}`;return Buffer.from(Vr.sha256.digest(e)).slice(0,8)}Pr.span;var Fr=Q("Raydium_Clmm"),Se={createPool:xe("create_pool"),createCustomizablePool:xe("create_customizable_pool"),createPermissionedPool:xe("create_permissioned_pool"),openPositionV2:xe("open_position_v2"),openPositionWithToken22Nft:xe("open_position_with_token22_nft"),closePosition:xe("close_position"),increaseLiquidityV2:xe("increase_liquidity_v2"),decreaseLiquidityV2:xe("decrease_liquidity_v2"),initializeReward:xe("initialize_reward"),setRewardParams:xe("set_reward_params"),updateRewardInfos:xe("update_reward_infos"),collectRemainingRewards:xe("collect_remaining_rewards"),swapV2:xe("swap_v2"),openLimitOrder:xe("open_limit_order"),increaseLimitOrder:xe("increase_limit_order"),decreaseLimitOrder:xe("decrease_limit_order"),settleLimitOrder:xe("settle_limit_order"),closeLimitOrder:xe("close_limit_order")},vr=[188,37,179,131,82,150,84,73],_r=[16,72,250,198,14,162,212,19],dt=class{static createPoolInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y){let b=R([W("sqrtPriceX64"),s("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},...(y!=null?y:[]).map(I=>({pubkey:I,isSigner:!1,isWritable:!1}))],P=Buffer.alloc(b.span);b.encode({sqrtPriceX64:p,startTime:$},P);let w=Buffer.from([...Se.createPool,...P]);return new T.TransactionInstruction({keys:g,programId:e,data:w})}static createCustomizablePoolInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g){let P=R([W("sqrtPriceX64"),L("collectFeeOn"),fe("enableDynamicFee")]),w=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},...b.map(k=>({pubkey:k,isSigner:!1,isWritable:!1})),...g?[{pubkey:g,isSigner:!1,isWritable:!1}]:[]],I=Buffer.alloc(P.span);P.encode({sqrtPriceX64:p,collectFeeOn:y,enableDynamicFee:g!==void 0},I);let C=Buffer.from([...Se.createCustomizablePool,...I]);return new T.TransactionInstruction({keys:w,programId:e,data:C})}static createPermissionedPoolInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I){let C=R([W("sqrtPriceX64"),L("collectFeeOn"),fe("enableDynamicFee"),be("seedIndex")]),k=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},...w.map(O=>({pubkey:O,isSigner:!1,isWritable:!1})),...I?[{pubkey:I,isSigner:!1,isWritable:!1}]:[]],x=Buffer.alloc(C.span);C.encode({sqrtPriceX64:b,collectFeeOn:g,enableDynamicFee:I!==void 0,seedIndex:P},x);let S=Buffer.from([...Se.createPermissionedPool,...x]);return new T.TransactionInstruction({keys:k,programId:e,data:S})}static initializeRewardInstruction(e,t,n,o,u,r,a,c,d,l,m,f){let p=R([s("openTime"),s("endTime"),W("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1}],b=Buffer.alloc(p.span);p.encode({openTime:l,endTime:m,emissionsPerSecondX64:f},b);let g=Buffer.from([...Se.initializeReward,...b]);return new T.TransactionInstruction({keys:y,programId:e,data:g})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Se.updateRewardInfos]);return new T.TransactionInstruction({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,u,r,a,c,d,l,m,f){let p=R([L("rewardIndex"),W("emissionsPerSecondX64"),s("openTime"),s("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],b=Buffer.alloc(p.span);p.encode({rewardIndex:d,emissionsPerSecondX64:f,openTime:l,endTime:m},b);let g=Buffer.from([...Se.setRewardParams,...b]);return new T.TransactionInstruction({keys:y,programId:e,data:g})}static closePositionInstruction(e,t,n,o,u,r,a){let c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:r?D.TOKEN_2022_PROGRAM_ID:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];a&&c.push({pubkey:a,isSigner:!1,isWritable:!0});let d=Buffer.from([...Se.closePosition]);return new T.TransactionInstruction({keys:c,programId:e,data:d})}static openPositionV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I,C,k,x,S,O,N,K,z){let U=R([ge("tickLower"),ge("tickUpper"),ge("tickArrayLowerStart"),ge("tickArrayUpperStart"),W("liquidity"),s("amountMaxA"),s("amountMaxB"),fe("withMetadata"),L("optionBaseFlag"),fe("baseFlag")]),V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},...z?[{pubkey:z,isSigner:!1,isWritable:!0}]:[]],H=Buffer.alloc(U.span);U.encode({tickLower:w,tickUpper:I,tickArrayLowerStart:C,tickArrayUpperStart:k,liquidity:x,amountMaxA:S,amountMaxB:O,withMetadata:N,optionBaseFlag:K!==null?1:0,baseFlag:K!=null?K:!1},H);let Y=Buffer.from([...Se.openPositionV2,...H]);return new T.TransactionInstruction({keys:V,programId:e,data:Y})}static increaseLiquidityV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I){let C=R([W("liquidity"),s("amountMaxA"),s("amountMaxB"),L("optionBaseFlag"),fe("baseFlag")]),k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],x=Buffer.alloc(C.span);C.encode({liquidity:b,amountMaxA:g,amountMaxB:P,optionBaseFlag:w!==null?1:0,baseFlag:w!=null?w:!1},x);let S=Buffer.from([...Se.increaseLiquidityV2,...x]);return new T.TransactionInstruction({keys:k,programId:e,data:S})}static decreaseLiquidityV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I){let C=R([W("liquidity"),s("amountMinA"),s("amountMinB")]),k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[],...b.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=Buffer.alloc(C.span);C.encode({liquidity:g,amountMinA:P,amountMinB:w},x);let S=Buffer.from([...Se.decreaseLiquidityV2,...x]);return new T.TransactionInstruction({keys:k,programId:e,data:S})}static swapV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P){let w=R([s("amount"),s("otherAmountThreshold"),W("sqrtPriceLimitX64"),fe("isBaseInput")]),I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...m.map(x=>({pubkey:x,isSigner:!1,isWritable:!0}))],C=Buffer.alloc(w.span);w.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:b,isBaseInput:g},C);let k=Buffer.from([...Se.swapV2,...C]);return new T.TransactionInstruction({keys:I,programId:e,data:k})}static collectRemainingRewardsInstruction(e,t,n,o,u,r,a){let c=R([L("rewardIndex")]),d=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Se.collectRemainingRewards,...l]);return new T.TransactionInstruction({keys:d,programId:e,data:m})}static openPositionWithToken22NftInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I,C,k,x,S,O,N,K){let z=R([ge("tickLower"),ge("tickUpper"),ge("tickArrayLowerStart"),ge("tickArrayUpperStart"),W("liquidity"),s("amountMaxA"),s("amountMaxB"),fe("withMetadata"),L("optionBaseFlag"),fe("baseFlag")]),U=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],V=Buffer.alloc(z.span);z.encode({tickLower:P,tickUpper:w,tickArrayLowerStart:I,tickArrayUpperStart:C,liquidity:k,amountMaxA:x,amountMaxB:S,withMetadata:O,optionBaseFlag:N!==null?1:0,baseFlag:N!=null?N:!1},V);let H=Buffer.from([...Se.openPositionWithToken22Nft,...V]);return new T.TransactionInstruction({keys:U,programId:e,data:H})}static openLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w){let I=R([L("nonceIndex"),fe("zeroForOne"),ge("tickIndex"),s("amount")]),C=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1},...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[]],k=Buffer.alloc(I.span);I.encode({nonceIndex:y,zeroForOne:b,tickIndex:g,amount:P},k);let x=Buffer.from([...Se.openLimitOrder,...k]);return new T.TransactionInstruction({keys:C,programId:e,data:x})}static increaseLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l){let m=R([s("amount")]),f=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}],p=Buffer.alloc(m.span);m.encode({amount:l},p);let y=Buffer.from([...Se.increaseLimitOrder,...p]);return new T.TransactionInstruction({keys:f,programId:e,data:y})}static decreaseLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y){let b=R([s("amount"),s("amountMin")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[]],P=Buffer.alloc(b.span);b.encode({amount:f,amountMin:p},P);let w=Buffer.from([...Se.decreaseLimitOrder,...P]);return new T.TransactionInstruction({keys:g,programId:e,data:w})}static settleLimitOrderInstruction(e,t,n,o,u,r,a,c,d){let l=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}],m=Buffer.from([...Se.settleLimitOrder]);return new T.TransactionInstruction({keys:l,programId:e,data:m})}static closeLimitOrderInstruction(e,t,n,o){let u=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0}],r=Buffer.from([...Se.closeLimitOrder]);return new T.TransactionInstruction({keys:u,programId:e,data:r})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:u,ammConfigId:r,initialPriceX64:a,extendMintAccount:c}=e,[d,l]=[new T.PublicKey(o.address),new T.PublicKey(u.address)],[m,f]=[new T.PublicKey(o.programId||D.TOKEN_PROGRAM_ID),new T.PublicKey(u.programId||D.TOKEN_PROGRAM_ID)],{publicKey:p}=Ir(t,r,d,l),{publicKey:y}=Ko(t,p),{publicKey:b}=Ht(t,p,d),{publicKey:g}=Ht(t,p,l),P=Be(t,p).publicKey,w=[this.createPoolInstruction(t,p,n,r,y,d,b,m,l,g,f,P,a,c)];return{signers:[],instructions:w,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:p,observationId:y,exBitmapAccount:P,mintA:d,mintB:l,mintAProgram:m,mintBProgram:f,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:u,ammConfigId:r,initialPriceX64:a,extendMintAccount:c,payer:d,seedIndex:l}=e,[m,f]=[new T.PublicKey(o.address),new T.PublicKey(u.address)],[p,y]=[new T.PublicKey(o.programId||D.TOKEN_PROGRAM_ID),new T.PublicKey(u.programId||D.TOKEN_PROGRAM_ID)],{publicKey:b}=xr(t,r,m,f,l),{publicKey:g}=Br(t,d),{publicKey:P}=Ko(t,b),{publicKey:w}=Ht(t,b,m),{publicKey:I}=Ht(t,b,f),C=Be(t,b).publicKey,k=[this.createPoolInstruction(t,b,n,r,P,m,w,p,f,I,y,C,a,c)];return{signers:[],instructions:k,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:b,observationId:P,exBitmapAccount:C,mintA:m,mintB:f,mintAProgram:p,mintBProgram:y,mintAVault:w,mintBVault:I,permission:g},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:u,liquidity:r,amountMaxA:a,amountMaxB:c,base:d,withMetadata:l,getEphemeralSigners:m,nft2022:f}){let p=[],[y,b]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],g;if(m)g=new T.PublicKey((await m(1))[0]);else{let K=T.Keypair.generate();p.push(K),g=K.publicKey}let P=le.getTickArrayStartIndex(o,e.config.tickSpacing),w=le.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:I}=Te(y,b,P),{publicKey:C}=Te(y,b,w),{publicKey:k}=f?Z(n.wallet,g,D.TOKEN_2022_PROGRAM_ID):Z(n.wallet,g,D.TOKEN_PROGRAM_ID),{publicKey:x}=Nt(g),{publicKey:S}=ze(y,g),{publicKey:O}=lt(y,b,o,u),N=f?this.openPositionWithToken22NftInstruction(y,n.feePayer,b,n.wallet,g,k,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address),o,u,P,w,r,a,c,l==="create",d&&d==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Be(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,b,n.wallet,g,k,x,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address),o,u,P,w,r,a,c,l==="create",null,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Be(y,b).publicKey:void 0);return{signers:p,instructions:[N],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:I,tickArrayUpper:C,positionNftAccount:k,metadataAccount:x,personalPosition:S,protocolPosition:O}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:u,base:r,baseAmount:a,otherAmountMax:c,liquidity:d,withMetadata:l,getEphemeralSigners:m,nft2022:f}){let p=[],[y,b]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],g;if(m)g=new T.PublicKey((await m(1))[0]);else{let K=T.Keypair.generate();p.push(K),g=K.publicKey}let P=le.getTickArrayStartIndex(o,e.config.tickSpacing),w=le.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:I}=Te(y,b,P),{publicKey:C}=Te(y,b,w),{publicKey:k}=f?Z(n.wallet,g,D.TOKEN_2022_PROGRAM_ID):Z(n.wallet,g,D.TOKEN_PROGRAM_ID),{publicKey:x}=Nt(g),{publicKey:S}=ze(y,g),{publicKey:O}=lt(y,b,o,u),N=f?this.openPositionWithToken22NftInstruction(y,n.feePayer,b,n.wallet,g,k,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address),o,u,P,w,d,!r||r==="MintA"?a:c,!r||r==="MintA"?c:a,l==="create",r&&r==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Be(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,b,n.wallet,g,k,x,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address),o,u,P,w,$,r==="MintA"?a:c,r==="MintA"?c:a,l==="create",r==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Be(y,b).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:I,tickArrayUpper:C,positionNftAccount:k,metadataAccount:x,personalPosition:S,protocolPosition:O},instructions:[N],signers:p,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:u,liquidity:r,amountMaxA:a,amountMaxB:c,base:d,withMetadata:l,getEphemeralSigners:m,nft2022:f}){let p,y=[];if(m)p=new T.PublicKey((await m(1))[0]);else{let K=T.Keypair.generate();y.push(K),p=K.publicKey}let[b,g]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],P=le.getTickArrayStartIndex(o,e.config.tickSpacing),w=le.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:I}=Te(b,g,P),{publicKey:C}=Te(b,g,w),{publicKey:k}=f?Z(n.wallet,p,D.TOKEN_2022_PROGRAM_ID):Z(n.wallet,p,D.TOKEN_PROGRAM_ID),{publicKey:x}=Nt(p),{publicKey:S}=ze(b,p),{publicKey:O}=lt(b,g,o,u),N=f?this.openPositionWithToken22NftInstruction(b,n.wallet,g,n.wallet,p,k,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(t.mintA.address),new T.PublicKey(t.mintB.address),o,u,P,w,r,a,c,l==="create",d&&d==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Be(b,g).publicKey:void 0):this.openPositionV2Instruction(b,n.wallet,g,n.wallet,p,k,x,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(t.mintA.address),new T.PublicKey(t.mintB.address),o,u,P,w,r,a,c,l==="create",null,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Be(b,g).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:I,tickArrayUpper:C,positionNftAccount:k,metadataAccount:x,personalPosition:S,protocolPosition:O},instructions:[N],signers:y,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o,nft2022:u}){let r=new T.PublicKey(e.programId),a=u?Z(n.wallet,o.nftMint,D.TOKEN_2022_PROGRAM_ID).publicKey:Z(n.wallet,o.nftMint,D.TOKEN_PROGRAM_ID).publicKey,{publicKey:c}=ze(r,o.nftMint),d=[];return d.push(this.closePositionInstruction(r,n.wallet,o.nftMint,a,c,!!u,new T.PublicKey(e.id))),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:d,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:u,amountMaxA:r,amountMaxB:a,nft2022:c}){let[d,l]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],m=le.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),f=le.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Te(d,l,m),{publicKey:y}=Te(d,l,f),{publicKey:b}=c?Z(o.wallet,n.nftMint,D.TOKEN_2022_PROGRAM_ID):Z(o.wallet,n.nftMint,D.TOKEN_PROGRAM_ID),{publicKey:g}=ze(d,n.nftMint),{publicKey:P}=lt(d,l,n.tickLower,n.tickUpper),w=this.increaseLiquidityV2Instruction(d,o.wallet,b,g,l,P,p,y,o.tokenAccountA,o.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address),u,r,a,null,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[m,f]})?Be(d,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:P},signers:[],instructions:[w],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:u,baseAmount:r,otherAmountMax:a,nft2022:c}){let[d,l]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],m=le.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),f=le.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Te(d,l,m),{publicKey:y}=Te(d,l,f),{publicKey:b}=c?Z(o.wallet,n.nftMint,D.TOKEN_2022_PROGRAM_ID):Z(o.wallet,n.nftMint,D.TOKEN_PROGRAM_ID),{publicKey:g}=ze(d,n.nftMint),{publicKey:P}=lt(d,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:P},instructions:[this.increaseLiquidityV2Instruction(d,o.wallet,b,g,l,P,p,y,o.tokenAccountA,o.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address),$,u==="MintA"?r:a,u==="MintA"?a:r,u==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[m,f]})?Be(d,l).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:u,amountMinA:r,amountMinB:a,programId:c,nft2022:d}){let[l,m]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],f=le.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),p=le.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:y}=Te(l,m,f),{publicKey:b}=Te(l,m,p),{publicKey:g}=d?Z(o.wallet,n.nftMint,D.TOKEN_2022_PROGRAM_ID):Z(o.wallet,n.nftMint,c),{publicKey:P}=ze(l,n.nftMint),{publicKey:w}=lt(l,m,n.tickLower,n.tickUpper),I=new Map;for(let S=0;S<t.rewardInfos.length;S++)I.set(t.rewardInfos[S].mint.address,o.rewardAccounts[S]);let C=[];for(let S=0;S<t.rewardInfos.length;S++){let O=t.rewardInfos[S].mint.address,N=I.get(O);N&&C.push({poolRewardVault:new T.PublicKey(t.rewardInfos[S].vault),ownerRewardVault:N,rewardMint:new T.PublicKey(O)})}let k=[],x=this.decreaseLiquidityV2Instruction(l,o.wallet,g,P,m,w,y,b,o.tokenAccountA,o.tokenAccountB,new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B),new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address),C,u,r,a,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[f,p]})?Be(l,m).publicKey:void 0);return k.push(x),{address:{tickArrayLower:y,tickArrayUpper:b,positionNftAccount:g,personalPosition:P,protocolPosition:w},signers:[],instructions:k,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:u,amountIn:r,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:d}){let[l,m]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],[f,p]=[new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B)],[y,b]=[new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address)],g=e.mintA.address.toString()===u.toString(),P=[this.swapV2Instruction(l,o.wallet,m,new T.PublicKey(e.config.id),g?o.tokenAccountA:o.tokenAccountB,g?o.tokenAccountB:o.tokenAccountA,g?f:p,g?p:f,g?y:b,g?b:y,d,n,r,a,c,!0,Be(l,m).publicKey)];return{signers:[],instructions:P,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,outputMint:u,amountOut:r,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:d}){let[l,m]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],[f,p]=[new T.PublicKey(t.vault.A),new T.PublicKey(t.vault.B)],[y,b]=[new T.PublicKey(e.mintA.address),new T.PublicKey(e.mintB.address)],g=e.mintB.address.toString()===u.toBase58(),P=[this.swapV2Instruction(l,o.wallet,m,new T.PublicKey(e.config.id),g?o.tokenAccountA:o.tokenAccountB,g?o.tokenAccountB:o.tokenAccountA,g?f:p,g?p:f,g?y:b,g?b:y,d,n,r,a,c,!1,Be(l,m).publicKey)];return{signers:[],instructions:P,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[u,r]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],a=Sr(u,r,o.mint).publicKey,c=Vn(u).publicKey,d=[this.initializeRewardInstruction(u,n.wallet,r,c,new T.PublicKey(e.config.id),n.tokenAccount,o.programId,o.mint,a,new mn.default(o.openTime),new mn.default(o.endTime),o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:d,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[u,r]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],a,c,d;for(let f=0;f<e.rewardDefaultInfos.length;f++)e.rewardDefaultInfos[f].mint.address===o.mint.toString()&&(a=f,c=new T.PublicKey(t.rewardInfos[f].vault),d=new T.PublicKey(t.rewardInfos[f].mint.address));(a===void 0||c===void 0)&&Fr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Vn(u).publicKey,m=[this.setRewardParamsInstruction(u,n.wallet,r,l,new T.PublicKey(e.config.id),n.tokenAccount,c,d,a,new mn.default(o.openTime),new mn.default(o.endTime),o.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[u,r]=[new T.PublicKey(e.programId),new T.PublicKey(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,c=new T.PublicKey(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Fr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let d=[this.collectRemainingRewardsInstruction(u,n.wallet,r,n.tokenAccount,c,o,a)];return{address:{rewardVault:c},signers:[],instructions:d,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:o,wallet:u,nftMint:r,nft2022:a,getEphemeralSigners:c}){let d=[],l;if(c)l=new T.PublicKey((await c(1))[0]);else{let P=T.Keypair.generate();d.push(P),l=P.publicKey}let m=a?Z(u,r,D.TOKEN_2022_PROGRAM_ID).publicKey:Z(u,r,D.TOKEN_PROGRAM_ID).publicKey,{publicKey:f}=ze(n,r),p=Ro(e,l).publicKey,y=Z(u,l,D.TOKEN_PROGRAM_ID).publicKey,b=Nt(l).publicKey,g=dt.lockPositionInstructionV2({programId:e,auth:t,payer:o,positionOwner:u,lockOwner:u,positionNftAccount:m,positionId:f,lockPositionId:p,lockNftMint:l,lockNftAccount:y,metadataAccount:b,withMetadata:!0,nft2022:a,positionNftMint:r,authPositionNftAccount:Z(t,r,a?D.TOKEN_2022_PROGRAM_ID:D.TOKEN_PROGRAM_ID).publicKey,positionNftProgram:a?D.TOKEN_2022_PROGRAM_ID:D.TOKEN_PROGRAM_ID});return{address:{positionId:f,lockPositionId:p,lockNftAccount:y,lockNftMint:l,positionNftAccount:m,metadataAccount:b},instructions:[g],signers:d,instructionTypes:[_.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:o,lockOwner:u,positionNftAccount:r,positionId:a,positionNftMint:c,authPositionNftAccount:d,positionNftProgram:l,lockPositionId:m,lockNftMint:f,lockNftAccount:p,metadataAccount:y,withMetadata:b}){let g=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:D.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1}],P=R([fe("withMetadata")]),w=Buffer.alloc(P.span);P.encode({withMetadata:b},w);let I=Buffer.from([...vr,...w]);return new T.TransactionInstruction({keys:g,programId:e,data:I})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:o,positionNft:u}){let{publicKey:r}=Z(o,u,D.TOKEN_PROGRAM_ID),{publicKey:a}=ze(n,u),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Co(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:T.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new T.TransactionInstruction({keys:c,programId:e,data:Buffer.from(vr)})}static harvestLockPositionInstruction(e){let[t,n]=[new T.PublicKey(e.poolKeys.programId),new T.PublicKey(e.poolKeys.id)],o=le.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),u=le.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:r}=Te(t,n,o),{publicKey:a}=Te(t,n,u),{publicKey:c}=Z(e.owner,e.ownerPosition.nftMint,D.TOKEN_PROGRAM_ID),{publicKey:d}=ze(t,e.ownerPosition.nftMint),{publicKey:l}=lt(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let y=0;y<e.poolKeys.rewardInfos.length;y++)m.push({poolRewardVault:new T.PublicKey(e.poolKeys.rewardInfos[y].vault),ownerRewardVault:e.ownerRewardAccounts[y],rewardMint:new T.PublicKey(e.poolKeys.rewardInfos[y].mint.address)});let f=[...m.map(y=>[{pubkey:y.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Co(e.programId,d).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new T.PublicKey(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new T.PublicKey(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:new T.PublicKey(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new T.PublicKey(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...f];return new T.TransactionInstruction({keys:p,programId:e.programId,data:Buffer.from(_r)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:o,lockOwner:u,lockNftMint:r,lockNftAccount:a,positionNftAccount:c,positionId:d,poolId:l,protocolPosition:m,vaultA:f,vaultB:p,tickArrayLower:y,tickArrayUpper:b,userVaultA:g,userVaultB:P,mintA:w,mintB:I,rewardAccounts:C,exTickArrayBitmap:k}){let x=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...C.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:D.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:D.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:I,isSigner:!1,isWritable:!1},...x];return new T.TransactionInstruction({keys:S,programId:e,data:Buffer.from(_r)})}};var En=require("@solana/web3.js");var Mo=R([L("instruction")]),Js=R([L("instruction")]),eu=R([s("rewardState"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardLastUpdateTime"),s("totalReward"),s("totalRewardEmissioned"),s("rewardClaimed"),s("rewardPerSecond"),W("accRewardPerShare"),A("rewardVault"),A("rewardMint"),A("rewardSender"),s("rewardType"),M(s(),15,"padding")]),tu=R([s("state"),s("nonce"),A("lpVault"),A("rewardVault"),A(),A(),s(),s(),s("totalReward"),W("perShareReward"),s("lastSlot"),s("perSlotReward")]),nu=R([s("state"),s("nonce"),A("lpVault"),A("rewardVaultA"),s("totalRewardA"),W("perShareRewardA"),s("perSlotRewardA"),L("option"),A("rewardVaultB"),X(7),s("totalRewardB"),W("perShareRewardB"),s("perSlotRewardB"),s("lastSlot"),A()]),ou=R([s(),s("state"),s("nonce"),s("validRewardTokenNum"),W("rewardMultiplier"),s("rewardPeriodMax"),s("rewardPeriodMin"),s("rewardPeriodExtend"),A("lpMint"),A("lpVault"),M(eu,5,"rewardInfos"),A("creator"),A(),M(s(),32,"padding")]),iu=new Proxy(tu,{get(i,e,t){return e==="decode"?(...n)=>{let o=i.decode(...n);return G(v({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(i,e,t)}}),ru=new Proxy(nu,{get(i,e,t){return e==="decode"?(...n)=>{let o=i.decode(...n);return G(v({},o),{version:5,rewardInfos:[{rewardVault:o.rewardVaultA,totalReward:o.totalRewardA,perSlotReward:o.perSlotRewardA,perShareReward:o.perShareRewardA},{rewardVault:o.rewardVaultB,totalReward:o.totalRewardB,perSlotReward:o.perSlotRewardB,perShareReward:o.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Wr=new Proxy(ou,{get(i,e,t){return e==="decode"?(...n)=>{let o=i.decode(...n);return G(v({},o),{version:6,rewardInfos:o.rewardInfos.map(u=>{var r;return G(v({},u),{rewardType:((r=Object.entries(dn).find(a=>String(a[1])===u.rewardType.toString()))!=null?r:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),au=R([s("isSet"),s("rewardPerSecond"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardType")]),su=R([L("instruction"),s("nonce"),M(au,5,"rewardTimeInfo")]),uu=R([L("instruction"),s("rewardReopenTime"),s("rewardEndTime"),s("rewardPerSecond")]),cu=R([L("instruction"),s("isSet"),s("rewardPerSecond"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardType")]),lb=R([s("state"),A("id"),A("owner"),s("deposited"),M(s(),1,"rewardDebts")]),Fo=R([s("state"),A("id"),A("owner"),s("deposited"),M(W(),1,"rewardDebts"),s(""),s("voteLockedBalance"),M(s(),15)]),mb=R([s("state"),A("id"),A("owner"),s("deposited"),M(s(),2,"rewardDebts")]),qr=R([s("state"),A("id"),A("owner"),s("deposited"),M(W(),2,"rewardDebts"),M(s(),17)]),Ur=R([s(),s("state"),A("id"),A("owner"),s("deposited"),M(W(),5,"rewardDebts"),M(s(),16)]),Ft=R([L("instruction"),s("amount")]),lu=R([A("mint"),A("grantAuthority"),s("baselineVoteWeightScaledFactor"),s("maxExtraLockupVoteWeightScaledFactor"),s("lockupSaturationSecs"),Hi("digitShift"),M(L(),7,"reserved1"),M(s(),7,"reserved2")]),mu=R([X(8),A("governanceProgramId"),A("realm"),A("realmGoverningTokenMint"),A("realmAuthority"),M(L(),32,"reserved1"),M(lu,4,"votingMints"),Xt("timeOffset"),L("bump"),M(L(),7,"reserved2"),M(s(),11,"reserved3")]),du=R([Xt("startTime"),Xt("endTime"),L("kind"),M(L(),15,"reserved")]),pu=R([M(du,1,"lockup"),s("amountDeposited_native"),s("amountInitiallyLockedNative"),fe("isUsed"),fe("allowClawback"),L("votingMintConfigIdx"),M(L(),29,"reserved")]),fu=R([X(8),A("voterAuthority"),A("registrar"),M(pu,32,"deposits"),L("voterBump"),L("voterWweightRecordBump"),M(L(),94,"reserved")]);var yu=require("@solana/spl-token"),Pb=Q("Raydium_farm_config"),bu=new En.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),gu=new En.PublicKey("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Ab=new En.PublicKey("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var vo={3:Fo,5:qr,6:Ur};var dn={"Standard SPL":0,"Option tokens":1},Dn={[or.toString()]:3,[ir.toString()]:4,[rr.toString()]:5,[wo.toString()]:6,[st.FARM_PROGRAM_ID_V3.toString()]:3,[st.FARM_PROGRAM_ID_V4.toString()]:4,[st.FARM_PROGRAM_ID_V5.toString()]:5,[st.FARM_PROGRAM_ID_V6.toString()]:6};var re=require("@solana/web3.js"),Tu=F(require("bn.js")),Qt=require("@solana/spl-token");var wu=F(require("bn.js"));var Gr=require("@solana/web3.js"),zr=F(require("bn.js"));function Pu(i){return typeof i=="object"&&i!==null&&![ye,Re,Gr.PublicKey,te,zr.default,Qe,He].some(e=>typeof e=="object"&&i instanceof e)}function pt(i){return typeof i=="string"?oo(i):Array.isArray(i)?i.map(e=>pt(e)):Pu(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,pt(t)])):i}var ku=Q("Raydium.farm.util");function vt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:o}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return o}function _o(i){let e=vo[i];return e||ku.logWithError("invalid version",i),e}var hu=Q("Raydium_farm_instruction"),ag={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(i){let{version:e,id:t,ledger:n,programId:o,owner:u}=i,r={3:9,5:10}[e];r||hu.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Mo.span);Mo.encode({instruction:r},a);let c=[B({pubkey:t}),B({pubkey:n}),B({pubkey:u,isWritable:!1}),B({pubkey:re.SystemProgram.programId,isWritable:!1}),B({pubkey:re.SYSVAR_RENT_PUBKEY,isWritable:!1})];return{instruction:new re.TransactionInstruction({programId:o,keys:c,data:a}),instructionType:_.FarmV3CreateLedger}}function Eo(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:u,amount:r}=i,[a,c]=[new re.PublicKey(e.programId),new re.PublicKey(e.id)],d=vt({programId:a,poolId:c,owner:u,version:6}),l=Buffer.alloc(Ft.span);Ft.encode({instruction:2,amount:ee(r)},l);let m=[B({pubkey:Qt.TOKEN_PROGRAM_ID,isWritable:!1}),B({pubkey:c}),B({pubkey:new re.PublicKey(t.authority),isWritable:!1}),B({pubkey:new re.PublicKey(t.lpVault)}),B({pubkey:d}),B({pubkey:u,isWritable:!1,isSigner:!0}),B({pubkey:n})];for(let f=0;f<t.rewardInfos.length;f++)m.push(B({pubkey:new re.PublicKey(t.rewardInfos[f].vault)})),m.push(B({pubkey:o[f]}));return new re.TransactionInstruction({programId:a,keys:m,data:l})}function Do(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:u,amount:r,userAuxiliaryLedgers:a}=i,[c,d]=[new re.PublicKey(e.programId),new re.PublicKey(e.id)],l=vt({programId:c,poolId:d,owner:u,version:5}),m=Buffer.alloc(Ft.span);Ft.encode({instruction:12,amount:ee(r)},m);let f=[B({pubkey:d}),B({pubkey:new re.PublicKey(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:u,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new re.PublicKey(t.lpVault)}),B({pubkey:o[0]}),B({pubkey:new re.PublicKey(t.rewardInfos[0].vault)}),B({pubkey:re.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),B({pubkey:Qt.TOKEN_PROGRAM_ID,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)f.push(B({pubkey:o[p]})),f.push(B({pubkey:new re.PublicKey(t.rewardInfos[p].vault)}));if(a)for(let p of a)f.push(B({pubkey:p}));return new re.TransactionInstruction({programId:c,keys:f,data:m})}function Wo(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:u,amount:r,userAuxiliaryLedgers:a}=i,[c,d]=[new re.PublicKey(e.programId),new re.PublicKey(e.id)],l=vt({programId:c,poolId:d,owner:u,version:3}),m=Buffer.alloc(Ft.span);Ft.encode({instruction:11,amount:ee(r)},m);let f=[B({pubkey:d}),B({pubkey:new re.PublicKey(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:u,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new re.PublicKey(t.lpVault)}),B({pubkey:o[0]}),B({pubkey:new re.PublicKey(t.rewardInfos[0].vault)}),B({pubkey:re.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),B({pubkey:Qt.TOKEN_PROGRAM_ID,isWritable:!1})];if(a)for(let p of a)f.push(B({pubkey:p}));return new re.TransactionInstruction({programId:c,keys:f,data:m})}var xu=F(require("bn.js"));var Mu=require("@solana/web3.js"),pn=require("@solana/spl-token");var Cu=F(require("bn.js"));var Yr=F(require("bn.js"));var qg=new Yr.default(0);var Su=F(require("bn.js"));var Hr=F(require("bn.js")),it=new Hr.default(1e6);var Fu=F(require("bn.js")),vu=F(require("decimal.js"));var Wn=require("@solana/web3.js"),qo=require("@solana/spl-token");var sP=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),uP=Buffer.from("amm_config","utf8"),cP=Buffer.from("pool","utf8"),lP=Buffer.from("pool_lp_mint","utf8"),mP=Buffer.from("pool_vault","utf8"),dP=Buffer.from("observation","utf8"),pP=Buffer.from("permission","utf8"),fP=Buffer.from("support_mint","utf8");var yP=Buffer.from("locked_liquidity","utf8");var xP=Q("Raydium_cpmm"),SP={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 Lu=R([X(8),L("bump"),fe("disableCreatePool"),be("index"),s("tradeFeeRate"),s("protocolFeeRate"),s("fundFeeRate"),s("createPoolFee"),A("protocolOwner"),A("fundOwner"),s("creatorFeeRate"),M(s(),15)]),Qr=R([X(8),A("configId"),A("poolCreator"),A("vaultA"),A("vaultB"),A("mintLp"),A("mintA"),A("mintB"),A("mintProgramA"),A("mintProgramB"),A("observationId"),L("bump"),L("status"),L("lpDecimals"),L("mintDecimalA"),L("mintDecimalB"),s("lpAmount"),s("protocolFeesMintA"),s("protocolFeesMintB"),s("fundFeesMintA"),s("fundFeesMintB"),s("openTime"),s("epoch"),L("feeOn"),fe("enableCreatorFee"),M(L(),6),s("creatorFeesMintA"),s("creatorFeesMintB"),M(s(),28)]),RP=R([X(8),A("configId"),M(s(),30)]);var ga=require("@solana/web3.js"),Zt=require("@solana/spl-token"),Pa=F(require("bn.js")),Ic=F(require("decimal.js"));var Uo=F(require("bn.js")),Go=new Uo.default(25),qn=new Uo.default(1e4);var jr=new Set(["5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","3uaZBfHPfmpAHW7dsimC1SnyR61X4bJqQZKWmRSCXJxv","GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"]);var zo=R([L("instruction"),s("amountIn"),s("minAmountOut")]),Xo=R([L("instruction"),s("maxAmountIn"),s("amountOut")]),VA=R([L("instruction"),L("nonce")]),_u=R([L("instruction"),L("nonce"),s("startTime")]),Yo=R([s("status"),s("nonce"),s("maxOrder"),s("depth"),s("baseDecimal"),s("quoteDecimal"),s("state"),s("resetFlag"),s("minSize"),s("volMaxCutRatio"),s("amountWaveRatio"),s("baseLotSize"),s("quoteLotSize"),s("minPriceMultiplier"),s("maxPriceMultiplier"),s("systemDecimalValue"),s("minSeparateNumerator"),s("minSeparateDenominator"),s("tradeFeeNumerator"),s("tradeFeeDenominator"),s("pnlNumerator"),s("pnlDenominator"),s("swapFeeNumerator"),s("swapFeeDenominator"),s("baseNeedTakePnl"),s("quoteNeedTakePnl"),s("quoteTotalPnl"),s("baseTotalPnl"),s("poolOpenTime"),s("punishPcAmount"),s("punishCoinAmount"),s("orderbookToInitTime"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),s("swapBase2QuoteFee"),W("swapQuoteInAmount"),W("swapBaseOutAmount"),s("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"),s("lpReserve"),M(s(),3,"padding")]),EA=R([s("accountType"),s("status"),s("nonce"),s("maxOrder"),s("depth"),s("baseDecimal"),s("quoteDecimal"),s("state"),s("resetFlag"),s("minSize"),s("volMaxCutRatio"),s("amountWaveRatio"),s("baseLotSize"),s("quoteLotSize"),s("minPriceMultiplier"),s("maxPriceMultiplier"),s("systemDecimalsValue"),s("abortTradeFactor"),s("priceTickMultiplier"),s("priceTick"),s("minSeparateNumerator"),s("minSeparateDenominator"),s("tradeFeeNumerator"),s("tradeFeeDenominator"),s("pnlNumerator"),s("pnlDenominator"),s("swapFeeNumerator"),s("swapFeeDenominator"),s("baseNeedTakePnl"),s("quoteNeedTakePnl"),s("quoteTotalPnl"),s("baseTotalPnl"),s("poolOpenTime"),s("punishPcAmount"),s("punishCoinAmount"),s("orderbookToInitTime"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),W("swapQuoteInAmount"),W("swapBaseOutAmount"),s("swapQuote2BaseFee"),s("swapBase2QuoteFee"),A("baseVault"),A("quoteVault"),A("baseMint"),A("quoteMint"),A("lpMint"),A("modelDataAccount"),A("openOrders"),A("marketId"),A("marketProgramId"),A("targetOrders"),A("owner"),M(s(),64,"padding")]),Ho=R([L("instruction"),s("baseAmountIn"),s("quoteAmountIn"),s("fixedSide"),s("otherAmountMin")]),Qo=R([L("instruction"),s("lpAmount"),s("baseAmountMin"),s("quoteAmountMin")]);var $r=R([s("fee")]);var ta=require("@solana/web3.js"),fn=F(require("decimal.js")),na=require("@solana/spl-token");var Jr=require("@solana/web3.js");var Vu=Q("Raydium_liquidity_serum");function ea({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,o;for(;n<100;){try{let u=t.concat(Buffer.from([n]),Buffer.alloc(7));o=Jr.PublicKey.createProgramAddressSync(u,i)}catch(u){if(u instanceof TypeError)throw u;n++;continue}return{publicKey:o,nonce:n}}throw Vu.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}function Un({programId:i}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function _t({name:i,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function Eu({programId:i,marketId:e}){let{publicKey:t}=oe([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function oa({programId:i}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function jo({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:u,quoteDecimals:r,programId:a,marketProgramId:c}){let d=_t({name:"amm_associated_seed",programId:a,marketId:t}),l=_t({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:f}=oa({programId:a}),p=_t({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=_t({name:"pc_vault_associated_seed",programId:a,marketId:t}),b=_t({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=Eu({programId:a,marketId:t}),P=_t({name:"target_associated_seed",programId:a,marketId:t}),w=_t({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:I}=ea({programId:c,marketId:t});return{id:d,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:u,quoteDecimals:r,lpDecimals:u,version:i,programId:a,authority:m,nonce:f,baseVault:p,quoteVault:y,lpVault:b,openOrders:g,targetOrders:P,withdrawQueue:w,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:I,lookupTableAccount:ta.PublicKey.default,configId:Un({programId:a})}}var Zo={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},$o=i=>{let e={},t=na.TOKEN_PROGRAM_ID.toBase58();return Object.keys(i).map(n=>{let o=i[n],[u,r]=[o.baseMint.toBase58(),o.quoteMint.toBase58()];e[n]={id:n,version:4,status:o.status.toNumber(),programId:o.programId.toBase58(),mintA:At({address:u,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:At({address:r,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new fn.default(o.mintAAmount.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new fn.default(o.mintBAmount.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new fn.default(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:Zo,week:Zo,month:Zo,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:Un({programId:o.programId}).toBase58(),lpPrice:0,lpAmount:new fn.default(o.lpReserve.toString()).div(10**Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())).toNumber(),lpMint:At({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())}),burnPercent:0,feeOn:"Both",hasDynamicFee:!1,tips:[],launchMigratePool:!1}}),e};var rt=require("@solana/spl-token"),J=require("@solana/web3.js");var yn=F(require("bn.js"));var Gn=Q("Raydium_liquidity_instruction");function ia(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:u,fixedSide:r,otherAmountMin:a,modelDataPubKey:c=Ct}=i,d=Buffer.alloc(Ho.span);Ho.encode({instruction:3,baseAmountIn:ee(o),quoteAmountIn:ee(u),otherAmountMin:ee(a),fixedSide:r==="base"?$:wt},d);let l=[B({pubkey:rt.TOKEN_PROGRAM_ID,isWritable:!1}),B({pubkey:new J.PublicKey(e.id)}),B({pubkey:new J.PublicKey(t.authority),isWritable:!1}),B({pubkey:new J.PublicKey(t.openOrders),isWritable:!1}),B({pubkey:new J.PublicKey(t.targetOrders)}),B({pubkey:new J.PublicKey(e.lpMint.address)}),B({pubkey:new J.PublicKey(t.vault.A)}),B({pubkey:new J.PublicKey(t.vault.B)})];return e.pooltype.includes("StablePool")&&l.push(B({pubkey:c})),l.push(B({pubkey:new J.PublicKey(e.marketId),isWritable:!1}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:new J.PublicKey(t.marketEventQueue),isWritable:!1})),new J.TransactionInstruction({programId:new J.PublicKey(e.programId),keys:l,data:d})}function Jo(i){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:o,baseAmountMin:u,quoteAmountMin:r,modelDataPubKey:a=Ct}=i,c=pt(t),d=4;if(e.pooltype.includes("StablePool")&&(d=5),d===4||d===5){let l=Buffer.alloc(Qo.span);Qo.encode({instruction:4,lpAmount:ee(o),baseAmountMin:ee(u),quoteAmountMin:ee(r)},l);let m=[B({pubkey:rt.TOKEN_PROGRAM_ID,isWritable:!1}),B({pubkey:c.id}),B({pubkey:c.authority,isWritable:!1}),B({pubkey:c.openOrders}),B({pubkey:c.targetOrders}),B({pubkey:c.mintLp.address}),B({pubkey:c.vault.A}),B({pubkey:c.vault.B})];return d===5?m.push(B({pubkey:a})):(m.push(B({pubkey:c.id})),m.push(B({pubkey:c.id}))),m.push(B({pubkey:c.marketProgramId,isWritable:!1}),B({pubkey:c.marketId}),B({pubkey:c.marketBaseVault}),B({pubkey:c.marketQuoteVault}),B({pubkey:c.marketAuthority,isWritable:!1}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:c.marketEventQueue}),B({pubkey:c.marketBids}),B({pubkey:c.marketAsks})),new J.TransactionInstruction({programId:c.programId,keys:m,data:l})}return new J.TransactionInstruction({programId:c.programId,keys:[]})}function ei({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:u,pcMint:r,coinVault:a,pcVault:c,withdrawQueue:d,ammTargetOrders:l,poolTempLp:m,marketProgramId:f,marketId:p,userWallet:y,userCoinVault:b,userPcVault:g,userLpVault:P,nonce:w,openTime:I,coinAmount:C,pcAmount:k,ammConfigId:x,feeDestinationId:S}){let O=R([L("instruction"),L("nonce"),s("openTime"),s("pcAmount"),s("coinAmount")]),N=[{pubkey:rt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:rt.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:J.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:x,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0}],K=Buffer.alloc(O.span);return O.encode({instruction:1,nonce:w,openTime:I,coinAmount:C,pcAmount:k},K),{instruction:new J.TransactionInstruction({keys:N,programId:i,data:K}),instructionType:_.AmmV4CreatePool}}function Du({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:o=Ct},u){let r=pt(i),a=Buffer.alloc(zo.span);zo.encode({instruction:9,amountIn:ee(t),minAmountOut:ee(n)},a);let c=[B({pubkey:rt.TOKEN_PROGRAM_ID,isWritable:!1}),B({pubkey:r.id}),B({pubkey:r.authority,isWritable:!1}),B({pubkey:r.openOrders})];return u===4&&c.push(B({pubkey:r.targetOrders})),c.push(B({pubkey:r.vault.A}),B({pubkey:r.vault.B})),u===5&&c.push(B({pubkey:o})),c.push(B({pubkey:r.marketProgramId,isWritable:!1}),B({pubkey:r.marketId}),B({pubkey:r.marketBids}),B({pubkey:r.marketAsks}),B({pubkey:r.marketEventQueue}),B({pubkey:r.marketBaseVault}),B({pubkey:r.marketQuoteVault}),B({pubkey:r.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1,isSigner:!0})),new J.TransactionInstruction({programId:r.programId,keys:c,data:a})}function Wu({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:o=Ct},u){let r=pt(i),a=Buffer.alloc(Xo.span);Xo.encode({instruction:11,maxAmountIn:ee(t),amountOut:ee(n)},a);let c=[B({pubkey:rt.TOKEN_PROGRAM_ID,isWritable:!1}),B({pubkey:r.id}),B({pubkey:r.authority,isWritable:!1}),B({pubkey:r.openOrders}),B({pubkey:r.targetOrders}),B({pubkey:r.vault.A}),B({pubkey:r.vault.B})];return u===5&&c.push(B({pubkey:o})),c.push(B({pubkey:r.marketProgramId,isWritable:!1}),B({pubkey:r.marketId}),B({pubkey:r.marketBids}),B({pubkey:r.marketAsks}),B({pubkey:r.marketEventQueue}),B({pubkey:r.marketBaseVault}),B({pubkey:r.marketQuoteVault}),B({pubkey:r.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1,isSigner:!0})),new J.TransactionInstruction({programId:r.programId,keys:c,data:a})}function qu(i,e,t,n,o,u,r,a,c,d){let l=R([L("instructionId"),s("amountIn"),s("minAmountOut")]),m=Buffer.alloc(l.span);l.encode({instructionId:16,amountIn:c,minAmountOut:d},m);let f=[{pubkey:rt.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:u,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new J.TransactionInstruction({programId:i,keys:f,data:m})}function Uu(i,e,t,n,o,u,r,a,c,d){let l=R([L("instructionId"),s("maxAmountIn"),s("amountOut")]),m=Buffer.alloc(l.span);l.encode({instructionId:17,maxAmountIn:c,amountOut:d},m);let f=[{pubkey:rt.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:u,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new J.TransactionInstruction({programId:i,keys:f,data:m})}function ti(i){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:u,fixedSide:r}=i;if(t===4){if(r==="in")return qu(new J.PublicKey(e.programId),new J.PublicKey(e.id),new J.PublicKey(e.authority),new J.PublicKey(e.vault.A),new J.PublicKey(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new yn.default(o.toString()),new yn.default(u.toString()));if(r==="out")return Uu(new J.PublicKey(e.programId),new J.PublicKey(e.id),new J.PublicKey(e.authority),new J.PublicKey(e.vault.A),new J.PublicKey(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new yn.default(o.toString()),new yn.default(u.toString()));Gn.logWithError("invalid params","params",i)}throw Gn.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function ni(i){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:u,fixedSide:r}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(r==="in")return Du(G(v({},a),{amountIn:o,minAmountOut:u}),t);if(r==="out")return Wu(G(v({},a),{maxAmountIn:o,amountOut:u}),t);Gn.logWithError("invalid params","params",i)}throw Gn.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}var Et=5e4,Gu=R([s("x"),s("y"),s("price")]),zu=R([s("accountType"),s("status"),s("multiplier"),s("validDataCount"),M(Gu,Et,"DataElement")]);function Xu(i,e){return[0,Et-2]}function Yu(i){return[0,Et-2]}function Hu(i){return[0,Et-2]}function Qu(i,e,t){let[n,o]=Xu(e,t),u=n,r=o,a=0,c=e*i.multiplier/t;for(;u<=r;){if(a=Math.floor((r+u)/2),a===0||a>=Et-2)return[a,a,!1];let d=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.DataElement[a+1].y;if(c===d)return[a,a,!0];if(c===l)return[a-1,a-1,!0];if(c===m)return[a+1,a+1,!0];if(c<l)r=a-1;else{if(c>l&&c<d)return[a-1,a,!0];if(c>d&&c<m)return[a,a+1,!0];u=a+1}}return[a,a,!1]}function oi(i,e,t){let[n,o,u]=Qu(i,e,t);if(!u)return 0;if(n===o){let r=i.DataElement[n].x;return e*i.multiplier/r}else{let r=i.DataElement[n].x,a=i.DataElement[n].y,c=i.DataElement[o].x,d=i.DataElement[o].y,l=t*(c*a-r*d),m=r*l,f=(c-r)*(e*a-r*t)*d,p=m+f;return e*i.multiplier*l/p}}function Vt(i,e,t){return e*i.multiplier/t}function ra(i,e,t){return e*t/i.multiplier}function Zu(i,e){let[t,n]=Yu(e),o=t,u=n,r=0,a=e;for(;o<u;){if(r=Math.floor((u+o)/2),r<=0||r>Et-2)return[r,r,!1];let c=i.DataElement[r].x,d=i.DataElement[r-1].x,l=i.DataElement[r+1].x;if(a===c)return[r,r,!0];if(a===d)return[r-1,r-1,!0];if(a===l)return[r+1,r+1,!0];if(a<d)u=r-1;else{if(a>d&&a<c)return[r-1,r,!0];if(a>c&&a<l)return[r,r+1,!0];o=r+1}}return[r,r,!1]}function ju(i,e){let[t,n]=Hu(e),o=t,u=n,r=0,a=e;for(;o<=u;){if(r=Math.floor((u+o)/2),r<=0||r>=Et-2)return[r,r,!1];let c=i.DataElement[r].y,d=i.DataElement[r-1].y,l=i.DataElement[r+1].y;if(a===c)return[r,r,!0];if(a===d)return[r-1,r-1,!0];if(a===l)return[r+1,r+1,!0];if(a<l)o=r+1;else{if(a<d&&a>c)return[r-1,r,!0];if(a<c&&a>l)return[r,r+1,!0];u=r-1}}return[r,r,!1]}function aa(i,e,t,n){let o=n?e+t:e-t,[u,r,a]=Zu(i,o);if(!a)return[0,0,!1,a];if(u===r)return[i.DataElement[r].price,i.DataElement[r].y,!1,a];{let c=i.DataElement[u].x,d=i.DataElement[r].x,l=i.DataElement[u].price,m=i.DataElement[r].price,f=i.DataElement[u].y,p=i.DataElement[r].y;if(e>=c&&e<=d)return n?[m,p,!0,a]:[l,f,!0,a];{let y,b;return n?(y=l+(m-l)*(e-c)/(d-c),b=f-(o-c)*i.multiplier/m):(y=l+(m-l)*(e-c)/(d-c),b=p+(d-o)*i.multiplier/l),[y,b,!1,a]}}}function $u(i,e,t,n){let o=n?e-t:e+t,[u,r,a]=ju(i,o);if(!a)return[0,0,!1,a];if(u===r)return[i.DataElement[r].price,i.DataElement[r].x,!1,a];{let c=i.DataElement[u].x,d=i.DataElement[r].x,l=i.DataElement[u].price,m=i.DataElement[r].price,f=i.DataElement[u].y,p=i.DataElement[r].y;if(e>=p&&e<=f)return n?[m,d,!0,a]:[l,c,!0,a];{let y,b;return n?(y=l+(m-l)*(f-e)/(f-p),b=c+m*(f-o)/i.multiplier):(y=l+(m-l)*(f-e)/(f-p),b=d-l*(o-p)/i.multiplier),[y,b,!1,a]}}}function Ju(i,e){let t=aa(i,e,0,!1);return t[3]?t[0]:0}function sa(i,e,t,n){let o=oi(i,e,t),u=Vt(i,e,o),r=Vt(i,t,o),a=Vt(i,n,o),c=!0,[d,l,m,f]=aa(i,u,a,c);if(!f)return 0;if(m)return n*i.multiplier/d;{let p=r-l;return ra(i,p,o)}}function ua(i,e,t,n){let o=oi(i,e,t),u=Vt(i,e,o),r=Vt(i,t,o),a=Vt(i,n,o),c=!1,[d,l,m,f]=$u(i,r,a,c);if(!f)return 0;if(m)return n*d/i.multiplier;{let p=u-l;return ra(i,p,o)}}function ec(i){let e=zu.decode(i);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function ca(i,e,t,n){let o=Ju(i,Vt(i,e,oi(i,e,t)))/i.multiplier;return n?o:1/o}var zn=class{constructor({connection:e,modelDataPubKey:t=Ct}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e,this.modelDataPubKey=t}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(this.modelDataPubKey);e&&(this._layoutData=ec(e==null?void 0:e.data))}}};var ii=require("@solana/spl-token"),da=require("@solana/web3.js"),pa=F(require("bn.js"));var tc=R([s(),s("epoch"),L("curveType"),be("index"),s("migrateFee"),s("tradeFeeRate"),s("maxShareFeeRate"),s("minSupplyA"),s("maxLockRate"),s("minSellRateA"),s("minMigrateRateA"),s("minFundRaisingB"),A("mintB"),A("protocolFeeOwner"),A("migrateFeeOwner"),A("migrateToAmmWallet"),A("migrateToCpmmWallet"),M(s(),16)]),nc=R([s("totalLockedAmount"),s("cliffPeriod"),s("unlockPeriod"),s("startTime"),s("totalAllocatedShare")]),oc=R([s(),s("epoch"),L("bump"),L("status"),L("mintDecimalsA"),L("mintDecimalsB"),L("migrateType"),s("supply"),s("totalSellA"),s("virtualA"),s("virtualB"),s("realA"),s("realB"),s("totalFundRaisingB"),s("protocolFee"),s("platformFee"),s("migrateFee"),nc.replicate("vestingSchedule"),A("configId"),A("platformId"),A("mintA"),A("mintB"),A("vaultA"),A("vaultB"),A("creator"),L("mintProgramFlag"),L("cpmmCreatorFeeOn"),s("platformVestingShare"),M(L(),54)]),Aw=R([s(),s("epoch"),A("poolId"),A("beneficiary"),s("claimedAmount"),s("tokenShareAmount"),M(s(),8)]),la=R([L("migrateType"),L("migrateCpmmFeeOn"),s("supply"),s("totalSellA"),s("totalFundRaisingB"),s("totalLockedAmount"),s("cliffPeriod"),s("unlockPeriod")]),ic=R([s("epoch"),L("index"),A("configId"),la.replicate("bondingCurveParam"),M(s(),50)]),ma=R([s(),s("epoch"),A("platformClaimFeeWallet"),A("platformLockNftWallet"),s("platformScale"),s("creatorScale"),s("burnScale"),s("feeRate"),M(L(),64,"name"),M(L(),256,"web"),M(L(),256,"img"),A("cpConfigId"),s("creatorFeeRate"),A("transferFeeExtensionAuth"),A("platformVestingWallet"),s("platformVestingScale"),A("platformCpCreator"),L("restrictGlobalConfig"),M(L(),107),Zi(ic,"platformCurve")]);var Iw=Buffer.from("vault_auth_seed","utf8"),Bw=Buffer.from("global_config","utf8"),xw=Buffer.from("pool_vesting","utf8"),Sw=Buffer.from("platform_config","utf8"),Kw=Buffer.from("platform_fee_vault_auth_seed","utf8"),Cw=Buffer.from("creator_fee_vault_auth_seed","utf8"),Rw=Buffer.from("platform_global_access","utf8"),Lw=Buffer.from("platform_allow_config","utf8");var Ww={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 qw=new pa.default("18446744073709551615");var fa=require("@solana/spl-token");var rc=F(require("bn.js")),ac=F(require("decimal.js"));var mc=F(require("bn.js")),dc=F(require("decimal.js"));var sc=F(require("bn.js")),uc=F(require("decimal.js"));var cc=F(require("bn.js")),lc=F(require("decimal.js"));var ri=F(require("bn.js")),Xn=F(require("decimal.js")),Yn=class{static _multipler(e){return new Xn.default(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Xn.default(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let o=e.mul(this._multipler(n)).div(this._multipler(t));return new ri.default(o.mul(this._Q64).toFixed(0))}};Yn._Q64=new Xn.default(new ri.default(1).shln(64).toString());var Dt=require("@solana/spl-token"),we=F(require("bn.js")),ai=require("@solana/web3.js");var Ac=F(require("decimal.js")),BT={initPriceX64:new we.default("515752397214619"),supply:new we.default(1e15),totalSellA:new we.default(7931e11),totalFundRaisingB:new we.default(85e9),totalFundRaisingBUSD:new we.default(125e8),totalLockedAmount:new we.default("0"),cliffPeriod:new we.default("0"),unlockPeriod:new we.default("0"),decimals:6,virtualA:new we.default("1073471847374405"),virtualB:new we.default("30050573465"),realA:new we.default(0),realB:new we.default(0),protocolFee:new we.default(0),platformId:new ai.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new we.default(0),cliffPeriod:new we.default(0),unlockPeriod:new we.default(0),startTime:new we.default(0),totalAllocatedShare:new we.default(0)}},xT=new we.default(1e4);var wc={[sr.toBase58()]:3};var kc=R([X(5),X(8),A("ownAddress"),s("vaultSignerNonce"),A("baseMint"),A("quoteMint"),A("baseVault"),s("baseDepositsTotal"),s("baseFeesAccrued"),A("quoteVault"),s("quoteDepositsTotal"),s("quoteFeesAccrued"),s("quoteDustThreshold"),A("requestQueue"),A("eventQueue"),A("bids"),A("asks"),s("baseLotSize"),s("quoteLotSize"),s("feeRateBps"),s("referrerRebatesAccrued"),X(7)]);var Tc=require("@solana/web3.js");var $T=Q("Serum");var si=require("@solana/spl-token"),ui=require("@solana/web3.js"),hc=F(require("bn.js"));var Yh=new Pa.default(0);var kt=require("@solana/web3.js"),Aa=require("@solana/spl-token"),ci=F(require("bn.js"));var Oe=class extends Ne{static getPdaPoolId(e,t){return oe([Oe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return oe([Oe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new ci.default(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:u}){if(n.length===0)return[];let r=n.map(l=>Oe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Oe.VERSION_PROJECT.length;l++)a.push(...r.map(m=>Oe.getPdaOwnerId(t,m,o,l).publicKey));let c=await je(e,[...r,...a]),d=[];for(let l=0;l<c.length;l++){let m=Math.floor(l/n.length),f=l%n.length,p=r[f],y=a[l],b=c[f],g=c[n.length+l];if(!(b&&g)||b.data.length!==Oe.POOL_LAYOUT.span||g.data.length!==Oe.OWNER_LAYOUT.span)continue;let P=Oe.POOL_LAYOUT.decode(b.data),w=Oe.OWNER_LAYOUT.decode(g.data),I=P.openTime.toNumber(),C=P.endTime.toNumber(),k=w.tokenInfo.map(O=>O.debtAmount.gt(new ci.default(0))).filter(O=>!O).length!==3,x=u>I&&u<C&&P.status===1,S=k&&x;d.push({programId:t,poolId:p,ammId:P.ammId,ownerAccountId:y,snapshotLpAmount:w.lpAmount,project:Oe.VERSION_PROJECT[m],openTime:I,endTime:C,canClaim:S,canClaimErrorType:k?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:P.tokenInfo.map((O,N)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:w.tokenInfo[N].debtAmount.add(w.tokenInfo[N].claimedAmount)}))})}return d}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let o=this.createTxBuilder(n),u=t.wallet||this.scope.ownerPubKey,r=[];for(let d of e.tokenInfo){let{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:u,amount:0},skipCloseAccount:!d.mintAddress.equals(ye.WSOL.mint),associatedOnly:d.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});m&&o.addInstruction(m),r.push(l)}o.addInstruction({instructions:[Oe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:u,ownerPda:e.ownerAccountId,claimAddress:r}})]});let{transaction:a,signers:c}=o.build();return[{transaction:a,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let o=this.createTxBuilder(n),u=t.wallet||this.scope.ownerPubKey,r={};for(let l of e){let m=[];for(let f of l.tokenInfo){let{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({mint:f.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:f.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:u,amount:0},skipCloseAccount:!f.mintAddress.equals(ye.WSOL.mint),associatedOnly:f.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});y&&o.addInstruction(y),p&&(r[f.mintAddress.toString()]=p,m.push(p))}o.addInstruction({instructions:[Oe.makeClaimInstruction({programId:l.programId,poolInfo:l,ownerInfo:{wallet:u,ownerPda:l.ownerAccountId,claimAddress:m}})]})}let{transaction:a,signers:c}=o.build(),d=o.allInstructions;return lo(d,[u,...c.map(l=>l.publicKey)])?[{transaction:a,signer:c}]:[{transaction:new kt.Transaction().add(...d.slice(0,o.AllTxData.instructions.length-1)),signer:c},{transaction:new kt.Transaction().add(...d.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new kt.Transaction().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=R([]),u=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Aa.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],r=Buffer.alloc(o.span);o.encode({},r);let a=Buffer.from([10,66,208,184,161,6,191,98,...r]);return new kt.TransactionInstruction({keys:u,programId:e,data:a})}},Je=Oe;Je.CLAIMED_NUM=3,Je.POOL_LAYOUT=R([X(8),L("bump"),L("status"),s("openTime"),s("endTime"),A("ammId"),M(R([L("mintDecimals"),A("mintAddress"),A("mintVault"),s("perLpLoss"),s("totalClaimedAmount")]),Oe.CLAIMED_NUM,"tokenInfo"),M(s(),10,"padding")]),Je.OWNER_LAYOUT=R([X(8),L("bump"),L("version"),A("poolId"),A("owner"),s("lpAmount"),M(R([A("mintAddress"),s("debtAmount"),s("claimedAmount")]),Oe.CLAIMED_NUM,"tokenInfo"),M(s(),4,"padding")]),Je.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new kt.PublicKey(e)),Je.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Je.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var Sc=require("@solana/spl-token"),Kc=require("@solana/web3.js"),Cc=F(require("bn.js"));var Me=require("@solana/web3.js"),jt=require("@solana/spl-token");function Bc(i="accountFlags"){let e=new On(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var li=R([X(5),Bc("accountFlags"),A("ownAddress"),s("vaultSignerNonce"),A("baseMint"),A("quoteMint"),A("baseVault"),s("baseDepositsTotal"),s("baseFeesAccrued"),A("quoteVault"),s("quoteDepositsTotal"),s("quoteFeesAccrued"),s("quoteDustThreshold"),A("requestQueue"),A("eventQueue"),A("bids"),A("asks"),s("baseLotSize"),s("quoteLotSize"),s("feeRateBps"),s("referrerRebatesAccrued"),X(7)]);function xc({programId:i,marketInfo:e}){let t=R([L("version"),me("instruction"),s("baseLotSize"),s("quoteLotSize"),be("feeRateBps"),s("vaultSignerNonce"),s("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Me.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),o=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},o),new Me.TransactionInstruction({keys:n,programId:i,data:o})}async function mi({connection:i,wallet:e,marketInfo:t}){var r,a,c,d,l,m,f,p;let n=new Me.Transaction,o=await i.getMinimumBalanceForRentExemption(165);n.add(Me.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:jt.TOKEN_PROGRAM_ID}),Me.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:jt.TOKEN_PROGRAM_ID}),(0,jt.createInitializeAccountInstruction)(t.baseVault.publicKey,t.baseMint,t.vaultOwner),(0,jt.createInitializeAccountInstruction)(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),Me.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(li.span),space:li.span,programId:t.programId}));let u=new Me.Transaction;return u.add(Me.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:t.lowestFeeMarket?6208320:await i.getMinimumBalanceForRentExemption((r=t.requestQueueSpace)!=null?r:5120+12),space:t.lowestFeeMarket?764:(a=t.requestQueueSpace)!=null?a:5120+12,programId:t.programId}),Me.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:t.lowestFeeMarket?79594560:await i.getMinimumBalanceForRentExemption((c=t.eventQueueSpace)!=null?c:262144+12),space:t.lowestFeeMarket?11308:(d=t.eventQueueSpace)!=null?d:262144+12,programId:t.programId}),Me.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:t.lowestFeeMarket?101977920:await i.getMinimumBalanceForRentExemption((l=t.orderbookQueueSpace)!=null?l:65536+12),space:t.lowestFeeMarket?14524:(m=t.orderbookQueueSpace)!=null?m:65536+12,programId:t.programId}),Me.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:t.lowestFeeMarket?101977920:await i.getMinimumBalanceForRentExemption((f=t.orderbookQueueSpace)!=null?f:65536+12),space:t.lowestFeeMarket?14524:(p=t.orderbookQueueSpace)!=null?p:65536+12,programId:t.programId}),xc({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:u,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}var Lc=require("@solana/web3.js"),bn=require("@solana/spl-token");var ex=new Tt.default(2),tx=new Tt.default(3),nx=new Tt.default(5),eo=new Tt.default(10),ox=new Tt.default(100),ix=new Tt.default(1e3),rx=new Tt.default(1e4);function ao(i){return eo.pow(ee(i))}function Hn(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:i.isNeg()===e.isNeg()?t.div.iaddn(1):t.div}function di(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var pi=F(require("bn.js"));function wa(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new pi.default(0))?t.add(new pi.default(1)):t}var Qn=require("@solana/spl-token"),fi=Q("Raydium_accountInfo_util");async function je(i,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:u=100}=v({batchRequest:!1},t),r=di(e,u),a=new Array(r.length).fill([]);if(n){let c=r.map(m=>{let f=i._buildArgs([m.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:f}}),d=di(c,10);a=(await(await Promise.all(d.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&fi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(f=>{if(f){let{data:p,executable:y,lamports:b,owner:g,rentEpoch:P}=f;return p.length!==2&&p[1]!=="base64"&&fi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:b,owner:new ka.PublicKey(g),rentEpoch:P}}return null})))}else try{a=await Promise.all(r.map(c=>i.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&fi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function mt(i,e,t){let n=await je(i,e.map(o=>o.pubkey),t);return e.map((o,u)=>G(v({},o),{accountInfo:n[u]}))}var ue=F(require("bn.js")),ae=F(require("decimal.js"));var gn=class extends Ne{constructor(t){super(t);this.stableLayout=new zn({connection:this.scope.connection,modelDataPubKey:this.scope.cluster==="mainnet"?void 0:st.MODEL_DATA_PUBKEY})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:o,baseIn:u}){let r=new ue.default(new ae.default(n).mul(10**t[u?"mintA":"mintB"].decimals).toFixed(0)),a=ho(t[u?"mintB":"mintA"]),[c,d]=[new ue.default(new ae.default(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ue.default(new ae.default(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ue.default(new ae.default(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,ae.default.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",d.toString()),this.logDebug("tokenIn:",u?t.mintA.symbol:t.mintB.symbol,"amountIn:",r.toString(),"anotherToken:",u?t.mintB.symbol:t.mintA.symbol,"slippage:",`${o.toSignificant()}%`,"baseReserve",c.toString(),"quoteReserve",d.toString());let m=u?"base":"quote";this.logDebug("input side:",m);let f=$;r.isZero()||(f=m==="base"?Hn(r.mul(d),c):Hn(r.mul(c),d)),this.logDebug("amountRaw:",f.toString(),"lpAmount:",l.toString());let p=Hn(r.mul(l),m==="base"?c:d);this.logDebug("liquidity:",p.toString());let y=new He(new ue.default(1)).add(o),b=new He(new ue.default(1)).sub(o),g=y.mul(f).quotient,P=b.mul(f).quotient,w=new Re(a,f),I=new Re(a,g),C=new Re(a,P);return this.logDebug("anotherAmount:",w.toFixed(),"maxAnotherAmount:",I.toFixed()),{anotherAmount:w,maxAnotherAmount:I,minAnotherAmount:C,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:o,amountInA:u,amountInB:r,otherAmountMin:a,fixedSide:c,config:d,txVersion:l,computeBudgetConfig:m,txTipConfig:f,feePayer:p}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",u,"amountInB:",r),(u.isZero()||r.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:u.toFixed(),amountInB:r.toFixed()});let{account:y}=this.scope,{bypassAssociatedCheck:b,checkCreateATAOwner:g}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},d),[P,w]=[u.token,r.token],I=await y.getCreatedTokenAccount({mint:P.mint,associatedOnly:!1}),C=await y.getCreatedTokenAccount({mint:w.mint,associatedOnly:!1});!I&&!C&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let k=await y.getCreatedTokenAccount({mint:new pe.PublicKey(n.lpMint.address)}),x=[P,w],S=[I,C],O=[u.raw,r.raw],N=u.token.mint.toBase58()===n.mintA.address?"base":"quote",K="base";["quote","base"].includes(N)||this.logAndCreateError("invalid fixedSide","fixedSide",c),N==="quote"?(x.reverse(),S.reverse(),O.reverse(),K=c==="a"?"quote":"base"):N==="base"&&(K=c==="a"?"base":"quote");let[z,U]=x,[V,H]=S,[Y,ce]=O,se=o!=null?o:await this.getAmmPoolKeys(n.id),ke=this.createTxBuilder(p),at=await y.handleTokenAccount({side:"in",amount:Y,mint:z.mint,tokenAccount:V,bypassAssociatedCheck:b,checkCreateATAOwner:g}),{tokenAccount:Ve}=at,Xe=Ce(at,["tokenAccount"]);ke.addInstruction(Xe);let Ue=await y.handleTokenAccount({side:"in",amount:ce,mint:U.mint,tokenAccount:H,bypassAssociatedCheck:b,checkCreateATAOwner:g}),{tokenAccount:et}=Ue,Ee=Ce(Ue,["tokenAccount"]);ke.addInstruction(Ee);let Fe=await y.handleTokenAccount({side:"out",amount:0,mint:new pe.PublicKey(n.lpMint.address),tokenAccount:k,bypassAssociatedCheck:b,checkCreateATAOwner:g}),{tokenAccount:Ie}=Fe,tt=Ce(Fe,["tokenAccount"]);return ke.addInstruction(tt),ke.addInstruction({instructions:[ia({poolInfo:n,poolKeys:se,userKeys:{baseTokenAccount:Ve,quoteTokenAccount:et,lpTokenAccount:Ie,owner:this.scope.ownerPubKey},baseAmountIn:Y,quoteAmountIn:ce,otherAmountMin:a.raw,fixedSide:K})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:se.lookupTableAccount?[se.lookupTableAccount]:[]}),ke.addCustomComputeBudget(m),ke.addTipInstruction(f),l===0?await ke.buildV0():ke.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:o,lpAmount:u,baseAmountMin:r,quoteAmountMin:a,config:c,txVersion:d,computeBudgetConfig:l,txTipConfig:m,feePayer:f}=t,p=o!=null?o:await this.getAmmPoolKeys(n.id),[y,b,g]=[new pe.PublicKey(n.mintA.address),new pe.PublicKey(n.mintB.address),new pe.PublicKey(n.lpMint.address)];this.logDebug("lpAmount:",u),this.logDebug("baseAmountMin:",r),this.logDebug("quoteAmountMin:",a),u.isZero()&&this.logAndCreateError("amount must greater than zero","lpAmount",u.toString());let{account:P}=this.scope,w=await P.getCreatedTokenAccount({mint:g,associatedOnly:!1});w||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",P.tokenAccounts);let I=await P.getCreatedTokenAccount({mint:y}),C=await P.getCreatedTokenAccount({mint:b}),k=this.createTxBuilder(f),{bypassAssociatedCheck:x,checkCreateATAOwner:S}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),U=await P.handleTokenAccount({side:"out",amount:0,mint:y,tokenAccount:I,bypassAssociatedCheck:x,checkCreateATAOwner:S}),{tokenAccount:O}=U,N=Ce(U,["tokenAccount"]);k.addInstruction(N);let V=await P.handleTokenAccount({side:"out",amount:0,mint:b,tokenAccount:C,bypassAssociatedCheck:x,checkCreateATAOwner:S}),{tokenAccount:K}=V,z=Ce(V,["tokenAccount"]);return k.addInstruction(z),k.addInstruction({instructions:[Jo({poolInfo:n,poolKeys:p,userKeys:{lpTokenAccount:w,baseTokenAccount:O,quoteTokenAccount:K,owner:this.scope.ownerPubKey},lpAmount:u,baseAmountMin:r,quoteAmountMin:a})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),k.addCustomComputeBudget(l),k.addTipInstruction(m),d===0?await k.buildV0():k.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:u,farmInfo:r,userFarmLpAmount:a,base:c,computeBudgetConfig:d,payer:l,userAuxiliaryLedgers:m,tokenProgram:f=he.TOKEN_PROGRAM_ID,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:b,feePayer:g}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let P=this.createTxBuilder(g),w={};for(let se of this.scope.account.tokenAccountRawInfos)(w[se.accountInfo.mint.toString()]===void 0||Z(this.scope.ownerPubKey,se.accountInfo.mint,he.TOKEN_PROGRAM_ID).publicKey.equals(se.pubkey))&&(w[se.accountInfo.mint.toString()]=se.pubkey);let I=w[t.lpMint.address];if(I===void 0)throw Error("find lp account error in trade accounts");let C=o.add(a!=null?a:new ue.default(0)),k=t.mintA.address===ye.WSOL.mint.toString(),x=t.mintB.address===ye.WSOL.mint.toString(),{account:S,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:he.TOKEN_PROGRAM_ID,mint:new pe.PublicKey(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(P.addInstruction(O||{}),S===void 0)throw new Error("base token account not found");let{account:N,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:he.TOKEN_PROGRAM_ID,mint:new pe.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:x?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!x,notUseTokenAccount:x,associatedOnly:!0,checkCreateATAOwner:p});if(P.addInstruction(K||{}),N===void 0)throw new Error("quote token account not found");if(w[t.mintA.address]=S,w[t.mintB.address]=N,r!==void 0&&!(a!=null&&a.isZero())){let se=Dn[r.programId],ke=vt({programId:new pe.PublicKey(r.programId),poolId:new pe.PublicKey(r.id),owner:this.scope.ownerPubKey,version:se}),Ve,Xe=await this.scope.connection.getAccountInfo(ke);if(Xe&&(Ve=_o(se).decode(Xe.data)),se!==6&&!Ve){let{instruction:Fe,instructionType:ft}=Vo({id:new pe.PublicKey(r.id),programId:new pe.PublicKey(r.programId),version:se,ledger:ke,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[Fe],instructionTypes:[ft]})}let et=[];for(let Fe of r.rewardInfos){let ft=Fe.mint.address===ye.WSOL.mint.toString();if(w[Fe.mint.address])et.push(w[Fe.mint.address]);else{let{account:$t,instructionParams:ht}=await this.scope.account.getOrCreateTokenAccount({mint:new pe.PublicKey(Fe.mint.address),tokenProgram:f,owner:this.scope.ownerPubKey,skipCloseAccount:!ft,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});$t||this.logAndCreateError("farm reward account not found:",Fe.mint.address),ht&&P.addInstruction(ht),et.push($t)}}let Ee=(await this.scope.api.fetchFarmKeysById({ids:r.id}))[0],Ie={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:r,farmKeys:Ee,lpAccount:I,rewardAccounts:et},tt=Dn[r.programId],at=tt===6?Eo(Ie):tt===5?Do(Ie):Wo(Ie),Ue={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};P.addInstruction({instructions:[at],instructionTypes:[Ue[tt]]})}let z=await this.getAmmPoolKeys(t.id),U=Jo({poolInfo:t,poolKeys:z,userKeys:{lpTokenAccount:I,baseTokenAccount:S,quoteTokenAccount:N,owner:this.scope.ownerPubKey},lpAmount:C,baseAmountMin:0,quoteAmountMin:0});P.addInstruction({instructions:[U],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:z.lookupTableAccount?[z.lookupTableAccount]:[]});let[V,H]=t.mintA.address===n.mintA.address?[S,N]:[N,S],Y=await this.scope.clmm.getClmmPoolKeys(n.id),ce=await dt.openPositionFromBaseInstructions(G(v({poolInfo:n,poolKeys:Y,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:V,tokenAccountB:H},withMetadata:"create"},u),{liquidity:new ue.default(0),base:c,getEphemeralSigners:y}));return P.addInstruction({instructions:[...ce.instructions],signers:ce.signers,instructionTypes:[...ce.instructionTypes],lookupTableAddress:Y.lookupTableAccount?[Y.lookupTableAccount]:[]}),b===0?P.sizeCheckBuildV0({computeBudgetConfig:d}):P.sizeCheckBuild({computeBudgetConfig:d})}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:u,baseAmount:r,quoteAmount:a,startTime:c,ownerInfo:d,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:f,txVersion:p,feeDestinationId:y,computeBudgetConfig:b,txTipConfig:g,feePayer:P}){var H;let w=d.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),I=d.useSOLBalance&&o.mint.equals(he.NATIVE_MINT),C=d.useSOLBalance&&u.mint.equals(he.NATIVE_MINT),k=this.createTxBuilder(P),{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:I?{payer:w,amount:r}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:l,checkCreateATAOwner:m});k.addInstruction(S||{});let{account:O,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:u.mint,owner:this.scope.ownerPubKey,createInfo:C?{payer:w,amount:a}:void 0,notUseTokenAccount:C,skipCloseAccount:!C,associatedOnly:C?!1:l,checkCreateATAOwner:m});if(k.addInstruction(N||{}),x===void 0||O===void 0)throw Error("you don't has some token account");let K=jo({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:u.mint,baseDecimals:o.decimals,quoteDecimals:u.decimals,programId:t,marketProgramId:n.programId}),z={programId:t,ammId:K.id,ammAuthority:K.authority,ammOpenOrders:K.openOrders,lpMint:K.lpMint,coinMint:K.baseMint,pcMint:K.quoteMint,coinVault:K.baseVault,pcVault:K.quoteVault,withdrawQueue:K.withdrawQueue,ammTargetOrders:K.targetOrders,poolTempLp:K.lpVault,marketProgramId:K.marketProgramId,marketId:K.marketId,ammConfigId:K.configId,feeDestinationId:y},{instruction:U,instructionType:V}=ei(G(v({},z),{userWallet:this.scope.ownerPubKey,userCoinVault:x,userPcVault:O,userLpVault:Z(this.scope.ownerPubKey,K.lpMint,f).publicKey,nonce:K.nonce,openTime:c,coinAmount:r,pcAmount:a}));return k.addInstruction({instructions:[U],instructionTypes:[V]}),k.addCustomComputeBudget(b),k.addTipInstruction(g),k.versionBuild({txVersion:p,extInfo:{address:z}})}async createMarketAndPoolV4({programId:t=ko,marketProgram:n=ar,feeDestinationId:o=cr,tokenProgram:u,baseMintInfo:r,quoteMintInfo:a,baseAmount:c,quoteAmount:d,startTime:l,ownerInfo:m,lowestFeeMarket:f,assignSeed:p,associatedOnly:y=!1,checkCreateATAOwner:b=!1,lotSize:g=1,tickSize:P=.01,txVersion:w,computeBudgetConfig:I,txTipConfig:C,feePayer:k}){var bi,gi,Pi;let x=this.scope.ownerPubKey,S=m.feePayer||((bi=this.scope.owner)==null?void 0:bi.publicKey),O=m.useSOLBalance&&r.mint.equals(he.NATIVE_MINT),N=m.useSOLBalance&&a.mint.equals(he.NATIVE_MINT),K=p?`${r.mint.toBase58().slice(0,7)}-${a.mint.toBase58().slice(0,7)}-${p}`:void 0,z=Ge({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-market`}),U=Ge({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-request`}),V=Ge({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-event`}),H=Ge({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-bids`}),Y=Ge({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-asks`}),ce=Ge({fromPublicKey:x,programId:he.TOKEN_PROGRAM_ID,assignSeed:K&&`${K}-baseVault`}),se=Ge({fromPublicKey:x,programId:he.TOKEN_PROGRAM_ID,assignSeed:K&&`${K}-quoteVault`}),ke=0,Ve=new ue.default(100);function Xe(){let nt=new ue.default(0);for(;;)try{return{vaultOwner:pe.PublicKey.createProgramAddressSync([z.publicKey.toBuffer(),nt.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:nt}}catch{if(nt.iaddn(1),nt.gt(new ue.default(25555)))throw Error("find vault owner error")}}let{vaultOwner:et,vaultSignerNonce:Ee}=Xe(),Ie=new ue.default(Math.round(10**r.decimals*g)),tt=new ue.default(Math.round(g*10**a.decimals*P));if(Ie.eq($))throw Error("lot size is too small");if(tt.eq($))throw Error("tick size or lot size is too small");let at=await mi({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:et,baseMint:r.mint,quoteMint:a.mint,id:z,baseVault:ce,quoteVault:se,requestQueue:U,eventQueue:V,bids:H,asks:Y,feeRateBps:ke,quoteDustThreshold:Ve,vaultSignerNonce:Ee,baseLotSize:Ie,quoteLotSize:tt,lowestFeeMarket:f}}),Ue=this.createTxBuilder(k);Ue.addInstruction({instructions:at[0].transaction.instructions,signers:at[0].signer});for await(let nt of at.slice(1,at.length))Ue.addInstruction({instructions:nt.transaction.instructions,signers:nt.signer,instructionTypes:nt.instructionTypes});let{account:Fe,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:O?{payer:S,amount:c}:void 0,notUseTokenAccount:O,skipCloseAccount:!O,associatedOnly:O?!1:y,checkCreateATAOwner:b,assignSeed:O&&K?`${K}-wsol`:void 0});Ue.addInstruction(ft||{});let{account:$t,instructionParams:ht}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:N?{payer:S,amount:d}:void 0,notUseTokenAccount:N,skipCloseAccount:!N,associatedOnly:N?!1:y,checkCreateATAOwner:b,assignSeed:N&&K?`${K}-wsol`:void 0});if(Ue.addInstruction(ht||{}),Fe===void 0)throw Error("you don't has base token account");if($t===void 0)throw Error("you don't has quote token account");let Ke=jo({version:4,marketVersion:3,marketId:z.publicKey,baseMint:r.mint,quoteMint:a.mint,baseDecimals:r.decimals,quoteDecimals:a.decimals,programId:t,marketProgramId:n}),Zn={programId:t,ammId:Ke.id,ammAuthority:Ke.authority,ammOpenOrders:Ke.openOrders,lpMint:Ke.lpMint,coinMint:Ke.baseMint,pcMint:Ke.quoteMint,coinVault:Ke.baseVault,pcVault:Ke.quoteVault,withdrawQueue:Ke.withdrawQueue,ammTargetOrders:Ke.targetOrders,poolTempLp:Ke.lpVault,marketProgramId:Ke.marketProgramId,marketId:Ke.marketId,ammConfigId:Ke.configId,feeDestinationId:o},{instruction:Ta,instructionType:ha}=ei(G(v({},Zn),{userWallet:this.scope.ownerPubKey,userCoinVault:Fe,userPcVault:$t,userLpVault:Z(this.scope.ownerPubKey,Ke.lpMint,u).publicKey,nonce:Ke.nonce,openTime:l,coinAmount:c,pcAmount:d}));Ue.addInstruction({instructions:[Ta],instructionTypes:[ha]});let yi=O||N?[((gi=ft==null?void 0:ft.instructions)==null?void 0:gi[0])||((Pi=ht==null?void 0:ht.instructions)==null?void 0:Pi[0])].filter(nt=>!!nt):void 0;return w===0?Ue.sizeCheckBuildV0({computeBudgetConfig:I,splitIns:yi,address:v({requestQueue:U.publicKey,eventQueue:V.publicKey,bids:H.publicKey,asks:Y.publicKey,baseVault:ce.publicKey,quoteVault:se.publicKey,baseMint:new pe.PublicKey(r.mint),quoteMint:new pe.PublicKey(a.mint)},Zn)}):Ue.sizeCheckBuild({computeBudgetConfig:I,splitIns:yi,address:v({requestQueue:U.publicKey,eventQueue:V.publicKey,bids:H.publicKey,asks:Y.publicKey,baseVault:ce.publicKey,quoteVault:se.publicKey,baseMint:new pe.PublicKey(r.mint),quoteMint:new pe.PublicKey(a.mint)},Zn)})}async getCreatePoolFee({programId:t}){let n=Un({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return $r.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:u,slippage:r}){let[a,c]=[o.toString(),u.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(c!==t.mintA.address&&c!==t.mintB.address)throw new Error("toke not match");let{baseReserve:d,quoteReserve:l}=t,m=[d,l],f=[t.mintA.decimals,t.mintB.decimals],p=a==t.mintA.address?"base":"quote";p==="quote"&&(m.reverse(),f.reverse());let[y,b]=m,[g,P]=f,w=t.version===4,I;if(w)I=new ae.default(b.toString()).div(10**P).div(new ae.default(y.toString()).div(10**g));else{let V=ca(this.stableLayout.stableModelData,d.toNumber(),l.toNumber(),!1);p==="quote"?I=new ae.default(1e6).div(V*1e6):I=new ae.default(V*1e6).div(1e6)}let C=n,k=new ue.default(0),x=new ue.default(0);if(!C.isZero())if(w){x=wa(C.mul(Go),qn);let V=C.sub(x),H=y.add(V);k=b.mul(V).div(H)}else{x=C.mul(new ue.default(2)).div(new ue.default(1e4));let V=C.sub(x);p==="quote"?k=new ue.default(sa(this.stableLayout.stableModelData,l.toNumber(),d.toNumber(),V.toNumber())):k=new ue.default(ua(this.stableLayout.stableModelData,l.toNumber(),d.toNumber(),V.toNumber()))}let S=new ue.default(new ae.default(k.toString()).mul(1-r).toFixed(0)),O=k,N=S,K=new ae.default(k.toString()).div(new ae.default(C.sub(x).toString()).toFixed(0));!C.isZero()&&!k.isZero()&&(K=new ae.default(k.toString()).div(10**P).div(new ae.default(C.sub(x).toString()).div(10**g)));let z=I.sub(K).div(I).mul(100);return{amountOut:O,minAmountOut:N,currentPrice:I,executionPrice:K,priceImpact:z,fee:x}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:o,mintOut:u,slippage:r}){let{baseReserve:a,quoteReserve:c}=t;o.toString()!==t.mintA.address&&o.toString()!==t.mintB.address&&this.logAndCreateError("mintIn does not match pool"),u.toString()!==t.mintA.address&&u.toString()!==t.mintB.address&&this.logAndCreateError("mintOut does not match pool"),this.logDebug("baseReserve:",a.toString()),this.logDebug("quoteReserve:",c.toString());let d=o.toString()===t.mintA.address,[l,m]=d?[t.mintA,t.mintB]:[t.mintB,t.mintA];this.logDebug("currencyOut:",m.symbol||m.address),this.logDebug("amountOut:",new ae.default(n.toString()).div(10**m.decimals).toDecimalPlaces(m.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${r*100}%`);let f=[a,c],p=d?"quote":"base";p==="base"&&f.reverse(),this.logDebug("output side:",p);let[y,b]=f,g=new ae.default(b.toString()).div(10**t[d?"mintB":"mintA"].decimals).div(new ae.default(y.toString()).div(10**t[d?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${g.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new ae.default(1).div(g).toString()} ${l.symbol||l.address}`);let P=new ue.default(0),w=n,I=new ue.default(0);if(!w.isZero()){w.gt(b)&&(w=b.sub(new ue.default(1)));let K=b.sub(w),z=y.mul(w).div(K);P=z.mul(qn).div(qn.sub(Go)),I=P.sub(z)}let C=new ue.default(new ae.default(P.toString()).mul(1+r).toFixed(0)),k=P,x=C;this.logDebug("amountIn:",new ae.default(k.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new ae.default(x.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let S=null;!P.isZero()&&!w.isZero()&&(S=new ae.default(w.toString()).div(10**m.decimals).div(new ae.default(P.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${m.symbol||m.address} \u2248 ${S.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new ae.default(1).div(S).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let O=g.mul(k.toString()),N=O.sub(n.toString()).abs().div(O);return this.logDebug("priceImpact:",`${N.toString()}%`),{amountIn:k,maxAmountIn:x,currentPrice:g,executionPrice:S,priceImpact:N,fee:I}}async swap({poolInfo:t,poolKeys:n,amountIn:o,amountOut:u,inputMint:r,fixedSide:a,txVersion:c,config:d,computeBudgetConfig:l,txTipConfig:m,feePayer:f}){let p=this.createTxBuilder(f),{associatedOnly:y=!0,inputUseSolBalance:b=!0,outputUseSolBalance:g=!0}=d||{},[P,w]=r===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],I=b&&P.address===Ye.toBase58(),C=g&&w.address===Ye.toBase58(),{account:k,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:he.TOKEN_PROGRAM_ID,mint:new pe.PublicKey(P.address),owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:y});p.addInstruction(x||{}),k||this.logAndCreateError("input token account not found",{token:P.symbol||P.address,tokenAccountIn:k,inputTokenUseSolBalance:I,associatedOnly:y});let{account:S,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:he.TOKEN_PROGRAM_ID,mint:new pe.PublicKey(w.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!C,notUseTokenAccount:C,associatedOnly:C?!1:y});p.addInstruction(O||{}),S===void 0&&this.logAndCreateError("output token account not found",{token:w.symbol||w.address,tokenAccountOut:S,outputTokenUseSolBalance:C,associatedOnly:y});let N=n||await this.getAmmPoolKeys(t.id),K=4;return t.pooltype.includes("StablePool")&&(K=5),p.addInstruction({instructions:[K===4?ti({version:K,poolKeys:N,userKeys:{tokenAccountIn:k,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:o,amountOut:u,fixedSide:a}):ni({version:K,poolKeys:N,userKeys:{tokenAccountIn:k,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:o,amountOut:u,fixedSide:a})],instructionTypes:[K===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await mt(this.scope.connection,t.map(l=>({pubkey:new pe.PublicKey(l)})),n),u={},r=[];for(let l=0;l<t.length;l++){let m=o[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let f=Yo.decode(m.accountInfo.data);u[String(t[l])]=G(v({},f),{programId:m.accountInfo.owner}),r.push(f.baseVault,f.quoteVault)}let a={},c=await mt(this.scope.connection,r.map(l=>({pubkey:new pe.PublicKey(l)})),n);for(let l=0;l<r.length;l++){let m=c[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+r[l]);a[String(r[l])]=new ue.default(he.AccountLayout.decode(m.data).amount.toString())}let d={};for(let[l,m]of Object.entries(u)){let f=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);d[l]=G(v({},m),{baseReserve:f,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new ae.default(p.toString()).div(new ae.default(10).pow(m.quoteDecimal.toString())).div(new ae.default(f.toString()).div(new ae.default(10).pow(m.baseDecimal.toString())))})}return d}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),o=$o({[t]:n}),u=o[t],r=await this.scope.tradeV2.computePoolToPoolKeys({pools:[o[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:u,poolKeys:r[0]}}async fetchPoolBalances(){await this.scope.account.fetchWalletTokenAccounts({forceUpdate:!0});let t=this.scope.account.tokenAccounts.filter(a=>!a.mint.equals(pe.PublicKey.default)&&!a.amount.isZero()).map(a=>a.mint),u=(await je(this.scope.connection,t)).map((a,c)=>a&&a.data.length===he.MintLayout.span?G(v({},he.MintLayout.decode(a.data)),{address:t[c]}):void 0).filter(Boolean).filter(a=>this.scope.cluster==="devnet"?a:jr.has(a.mintAuthority.toString())),r=await this.scope.api.fetchPoolByLpMints({ids:u.map(a=>a.address.toBase58()).join(",")});return u.map((a,c)=>{var d,l;return{mintData:a,address:a.address,poolInfo:r[c],balance:(l=(d=this.scope.account.tokenAccounts.find(m=>m.mint.equals(a.address)))==null?void 0:d.amount)!=null?l:new ue.default(0)}})}};0&&(module.exports={});
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=liquidity.js.map