UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 223 kB
var ma=Object.create;var sn=Object.defineProperty,da=Object.defineProperties,pa=Object.getOwnPropertyDescriptor,fa=Object.getOwnPropertyDescriptors,ya=Object.getOwnPropertyNames,vn=Object.getOwnPropertySymbols,ba=Object.getPrototypeOf,wo=Object.prototype.hasOwnProperty,Ni=Object.prototype.propertyIsEnumerable;var Oi=(l,e,t)=>e in l?sn(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,M=(l,e)=>{for(var t in e||(e={}))wo.call(e,t)&&Oi(l,t,e[t]);if(vn)for(var t of vn(e))Ni.call(e,t)&&Oi(l,t,e[t]);return l},q=(l,e)=>da(l,fa(e));var st=(l,e)=>{var t={};for(var n in l)wo.call(l,n)&&e.indexOf(n)<0&&(t[n]=l[n]);if(l!=null&&vn)for(var n of vn(l))e.indexOf(n)<0&&Ni.call(l,n)&&(t[n]=l[n]);return t};var ga=(l,e)=>{for(var t in e)sn(l,t,{get:e[t],enumerable:!0})},Mi=(l,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ya(e))!wo.call(l,o)&&o!==t&&sn(l,o,{get:()=>e[o],enumerable:!(n=pa(e,o))||n.enumerable});return l};var W=(l,e,t)=>(t=l!=null?ma(ba(l)):{},Mi(e||!l||!l.__esModule?sn(t,"default",{value:l,enumerable:!0}):t,l)),Pa=l=>Mi(sn({},"__esModule",{value:!0}),l);var Bc={};ga(Bc,{AMM_CONFIG_SEED:()=>Mr,BIT_PRECISION:()=>Yo,BN_NEGATIVE_ONE:()=>Fs,BN_ONE:()=>Je,BN_ZERO:()=>D,Clmm:()=>Fn,ClmmConfigLayout:()=>no,ClmmInstrument:()=>J,CollectFeeOn:()=>to,DYNAMIC_CONFIG_INDEX:()=>Vs,DYNAMIC_FEE_CONFIG_SEED:()=>Wr,DYNAMIC_FEE_CONTROL_DENOMINATOR:()=>Ho,DynamicFeeConfigLayout:()=>Ds,DynamicFeeInfo:()=>Dt,DynamicFeeInfoLayout:()=>Cr,EXTENSION_TICKARRAY_BITMAP_SIZE:()=>Ft,FEE_RATE_DENOMINATOR:()=>ft,LOG_B_2_X32:()=>Go,LOG_B_P_ERR_MARGIN_LOWER_X64:()=>zo,LOG_B_P_ERR_MARGIN_UPPER_X64:()=>Xo,LimitOrderLayout:()=>Bt,LimitOrderMath:()=>gt,LimitOrderNonceLayout:()=>ni,LiquidityMathUtil:()=>we,LockClPositionLayoutV2:()=>oi,LockPositionLayout:()=>Ws,MAGIC_SQRT_10001:()=>Rs,MAX_FEE_RATE:()=>Ls,MAX_FEE_RATE_NUMERATOR:()=>In,MAX_SQRT_PRICE_X64:()=>$e,MAX_TICK:()=>He,MAX_TICK_SPACING:()=>Os,MIN_SQRT_PRICE_X64:()=>je,MIN_TICK:()=>Ze,OBSERVATION_NUM:()=>jo,OBSERVATION_UPDATE_DURATION_DEFAULT:()=>Ms,OPERATION_SEED:()=>Vr,OPERATION_SIZE_USIZE:()=>$o,ObservationItemLayout:()=>xr,ObservationLayout:()=>ei,OperationLayout:()=>ti,PERMISSION_SEED:()=>qr,POOL_LOCK_ID_SEED:()=>yi,POOL_OBSERVATION_SEED:()=>Er,POOL_REWARD_VAULT_SEED:()=>Fr,POOL_SEED:()=>ao,POOL_TICK_ARRAY_BITMAP_SEED:()=>_r,POOL_VAULT_SEED:()=>si,POSITION_SEED:()=>ui,PersonalPositionLayout:()=>Sn,PoolFee:()=>rn,PoolInfoLayout:()=>en,PoolStatusBitFlag:()=>Ir,PoolStatusBitIndex:()=>hr,PoolUtil:()=>Ue,PoolUtils:()=>Ge,PositionRewardInfoLayout:()=>Lr,PositionUtils:()=>Ti,ProtocolPositionLayout:()=>Es,Q128:()=>eo,Q64:()=>me,REDUCTION_FACTOR_DENOMINATOR:()=>Zo,RESOLUTION:()=>Mt,REWARD_NUM:()=>Jt,RewardInfoLayout:()=>Rr,RewardState:()=>Br,SUPPORT_MINT_SEED:()=>Dr,SqrtPriceMath:()=>nn,SwapMathUtil:()=>on,SwapState:()=>at,TICK_ARRAY_BITMAP_SIZE:()=>hn,TICK_ARRAY_SEED:()=>vr,TICK_ARRAY_SIZE:()=>qe,TICK_ARRAY_SIZE_USIZE:()=>Ns,TICK_TO_SQRT_PRICE_FACTORS:()=>Qo,TickArrayBitmapExtensionLayout:()=>Kn,TickArrayBitmapUtil:()=>yt,TickArrayLayout:()=>vt,TickArrayUtil:()=>H,TickLayout:()=>Or,TickUtil:()=>G,U128_MAX:()=>Tn,U256_MAX:()=>$s,U64_IGNORE_RANGE:()=>_s,U64_MAX:()=>pt,UpdateAmmConfigParam:()=>Sr,UpdateOperationAccountParam:()=>Kr,VOLATILITY_ACCUMULATOR_SCALE:()=>$t,WHITE_MINT_SIZE_USIZE:()=>Jo,abs:()=>uu,checkedAdd:()=>Gs,checkedMul:()=>Xs,checkedSub:()=>zs,clearBit:()=>iu,clmmComputeInfoToApiInfo:()=>ki,decimalToX64:()=>_t,divRoundingUp:()=>xn,fetchTickArrays:()=>Pi,fromSignedI128:()=>su,getCollectFeeOnDescription:()=>vs,getOrderTick:()=>cu,getPdaAmmConfigId:()=>qs,getPdaDynamicFeeConfigAddress:()=>Us,getPdaExBitmapAccount:()=>ye,getPdaLimitOrderAddress:()=>pi,getPdaLimitOrderNonceAddress:()=>fi,getPdaLockClPositionIdV2:()=>Vt,getPdaLockPositionId:()=>uo,getPdaMetadataKey:()=>St,getPdaMintExAccount:()=>Kt,getPdaObservationAccount:()=>so,getPdaOperationAccount:()=>tn,getPdaPermission:()=>li,getPdaPermissionedPoolId:()=>mi,getPdaPersonalPositionAddress:()=>Ye,getPdaPoolId:()=>ci,getPdaPoolRewardVaultId:()=>di,getPdaPoolVaultId:()=>Xe,getPdaProtocolPositionAddress:()=>ot,getPdaTickArrayAddress:()=>re,i32ToBytes:()=>ro,i32ToBytesBE:()=>ii,isBitSet:()=>nu,leastSignificantBit:()=>tu,mask:()=>lo,mockV3CreatePoolInfo:()=>Bn,mostSignificantBit:()=>bi,mulDivCeil:()=>fe,mulDivFloor:()=>de,mulDivRound:()=>Qs,mulFull:()=>Ys,setBit:()=>ou,swapInternal:()=>mo,toSignedI128:()=>au,toggleBit:()=>ru,u128CheckedMul:()=>js,u128SaturatingAdd:()=>Zs,u128SaturatingSub:()=>Hs,u16ToBytes:()=>oo,u16ToBytesBE:()=>io,u256MulDivCeil:()=>eu,u256MulDivFloor:()=>Js,u64ToBytes:()=>ri,u8ToBytes:()=>ai,wrappingSubU128:()=>Me,x64ToDecimal:()=>gi});module.exports=Pa(Bc);var Io=require("@solana/web3.js");var un=require("lodash");var ko=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}},Fi={},Aa={};function oe(l){let e=(0,un.get)(Fi,l);if(!e){let t=(0,un.get)(Aa,l);e=new ko({name:l,logLevel:t}),(0,un.set)(Fi,l,e)}return e}var wt=require("@solana/spl-token"),To=oe("Raydium_accountInfo_util");async function De(l,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=M({batchRequest:!1},t),r=ho(e,i),a=new Array(r.length).fill([]);if(n){let s=r.map(p=>{let g=l._buildArgs([p.map(d=>d.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:g}}),c=ho(s,10);a=(await(await Promise.all(c.map(async p=>await l._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&To.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(g=>{if(g){let{data:d,executable:f,lamports:y,owner:b,rentEpoch:w}=g;return d.length!==2&&d[1]!=="base64"&&To.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:f,lamports:y,owner:new Io.PublicKey(b),rentEpoch:w}}return null})))}else try{a=await Promise.all(r.map(s=>l.getMultipleAccountsInfo(s,o)))}catch(s){s instanceof Error&&To.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${s.message}`)}return a.flat()}async function ze(l,e,t){let n=await De(l,e.map(o=>o.pubkey),t);return e.map((o,i)=>q(M({},o),{accountInfo:n[i]}))}async function cn({connection:l,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await ze(l,e.map(s=>({pubkey:lt(s)})),t),o={};for(let s of n){if(!s.accountInfo||s.accountInfo.data.length<wt.MINT_SIZE){console.log("invalid mint account",s.pubkey.toBase58());continue}let c=(0,wt.unpackMint)(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);o[s.pubkey.toString()]=q(M({},c),{programId:((r=s.accountInfo)==null?void 0:r.owner)||wt.TOKEN_PROGRAM_ID,feeConfig:(a=(0,wt.getTransferFeeConfig)(c))!=null?a:void 0})}return o[Io.PublicKey.default.toBase58()]=o[Z.toBase58()],o}var Ct=W(require("bn.js")),Ic=W(require("decimal.js"));var Wi=W(require("big.js")),pn=W(require("bn.js"));var vi=W(require("toformat")),wa=vi.default,ln=wa;var mn=W(require("big.js")),_i=W(require("bn.js")),Ei=W(require("decimal.js-light"));var Gt=W(require("bn.js"));var Vi=9007199254740991;function xe(l){let e=oe("Raydium_parseBigNumberish");if(l instanceof Gt.default)return l;if(typeof l=="string"){if(l.match(/^-?[0-9]+$/))return new Gt.default(l);e.logWithError(`invalid BigNumberish string: ${l}`)}return typeof l=="number"?(l%1&&e.logWithError(`BigNumberish number underflow: ${l}`),(l>=Vi||l<=-Vi)&&e.logWithError(`BigNumberish number overflow: ${l}`),new Gt.default(String(l))):typeof l=="bigint"?new Gt.default(l.toString()):(e.error(`invalid BigNumberish value: ${l}`),new Gt.default(0))}var Vn=oe("module/fraction"),Bo=ln(mn.default),dn=ln(Ei.default),Ta={[0]:dn.ROUND_DOWN,[1]:dn.ROUND_HALF_UP,[2]:dn.ROUND_UP},ha={[0]:mn.default.roundDown,[1]:mn.default.roundHalfUp,[2]:mn.default.roundUp},se=class{constructor(e,t=new _i.default(1)){this.numerator=xe(e),this.denominator=xe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new se(this.denominator,this.numerator)}add(e){let t=e instanceof se?e:new se(xe(e));return this.denominator.eq(t.denominator)?new se(this.numerator.add(t.numerator),this.denominator):new se(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof se?e:new se(xe(e));return this.denominator.eq(t.denominator)?new se(this.numerator.sub(t.numerator),this.denominator):new se(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof se?e:new se(xe(e));return new se(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof se?e:new se(xe(e));return new se(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Vn.logWithError(`${e} is not an integer.`),e<=0&&Vn.logWithError(`${e} is not positive.`),dn.set({precision:e+1,rounding:Ta[n]});let o=new dn(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)||Vn.logWithError(`${e} is not an integer.`),e<0&&Vn.logWithError(`${e} is negative.`),Bo.DP=e,Bo.RM=ha[n]||1,new Bo(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ia=oe("Raydium_amount"),Di=ln(Wi.default);function Ba(l,e){let t="0",n="0";if(l.includes(".")){let o=l.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):Ia.logWithError(`invalid number string, num: ${l}`)}else t=l;return[t,n.slice(0,e)||n]}var Ce=class extends se{constructor(t,n,o=!0,i){let r=new pn.default(0),a=So.pow(new pn.default(t.decimals));if(o)r=xe(n);else{let s=new pn.default(0),c=new pn.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[u,p]=Ba(n.toString(),t.decimals);s=xe(u),c=xe(p)}s=s.mul(a),r=s.add(c)}super(r,a);this.logger=oe(i||"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 Ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ce(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 Di.DP=this.token.decimals,new Di(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var qi=require("@solana/web3.js"),Ko=require("@solana/spl-token"),_n={chainId:101,address:qi.PublicKey.default.toBase58(),programId:Ko.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"}},mt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ko.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 En=require("@solana/web3.js");var le=require("@solana/web3.js"),Ui=require("@solana/spl-token");function zt({pubkey:l,isSigner:e=!1,isWritable:t=!0}){return{pubkey:l,isWritable:t,isSigner:e}}var Sa=[zt({pubkey:Ui.TOKEN_PROGRAM_ID,isWritable:!1}),zt({pubkey:le.SystemProgram.programId,isWritable:!1}),zt({pubkey:le.SYSVAR_RENT_PUBKEY,isWritable:!1})];function xo({publicKey:l,transformSol:e}){let t=Gi(l.toString());if(t instanceof le.PublicKey)return e&&t.equals(Rt)?Z:t;if(e&&t.toString()===Rt.toBase58())return Z;if(typeof t=="string"){if(t===le.PublicKey.default.toBase58())return le.PublicKey.default;try{return new le.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Gi(l){try{return new le.PublicKey(l)}catch{return l}}var kt=new le.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),et=new le.PublicKey("SysvarRent111111111111111111111111111111111"),Jc=new le.PublicKey("SysvarC1ock11111111111111111111111111111111"),Tt=new le.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ka=new le.PublicKey("Sysvar1nstructions1111111111111111111111111"),xa=le.SystemProgram.programId,el=new le.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),tl=new le.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),nl=new le.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ol=new le.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),il=new le.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),rl=new le.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),al=new le.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),sl=new le.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ul=new le.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),cl=new le.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ll=new le.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Z=new le.PublicKey("So11111111111111111111111111111111111111112"),Rt=le.PublicKey.default;function lt(l){return xo({publicKey:l,transformSol:!0})}var Co=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===Rt.toBase58()||e instanceof En.PublicKey&&Rt.equals(e)){this.decimals=mt.decimals,this.symbol=mt.symbol,this.name=mt.name,this.mint=new En.PublicKey(mt.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=i?En.PublicKey.default:xo({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Le=Co;Le.WSOL=new Co(q(M({},mt),{mint:mt.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}},Dn=Ro;Dn.SOL=new Ro(_n);var Xi=W(require("bn.js"));var zi=new se(new Xi.default(100)),dt=class extends se{toSignificant(e=5,t,n){return this.mul(zi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(zi).toFixed(e,t,n)}};var Ca=oe("Raydium_price"),tt=class extends se{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new se(Lo(n.decimals),Lo(o.decimals))}get raw(){return new se(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new tt({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ca.logWithError("mul token not equals");let n=super.mul(t);return new tt({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 hc=require("lodash");var La=W(require("axios"));var Yi={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"},Ra=q(M({},Yi),{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 Jl=oe("Raydium_Api");var cr=require("@solana/web3.js");var Hn=require("@solana/spl-token");var ae=require("@solana/web3.js"),ji=W(require("axios"));var ut=require("@solana/web3.js");async function Oo({connection:l,address:e,cluster:t="mainnet"}){let n=await De(l,[...new Set(e.map(i=>i.toString()))].map(i=>new ut.PublicKey(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let s=new ut.AddressLookupTableAccount({key:a,state:ut.AddressLookupTableAccount.deserialize(r.data)});o[a.toString()]=s,t==="devnet"?Yt[a.toString()]=s:Xt[a.toString()]=s}return o}var Xt={},No=async l=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Xt[e])return Xt;let t=new ut.PublicKey(e),n=await l.getAccountInfo(t);return n&&(Xt[e]=new ut.AddressLookupTableAccount({key:t,state:ut.AddressLookupTableAccount.deserialize(n.data)})),Xt},Yt={},Mo=async l=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Yt[e])return Yt;let t=new ut.PublicKey(e),n=await l.getAccountInfo(t);return n&&(Yt[e]=new ut.AddressLookupTableAccount({key:t,state:ut.AddressLookupTableAccount.deserialize(n.data)})),Yt};var ee={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 ve=require("@solana/web3.js");var Zi=require("@solana/spl-token"),Qi=oe("Raydium_txUtil"),Hi=1644;function Wn(l){let e=[],t=[];return l.microLamports&&(e.push(ve.ComputeBudgetProgram.setComputeUnitPrice({microLamports:l.microLamports})),t.push(ee.SetComputeUnitPrice)),l.units&&(e.push(ve.ComputeBudgetProgram.setComputeUnitLimit({units:l.units})),t.push(ee.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Qt(l,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=l.getLatestBlockhash)==null?void 0:n.call(l,{commitment:t})))==null?void 0:o.blockhash}async function qn(l,e){return l.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);l.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function Fo(l,e){l.length<1&&Qi.logWithError(`no instructions provided: ${l.toString()}`),e.length<1&&Qi.logWithError(`no signers provided:, ${e.toString()}`);let t=new ve.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...l);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Hi}catch{return!1}}function ue(l,e){let[t,n]=ve.PublicKey.findProgramAddressSync(l,e);return{publicKey:t,nonce:n}}function fn({instructions:l,payer:e,signers:t}){return Fo(l,[e,...t])}function yn({instructions:l,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ve.Keypair.generate().publicKey.toString()}){let i=new ve.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:l}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ve.VersionedTransaction(i).serialize()).toString("base64").length<Hi}catch{return!1}}var Oa=l=>Buffer.isBuffer(l)?l:l instanceof Uint8Array?Buffer.from(l.buffer,l.byteOffset,l.byteLength):Buffer.from(l),Na=l=>{let e=l.serialize({requireAllSignatures:!1,verifySignatures:!1});l instanceof ve.VersionedTransaction&&(e=Oa(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Lt(l){let e=[];return l.forEach(t=>{t instanceof ve.Transaction&&(t.recentBlockhash||(t.recentBlockhash=Zi.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=ve.Keypair.generate().publicKey)),e.push(Na(t))}),console.log("simulate tx string:",e),e}var Un=2e3,Gn=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 ji.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}=Wn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ae.SystemProgram.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new ae.PublicKey(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ee.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:i=[],lookupTableAddress:r=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...r.filter(a=>a!==ae.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(q(M({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new ae.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 u;let{recentBlockHash:i,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:s}=o||{},c=i!=null?i:await Qt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),Lt([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await(0,ae.sendAndConfirmTransaction)(this.connection,t,this.signers.find(g=>g.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 p=await this.signAllTransactions([t]);if(this.signers.length)for(let g of p)try{g.sign(...this.signers)}catch{}return{txId:s?"":await this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:r}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(u=>u.transaction.instructions.length>0),r=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],s=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(u=>{u.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:s,execute:async u=>{var w;let{sequentially:p,onTxUpdate:g,skipTxCount:d=0,recentBlockHash:f,skipPreflight:y=!0}=u||{},b=f!=null?f:await Qt(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(p){let A=[],T=0;for(let I of r){if(++T,T<=d)continue;let P=await(0,ae.sendAndConfirmTransaction)(this.connection,I,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});A.push(P)}return{txIds:A,signedTxs:r}}return{txIds:await await Promise.all(r.map(async A=>(A.recentBlockhash=b,await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:y})))),signedTxs:r}}if(this.signAllTransactions){let A=r.map((I,P)=>(I.recentBlockhash=b,a[P].length&&I.sign(...a[P]),I));Lt(A);let T=await this.signAllTransactions(A);if(p){let I=0,P=[],k=async()=>{if(!T[I])return;let B=await this.connection.sendRawTransaction(T[I].serialize(),{skipPreflight:y});P.push({txId:B,status:"sent",signedTx:T[I]}),g==null||g([...P]),I++;let S=!1,x=null,L=null,U=V=>{x!==null&&clearInterval(x),L!==null&&this.connection.removeSignatureListener(L);let F=P.findIndex(v=>v.txId===B);if(F>-1){if(P[F].status==="error"||P[F].status==="success")return;P[F].status=V.err?"error":"success"}g==null||g([...P]),V.err||k()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var V;if(S){clearInterval(x);return}try{let F=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});F&&(S=!0,clearInterval(x),U({err:((V=F.meta)==null?void 0:V.err)||null}),console.log("tx status from getTransaction:",B))}catch(F){S=!0,clearInterval(x),console.error("getTransaction timeout:",F,B)}},Un)),L=this.connection.onSignature(B,V=>{if(S){this.connection.removeSignatureListener(L);return}S=!0,U(V)},"confirmed"),this.connection.getSignatureStatus(B)};return await k(),{txIds:P.map(B=>B.txId),signedTxs:T}}else{let I=[];for(let P=0;P<T.length;P+=1){let k=await this.connection.sendRawTransaction(T[P].serialize(),{skipPreflight:y});I.push(k)}return{txIds:I,signedTxs:T}}}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 y;let f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=f,r=st(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=M(M({},this.cluster==="devnet"?await Mo(this.connection):await No(this.connection)),t),s=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let b of s)a[b]===void 0&&c.push(new ae.PublicKey(b));let u=await Oo({connection:this.connection,address:c});for(let[b,w]of Object.entries(u))a[b]=w;let p=o?ae.PublicKey.default.toBase58():i!=null?i:await Qt(this.connection,this.blockhashCommitment),g=new ae.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let d=new ae.VersionedTransaction(g);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var I;let{skipPreflight:w=!0,sendAndConfirm:A,notSendToRpc:T}=b||{};if(Lt([d]),(I=this.owner)!=null&&I.isKeyPair){let P=await this.connection.sendTransaction(d,{skipPreflight:w});return A&&await qn(this.connection,P),{txId:P,signedTx:d}}if(this.signAllTransactions){let P=await this.signAllTransactions([d]);if(this.signers.length)for(let k of P)try{k.sign(this.signers)}catch{}return{txId:T?"":await this.connection.sendTransaction(P[0],{skipPreflight:w}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(u=>u.builder.instructions.length>0),r=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],s=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(u=>{u.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(u,p)=>{u.sign(a[p])}),{builder:this,transactions:r,signers:a,instructionTypes:s,buildProps:n,execute:async u=>{var y;let{sequentially:p,onTxUpdate:g,recentBlockHash:d,skipPreflight:f=!0}=u||{};if(d&&r.forEach(b=>b.message.recentBlockhash=d),Lt(r),(y=this.owner)!=null&&y.isKeyPair){if(p){let b=[];for(let w of r){let A=await this.connection.sendTransaction(w,{skipPreflight:f});await qn(this.connection,A),b.push(A)}return{txIds:b,signedTxs:r}}return{txIds:await Promise.all(r.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:f}))),signedTxs:r}}if(this.signAllTransactions){let b=await this.signAllTransactions(r);if(p){let w=0,A=[],T=async()=>{if(!b[w])return;let I=await this.connection.sendTransaction(b[w],{skipPreflight:f});A.push({txId:I,status:"sent",signedTx:b[w]}),g==null||g([...A]),w++;let P=!1,k=null,B=null,S=x=>{k!==null&&clearInterval(k),B!==null&&this.connection.removeSignatureListener(B);let L=A.findIndex(U=>U.txId===I);if(L>-1){if(A[L].status==="error"||A[L].status==="success")return;A[L].status=x.err?"error":"success"}g==null||g([...A]),x.err||T()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var x;if(P){clearInterval(k);return}try{let L=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});L&&(P=!0,clearInterval(k),S({err:((x=L.meta)==null?void 0:x.err)||null}),console.log("tx status from getTransaction:",I))}catch(L){P=!0,clearInterval(k),console.error("getTransaction timeout:",L,I)}},Un)),B=this.connection.onSignature(I,x=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,S(x)},"confirmed"),this.connection.getSignatureStatus(I)};return T(),{txIds:[],signedTxs:b}}else{let w=[];for(let A=0;A<b.length;A+=1){let T=await this.connection.sendTransaction(b[A],{skipPreflight:f});w.push(T)}return{txIds:w,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var g;let p=e||{},{splitIns:t=[],computeBudgetConfig:n}=p,o=st(p,["splitIns","computeBudgetConfig"]),i=n?Wn(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((d,f)=>q(M({},d),{[f.publicKey.toBase58()]:f}),{}),a=[],s=[],c=[],u=0;if(this.allInstructions.forEach(d=>{let f=[...c,d],y=n?[...i.instructions,...f]:f,w=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>new ae.PublicKey(A));if(d!==t[u]&&c.length<12&&(fn({instructions:y,payer:this.feePayer,signers:w})||fn({instructions:f,payer:this.feePayer,signers:w})))c.push(d);else{if(c.length===0)throw Error("item ins too big");u+=d===t[u]?1:0,fn({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:w})?a.push(new ae.Transaction().add(...i.instructions,...c)):a.push(new ae.Transaction().add(...c)),s.push(Array.from(new Set(c.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(A=>r[A]).filter(A=>A!==void 0)),c=[d]}}),c.length>0){let f=[...new Set(c.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>r[y]).filter(y=>y!==void 0);fn({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:f.map(y=>y.publicKey)})?a.push(new ae.Transaction().add(...i.instructions,...c)):a.push(new ae.Transaction().add(...c)),s.push(f)}return a.forEach(d=>d.feePayer=this.feePayer),(g=this.owner)!=null&&g.signer&&s.forEach(d=>{d.some(f=>f.publicKey.equals(this.owner.publicKey))||d.push(this.owner.signer)}),{builder:this,transactions:a,signers:s,instructionTypes:this.instructionTypes,execute:async d=>{var I;let{sequentially:f,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:w,skipPreflight:A=!0}=d||{},T=w!=null?w:await Qt(this.connection,this.blockhashCommitment);if(a.forEach(async(P,k)=>{P.recentBlockhash=T,s[k].length&&P.sign(...s[k])}),Lt(a),(I=this.owner)!=null&&I.isKeyPair){if(f){let P=0,k=[];for(let B of a){if(++P,P<=b){k.push("tx skipped");continue}let S=await(0,ae.sendAndConfirmTransaction)(this.connection,B,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});k.push(S)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:A}))),signedTxs:a}}if(this.signAllTransactions){let P=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...P];if(f){let B=0,S=[],x=async()=>{if(!k[B])return;B<b&&(S.push({txId:"",status:"success",signedTx:k[B]}),y==null||y([...S]),B++,x());let L=await this.connection.sendRawTransaction(k[B].serialize(),{skipPreflight:A});S.push({txId:L,status:"sent",signedTx:k[B]}),y==null||y([...S]),B++;let U=!1,V=null,F=null,v=_=>{V!==null&&clearInterval(V),F!==null&&this.connection.removeSignatureListener(F);let $=S.findIndex(be=>be.txId===L);if($>-1){if(S[$].status==="error"||S[$].status==="success")return;S[$].status=_.err?"error":"success"}y==null||y([...S]),_.err||x()};this.loopMultiTxStatus&&(V=setInterval(async()=>{var _;if(U){clearInterval(V);return}try{let $=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});$&&(U=!0,clearInterval(V),v({err:((_=$.meta)==null?void 0:_.err)||null}),console.log("tx status from getTransaction:",L))}catch($){U=!0,clearInterval(V),console.error("getTransaction timeout:",$,L)}},Un)),F=this.connection.onSignature(L,_=>{if(U){this.connection.removeSignatureListener(F);return}U=!0,v(_)},"confirmed"),this.connection.getSignatureStatus(L)};return await x(),{txIds:S.map(L=>L.txId),signedTxs:k}}else{let B=[];for(let S=0;S<k.length;S+=1){let x=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:A});B.push(x)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var I;let T=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=T,a=st(T,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),s=M(M({},this.cluster==="devnet"?await Mo(this.connection):await No(this.connection)),o),c=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let P of c)s[P]===void 0&&u.push(new ae.PublicKey(P));let p=await Oo({connection:this.connection,address:u});for(let[P,k]of Object.entries(p))s[P]=k;let g=t?Wn(t):{instructions:[],instructionTypes:[]},d=await Qt(this.connection,this.blockhashCommitment),f=this.signers.reduce((P,k)=>q(M({},P),{[k.publicKey.toBase58()]:k}),{}),y=[],b=[],w=[],A=0;if(this.allInstructions.forEach(P=>{let k=[...w,P],B=t?[...g.instructions,...k]:k;if(P!==n[A]&&w.length<r&&(yn({instructions:B,payer:this.feePayer,lookupTableAddressAccount:s})||yn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})))w.push(P);else{if(w.length===0)throw Error("item ins too big");A+=P===n[A]?1:0;let S={};for(let x of[...new Set(c)])s[x]!==void 0&&(S[x]=s[x]);if(t&&yn({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let x=new ae.TransactionMessage({payerKey:this.feePayer,recentBlockhash:d,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new ae.VersionedTransaction(x))}else{let x=new ae.TransactionMessage({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new ae.VersionedTransaction(x))}b.push(Array.from(new Set(w.map(x=>x.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(x=>f[x]).filter(x=>x!==void 0)),w=[P]}}),w.length>0){let k=[...new Set(w.map(B=>B.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(B=>f[B]).filter(B=>B!==void 0);if(t&&yn({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let B=new ae.TransactionMessage({payerKey:this.feePayer,recentBlockhash:d,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new ae.VersionedTransaction(B))}else{let B=new ae.TransactionMessage({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new ae.VersionedTransaction(B))}b.push(k)}return(I=this.owner)!=null&&I.signer&&b.forEach(P=>{P.some(k=>k.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),y.forEach((P,k)=>{P.sign(b[k])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async P=>{var U;let{sequentially:k,onTxUpdate:B,skipTxCount:S=0,recentBlockHash:x,skipPreflight:L=!0}=P||{};if(y.map(async(V,F)=>{b[F].length&&V.sign(b[F]),x&&(V.message.recentBlockhash=x)}),Lt(y),(U=this.owner)!=null&&U.isKeyPair){if(k){let V=0,F=[];for(let v of y){if(++V,V<=S){console.log("skip tx: ",V),F.push("tx skipped");continue}let _=await this.connection.sendTransaction(v,{skipPreflight:L});await qn(this.connection,_),F.push(_)}return{txIds:F,signedTxs:y}}return{txIds:await Promise.all(y.map(async V=>await this.connection.sendTransaction(V,{skipPreflight:L}))),signedTxs:y}}if(this.signAllTransactions){let V=await this.signAllTransactions(y.slice(S,y.length)),F=[...y.slice(0,S),...V];if(k){let v=0,_=[],$=async()=>{if(!F[v])return;if(v<S){_.push({txId:"",status:"success",signedTx:F[v]}),B==null||B([..._]),v++,$();return}let be=await this.connection.sendTransaction(F[v],{skipPreflight:L});_.push({txId:be,status:"sent",signedTx:F[v]}),B==null||B([..._]),v++;let pe=!1,ge=null,At=null,Ee=Fe=>{ge!==null&&clearInterval(ge),At!==null&&this.connection.removeSignatureListener(At);let Ke=_.findIndex(Ao=>Ao.txId===be);if(Ke>-1){if(_[Ke].status==="error"||_[Ke].status==="success")return;_[Ke].status=Fe.err?"error":"success"}B==null||B([..._]),Fe.err||$()};this.loopMultiTxStatus&&(ge=setInterval(async()=>{var Fe;if(pe){clearInterval(ge);return}try{let Ke=await this.connection.getTransaction(be,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ke&&(pe=!0,clearInterval(ge),Ee({err:((Fe=Ke.meta)==null?void 0:Fe.err)||null}),console.log("tx status from getTransaction:",be))}catch(Ke){pe=!0,clearInterval(ge),console.error("getTransaction timeout:",Ke,be)}},Un)),At=this.connection.onSignature(be,Fe=>{if(pe){this.connection.removeSignatureListener(At);return}pe=!0,Ee(Fe)},"confirmed"),this.connection.getSignatureStatus(be)};return $(),{txIds:[],signedTxs:F}}else{let v=[];for(let _=0;_<F.length;_+=1){let $=await this.connection.sendTransaction(F[_],{skipPreflight:L});v.push($)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var vo=(...l)=>l.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),We=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new Gn({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(vo(e))}logInfo(...e){this.logger.info(vo(e))}logAndCreateError(...e){let t=vo(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var sr=require("@solana/web3.js"),_a=W(require("bn.js"));var Zn=require("@solana/spl-token");var ar=require("@solana/web3.js"),va=W(require("bn.js"));var Va=require("@solana/spl-token");var nr=require("@solana/web3.js"),Zt=W(require("bn.js"));var z=require("@solana/buffer-layout"),zn=z.Layout,$i=z.Structure;var Vo=z.UInt;var Ji=z.u8,he=z.u16;var Xn=z.u32;var Ie=z.s32;var er=z.seq;var te=z.blob;var _o=z.bits,tr=z.offset;var Nt=class extends zn{constructor(t,n,o){super(t,o);this.blob=te(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)}},Yn=class extends zn{constructor(t){super(8,t);this._lower=_o(Xn(),!1),this._upper=_o(Xn(),!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),i=this._upper.decode(t,n+this._lower.span);return M(M({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function N(l){return new Vo(1,l)}function Pe(l){return new Vo(4,l)}function m(l){return new Nt(8,!1,l)}function Y(l){return new Nt(16,!1,l)}function or(l){return new Nt(1,!0,l)}function Ht(l){return new Nt(8,!0,l)}function ir(l){return new Nt(16,!0,l)}var bn=class extends zn{constructor(t,n,o,i){super(t.span,i);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 h(l){return new bn(te(32),e=>new nr.PublicKey(e),e=>e.toBuffer(),l)}function Ae(l){return new bn(Ji(),Ma,Fa,l)}function Ma(l){if(l===0)return!1;if(l===1)return!0;throw new Error("Invalid bool: "+l)}function Fa(l){return l?1:0}function rr(l,e){let t=Xn("length"),n=O([t,E(l,tr(t,-t.span),"values")]);return new bn(n,({values:o})=>o,o=>({values:o}),e)}var Eo=class extends $i{decode(e,t){return super.decode(e,t)}};function O(l,e,t){return new Eo(l,e,t)}function E(l,e,t){let n,o=typeof e=="number"?e:(0,Zt.isBN)(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=(0,Zt.isBN)(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,r)},set(i,r,a){return r==="count"&&(n=a),Reflect.set(i,r,a)}});return er(l,o,t)}var jt=O([h("mint"),h("owner"),m("amount"),Pe("delegateOption"),h("delegate"),N("state"),Pe("isNativeOption"),m("isNative"),m("delegatedAmount"),Pe("closeAuthorityOption"),h("closeAuthority")]);var Tr=require("@solana/web3.js"),Ks=require("@solana/spl-token");var lr=require("@solana/web3.js"),mr=require("@solana/spl-token");function j(l,e,t){return ue([l.toBuffer(),(t!=null?t:mr.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new lr.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var Q=require("@solana/web3.js"),dr=new Q.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),pr=new Q.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),fr=new Q.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Do=new Q.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),kd=new Q.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Da=new Q.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),yr=new Q.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),br=new Q.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Td=new Q.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Wa=new Q.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ht=new Q.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),gn=new Q.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),jn=new Q.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),gr=new Q.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),hd=new Q.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),qa=new Q.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Wo=new Q.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ua=new Q.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Id=new Q.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ga=new Q.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),za=new Q.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Xa=new Q.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Bd=new Q.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Sd=new Q.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Kd=new Q.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),xd=new Q.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Cd=new Q.PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var It={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 xs=W(require("decimal.js"));var $n=require("@solana/web3.js");var Ya=O([N("instruction")]),Qa=O([N("instruction")]),Za=O([m("rewardState"),m("rewardOpenTime"),m("rewardEndTime"),m("rewardLastUpdateTime"),m("totalReward"),m("totalRewardEmissioned"),m("rewardClaimed"),m("rewardPerSecond"),Y("accRewardPerShare"),h("rewardVault"),h("rewardMint"),h("rewardSender"),m("rewardType"),E(m(),15,"padding")]),Ha=O([m("state"),m("nonce"),h("lpVault"),h("rewardVault"),h(),h(),m(),m(),m("totalReward"),Y("perShareReward"),m("lastSlot"),m("perSlotReward")]),ja=O([m("state"),m("nonce"),h("lpVault"),h("rewardVaultA"),m("totalRewardA"),Y("perShareRewardA"),m("perSlotRewardA"),N("option"),h("rewardVaultB"),te(7),m("totalRewardB"),Y("perShareRewardB"),m("perSlotRewardB"),m("lastSlot"),h()]),$a=O([m(),m("state"),m("nonce"),m("validRewardTokenNum"),Y("rewardMultiplier"),m("rewardPeriodMax"),m("rewardPeriodMin"),m("rewardPeriodExtend"),h("lpMint"),h("lpVault"),E(Za,5,"rewardInfos"),h("creator"),h(),E(m(),32,"padding")]),Ja=new Proxy(Ha,{get(l,e,t){return e==="decode"?(...n)=>{let o=l.decode(...n);return q(M({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(l,e,t)}}),es=new Proxy(ja,{get(l,e,t){return e==="decode"?(...n)=>{let o=l.decode(...n);return q(M({},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(l,e,t)}}),Pr=new Proxy($a,{get(l,e,t){return e==="decode"?(...n)=>{let o=l.decode(...n);return q(M({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var r;return q(M({},i),{rewardType:((r=Object.entries(Pn).find(a=>String(a[1])===i.rewardType.toString()))!=null?r:["Standard SPL"])[0]})})})}:Reflect.get(l,e,t)}}),ts=O([m("isSet"),m("rewardPerSecond"),m("rewardOpenTime"),m("rewardEndTime"),m("rewardType")]),ns=O([N("instruction"),m("nonce"),E(ts,5,"rewardTimeInfo")]),os=O([N("instruction"),m("rewardReopenTime"),m("rewardEndTime"),m("rewardPerSecond")]),is=O([N("instruction"),m("isSet"),m("rewardPerSecond"),m("rewardOpenTime"),m("rewardEndTime"),m("rewardType")]),vd=O([m("state"),h("id"),h("owner"),m("deposited"),E(m(),1,"rewardDebts")]),Ar=O([m("state"),h("id"),h("owner"),m("deposited"),E(Y(),1,"rewardDebts"),m(""),m("voteLockedBalance"),E(m(),15)]),Vd=O([m("state"),h("id"),h("owner"),m("deposited"),E(m(),2,"rewardDebts")]),rs=O([m("state"),h("id"),h("owner"),m("deposited"),E(Y(),2,"rewardDebts"),E(m(),17)]),as=O([m(),m("state"),h("id"),h("owner"),m("deposited"),E(Y(),5,"rewardDebts"),E(m(),16)]),ss=O([N("instruction"),m("amount")]),us=O([h("mint"),h("grantAuthority"),m("baselineVoteWeightScaledFactor"),m("maxExtraLockupVoteWeightScaledFactor"),m("lockupSaturationSecs"),or("digitShift"),E(N(),7,"reserved1"),E(m(),7,"reserved2")]),cs=O([te(8),h("governanceProgramId"),h("realm"),h("realmGoverningTokenMint"),h("realmAuthority"),E(N(),32,"reserved1"),E(us,4,"votingMints"),Ht("timeOffset"),N("bump"),E(N(),7,"reserved2"),E(m(),11,"reserved3")]),ls=O([Ht("startTime"),Ht("endTime"),N("kind"),E(N(),15,"reserved")]),ms=O([E(ls,1,"lockup"),m("amountDeposited_native"),m("amountInitiallyLockedNative"),Ae("isUsed"),Ae("allowClawback"),N("votingMintConfigIdx"),E(N(),29,"reserved")]),ds=O([te(8),h("voterAuthority"),h("registrar"),E(ms,32,"deposits"),N("voterBump"),N("voterWweightRecordBump"),E(N(),94,"reserved")]);var ps=require("@solana/spl-token"),Gd=oe("Raydium_farm_config"),fs=new $n.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ys=new $n.PublicKey("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var zd=new $n.PublicKey("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Pn={"Standard SPL":0,"Option tokens":1},wr={[dr.toString()]:3,[pr.toString()]:4,[fr.toString()]:5,[Do.toString()]:6,[It.FARM_PROGRAM_ID_V3.toString()]:3,[It.FARM_PROGRAM_ID_V4.toString()]:4,[It.FARM_PROGRAM_ID_V5.toString()]:5,[It.FARM_PROGRAM_ID_V6.toString()]:6};var An=require("@solana/web3.js"),ks=W(require("bn.js")),Uo=require("@solana/spl-token");var ws=W(require("bn.js"));var bs=require("@solana/web3.js"),gs=W(require("bn.js"));var kp=oe("Raydium.farm.util");var Wp=oe("Raydium_farm_instruction"),qp={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])};var Cs=W(require("bn.js"));var Eu=require("@solana/web3.js"),yo=require("@solana/spl-token");var nt=W(require("bn.js")),wn=1e4;function Qe(l,e,t,n){if(e===void 0)return{amount:l,fee:void 0,expirationTime:void 0};let o=q(M({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),i=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,r=new nt.default(i.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===wn){let s=new nt.default(i.maximumFee.toString());return{amount:l.add(s),fee:s,expirationTime:a}}else{let s=Jn(l.mul(new nt.default(wn)),new nt.default(wn-i.transferFeeBasisPoints)),c=new nt.default(i.maximumFee.toString()),u=s.sub(l).gt(c)?l.add(c):s,p=Jn(u.mul(new nt.default(i.transferFeeBasisPoints)),new nt.default(wn)),g=p.gt(r)?r:p;return{amount:u,fee:g,expirationTime:a}}else{let s=Jn(l.mul(new nt.default(i.transferFeeBasisPoints)),new nt.default(wn)),c=s.gt(r)?r:s;return{amount:l,fee:c,expirationTime:a}}}function kn(l,e){return l===void 0?e:e===void 0?l:Math.min(l,e)}function Jn(l,e){let{div:t,mod:n}=l.divmod(e);return n.gt(new nt.default(0))?t.add(new nt.default(1)):t}var X=require("@solana/spl-token"),K=require("@solana/web3.js"),Ln=W(require("bn.js"));var ie=W(require("bn.js")),me=new ie.default(1).shln(64),Mt=64,eo=new ie.default(1).shln(128),pt=new ie.default(1).shln(64).subn(1),Tn=new ie.default(1).shln(128).subn(1),Ze=-443636,He=443636,je=new ie.default("4295048016"),$e=new ie.default("79226673521066979257578248091"),Go=new ie.default("59543866431248"),zo=new ie.default("184467440737095516"),Xo=new ie.default("15793534762490258745"),Yo=16,hn=512,qe=60,Rs=new ie.default("18446743708227953217"),Qo=[{bit:0,factor:new ie.default("fffcb933bd6fb800",16)},{bit:1,factor:new ie.default("fff97272373d4000",16)},{bit:2,factor:new ie.default("fff2e50f5f657000",16)},{bit:3,factor:new ie.default("ffe5caca7e10f000",16)},{bit:4,factor:new ie.default("ffcb9843d60f7000",16)},{bit:5,factor:new ie.default("ff973b41fa98e800",16)},{bit:6,factor:new ie.default("ff2ea16466c9b000",16)},{bit:7,factor:new ie.default("fe5dee046a9a3800",16)},{bit:8,factor:new ie.default("fcbe86c7900bb000",16)},{bit:9,factor:new ie.default("f987a7253ac65800",16)},{bit:10,factor:new ie.default("f3392b0822bb6000",16)},{bit:11,factor:new ie.default("e7159475a2caf000",16)},{bit:12,factor:new ie.default("d097f3bdfd2f2000",16)},{bit:13,factor:new ie.default("a9f746462d9f8000",16)},{bit:14,factor:new ie.default("70d869a156f31c00",16)},{bit:15,factor:new ie.default("31be135f97ed3200",16)},{bit:16,factor:new ie.default("9aa508b5b85a500",16)},{bit:17,factor:new ie.default("5d6af8dedc582c",16)},{bit:18,factor:new ie.default("2216e584f5fa",16)}],ft=1e6,Ls=1e5,to=(n=>(n[n.FromInput=0]="FromInput",n[n.TokenOnlyA=1]="TokenOnlyA",n[n.TokenOnlyB=2]="TokenOnlyB",n))(to||{}),Os=1e3,In=1e5,$t=1e4,Zo=1e4,Ho=1e5,Ns=60,Jt=3,jo=100,Ms=15,$o=10,Jo=100,Ft=14,hr=(r=>(r[r.OpenPositionOrIncreaseLiquidity=0]="OpenPositionOrIncreaseLiquidity",r[r.DecreaseLiquidity=1]="DecreaseLiquidity",r[r.CollectFee=2]="CollectFee",r[r.CollectReward=3]="CollectReward",r[r.Swap=4]="Swap",r[r.LimitOrder=5]="LimitOrder",r))(hr||{}),Ir=(t=>(t[t.Enable=0]="Enable",t[t.Disable=1]="Disable",t))(Ir||{}),Br=(o=>(o[o.Uninitialized=0]="Uninitialized",o[o.Initialized=1]="Initialized",o[o.Opening=2]="Opening",o[o.Ended=3]="Ended",o))(Br||{}),Sr=(i=>(i[i.TradeFeeRate=0]="TradeFeeRate",i[i.ProtocolFeeRate=1]="ProtocolFeeRate",i[i.FundFeeRate=2]="FundFeeRate",i[i.NewOwner=3]="NewOwner",i[i.NewFundOwner=4]="NewFundOwner",i))(Sr||{}),Kr=(o=>(o[o.UpdateOperationOwner=0]="UpdateOperationOwner",o[o.RemoveOperationOwner=1]="RemoveOperationOwner",o[o.UpdateWhitelistMint=2]="UpdateWhitelistMint",o[o.RemoveWhitelistMint=3]="RemoveWhitelistMint",o))(Kr||{}),D=new ie.default(0),Je=new ie.default(1),Fs=new ie.default(-1),Bn={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]};function vs(l){switch(l){case 0:return"0 (FromInput - fee from input token)";case 1:return"1 (Token0Only - fee from token0)";case 2:return"2 (Token1Only - fee from token1)";default:return`${l} (unknown)`}}var Vs=2,_s=new ie.default("18446744073700000000");var no=O([te(8),N("bump"),he("index"),h("owner"),Pe("protocolFeeRate"),Pe("tradeFeeRate"),he("tickSpacing"),Pe("fundFeeRate"),E(Pe(),1),h("fundOwner"),E(m(),3)]),xr=O([Pe("blockTimestamp"),Ht("tickCumulative"),E(m(),4)]),ei=O([te(8),Ae("initialized"),m("recentEpoch"),he("observationIndex"),h("poolId"),E(xr,jo,"observations"),E(m(),4)]),Cr=O([he("filterPeriod"),he("decayPeriod"),he("reductionFactor"),Pe("dynamicFeeControl"),Pe("maxVolatilityAccumulator"),Ie("tickSpacingIndexReference"),Pe("volatilityReference"),Pe("volatilityAccumulator"),m("lastUpdateTimestamp"),E(N(),46)]),Rr=O([N("state"),m("openTime"),m("endTime"),m("lastUpdateTime"),Y("emissionsPerSecondX64"),m("totalEmissioned"),m("claimed"),h("mint"),h("vault"),h("creator"),Y("growthGlobalX64")]),en=O([te(8),N("bump"),h("configId"),h("creator"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("observationId"),N("mintDecimalsA"),N("mintDecimalsB"),he("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),Ie("tickCurrent"),Pe(),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),m("protocolFeesTokenA"),m("protocolFeesTokenB"),E(Y(),4),N("status"),N("feeOn"),te(6),E(Rr,Jt,"rewardInfos"),te(8*16,"tickArrayBitmap"),E(m(),4),m("fundFeesTokenA"),m("fundFeesTokenB"),m("startTime"),m("recentEpoch"),Cr.replicate("dynamicFeeInfo"),E(m(),46)]),Lr=O([Y("growthInsideLastX64"),m("rewardAmountOwed")]),Sn=O([te(8),N("bump"),h("nftMint"),h("poolId"),Ie("tickLower"),Ie("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),m("tokenFeesOwedA"),m("tokenFeesOwedB"),E(Lr,Jt,"rewardInfos"),m("recentEpoch"),E(m(),7)]),Es=O([te(8),N("bump"),h("poolId"),Ie("tickLower"),Ie("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),m("tokenFeesOwedA"),m("tokenFeesOwedB"),E(Y(),Jt,"rewardGrowthInside"),m("recentEpoch"),E(m(),7)]),Or=O([Ie("tick"),ir("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),E(Y(),Jt,"rewardGrowthsOutsideX64"),m("orderPhase"),m("ordersAmount"),m("partFilledOrdersRemaining"),Y("unfilledRatioX64"),E(Pe(),3)]),vt=O([te(8),h("poolId"),Ie("startTickIndex"),E(Or,qe,"ticks"),N("initializedTickCount"),m("recentEpoch"),E(N(),107)]),ti=O([te(8),N("bump"),E(h(),$o,"operationOwners"),E(h(),Jo,"whitelistMints")]),Bt=O([te(8),h("poolId"),h("owner"),Ie("tick"),Ae("zeroForOne"),m("orderPhase"),m("totalAmount"),m("filledAmount"),m("settleBase"),m("settleOutput"),m("openTime"),Y("unfilledRatioX64"),E(m(),4)]),Kn=O([te(8),h("poolId"),te(8*8*Ft,"positiveTickArrayBitmap"),te(8*8*Ft,"negativeTickArrayBitmap")]),Ds=O([te(8),he("index"),he("filterPeriod"),he("decayPeriod"),he("reductionFactor"),Pe("dynamicFeeControl"),Pe("maxVolatilityAccumulator"),E(m(),8)]),ni=O([te(8),h("wallet"),N("nonceIndex"),m("orderNonce"),E(m(),4)]),Ws=O([m(),N("bump"),h("owner"),h("poolId"),h("positionId"),h("nftAccount"),E(m(),8)]),oi=O([te(8),N("bump"),h("lockOwner"),h("poolId"),h("positionId"),h("nftAccount"),h("lockNftMint"),m("recentEpoch"),E(m(),8)]);var Nr=W(require("bn.js"));function oo(l){let e=Buffer.alloc(2);return e.writeUInt16LE(l),e}function io(l){let e=Buffer.alloc(2);return e.writeUInt16BE(l),e}function ro(l){let e=Buffer.alloc(4);return e.writeInt32LE(l),e}function ii(l){let e=Buffer.alloc(4);return e.writeInt32BE(l),e}function ri(l){return(typeof l=="number"||typeof l=="bigint")&&(l=new Nr.default(l.toString())),l.toArrayLike(Buffer,"be",8)}function ai(l){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,l),new Uint8Array(e)}var Mr=Buffer.from("amm_config","utf8"),ao=Buffer.from("pool","utf8"),si=Buffer.from("pool_vault","utf8"),Fr=Buffer.from("pool_reward_vault","utf8"),ui=Buffer.from("position","utf8"),vr=Buffer.from("tick_array","utf8"),Vr=Buffer.from("operation","utf8"),_r=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Er=Buffer.from("observation","utf8"),Dr=Buffer.from("support_mint","utf8"),Wr=Buffer.from("dynamic_fee_config","utf8"),qr=Buffer.from("permission","utf8");function qs(l,e){return ue([Mr,io(e)],l)}function ci(l,e,t,n){return ue([ao,e.toBuffer(),t.toBuffer(),n.toBuffer()],l)}function li(l,e){return ue([qr,e.toBuffer()],l)}function mi(l,e,t,n,o){return ue([ao,e.toBuffer(),t.toBuffer(),n.toBuffer(),oo(o)],l)}function Xe(l,e,t){return ue([si,e.toBuffer(),t.toBuffer()],l)}function di(l,e,t){return ue([Fr,e.toBuffer(),t.toBuffer()],l)}function re(l,e,t){return ue([vr,e.toBuffer(),ii(t)],l)}function ot(l,e,t,n){return ue([ui,e.toBuffer(),ro(t),ro(n)],l)}function Ye(l,e){return ue([ui,e.toBuffer()],l)}function St(l){return ue([Buffer.from("metadata","utf8"),Tt.toBuffer(),l.toBuffer()],Tt)}function tn(l){return ue([Vr],l)}function ye(l,e){return ue([_r,e.toBuffer()],l)}function so(l,e){return ue([Er,e.toBuffer()],l)}function Kt(l,e){return ue([Dr,e.toBuffer()],l)}function pi(l,e,t,n){return ue([e.toBuffer(),t.toBuffer(),ri(n)],l)}function Us(l,e){return ue([Wr,io(e)],l)}function fi(l,e,t){return ue([e.toBuffer(),ai(t)],l)}var yi=Buffer.from("locked_position","utf8");function uo(l,e){return ue([yi,e.toBuffer()],l)}function Vt(l,e){return ue([yi,e.toBuffer()],l)}var Yr=require("js-sha256");var it=W(require("bn.js")),co=W(require("decimal.js"));function lo(l){return new it.default(1).shln(l).subn(1)}function Gs(l,e,t){let n=l.add(e),o=lo(t);if(n.gt(o))throw new Error(`Addition overflow: result exceeds ${t} bits`);return n}function zs(l,e){if(l.lt(e))throw new Error("Subtraction underflow");return l.sub(e)}function Xs(l,e,t){let n=l.mul(e),o=lo(t);if(n.gt(o))throw new Error(`Multiplication overflow: result exceeds ${t} bits`);return n}function Ys(l,e){let t=l.mul(e),n=t.and(lo(128)),o=t.shrn(128);return[n,o]}function de(l,e,t){if(t.isZero())throw new Error("Division by zero");return l.mul(e).div(t)}function fe(l,e,t){if(t.isZero())throw new Error("Division by zero");let n=l.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function Qs(l,e,t,n){return n?fe(l,e,t):de(l,e,t)}function xn(l,e){return l.div(e).add(l.mod(e).isZero()?D:Je)}function Zs(l,e){let t=l.add(e);return t.gt(Tn)?Tn:t}function Hs(l,e){return l.gt(e)?l.sub(e):new it.default(0)}function js(l,e){let t=l.mul(e);if(t.gt(Tn))throw new Error("U128 multiplication overflow");return t}var $s=new it.default(1).shln(256).subn(1);function Js(l,e,t){if(t.isZero())throw new Error("Division by zero");return l.mul(e).div(t)}function eu(l,e,t){if(t.isZero())throw new Error("Division by zero");let n=l.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function bi(l){return l.isZero()?-1:l.bitLength()-1}function tu(l){if(l.isZero())return-1;let e=0,t=l.clone();for(;t.and(new it.default(1)).isZero();)t=t.shrn(1),e++;return e}function nu(l,e){return l.testn(e)}function ou(l,e){return l.or(new it.default(1).shln(e))}function iu(l,e){return l.and(new it.default(1).shln(e).notn(256))}function ru(l,e){return l.xor(new it.default(1).shln(e))}function au(l){let e=new it.default(1).shln(127);return l.and(e).isZero()?l:l.sub(new it.default(1).shln(128))}function su(l){return l.isNeg()?l.add(new it.default(1).shln(128)):l}function uu(l){return l.isNeg()?l.neg():l}function gi(l,e){return new co.default(l.toString()).div(co.default.pow(2,64)).toDecimalPlaces(e)}function _t(l){return new it.default(l.mul(co.default.pow(2,64)).floor().toFixed())}function Me(l,e){return l.add(eo).sub(e).mod(eo)}var Ur=W(require("bn.js"));var Be=W(require("bn.js")),Et=W(require("decimal.js"));var yt=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:o}){let i=[],r=e.length*8,a=0,s=r-1;if(o){let p=o.tick/(t*qe)-n;o.valueType==="gte"?a=Math.max(0,Math.ceil(p)):s=Math.min(r-1,Math.floor(p))}if(a>s)return i;let c=Math.floor(a/8),u=Math.floor(s/8);for(let p=c;p<=u;p++){if(!e[p])continue;let g=p===c?a%8:0,d=p===u?s%8:7;for(let f=g;f<=d;f++)e[p]&1<<f&&i.push((p*8+f+n)*t*qe)}return i}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/qe/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-hn,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/qe/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:hn,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let i=[];if(o){let s=Math.floor(o.tick/qe/t);if(o.valueType==="gte"&&s>=-512)return i}let r=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(qe*t))+7680:1/0,a=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(qe*t))+7680:0;e:for(let s=0;s<Ft;s++){let c=Ft-1-s;for(let u=0;u<512;u++){let p=s*512+u;if(p>r)break e;if(p<a)continue;let g=c*64+Math.floor(u/8);if(!e[g]){u=Math.floor(u/8)*8+7;continue}if(e[g]&1<<u%8){let d=(s*512+u-7680)*qe*t;if(i.push(d),n!==void 0&&i.length>=n)break e}}}return i}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 i=H.getTickArrayStartIndex(o.tickArrayCurrent,e),{count:r}=o;if(o.type==="oneForZero"){let a={tick:i,valueType:"gte"},s=[()=>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(s,r)}if(o.type==="zeroForOne"){let a={tick:i,valueType:"lte"},s=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a}).sort((c,u)=>u-c),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}).sort((c,u)=>u-c),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}).sort((c,u)=>u-c)];return this.collectUntil(s,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=>re(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*qe*hn}},H=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(G.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(G.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(G.isInitialized({data:e.ticks[a]}))return e.ticks[a]}else for(let a=r+1;a<qe;a++)if(G.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 qe*e}static getMinTick(e){return Math.ceil(Ze/e)*e}static getMaxTick(e){return Math.floor(He/e)*e}},G=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>=Ze&&e<=He}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Ze}, ${He}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=me.clone();for(let{bit:o,factor:i}of Qo)(t&1<<o)!==0&&(n=de(n,i,me));return e>0&&(n=de(me,me,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=G.getPriceAtTick(t,!1);return de(e,o,me)}else{let o=G.getPriceAtTick(t,!0);return de(e,me,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=G.getPriceAtTick(t,!0);return fe(e,o,me)}else{let o=G.getPriceAtTick(t,!1);return fe(e,me,o)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:o,feeRate:i,isFeeOnInput:r}){let a={amountIn:D,amountOut:D,ammFeeAmount:D},s=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||s.isZero())return a;if(o)r?(a.ammFeeAmount=fe(t,new Be.default(i),rt),a.amountIn=t.sub(a.ammFeeAmount)):a.amountIn=t,a.amountOut=this.getLimitOrderOutput({amountIn:a.amountIn,tick:e.tick,zeroForOne:n}),a.amountOut.gt(s)&&(a.amountOut=s,a.amountIn=this.getLimitOrderInput({amountOut:s,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=fe(a.amountIn,new Be.default(i),rt.sub(new Be.default(i)))));else{let p=Be.default.min(t,s);r?a.amountOut=p:a.amountOut=Be.default.min(fe(p,rt,rt.sub(new Be.default(i))),s),a.amountIn=this.getLimitOrderInput({amountOut:a.amountOut,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=fe(a.amountIn,new Be.default(i),rt.sub(new Be.default(i))))}let c=D;e.partFilledOrdersRemaining.gt(D)&&(c=Be.default.min(e.partFilledOrdersRemaining,a.amountOut),c.gt(D)&&(e.unfilledRatioX64=de(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(c),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(c));let u=a.amountOut.sub(c);if(u.gt(D)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(u))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Je),e.unfilledRatioX64=de(me,e.ordersAmount.sub(u),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(u),e.ordersAmount=D}return r||(a.ammFeeAmount=fe(a.amountOut,new Be.default(i),rt),a.amountOut=a.amountOut.sub(a.ammFeeAmount)),a}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(me.subn(1)).div(me):n.mul(n).div(me)}static getTickAtSqrtPrice(e){if(!(e.gte(je)&&e.lte($e)))throw Error("SqrtPriceX64");let t=bi(e),n=t-64,o;n>=0?o=new Be.default(n).shln(32):o=new Be.default(-n).shln(32).neg();let i;t>=64?i=e.shrn(t-63):i=e.shln(63-t);let r=new Be.default(0),a=new Be.default(1).shln(63);for(let b=0;b<Yo&&!a.isZero();b++){i=i.mul(i);let w=i.shrn(127).toNumber();i=i.shrn(63+w),w&&(r=r.add(a)),a=a.shrn(1)}let s=r.shrn(32),u=o.add(s).mul(Go),p=u.sub(zo),g=u.add(Xo),d=this.signedShrn64(p),f=this.signedShrn64(g);return d===f?d:G.getSqrtPriceAtTick(f).lte(e)?f:d}static signedShrn64(e){if(e.isNeg()){let t=new Be.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),i=t-n,r=20,a=new Be.default(10).pow(new Be.default(r)),s=o.mul(a),c=new Be.default(1).shln(128),p=s.div(c).toString();for(;p.length<=r;)p="0"+p;let g=p.slice(0,-r),d=p.slice(-r),f=g+"."+d;return new Et.default(f).mul(new Et.default(10).pow(i))}static tickToPrice(e,t,n){let o=G.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(o,t,n)}static priceToTick(e,t,n){let i=e.div(Math.pow(10,t-n)).log().div(new Et.default(1.0001).log()).floor();return Math.max(Ze,Math.min(He,i.toNumber()))}static priceToSqrtPriceX64(e,t,n){let r=e.div(Math.pow(10,t-n)).sqrt().mul(new Et.default(2).pow(64));return new Be.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:i}){let r=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);o||(r=new Et.default(1).div(r));let a=G.toTickIndex(G.priceToTick(r,t,n),i),s=G.tickToPrice(a,t,n);return{price:o?s:new Et.default(1).div(s),tick:a}}};async function Pi(l,e,t,n,o,i,r=!0){let a=[],s=ye(l,t).publicKey,c=await e.getAccountInfo(s),u=yt.findTickArrayAddress({programId:l,poolId:t,poolBitmap:i,tickArrayBitmap:Kn.decode(c.data),tickSpacing:o,findInfo:{type:r?"zeroForOne":"oneForZero",tickArrayCurrent:n}});return(await De(e,u)).forEach((g,d)=>{g&&a.push({address:u[d],value:vt.decode(g.data)})}),a}var gt=class{static isFullyFilled({orderInfo:e}){return e.totalAmount.eq(e.filledAmount)}static getUnFilledAmount({orderInfo:e}){return e.totalAmount.sub(e.filledAmount)}static settleFilledOrder({orderInfo:e,tickInfo:t}){if(e.settleBase.isZero())return D;if(e.orderPhase.eq(t.orderPhase))return D;if(e.orderPhase.add(Je).eq(t.orderPhase)){let n=e.settleBase.mul(t.unfilledRatioX64),o=e.unfilledRatioX64,i=n.div(o),r=n.mod(o).isZero(),a=e.settleBase.sub(i);if(a.isZero())return D;let s=r?a:a.sub(Je);return G.getLimitOrderOutput({amountIn:s,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput)}else{if(e.orderPhase.add(new Ur.default(2)).lte(t.orderPhase))return G.getLimitOrderOutput({amountIn:e.settleBase,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput);throw Error("invalid order phase")}}};var Cn=W(require("bn.js")),Ai=W(require("decimal.js"));var we=class{static getDeltaAmountAUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=n.shln(Mt),r=t.sub(e);if(!e.gt(D))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let a=o?xn(fe(i,r,t),e):de(i,r,t).div(e);if(a.gt(pt))throw Error("MaxTokenOverflow");return a}static getDeltaAmountBUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=o?fe(n,t.sub(e),me):de(n,t.sub(e),me);if(i.gt(pt))throw Error("MaxTokenOverflow");return i}static addDelta(e,t){if(t.isNeg()){let n=t.neg();if(e.lt(n))throw new Error("Liquidity underflow");return e.sub(n)}else return e.add(t)}static getLiquidityFromAmountA(e,t,n){if(n.isZero())return D;e.gt(t)&&([e,t]=[t,e]);let o=de(e,t,me),i=t.sub(e);return de(n,o,i)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return D;e.gt(t)&&([e,t]=[t,e]);let o=t.sub(e);return de(n,me,o)}static getLiquidityFromAmounts(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return this.getLiquidityFromAmountA(t,n,o);if(e.lt(n)){let r=this.getLiquidityFromAmountA(e,n,o),a=this.getLiquidityFromAmountB(t,e,i);return r.lt(a)?r:a}else return this.getLiquidityFromAmountB(t,n,i)}static getAmountsForLiquidity(e,t,n,o,i){t.gt(n)&&([t,n]=[n,t]);let r=D,a=D;return e.lte(t)?r=this.getDeltaAmountAUnsigned(t,n,o,i):e.lt(n)?(r=this.getDeltaAmountAUnsigned(e,n,o,i),a=this.getDeltaAmountBUnsigned(t,e,o,i)):a=this.getDeltaAmountBUnsigned(t,n,o,i),{amountA:r,amountB:a}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,i,r,a){let{amountA:s,amountB:c}=this.getAmountsForLiquidity(e,t,n,o,r),u=i?1+a:1-a,p=new Cn.default(new Ai.default(s.toString()).mul(u).toFixed(0)),g=new Cn.default(new Ai.default(c.toString()).mul(u).toFixed(0));return{amountSlippageA:p,amountSlippageB:g}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:n,amountInfo:o}){let i;if(o.type==="liquidity")i=o.amount;else if(o.type==="amountA")i=e.gte(n)?D:this.getLiquidityFromAmountA(Cn.default.max(e,t),n,o.amount);else if(o.type==="amountB")i=e.lte(t)?D:this.getLiquidityFromAmountB(t,Cn.default.min(e,n),o.amount);else throw Error("amount info type check error");return M({liquidity:i},this.getAmountsForLiquidity(e,t,n,o.amount,!0))}};var cu=({baseIn:l,price:e,mintADecimal:t,mintBDecimal:n,tickSpacing:o})=>{let i=G.priceToTick(e,t,n),r=G.toTickIndex(i,o),a=G.tickToPrice(r,t,n);return{tick:r,price:a}};var Ve=require("@solana/web3.js"),Re=W(require("bn.js"));var Rn=require("@solana/spl-token");var ne=W(require("decimal.js"));var Wt=W(require("bn.js"));var Te=W(require("bn.js"));var nn=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,o){if(n.isZero())return e;let i=t.shln(Mt);if(o){let r=n.mul(e),a=i.add(r);if(a.gte(i))return fe(i,e,a);let s=de(i,Je,e);return fe(i,Je,s.add(n))}else{let r=n.mul(e);if(i.lte(r))throw new Error("Insufficient liquidity for token0 removal");let a=i.sub(r);return fe(i,e,a)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,o){if(n.isZero())return e;if(o){let i=n.shln(Mt).div(t);return e.add(i)}else{let i=xn(n.shln(Mt),t);return e.sub(i)}}static getNextSqrtPriceFromInput(e,t,n,o){if(!e.gt(D))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(D))throw Error("liquidity.gt(BN_ZERO)");return o?this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceFromOutput(e,t,n,o){if(!e.gt(D))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(D))throw Error("liquidity.gt(BN_ZERO)");return o?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};var at=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:o,blockTimestamp:i}){let r={amountSpecifiedRemaining:t,amountCalculated:D,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:D,protocolFee:D,fundFee:D,liquidity:e.liquidity,sqrtPriceNextX64:D,tickNext:0,baseFeeRate:o,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:Dt.getDynamicFeeInfo({poolInfo:e})};return r.dynamicFeeInfo&&(r.tickSpacingIndex=rn.tickSpacingIndexFromTick(r.tick,r.tickSpacing),Dt.updateReference({dynamicFeeInfo:r.dynamicFeeInfo,tickSpacingIndex:r.tickSpacingIndex,currentTimestamp:i})),r}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:n,sqrtPriceLimitX64:o}){e.tickNext=t,e.tickNext<Ze?e.tickNext=Ze:e.tickNext>He&&(e.tickNext=He),e.sqrtPriceNextX64=G.getSqrtPriceAtTick(e.tickNext);let i;if(n&&e.sqrtPriceNextX64.lt(o)||!n&&e.sqrtPriceNextX64.gt(o)?i=o:i=e.sqrtPriceNextX64,n){if(e.tick<e.tickNext)throw Error("data.tick < data.tickNext");if(e.sqrtPriceX64.lt(e.sqrtPriceNextX64))throw Error("data.sqrtPriceX64.lt(data.sqrtPriceNextX64)");if(e.sqrtPriceX64.lt(i))throw Error("data.sqrtPriceX64.lt(targetPrice)")}else{if(e.tickNext<=e.tick)throw Error("data.tickNext <= data.tick");if(e.sqrtPriceNextX64.lt(e.sqrtPriceX64))throw Error("data.sqrtPriceNextX64.lt(data.sqrtPriceX64)");if(i.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return i}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||Dt.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,o=n*n,i=Ho*$t*$t,r=fe(new Te.default(e.dynamicFeeControl),new Te.default(o),new Te.default(i)).toNumber();return r>In?In:r}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),n=e.baseFeeRate+t;return Math.min(In,n)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:n}){if(e.dynamicFeeInfo===void 0)return{isSkipped:!0,boundedPrice:t};if(e.liquidity.isZero()||e.dynamicFeeInfo.volatilityAccumulator===e.dynamicFeeInfo.maxVolatilityAccumulator)return{isSkipped:!0,boundedPrice:t};let o=e.tickSpacing,i=n?e.tickSpacingIndex*o:(e.tickSpacingIndex+1)*o,r=Math.max(Ze,Math.min(He,i)),a=G.getSqrtPriceAtTick(r);return n?{isSkipped:!1,boundedPrice:Te.default.max(t,a)}:{isSkipped:!1,boundedPrice:Te.default.min(t,a)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,feeAmount:o,isBaseInput:i,isFeeOnInput:r,protocolFeeRate:a,fundFeeRate:s}){let c=r?t.add(o):t;i?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(c),e.amountCalculated=e.amountCalculated.add(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(c)),this.splitFee({state:e,feeAmount:o,protocolFeeRate:a,fundFeeRate:s})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:n}){if(e.dynamicFeeInfo!==void 0){if(n){let o=e.sqrtPriceX64.eq(e.sqrtPriceNextX64)?e.tickNext:e.tick,i=rn.tickSpacingIndexFromTick(o,e.tickSpacing);!t&&o%e.tickSpacing===0&&(i=i-1),e.tickSpacingIndex=i,e.dynamicFeeInfo.volatilityAccumulator!==e.dynamicFeeInfo.maxVolatilityAccumulator&&this.updateVolatilityAccumulator({state:e})}e.tickSpacingIndex+=t?-1:1}}static splitFee({state:e,feeAmount:t,protocolFeeRate:n,fundFeeRate:o}){let i=t;if(n.gt(D)){let r=t.mul(n).div(new Te.default(rt));e.protocolFee=e.protocolFee.add(r),i=i.sub(r)}if(o.gt(D)){let r=t.mul(o).div(new Te.default(rt));e.fundFee=e.fundFee.add(r),i=i.sub(r)}if(e.liquidity.gt(D)){let r=de(i,me,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(r),e.lpFee=e.lpFee.add(i)}}},on=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:D,amountIn:D,amountOut:D,feeAmount:D}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:o,isBaseInput:i}){if(i)try{return o?we.getDeltaAmountAUnsigned(t,e,n,!0):we.getDeltaAmountBUnsigned(e,t,n,!0)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}else try{return o?we.getDeltaAmountBUnsigned(t,e,n,!1):we.getDeltaAmountAUnsigned(e,t,n,!1)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}}static computeSwap(e,t,n,o,i,r,a,s){let c=this.newSwapComputationResult({});if(r){let p=s?de(o,new Te.default(ft-i),new Te.default(ft)):o,g=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});g!==null&&(c.amountIn=g),c.sqrtPriceNextX64=g!==null&&p.gte(c.amountIn)?t:nn.getNextSqrtPriceFromInput(e,n,p,a)}else{let p=s?o:fe(o,new Te.default(ft),new Te.default(ft-i)),g=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});g!==null&&(c.amountOut=g),c.sqrtPriceNextX64=g!==null&&p.gte(c.amountOut)?t:nn.getNextSqrtPriceFromOutput(e,n,p,a)}if(a){if(!c.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(c.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let u=t.eq(c.sqrtPriceNextX64);if(a?(u&&r||(c.amountIn=we.getDeltaAmountAUnsigned(c.sqrtPriceNextX64,e,n,!0)),u&&!r||(c.amountOut=we.getDeltaAmountBUnsigned(c.sqrtPriceNextX64,e,n,!1))):(u&&r||(c.amountIn=we.getDeltaAmountBUnsigned(e,c.sqrtPriceNextX64,n,!0)),u&&!r||(c.amountOut=we.getDeltaAmountAUnsigned(e,c.sqrtPriceNextX64,n,!1))),r)s?c.sqrtPriceNextX64.eq(t)?c.feeAmount=fe(c.amountIn,new Te.default(i),new Te.default(ft-i)):c.feeAmount=o.sub(c.amountIn):(c.feeAmount=fe(c.amountOut,new Te.default(i),new Te.default(ft)),c.amountOut=c.amountOut.sub(c.feeAmount),u||(c.amountIn=o));else if(s)c.amountOut=Te.default.min(c.amountOut,o),c.feeAmount=fe(c.amountIn,new Te.default(i),new Te.default(ft-i));else{c.feeAmount=fe(c.amountOut,new Te.default(i),new Te.default(ft));let p=c.amountOut.sub(c.feeAmount);p.gt(o)?(c.feeAmount=c.amountOut.sub(o),c.amountOut=o):c.amountOut=p}return c}};function mo({programId:l,poolId:e,poolInfo:t,tickArrays:n,configInfo:o,tickarrayBitmapExtension:i,amountSpecified:r,sqrtPriceLimitX64:a,zeroForOne:s,isBaseInput:c,blockTimestamp:u,includeExtraTickArrays:p}){a.isZero()&&(a=s?new Wt.default(je).addn(1):new Wt.default($e).subn(1));let g=0;if(n.length===0)return{allTrade:!1,amountSpecifiedRemaining:r,amountCalculated:D,feeAmount:D,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let d=p?yt.findTickArrayAddress({programId:l,poolId:e,tickSpacing:t.tickSpacing,poolBitmap:t.tickArrayBitmap,tickArrayBitmap:i,findInfo:{type:s?"oneForZero":"zeroForOne",count:2,tickArrayCurrent:t.tickCurrent}}).filter(k=>k.toString()!==n[0].address.toString()):[],f=H.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:y,firstValidTickArrayStartIndex:b}={firstItckArrayContainsPoolTick:n[g].value.startTickIndex===f,firstValidTickArrayStartIndex:n[g].value.startTickIndex},w=y,A=b,T=n[g],I=Ue.isFeeOnInput(t.feeOn,s),P=at.newValue({poolInfo:t,amountSpecified:r,zeroForOne:s,feeRate:o.tradeFeeRate,blockTimestamp:u});for(;!P.amountSpecifiedRemaining.isZero()&&!P.sqrtPriceX64.eq(a);){let k=(()=>{let x=H.nextInitalizedTick({data:T.value,tickSpacing:P.tickSpacing,zeroForOne:s,currentTickIndex:P.tick});if(x!==void 0)return x;if(w){let L=n[++g];return L===void 0?void 0:(A=L.value.startTickIndex,T=L,H.firstinitializedTick({data:L.value,zeroForOne:s}))}else return w=!0,H.firstinitializedTick({data:T.value,zeroForOne:s})})();if(k===void 0)return{allTrade:!1,amountSpecifiedRemaining:P.amountSpecifiedRemaining,amountCalculated:P.amountCalculated,feeAmount:P.lpFee.add(P.fundFee).add(P.protocolFee),sqrtPriceX64:P.sqrtPriceX64,liquidity:P.liquidity,tickCurrent:P.tick,accounts:n.slice(0,g).map(x=>x.address)};let B=at.getTargetPriceBasedOnNextTick({data:P,tickNext:k.tick,zeroForOne:s,sqrtPriceLimitX64:a}),S=P.liquidity;do{at.updateVolatilityAccumulator({state:P});let x=at.getTotalFeeRate({data:P}),{isSkipped:L,boundedPrice:U}=at.getSpacingBoundedPrice({data:P,targetPrice:B,zeroForOne:s}),V=!P.sqrtPriceX64.eq(U),F;V?(F=on.computeSwap(P.sqrtPriceX64,U,P.liquidity,P.amountSpecifiedRemaining,x,c,s,I),at.applySwapAmounts({state:P,amountIn:F.amountIn,amountOut:F.amountOut,feeAmount:F.feeAmount,isBaseInput:c,isFeeOnInput:I,protocolFeeRate:new Wt.default(o.protocolFeeRate),fundFeeRate:new Wt.default(o.fundFeeRate)})):F=on.newSwapComputationResult({sqrtPriceNextX64:U});let v=G.limitOrderUnfilledAmount({tick:k});if(P.sqrtPriceNextX64.eq(F.sqrtPriceNextX64)){let _=G.matchLimitOrder({tick:k,swapAmount:P.amountSpecifiedRemaining,swapDirectionZeroForOne:s,isBaseInput:c,feeRate:x,isFeeOnInput:I});if(_.amountIn.gt(D)&&at.applySwapAmounts({state:P,amountIn:_.amountIn,amountOut:_.amountOut,feeAmount:_.ammFeeAmount,isBaseInput:c,isFeeOnInput:I,protocolFeeRate:new Wt.default(o.protocolFeeRate),fundFeeRate:new Wt.default(o.fundFeeRate)}),G.hasLiquidity({data:k})&&!G.hasLimitOrders({data:k})){let $=s?k.liquidityNet.neg():k.liquidityNet;S=we.addDelta(P.liquidity,$)}P.tick=s&&!G.hasLimitOrders({data:k})||!s&&G.hasLimitOrders({data:k})?P.tickNext-1:P.tickNext}else P.sqrtPriceX64.eq(F.sqrtPriceNextX64)||(P.tick=G.getTickAtSqrtPrice(F.sqrtPriceNextX64));if(P.sqrtPriceX64=F.sqrtPriceNextX64,at.updateDynamicFeeIndex({state:P,zeroForOne:s,isSkippedTickSpacing:L}),P.amountSpecifiedRemaining.isZero()||P.sqrtPriceX64.eq(B)){let _=G.limitOrderUnfilledAmount({tick:k});if(!P.amountSpecifiedRemaining.isZero()&&!_.eq(v)&&!_.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);P.liquidity=S}return{allTrade:!0,amountSpecifiedRemaining:D,amountCalculated:P.amountCalculated,feeAmount:P.lpFee.add(P.fundFee).add(P.protocolFee),sqrtPriceX64:P.sqrtPriceX64,liquidity:P.liquidity,tickCurrent:P.tick,accounts:[...d,...n.slice(0,g+1+(p?1:0)).map(k=>k.address)]}}var rn=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},Dt=class{static getDynamicFeeInfo({poolInfo:e}){if(!(e.dynamicFeeInfo.filterPeriod===0&&e.dynamicFeeInfo.decayPeriod===0&&e.dynamicFeeInfo.reductionFactor===0&&e.dynamicFeeInfo.dynamicFeeControl===0&&e.dynamicFeeInfo.maxVolatilityAccumulator===0&&e.dynamicFeeInfo.tickSpacingIndexReference===0&&e.dynamicFeeInfo.volatilityReference===0&&e.dynamicFeeInfo.volatilityAccumulator===0&&e.dynamicFeeInfo.lastUpdateTimestamp.isZero()))return e.dynamicFeeInfo}static updateReference({dynamicFeeInfo:e,tickSpacingIndex:t,currentTimestamp:n}){let o=n-e.lastUpdateTimestamp.toNumber();o<e.filterPeriod||(o<e.decayPeriod?(e.tickSpacingIndexReference=t,e.volatilityReference=Math.floor(e.volatilityAccumulator*e.reductionFactor/Zo),e.lastUpdateTimestamp=new Re.default(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new Re.default(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),o=e.volatilityReference+n*$t;e.volatilityAccumulator=Math.min(o,e.maxVolatilityAccumulator)}},Ue=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 i of t){let r=H.getTickArrayStartIndex(i,e);if(r>=n||r<o)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=yt.maxTickInTickarrayBitmap(e),n=-t;return t>He&&(t=H.getTickArrayStartIndex(He,e)+H.tickCount(e)),n<Ze&&(n=H.getTickArrayStartIndex(Ze,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:i}){var a,s,c;let r=[];for(let u=0;u<i.length;u++){let p=i[u],g=(c=(a=t.rewardDefaultInfos[u])==null?void 0:a.mint.programId)!=null?c:(s=await e.getAccountInfo(p.mint))==null?void 0:s.owner;if(g===void 0)throw Error("get new reward mint info error");let d=q(M({},p),{perSecond:gi(p.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ve.PublicKey(g)});if(d.mint.equals(Ve.PublicKey.default)||d.totalEmissioned.eq(pt))continue;if(n<=d.openTime.toNumber()||o.eq(D)){r.push(d);continue}let f=new Re.default(Math.min(d.endTime.toNumber(),n)),y=f.sub(d.lastUpdateTime);if(y.isZero()){r.push(d);continue}let b=fe(y,d.emissionsPerSecondX64,me),w=de(y,d.emissionsPerSecondX64,o),A,T=d.totalEmissioned.add(b);if(T.lte(pt))A=T;else{let P=pt.sub(d.totalEmissioned);A=pt,w=de(P,me,o)}let I=d.growthGlobalX64.add(w);r.push(q(M({},d),{growthGlobalX64:I,totalEmissioned:A,lastUpdateTime:f}))}return r}},Ge=class{static getOutputAmountAndRemainAccounts(e,t,n,o,i,r,a){let s=o.toBase58()===e.mintA.address,c=H.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:u,amountCalculated:p,feeAmount:g,sqrtPriceX64:d,accounts:f}=mo({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:y[1].address,value:y[1]})).filter(y=>s?y.value.startTickIndex<=c:y.value.startTickIndex>=c).sort((y,b)=>s?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:D,zeroForOne:s,isBaseInput:!0,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:u,expectedAmountOut:p,remainingAccounts:f,executionPrice:d,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,o,i,r,a){let s=o.toBase58()===e.mintB.address,c=H.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:u,amountCalculated:p,feeAmount:g,sqrtPriceX64:d,accounts:f}=mo({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:new Ve.PublicKey(y[0]),value:y[1]})).filter(y=>s?y.value.startTickIndex<=c:y.value.startTickIndex>=c).sort((y,b)=>s?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:D,zeroForOne:s,isBaseInput:!1,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:u,expectedAmountIn:p,remainingAccounts:f,executionPrice:d,feeAmount:g}}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await ze(e,t.map(r=>({pubkey:r})),{batchRequest:n}),i={};for(let r of o)r.accountInfo!==null&&(i[r.pubkey.toString()]=Kn.decode(r.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},i=[];for(let s of t){let c=[...yt.findTickArrayStartIndex({tickSpacing:s.tickSpacing,poolBitmap:s.tickArrayBitmap,tickArrayBitmap:s.exBitmapInfo,findInfo:{type:"zeroForOne",count:7,tickArrayCurrent:s.tickCurrent}}),...yt.findTickArrayStartIndex({tickSpacing:s.tickSpacing,poolBitmap:s.tickArrayBitmap,tickArrayBitmap:s.exBitmapInfo,findInfo:{type:"oneForZero",count:7,tickArrayCurrent:s.tickCurrent}})];for(let u of c){let{publicKey:p}=re(s.programId,s.id,u);o[p.toString()]===void 0&&(i.push({pubkey:p}),o[p.toString()]=s.id)}}let r=await ze(e,i,{batchRequest:n}),a={};for(let s of r){if(!s.accountInfo)continue;let c=o[s.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let u=vt.decode(s.accountInfo.data);a[c.toString()][u.startTickIndex]=q(M({},u),{address:s.pubkey})}return a}static computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountIn:r,slippage:a,blockTimestamp:s,priceLimit:c=new ne.default(0)}){var F;let u,p=o.toBase58()===e.mintA.address,[g,d]=p?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];c.equals(new ne.default(0))?u=p?je.add(new Re.default(1)):$e.sub(new Re.default(1)):u=G.priceToSqrtPriceX64(c,e.mintA.decimals,e.mintB.decimals);let f=Qe(r,g,i,!1),{allTrade:y,expectedAmountOut:b,remainingAccounts:w,executionPrice:A,feeAmount:T}=Ge.getOutputAmountAndRemainAccounts(e,t,n,o,f.amount.sub((F=f.fee)!=null?F:D),s,u),I=Qe(b,d,i,!1),P=G.sqrtPriceX64ToPrice(A,e.mintA.decimals,e.mintB.decimals),k=p?P:new ne.default(1).div(P),B=b.mul(new Re.default(Math.floor((1-a)*1e10))).div(new Re.default(1e10)),S=Qe(B,d,i,!1),x=p?e.currentPrice:new ne.default(1).div(e.currentPrice),L=new ne.default(k).sub(x).abs(),U=x,V=new dt(new ne.default(L).mul(10**15).toFixed(0),new ne.default(U).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:f,amountOut:I,minAmountOut:S,expirationTime:kn(f.expirationTime,I.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:V,fee:T,remainingAccounts:w,executionPriceX64:A}}static computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,amountIn:o,tokenOut:i,slippage:r,epochInfo:a,blockTimestamp:s,catchLiquidityInsufficient:c=!1}){let u=i.address===e.mintB.address,[p,g]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,f]=[new Le(q(M({},p),{mint:p.address,isToken2022:p.programId===Rn.TOKEN_2022_PROGRAM_ID.toBase58()})),new Le(q(M({},g),{mint:g.address,isToken2022:g.programId===Rn.TOKEN_2022_PROGRAM_ID.toBase58()}))],{allTrade:y,realAmountIn:b,amountOut:w,minAmountOut:A,expirationTime:T,currentPrice:I,executionPrice:P,priceImpact:k,fee:B,remainingAccounts:S,executionPriceX64:x}=Ge.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new Ve.PublicKey(p.address),amountIn:o,slippage:r,epochInfo:a,catchLiquidityInsufficient:c,blockTimestamp:s}),L=q(M({},b),{amount:new Ce(d,b.amount),fee:b.fee===void 0?void 0:new Ce(d,b.fee)}),U=q(M({},w),{amount:new Ce(f,w.amount),fee:w.fee===void 0?void 0:new Ce(f,w.fee)}),V=q(M({},A),{amount:new Ce(f,A.amount),fee:A.fee===void 0?void 0:new Ce(f,A.fee)}),F=new tt({baseToken:d,denominator:new Re.default(10).pow(new Re.default(20+d.decimals)),quoteToken:f,numerator:I.mul(new ne.default(10**(20+f.decimals))).toFixed(0)}),v=new tt({baseToken:d,denominator:new Re.default(10).pow(new Re.default(20+d.decimals)),quoteToken:f,numerator:P.mul(new ne.default(10**(20+f.decimals))).toFixed(0)}),_=new Ce(d,B);return{allTrade:y,realAmountIn:L,amountOut:U,minAmountOut:V,expirationTime:T,currentPrice:F,executionPrice:v,priceImpact:k,fee:_,remainingAccounts:S,executionPriceX64:x}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountOut:r,slippage:a,priceLimit:s=new ne.default(0),blockTimestamp:c}){var F;let u=o.toBase58()===e.mintA.address,p={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},g;s.equals(new ne.default(0))?g=u?$e.sub(new Re.default(1)):je.add(new Re.default(1)):g=G.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let d=Qe(r,p[o.toString()],i,!0),{allTrade:f,expectedAmountIn:y,remainingAccounts:b,executionPrice:w,feeAmount:A}=Ge.getInputAmountAndRemainAccounts(e,t,n,o,d.amount.sub((F=d.fee)!=null?F:D),c,g),T=u?e.mintB.address:e.mintA.address,I=Qe(y,p[T],i,!1),P=G.sqrtPriceX64ToPrice(w,e.mintA.decimals,e.mintB.decimals),k=u?P:new ne.default(1).div(P),B=y.mul(new Re.default(Math.floor((1+a)*1e10))).div(new Re.default(1e10)),S=Qe(B,p[T],i,!0),x=u?e.currentPrice:new ne.default(1).div(e.currentPrice),L=new ne.default(k).sub(x).abs(),U=x,V=new dt(new ne.default(L).mul(10**15).toFixed(0),new ne.default(U).mul(10**15).toFixed(0));return{allTrade:f,amountIn:I,maxAmountIn:S,realAmountOut:d,expirationTime:kn(I.expirationTime,d.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:V,fee:A,remainingAccounts:b}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var f,y,b;let i=e[t],r=G.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),a=G.tickToPrice(o,e.mintA.decimals,e.mintB.decimals).toNumber(),s=Math.max(r,i.priceMin),u=Math.min(a,i.priceMax)-s,p=a-r,g=i.priceMax-i.priceMin,d;return u<=0?d=0:p===u?d=g/u:g===u?d=u/p:d=u/g*(u/p),{feeApr:i.feeApr*d,rewardsApr:[((f=i.rewardApr[0])!=null?f:0)*d,((y=i.rewardApr[1])!=null?y:0)*d,((b=i.rewardApr[2])!=null?b:0)*d],apr:i.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:i,positionTickLowerIndex:r,positionTickUpperIndex:a,chainTime:s}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,u=e[n],p=o[lt(e.mintA.address).toString()],g=o[lt(e.mintB.address).toString()],d=e.mintA.decimals,f=e.mintB.decimals;if(!u||!p||!g)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=G.priceToSqrtPriceX64(new ne.default(e.price),e.mintA.decimals,e.mintB.decimals),b=G.getSqrtPriceAtTick(r),w=G.getSqrtPriceAtTick(a),{amountSlippageA:A,amountSlippageB:T}=we.getAmountsFromLiquidityWithSlippage(y,b,w,t,!1,!1,0),{amountSlippageA:I,amountSlippageB:P}=we.getAmountsFromLiquidityWithSlippage(y,b,w,i,!1,!1,0),k=new ne.default(A.toString()).div(new ne.default(10).pow(d)).mul(p.value).add(new ne.default(T.toString()).div(new ne.default(10).pow(f)).mul(g.value)),B=new ne.default(I.toString()).div(new ne.default(10).pow(d)).mul(p.value).add(new ne.default(P.toString()).div(new ne.default(10).pow(f)).mul(g.value)),S=new ne.default(1).div(k.add(B)),L=new ne.default(u.volumeFee).mul(365).div(c).mul(S).mul(100).toNumber(),U=3600*24*365,V=e.rewardDefaultInfos.map(F=>{var $,be;let v=F.mint.decimals,_=o[F.mint.address];return s<(($=F.startTime)!=null?$:0)||s>((be=F.endTime)!=null?be:0)||!F.perSecond||!_||v===void 0?0:new ne.default(_.value).mul(new ne.default(F.perSecond).mul(U)).div(new ne.default(10).pow(v)).mul(S).mul(100).toNumber()});return{feeApr:L,rewardsApr:V,apr:L+V.reduce((F,v)=>F+v,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:i,slippage:r,add:a,epochInfo:s,amountHasFee:c}){var w,A;let u=G.priceToSqrtPriceX64(new ne.default(e.price),e.mintA.decimals,e.mintB.decimals),p=G.getSqrtPriceAtTick(n),g=G.getSqrtPriceAtTick(o),d=Qe(i,(w=e[t?"mintA":"mintB"].extensions)==null?void 0:w.feeConfig,s,!c),f=new Re.default(new ne.default(d.amount.sub((A=d.fee)!=null?A:D).toString()).toFixed(0)),y;if(u.lte(p))y=t?we.getLiquidityFromAmountA(p,g,f):new Re.default(0);else if(u.lte(g)){let T=we.getLiquidityFromAmountA(u,g,f),I=we.getLiquidityFromAmountB(p,u,f);y=t?T:I}else y=t?new Re.default(0):we.getLiquidityFromAmountB(p,g,f);let b=await Ge.getAmountsFromLiquidity({epochInfo:s,poolInfo:e,tickLower:n,tickUpper:o,liquidity:y,slippage:r,add:a});return{liquidity:y,amountA:t?d:b.amountA,amountB:t?b.amountB:d,amountSlippageA:t?d:b.amountSlippageA,amountSlippageB:t?b.amountSlippageB:d,expirationTime:b.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:i,slippage:r,add:a}){var b,w,A,T;let s=G.getSqrtPriceAtTick(n),c=G.getSqrtPriceAtTick(o),u=a?1+r:1-r,p=we.getAmountsForLiquidity(G.priceToSqrtPriceX64(new ne.default(t.price),t.mintA.decimals,t.mintB.decimals),s,c,i,a),[g,d]=[Qe(p.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Qe(p.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[f,y]=[Qe(p.amountA.muln(u),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),Qe(p.amountB.muln(u),(T=t.mintB.extensions)==null?void 0:T.feeConfig,e,!0)];return{liquidity:i,amountA:g,amountB:d,amountSlippageA:f,amountSlippageB:y,expirationTime:kn(g.expirationTime,d.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(c=>!n[c.id]).map(c=>new Ve.PublicKey(c.id));(await De(e,o)).forEach((c,u)=>{!c||(n[o[u].toBase58()]=en.decode(c.data))});let r=t.map(c=>ye(new Ve.PublicKey(c.programId),new Ve.PublicKey(c.id)).publicKey),a=await Ge.fetchExBitmaps({connection:e,exBitmapAddress:r,batchRequest:!1}),s={};return t.reduce((c,u)=>q(M({},c),{[u.id]:q(M({accInfo:n[u.id]},n[u.id]),{id:new Ve.PublicKey(u.id),version:6,programId:new Ve.PublicKey(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:q(M({},u.config),{id:new Ve.PublicKey(u.config.id),fundOwner:""}),currentPrice:new ne.default(u.price),exBitmapAccount:ye(new Ve.PublicKey(u.programId),new Ve.PublicKey(u.id)).publicKey,exBitmapInfo:a[ye(new Ve.PublicKey(u.programId),new Ve.PublicKey(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}static async fetchTickArrayInfo({connection:e,programId:t,poolId:n,tick:o,tickSpacing:i}){let r=H.getTickArrayStartIndex(o,i),a=re(t,n,r).publicKey,s=await e.getAccountInfo(a);if(!s)throw new Error(`tick array ${a.toBase58()} not found`);return vt.decode(s.data)}static async fetchMultipleTickArrayInfo({connection:e,tickInfoList:t}){let n=t.map(i=>{let r=H.getTickArrayStartIndex(i.tick,i.tickSpacing);return re(i.programId,i.poolId,r).publicKey});return(await De(e,n)).map(i=>i&&vt.decode(i.data))}},wi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function ki(l,e){let t=e!=null?e:{};return q(M({},l),{type:"Concentrated",programId:l.programId.toString(),id:l.id.toString(),rewardDefaultInfos:l.rewardInfos.filter(n=>!n.mint.equals(Ve.PublicKey.default)).map(n=>{var o,i;return{mint:Pt({address:n.mint.toBase58(),programId:Rn.TOKEN_PROGRAM_ID.toBase58(),decimals:(o=t[n.mint.toBase58()].decimals)!=null?o:6}),perSecond:Number(n.emissionsPerSecondX64.divn(10**((i=t[n.mint.toBase58()].decimals)!=null?i:6)).toString()),startTime:n.openTime.toNumber(),endTime:n.endTime.toNumber()}}),rewardDefaultPoolInfos:"Clmm",price:l.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:l.ammConfig.tradeFeeRate,openTime:l.startTime.toString(),tvl:0,day:wi,week:wi,month:wi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:q(M({},l.ammConfig),{id:l.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),hasDynamicFee:!1,feeOn:"",launchMigratePool:!1,tips:[]})}var qt=W(require("bn.js"));var Ti=class{static getfeeGrowthInside(e,t,n){let o=new qt.default(0),i=new qt.default(0);e.tickCurrent>=t.tick?(o=t.feeGrowthOutsideX64A,i=t.feeGrowthOutsideX64B):(o=Me(e.feeGrowthGlobalX64A,t.feeGrowthOutsideX64A),i=Me(e.feeGrowthGlobalX64B,t.feeGrowthOutsideX64B));let r=new qt.default(0),a=new qt.default(0);e.tickCurrent<n.tick?(r=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(r=Me(e.feeGrowthGlobalX64A,n.feeGrowthOutsideX64A),a=Me(e.feeGrowthGlobalX64B,n.feeGrowthOutsideX64B));let s=Me(Me(e.feeGrowthGlobalX64A,o),r),c=Me(Me(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:s,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:r}=this.getfeeGrowthInside(e,n,o),a=de(Me(i,t.feeGrowthInsideLastX64A),t.liquidity,me),s=t.tokenFeesOwedA.add(a),c=de(Me(r,t.feeGrowthInsideLastX64B),t.liquidity,me),u=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:s,tokenFeeAmountB:u}}static GetPositionRewards(e,t,n,o){let i=[],r=this.getRewardGrowthInside(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<r.length;a++){let s=r[a],c=t.rewardInfos[a],u=Me(s,c.growthInsideLastX64),p=de(u,t.liquidity,me),g=c.rewardAmountOwed.add(p);i.push(g)}return i}static getRewardGrowthInside(e,t,n,o){let i=[];for(let r=0;r<o.length;r++){let a=new qt.default(0);t.liquidityGross.eqn(0)?a=o[r].growthGlobalX64:e<t.tick?a=Me(o[r].growthGlobalX64,t.rewardGrowthsOutsideX64[r]):a=t.rewardGrowthsOutsideX64[r];let s=new qt.default(0);n.liquidityGross.eqn(0)||(e<n.tick?s=n.rewardGrowthsOutsideX64[r]:s=Me(o[r].growthGlobalX64,n.rewardGrowthsOutsideX64[r])),i.push(Me(Me(o[r].growthGlobalX64,a),s))}return i}};function Oe(l){let e=`global:${l}`;return Buffer.from(Yr.sha256.digest(e)).slice(0,8)}ei.span;var Gr=oe("Raydium_Clmm"),Ne={createPool:Oe("create_pool"),createCustomizablePool:Oe("create_customizable_pool"),createPermissionedPool:Oe("create_permissioned_pool"),openPositionV2:Oe("open_position_v2"),openPositionWithToken22Nft:Oe("open_position_with_token22_nft"),closePosition:Oe("close_position"),increaseLiquidityV2:Oe("increase_liquidity_v2"),decreaseLiquidityV2:Oe("decrease_liquidity_v2"),initializeReward:Oe("initialize_reward"),setRewardParams:Oe("set_reward_params"),updateRewardInfos:Oe("update_reward_infos"),collectRemainingRewards:Oe("collect_remaining_rewards"),swapV2:Oe("swap_v2"),openLimitOrder:Oe("open_limit_order"),increaseLimitOrder:Oe("increase_limit_order"),decreaseLimitOrder:Oe("decrease_limit_order"),settleLimitOrder:Oe("settle_limit_order"),closeLimitOrder:Oe("close_limit_order")},zr=[188,37,179,131,82,150,84,73],Xr=[16,72,250,198,14,162,212,19],J=class{static createPoolInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f){let y=O([Y("sqrtPriceX64"),m("startTime")]),b=[{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:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},...(f!=null?f:[]).map(T=>({pubkey:T,isSigner:!1,isWritable:!1}))],w=Buffer.alloc(y.span);y.encode({sqrtPriceX64:d,startTime:D},w);let A=Buffer.from([...Ne.createPool,...w]);return new K.TransactionInstruction({keys:b,programId:e,data:A})}static createCustomizablePoolInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b){let w=O([Y("sqrtPriceX64"),N("collectFeeOn"),Ae("enableDynamicFee")]),A=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},...y.map(P=>({pubkey:P,isSigner:!1,isWritable:!1})),...b?[{pubkey:b,isSigner:!1,isWritable:!1}]:[]],T=Buffer.alloc(w.span);w.encode({sqrtPriceX64:d,collectFeeOn:f,enableDynamicFee:b!==void 0},T);let I=Buffer.from([...Ne.createCustomizablePool,...T]);return new K.TransactionInstruction({keys:A,programId:e,data:I})}static createPermissionedPoolInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let I=O([Y("sqrtPriceX64"),N("collectFeeOn"),Ae("enableDynamicFee"),he("seedIndex")]),P=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},...A.map(S=>({pubkey:S,isSigner:!1,isWritable:!1})),...T?[{pubkey:T,isSigner:!1,isWritable:!1}]:[]],k=Buffer.alloc(I.span);I.encode({sqrtPriceX64:y,collectFeeOn:b,enableDynamicFee:T!==void 0,seedIndex:w},k);let B=Buffer.from([...Ne.createPermissionedPool,...k]);return new K.TransactionInstruction({keys:P,programId:e,data:B})}static initializeRewardInstruction(e,t,n,o,i,r,a,s,c,u,p,g){let d=O([m("openTime"),m("endTime"),Y("emissionsPerSecondX64")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({openTime:u,endTime:p,emissionsPerSecondX64:g},y);let b=Buffer.from([...Ne.initializeReward,...y]);return new K.TransactionInstruction({keys:f,programId:e,data:b})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Ne.updateRewardInfos]);return new K.TransactionInstruction({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,i,r,a,s,c,u,p,g){let d=O([N("rewardIndex"),Y("emissionsPerSecondX64"),m("openTime"),m("endTime")]),f=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0}],y=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:g,openTime:u,endTime:p},y);let b=Buffer.from([...Ne.setRewardParams,...y]);return new K.TransactionInstruction({keys:f,programId:e,data:b})}static closePositionInstruction(e,t,n,o,i,r,a){let s=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:r?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];a&&s.push({pubkey:a,isSigner:!1,isWritable:!0});let c=Buffer.from([...Ne.closePosition]);return new K.TransactionInstruction({keys:s,programId:e,data:c})}static openPositionV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T,I,P,k,B,S,x,L,U){let V=O([Ie("tickLower"),Ie("tickUpper"),Ie("tickArrayLowerStart"),Ie("tickArrayUpperStart"),Y("liquidity"),m("amountMaxA"),m("amountMaxB"),Ae("withMetadata"),N("optionBaseFlag"),Ae("baseFlag")]),F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...U?[{pubkey:U,isSigner:!1,isWritable:!0}]:[]],v=Buffer.alloc(V.span);V.encode({tickLower:A,tickUpper:T,tickArrayLowerStart:I,tickArrayUpperStart:P,liquidity:k,amountMaxA:B,amountMaxB:S,withMetadata:x,optionBaseFlag:L!==null?1:0,baseFlag:L!=null?L:!1},v);let _=Buffer.from([...Ne.openPositionV2,...v]);return new K.TransactionInstruction({keys:F,programId:e,data:_})}static increaseLiquidityV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let I=O([Y("liquidity"),m("amountMaxA"),m("amountMaxB"),N("optionBaseFlag"),Ae("baseFlag")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],k=Buffer.alloc(I.span);I.encode({liquidity:y,amountMaxA:b,amountMaxB:w,optionBaseFlag:A!==null?1:0,baseFlag:A!=null?A:!1},k);let B=Buffer.from([...Ne.increaseLiquidityV2,...k]);return new K.TransactionInstruction({keys:P,programId:e,data:B})}static decreaseLiquidityV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let I=O([Y("liquidity"),m("amountMinA"),m("amountMinB")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...y.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=Buffer.alloc(I.span);I.encode({liquidity:b,amountMinA:w,amountMinB:A},k);let B=Buffer.from([...Ne.decreaseLiquidityV2,...k]);return new K.TransactionInstruction({keys:P,programId:e,data:B})}static swapV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w){let A=O([m("amount"),m("otherAmountThreshold"),Y("sqrtPriceLimitX64"),Ae("isBaseInput")]),T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...p.map(k=>({pubkey:k,isSigner:!1,isWritable:!0}))],I=Buffer.alloc(A.span);A.encode({amount:d,otherAmountThreshold:f,sqrtPriceLimitX64:y,isBaseInput:b},I);let P=Buffer.from([...Ne.swapV2,...I]);return new K.TransactionInstruction({keys:T,programId:e,data:P})}static collectRemainingRewardsInstruction(e,t,n,o,i,r,a){let s=O([N("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({rewardIndex:a},u);let p=Buffer.from([...Ne.collectRemainingRewards,...u]);return new K.TransactionInstruction({keys:c,programId:e,data:p})}static openPositionWithToken22NftInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T,I,P,k,B,S,x,L){let U=O([Ie("tickLower"),Ie("tickUpper"),Ie("tickArrayLowerStart"),Ie("tickArrayUpperStart"),Y("liquidity"),m("amountMaxA"),m("amountMaxB"),Ae("withMetadata"),N("optionBaseFlag"),Ae("baseFlag")]),V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],F=Buffer.alloc(U.span);U.encode({tickLower:w,tickUpper:A,tickArrayLowerStart:T,tickArrayUpperStart:I,liquidity:P,amountMaxA:k,amountMaxB:B,withMetadata:S,optionBaseFlag:x!==null?1:0,baseFlag:x!=null?x:!1},F);let v=Buffer.from([...Ne.openPositionWithToken22Nft,...F]);return new K.TransactionInstruction({keys:V,programId:e,data:v})}static openLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A){let T=O([N("nonceIndex"),Ae("zeroForOne"),Ie("tickIndex"),m("amount")]),I=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],P=Buffer.alloc(T.span);T.encode({nonceIndex:f,zeroForOne:y,tickIndex:b,amount:w},P);let k=Buffer.from([...Ne.openLimitOrder,...P]);return new K.TransactionInstruction({keys:I,programId:e,data:k})}static increaseLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u){let p=O([m("amount")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1}],d=Buffer.alloc(p.span);p.encode({amount:u},d);let f=Buffer.from([...Ne.increaseLimitOrder,...d]);return new K.TransactionInstruction({keys:g,programId:e,data:f})}static decreaseLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f){let y=O([m("amount"),m("amountMin")]),b=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},...f?[{pubkey:f,isSigner:!1,isWritable:!0}]:[]],w=Buffer.alloc(y.span);y.encode({amount:g,amountMin:d},w);let A=Buffer.from([...Ne.decreaseLimitOrder,...w]);return new K.TransactionInstruction({keys:b,programId:e,data:A})}static settleLimitOrderInstruction(e,t,n,o,i,r,a,s,c){let u=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1}],p=Buffer.from([...Ne.settleLimitOrder]);return new K.TransactionInstruction({keys:u,programId:e,data:p})}static closeLimitOrderInstruction(e,t,n,o){let i=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0}],r=Buffer.from([...Ne.closeLimitOrder]);return new K.TransactionInstruction({keys:i,programId:e,data:r})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:s}=e,[c,u]=[new K.PublicKey(o.address),new K.PublicKey(i.address)],[p,g]=[new K.PublicKey(o.programId||X.TOKEN_PROGRAM_ID),new K.PublicKey(i.programId||X.TOKEN_PROGRAM_ID)],{publicKey:d}=ci(t,r,c,u),{publicKey:f}=so(t,d),{publicKey:y}=Xe(t,d,c),{publicKey:b}=Xe(t,d,u),w=ye(t,d).publicKey,A=[this.createPoolInstruction(t,d,n,r,f,c,y,p,u,b,g,w,a,s)];return{signers:[],instructions:A,instructionTypes:[ee.CreateAccount,ee.ClmmCreatePool],address:{poolId:d,observationId:f,exBitmapAccount:w,mintA:c,mintB:u,mintAProgram:p,mintBProgram:g,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:s,payer:c,seedIndex:u}=e,[p,g]=[new K.PublicKey(o.address),new K.PublicKey(i.address)],[d,f]=[new K.PublicKey(o.programId||X.TOKEN_PROGRAM_ID),new K.PublicKey(i.programId||X.TOKEN_PROGRAM_ID)],{publicKey:y}=mi(t,r,p,g,u),{publicKey:b}=li(t,c),{publicKey:w}=so(t,y),{publicKey:A}=Xe(t,y,p),{publicKey:T}=Xe(t,y,g),I=ye(t,y).publicKey,P=[this.createPoolInstruction(t,y,n,r,w,p,A,d,g,T,f,I,a,s)];return{signers:[],instructions:P,instructionTypes:[ee.CreateAccount,ee.ClmmCreatePool],address:{poolId:y,observationId:w,exBitmapAccount:I,mintA:p,mintB:g,mintAProgram:d,mintBProgram:f,mintAVault:A,mintBVault:T,permission:b},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:s,base:c,withMetadata:u,getEphemeralSigners:p,nft2022:g}){let d=[],[f,y]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],b;if(p)b=new K.PublicKey((await p(1))[0]);else{let L=K.Keypair.generate();d.push(L),b=L.publicKey}let w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=re(f,y,w),{publicKey:I}=re(f,y,A),{publicKey:P}=g?j(n.wallet,b,X.TOKEN_2022_PROGRAM_ID):j(n.wallet,b,X.TOKEN_PROGRAM_ID),{publicKey:k}=St(b),{publicKey:B}=Ye(f,b),{publicKey:S}=ot(f,y,o,i),x=g?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,P,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,r,a,s,u==="create",c&&c==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?ye(f,y).publicKey:void 0):this.openPositionV2Instruction(f,n.feePayer,y,n.wallet,b,P,k,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,r,a,s,u==="create",null,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?ye(f,y).publicKey:void 0);return{signers:d,instructions:[x],instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:T,tickArrayUpper:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata:u,getEphemeralSigners:p,nft2022:g}){let d=[],[f,y]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],b;if(p)b=new K.PublicKey((await p(1))[0]);else{let L=K.Keypair.generate();d.push(L),b=L.publicKey}let w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=re(f,y,w),{publicKey:I}=re(f,y,A),{publicKey:P}=g?j(n.wallet,b,X.TOKEN_2022_PROGRAM_ID):j(n.wallet,b,X.TOKEN_PROGRAM_ID),{publicKey:k}=St(b),{publicKey:B}=Ye(f,b),{publicKey:S}=ot(f,y,o,i),x=g?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,P,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,c,!r||r==="MintA"?a:s,!r||r==="MintA"?s:a,u==="create",r&&r==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?ye(f,y).publicKey:void 0):this.openPositionV2Instruction(f,n.feePayer,y,n.wallet,b,P,k,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,D,r==="MintA"?a:s,r==="MintA"?s:a,u==="create",r==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?ye(f,y).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:T,tickArrayUpper:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S},instructions:[x],signers:d,instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:s,base:c,withMetadata:u,getEphemeralSigners:p,nft2022:g}){let d,f=[];if(p)d=new K.PublicKey((await p(1))[0]);else{let L=K.Keypair.generate();f.push(L),d=L.publicKey}let[y,b]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=re(y,b,w),{publicKey:I}=re(y,b,A),{publicKey:P}=g?j(n.wallet,d,X.TOKEN_2022_PROGRAM_ID):j(n.wallet,d,X.TOKEN_PROGRAM_ID),{publicKey:k}=St(d),{publicKey:B}=Ye(y,d),{publicKey:S}=ot(y,b,o,i),x=g?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,d,P,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(t.mintA.address),new K.PublicKey(t.mintB.address),o,i,w,A,r,a,s,u==="create",c&&c==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?ye(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.wallet,b,n.wallet,d,P,k,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(t.mintA.address),new K.PublicKey(t.mintB.address),o,i,w,A,r,a,s,u==="create",null,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?ye(y,b).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:T,tickArrayUpper:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S},instructions:[x],signers:f,instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o,nft2022:i}){let r=new K.PublicKey(e.programId),a=i?j(n.wallet,o.nftMint,X.TOKEN_2022_PROGRAM_ID).publicKey:j(n.wallet,o.nftMint,X.TOKEN_PROGRAM_ID).publicKey,{publicKey:s}=Ye(r,o.nftMint),c=[];return c.push(this.closePositionInstruction(r,n.wallet,o.nftMint,a,s,!!i,new K.PublicKey(e.id))),{address:{positionNftAccount:a,personalPosition:s},signers:[],instructions:c,instructionTypes:[ee.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMaxA:r,amountMaxB:a,nft2022:s}){let[c,u]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],p=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:d}=re(c,u,p),{publicKey:f}=re(c,u,g),{publicKey:y}=s?j(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):j(o.wallet,n.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:b}=Ye(c,n.nftMint),{publicKey:w}=ot(c,u,n.tickLower,n.tickUpper),A=this.increaseLiquidityV2Instruction(c,o.wallet,y,b,u,w,d,f,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),i,r,a,null,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[p,g]})?ye(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:w},signers:[],instructions:[A],instructionTypes:[ee.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:i,baseAmount:r,otherAmountMax:a,nft2022:s}){let[c,u]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],p=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:d}=re(c,u,p),{publicKey:f}=re(c,u,g),{publicKey:y}=s?j(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):j(o.wallet,n.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:b}=Ye(c,n.nftMint),{publicKey:w}=ot(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:w},instructions:[this.increaseLiquidityV2Instruction(c,o.wallet,y,b,u,w,d,f,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),D,i==="MintA"?r:a,i==="MintA"?a:r,i==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[p,g]})?ye(c,u).publicKey:void 0)],signers:[],instructionTypes:[ee.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMinA:r,amountMinB:a,programId:s,nft2022:c}){let[u,p]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],g=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),d=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:f}=re(u,p,g),{publicKey:y}=re(u,p,d),{publicKey:b}=c?j(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):j(o.wallet,n.nftMint,s),{publicKey:w}=Ye(u,n.nftMint),{publicKey:A}=ot(u,p,n.tickLower,n.tickUpper),T=new Map;for(let B=0;B<t.rewardInfos.length;B++)T.set(t.rewardInfos[B].mint.address,o.rewardAccounts[B]);let I=[];for(let B=0;B<t.rewardInfos.length;B++){let S=t.rewardInfos[B].mint.address,x=T.get(S);x&&I.push({poolRewardVault:new K.PublicKey(t.rewardInfos[B].vault),ownerRewardVault:x,rewardMint:new K.PublicKey(S)})}let P=[],k=this.decreaseLiquidityV2Instruction(u,o.wallet,b,w,p,A,f,y,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),I,i,r,a,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,d]})?ye(u,p).publicKey:void 0);return P.push(k),{address:{tickArrayLower:f,tickArrayUpper:y,positionNftAccount:b,personalPosition:w,protocolPosition:A},signers:[],instructions:P,instructionTypes:[ee.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:i,amountIn:r,amountOutMin:a,sqrtPriceLimitX64:s,remainingAccounts:c}){let[u,p]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],[g,d]=[new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B)],[f,y]=[new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address)],b=e.mintA.address.toString()===i.toString(),w=[this.swapV2Instruction(u,o.wallet,p,new K.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?g:d,b?d:g,b?f:y,b?y:f,c,n,r,a,s,!0,ye(u,p).publicKey)];return{signers:[],instructions:w,instructionTypes:[ee.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,outputMint:i,amountOut:r,amountInMax:a,sqrtPriceLimitX64:s,remainingAccounts:c}){let[u,p]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],[g,d]=[new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B)],[f,y]=[new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address)],b=e.mintB.address.toString()===i.toBase58(),w=[this.swapV2Instruction(u,o.wallet,p,new K.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?g:d,b?d:g,b?f:y,b?y:f,c,n,r,a,s,!1,ye(u,p).publicKey)];return{signers:[],instructions:w,instructionTypes:[ee.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a=di(i,r,o.mint).publicKey,s=tn(i).publicKey,c=[this.initializeRewardInstruction(i,n.wallet,r,s,new K.PublicKey(e.config.id),n.tokenAccount,o.programId,o.mint,a,new Ln.default(o.openTime),new Ln.default(o.endTime),o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:s},signers:[],instructions:c,instructionTypes:[ee.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a,s,c;for(let g=0;g<e.rewardDefaultInfos.length;g++)e.rewardDefaultInfos[g].mint.address===o.mint.toString()&&(a=g,s=new K.PublicKey(t.rewardInfos[g].vault),c=new K.PublicKey(t.rewardInfos[g].mint.address));(a===void 0||s===void 0)&&Gr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=tn(i).publicKey,p=[this.setRewardParamsInstruction(i,n.wallet,r,u,new K.PublicKey(e.config.id),n.tokenAccount,s,c,a,new Ln.default(o.openTime),new Ln.default(o.endTime),o.emissionsPerSecondX64)];return{address:{rewardVault:s,operationId:u},signers:[],instructions:p,instructionTypes:[ee.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a,s;for(let u=0;u<e.rewardDefaultInfos.length;u++)e.rewardDefaultInfos[u].mint.address===o.toString()&&(a=u,s=new K.PublicKey(t.rewardInfos[u].vault));(a===void 0||s===void 0)&&Gr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRemainingRewardsInstruction(i,n.wallet,r,n.tokenAccount,s,o,a)];return{address:{rewardVault:s},signers:[],instructions:c,instructionTypes:[ee.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:o,wallet:i,nftMint:r,nft2022:a,getEphemeralSigners:s}){let c=[],u;if(s)u=new K.PublicKey((await s(1))[0]);else{let w=K.Keypair.generate();c.push(w),u=w.publicKey}let p=a?j(i,r,X.TOKEN_2022_PROGRAM_ID).publicKey:j(i,r,X.TOKEN_PROGRAM_ID).publicKey,{publicKey:g}=Ye(n,r),d=Vt(e,u).publicKey,f=j(i,u,X.TOKEN_PROGRAM_ID).publicKey,y=St(u).publicKey,b=J.lockPositionInstructionV2({programId:e,auth:t,payer:o,positionOwner:i,lockOwner:i,positionNftAccount:p,positionId:g,lockPositionId:d,lockNftMint:u,lockNftAccount:f,metadataAccount:y,withMetadata:!0,nft2022:a,positionNftMint:r,authPositionNftAccount:j(t,r,a?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID).publicKey,positionNftProgram:a?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID});return{address:{positionId:g,lockPositionId:d,lockNftAccount:f,lockNftMint:u,positionNftAccount:p,metadataAccount:y},instructions:[b],signers:c,instructionTypes:[ee.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:o,lockOwner:i,positionNftAccount:r,positionId:a,positionNftMint:s,authPositionNftAccount:c,positionNftProgram:u,lockPositionId:p,lockNftMint:g,lockNftAccount:d,metadataAccount:f,withMetadata:y}){let b=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1}],w=O([Ae("withMetadata")]),A=Buffer.alloc(w.span);w.encode({withMetadata:y},A);let T=Buffer.from([...zr,...A]);return new K.TransactionInstruction({keys:b,programId:e,data:T})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:o,positionNft:i}){let{publicKey:r}=j(o,i,X.TOKEN_PROGRAM_ID),{publicKey:a}=Ye(n,i),s=[{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:uo(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new K.TransactionInstruction({keys:s,programId:e,data:Buffer.from(zr)})}static harvestLockPositionInstruction(e){let[t,n]=[new K.PublicKey(e.poolKeys.programId),new K.PublicKey(e.poolKeys.id)],o=H.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),i=H.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:r}=re(t,n,o),{publicKey:a}=re(t,n,i),{publicKey:s}=j(e.owner,e.ownerPosition.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:c}=Ye(t,e.ownerPosition.nftMint),{publicKey:u}=ot(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),p=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)p.push({poolRewardVault:new K.PublicKey(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new K.PublicKey(e.poolKeys.rewardInfos[f].mint.address)});let g=[...p.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],d=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:uo(e.programId,c).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:new K.PublicKey(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new K.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:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:new K.PublicKey(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new K.PublicKey(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...g];return new K.TransactionInstruction({keys:d,programId:e.programId,data:Buffer.from(Xr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:o,lockOwner:i,lockNftMint:r,lockNftAccount:a,positionNftAccount:s,positionId:c,poolId:u,protocolPosition:p,vaultA:g,vaultB:d,tickArrayLower:f,tickArrayUpper:y,userVaultA:b,userVaultB:w,mintA:A,mintB:T,rewardAccounts:I,exTickArrayBitmap:P}){let k=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...I.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],B=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},...k];return new K.TransactionInstruction({keys:B,programId:e,data:Buffer.from(Xr)})}};var lu=O([Pe("mintAuthorityOption"),h("mintAuthority"),m("supply"),N("decimals"),N("isInitialized"),Pe("freezeAuthorityOption"),h("freezeAuthority")]);var mu=require("@solana/spl-token"),du=require("@solana/web3.js");var Pt=o=>{var i=o,{address:l,programId:e,decimals:t}=i,n=st(i,["address","programId","decimals"]);return M({chainId:101,address:lt(l).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},On=l=>l?q(M({},l),{transferFeeConfigAuthority:l.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:l.withdrawWithheldAuthority.toBase58(),withheldAmount:l.withheldAmount.toString(),olderTransferFee:q(M({},l.olderTransferFee),{epoch:l.olderTransferFee.epoch.toString(),maximumFee:l.olderTransferFee.maximumFee.toString()}),newerTransferFee:q(M({},l.newerTransferFee),{epoch:l.newerTransferFee.epoch.toString(),maximumFee:l.newerTransferFee.maximumFee.toString()})}):void 0;var hi=W(require("bn.js")),pu=new hi.default(25),fu=new hi.default(1e4);var Zr=require("@solana/spl-token"),po=require("@solana/web3.js");var ku=W(require("bn.js"));var yu=O([N("instruction"),m("amountIn"),m("minAmountOut")]),bu=O([N("instruction"),m("maxAmountIn"),m("amountOut")]),Ob=O([N("instruction"),N("nonce")]),gu=O([N("instruction"),N("nonce"),m("startTime")]),Qr=O([m("status"),m("nonce"),m("maxOrder"),m("depth"),m("baseDecimal"),m("quoteDecimal"),m("state"),m("resetFlag"),m("minSize"),m("volMaxCutRatio"),m("amountWaveRatio"),m("baseLotSize"),m("quoteLotSize"),m("minPriceMultiplier"),m("maxPriceMultiplier"),m("systemDecimalValue"),m("minSeparateNumerator"),m("minSeparateDenominator"),m("tradeFeeNumerator"),m("tradeFeeDenominator"),m("pnlNumerator"),m("pnlDenominator"),m("swapFeeNumerator"),m("swapFeeDenominator"),m("baseNeedTakePnl"),m("quoteNeedTakePnl"),m("quoteTotalPnl"),m("baseTotalPnl"),m("poolOpenTime"),m("punishPcAmount"),m("punishCoinAmount"),m("orderbookToInitTime"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),m("swapBase2QuoteFee"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),m("swapQuote2BaseFee"),h("baseVault"),h("quoteVault"),h("baseMint"),h("quoteMint"),h("lpMint"),h("openOrders"),h("marketId"),h("marketProgramId"),h("targetOrders"),h("withdrawQueue"),h("lpVault"),h("owner"),m("lpReserve"),E(m(),3,"padding")]),Nb=O([m("accountType"),m("status"),m("nonce"),m("maxOrder"),m("depth"),m("baseDecimal"),m("quoteDecimal"),m("state"),m("resetFlag"),m("minSize"),m("volMaxCutRatio"),m("amountWaveRatio"),m("baseLotSize"),m("quoteLotSize"),m("minPriceMultiplier"),m("maxPriceMultiplier"),m("systemDecimalsValue"),m("abortTradeFactor"),m("priceTickMultiplier"),m("priceTick"),m("minSeparateNumerator"),m("minSeparateDenominator"),m("tradeFeeNumerator"),m("tradeFeeDenominator"),m("pnlNumerator"),m("pnlDenominator"),m("swapFeeNumerator"),m("swapFeeDenominator"),m("baseNeedTakePnl"),m("quoteNeedTakePnl"),m("quoteTotalPnl"),m("baseTotalPnl"),m("poolOpenTime"),m("punishPcAmount"),m("punishCoinAmount"),m("orderbookToInitTime"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),m("swapQuote2BaseFee"),m("swapBase2QuoteFee"),h("baseVault"),h("quoteVault"),h("baseMint"),h("quoteMint"),h("lpMint"),h("modelDataAccount"),h("openOrders"),h("marketId"),h("marketProgramId"),h("targetOrders"),h("owner"),E(m(),64,"padding")]),Pu=O([N("instruction"),m("baseAmountIn"),m("quoteAmountIn"),m("fixedSide"),m("otherAmountMin")]),Au=O([N("instruction"),m("lpAmount"),m("baseAmountMin"),m("quoteAmountMin")]);var wu=O([m("fee")]);var Ub=oe("Raydium_liquidity_instruction");var Tu=5e4,hu=O([m("x"),m("y"),m("price")]),Yb=O([m("accountType"),m("status"),m("multiplier"),m("validDataCount"),E(hu,Tu,"DataElement")]);var Bu=require("@solana/web3.js"),Su=W(require("decimal.js")),Ku=require("@solana/spl-token");var Iu=require("@solana/web3.js");var $b=oe("Raydium_liquidity_serum");var Du=W(require("bn.js")),Wu=W(require("decimal.js"));var Lu=require("@solana/spl-token"),Ou=require("@solana/web3.js"),Nu=W(require("bn.js"));var fo=require("@solana/web3.js"),Hr=require("@solana/spl-token");function xu(l="accountFlags"){let e=new Yn(l);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Cu=O([te(5),xu("accountFlags"),h("ownAddress"),m("vaultSignerNonce"),h("baseMint"),h("quoteMint"),h("baseVault"),m("baseDepositsTotal"),m("baseFeesAccrued"),h("quoteVault"),m("quoteDepositsTotal"),m("quoteFeesAccrued"),m("quoteDustThreshold"),h("requestQueue"),h("eventQueue"),h("bids"),h("asks"),m("baseLotSize"),m("quoteLotSize"),m("feeRateBps"),m("referrerRebatesAccrued"),te(7)]);var Zu=require("@solana/web3.js"),Nn=require("@solana/spl-token");var Gu=W(require("bn.js"));var jr=W(require("bn.js"));var PP=new jr.default(0);var qu=W(require("bn.js"));var $r=W(require("bn.js")),rt=new $r.default(1e6);var Hu=W(require("bn.js")),ju=W(require("decimal.js"));var bo=require("@solana/web3.js"),Ii=require("@solana/spl-token");var OP=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),NP=Buffer.from("amm_config","utf8"),MP=Buffer.from("pool","utf8"),FP=Buffer.from("pool_lp_mint","utf8"),vP=Buffer.from("pool_vault","utf8"),VP=Buffer.from("observation","utf8"),_P=Buffer.from("permission","utf8"),EP=Buffer.from("support_mint","utf8");var DP=Buffer.from("locked_liquidity","utf8");var jP=oe("Raydium_cpmm"),$P={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 Xu=O([te(8),N("bump"),Ae("disableCreatePool"),he("index"),m("tradeFeeRate"),m("protocolFeeRate"),m("fundFeeRate"),m("createPoolFee"),h("protocolOwner"),h("fundOwner"),m("creatorFeeRate"),E(m(),15)]),Jr=O([te(8),h("configId"),h("poolCreator"),h("vaultA"),h("vaultB"),h("mintLp"),h("mintA"),h("mintB"),h("mintProgramA"),h("mintProgramB"),h("observationId"),N("bump"),N("status"),N("lpDecimals"),N("mintDecimalA"),N("mintDecimalB"),m("lpAmount"),m("protocolFeesMintA"),m("protocolFeesMintB"),m("fundFeesMintA"),m("fundFeesMintB"),m("openTime"),m("epoch"),N("feeOn"),Ae("enableCreatorFee"),E(N(),6),m("creatorFeesMintA"),m("creatorFeesMintB"),E(m(),28)]),tA=O([te(8),h("configId"),E(m(),30)]);var ua=require("@solana/web3.js"),an=require("@solana/spl-token"),ca=W(require("bn.js")),kc=W(require("decimal.js"));var Bi=require("@solana/spl-token"),oa=require("@solana/web3.js"),ia=W(require("bn.js"));var $u=O([m(),m("epoch"),N("curveType"),he("index"),m("migrateFee"),m("tradeFeeRate"),m("maxShareFeeRate"),m("minSupplyA"),m("maxLockRate"),m("minSellRateA"),m("minMigrateRateA"),m("minFundRaisingB"),h("mintB"),h("protocolFeeOwner"),h("migrateFeeOwner"),h("migrateToAmmWallet"),h("migrateToCpmmWallet"),E(m(),16)]),Ju=O([m("totalLockedAmount"),m("cliffPeriod"),m("unlockPeriod"),m("startTime"),m("totalAllocatedShare")]),ec=O([m(),m("epoch"),N("bump"),N("status"),N("mintDecimalsA"),N("mintDecimalsB"),N("migrateType"),m("supply"),m("totalSellA"),m("virtualA"),m("virtualB"),m("realA"),m("realB"),m("totalFundRaisingB"),m("protocolFee"),m("platformFee"),m("migrateFee"),Ju.replicate("vestingSchedule"),h("configId"),h("platformId"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("creator"),N("mintProgramFlag"),N("cpmmCreatorFeeOn"),m("platformVestingShare"),E(N(),54)]),fw=O([m(),m("epoch"),h("poolId"),h("beneficiary"),m("claimedAmount"),m("tokenShareAmount"),E(m(),8)]),ta=O([N("migrateType"),N("migrateCpmmFeeOn"),m("supply"),m("totalSellA"),m("totalFundRaisingB"),m("totalLockedAmount"),m("cliffPeriod"),m("unlockPeriod")]),tc=O([m("epoch"),N("index"),h("configId"),ta.replicate("bondingCurveParam"),E(m(),50)]),na=O([m(),m("epoch"),h("platformClaimFeeWallet"),h("platformLockNftWallet"),m("platformScale"),m("creatorScale"),m("burnScale"),m("feeRate"),E(N(),64,"name"),E(N(),256,"web"),E(N(),256,"img"),h("cpConfigId"),m("creatorFeeRate"),h("transferFeeExtensionAuth"),h("platformVestingWallet"),m("platformVestingScale"),h("platformCpCreator"),N("restrictGlobalConfig"),E(N(),107),rr(tc,"platformCurve")]);var Aw=Buffer.from("vault_auth_seed","utf8"),ww=Buffer.from("global_config","utf8"),kw=Buffer.from("pool_vesting","utf8"),Tw=Buffer.from("platform_config","utf8"),hw=Buffer.from("platform_fee_vault_auth_seed","utf8"),Iw=Buffer.from("creator_fee_vault_auth_seed","utf8"),Bw=Buffer.from("platform_global_access","utf8"),Sw=Buffer.from("platform_allow_config","utf8");var vw={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 Vw=new ia.default("18446744073709551615");var ra=require("@solana/spl-token");var nc=W(require("bn.js")),oc=W(require("decimal.js"));var uc=W(require("bn.js")),cc=W(require("decimal.js"));var ic=W(require("bn.js")),rc=W(require("decimal.js"));var ac=W(require("bn.js")),sc=W(require("decimal.js"));var Si=W(require("bn.js")),go=W(require("decimal.js")),Po=class{static _multipler(e){return new go.default(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new go.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 Si.default(o.mul(this._Q64).toFixed(0))}};Po._Q64=new go.default(new Si.default(1).shln(64).toString());var Ut=require("@solana/spl-token"),Se=W(require("bn.js")),Ki=require("@solana/web3.js");var bc=W(require("decimal.js")),wT={initPriceX64:new Se.default("515752397214619"),supply:new Se.default(1e15),totalSellA:new Se.default(7931e11),totalFundRaisingB:new Se.default(85e9),totalFundRaisingBUSD:new Se.default(125e8),totalLockedAmount:new Se.default("0"),cliffPeriod:new Se.default("0"),unlockPeriod:new Se.default("0"),decimals:6,virtualA:new Se.default("1073471847374405"),virtualB:new Se.default("30050573465"),realA:new Se.default(0),realB:new Se.default(0),protocolFee:new Se.default(0),platformId:new Ki.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Se.default(0),cliffPeriod:new Se.default(0),unlockPeriod:new Se.default(0),startTime:new Se.default(0),totalAllocatedShare:new Se.default(0)}},kT=new Se.default(1e4);var gc={[yr.toBase58()]:3};var Pc=O([te(5),te(8),h("ownAddress"),m("vaultSignerNonce"),h("baseMint"),h("quoteMint"),h("baseVault"),m("baseDepositsTotal"),m("baseFeesAccrued"),h("quoteVault"),m("quoteDepositsTotal"),m("quoteFeesAccrued"),m("quoteDustThreshold"),h("requestQueue"),h("eventQueue"),h("bids"),h("asks"),m("baseLotSize"),m("quoteLotSize"),m("feeRateBps"),m("referrerRebatesAccrued"),te(7)]);var Ac=require("@solana/web3.js");var YT=oe("Serum");var xi=require("@solana/spl-token"),Ci=require("@solana/web3.js"),wc=W(require("bn.js"));var Uh=new ca.default(0);var xt=require("@solana/web3.js"),la=require("@solana/spl-token"),Ri=W(require("bn.js"));var _e=class extends We{static getPdaPoolId(e,t){return ue([_e.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return ue([_e.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ri.default(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:i}){if(n.length===0)return[];let r=n.map(u=>_e.getPdaPoolId(t,u).publicKey),a=[];for(let u=0;u<_e.VERSION_PROJECT.length;u++)a.push(...r.map(p=>_e.getPdaOwnerId(t,p,o,u).publicKey));let s=await De(e,[...r,...a]),c=[];for(let u=0;u<s.length;u++){let p=Math.floor(u/n.length),g=u%n.length,d=r[g],f=a[u],y=s[g],b=s[n.length+u];if(!(y&&b)||y.data.length!==_e.POOL_LAYOUT.span||b.data.length!==_e.OWNER_LAYOUT.span)continue;let w=_e.POOL_LAYOUT.decode(y.data),A=_e.OWNER_LAYOUT.decode(b.data),T=w.openTime.toNumber(),I=w.endTime.toNumber(),P=A.tokenInfo.map(S=>S.debtAmount.gt(new Ri.default(0))).filter(S=>!S).length!==3,k=i>T&&i<I&&w.status===1,B=P&&k;c.push({programId:t,poolId:d,ammId:w.ammId,ownerAccountId:f,snapshotLpAmount:A.lpAmount,project:_e.VERSION_PROJECT[p],openTime:T,endTime:I,canClaim:B,canClaimErrorType:P?k?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:w.tokenInfo.map((S,x)=>({mintAddress:S.mintAddress,mintVault:S.mintVault,mintDecimals:S.mintDecimals,perLpLoss:S.perLpLoss,debtAmount:A.tokenInfo[x].debtAmount.add(A.tokenInfo[x].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let o=this.createTxBuilder(n),i=t.wallet||this.scope.ownerPubKey,r=[];for(let c of e.tokenInfo){let{account:u,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:c.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:c.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!c.mintAddress.equals(Le.WSOL.mint),associatedOnly:c.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});p&&o.addInstruction(p),r.push(u)}o.addInstruction({instructions:[_e.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:r}})]});let{transaction:a,signers:s}=o.build();return[{transaction:a,signer:s}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let o=this.createTxBuilder(n),i=t.wallet||this.scope.ownerPubKey,r={};for(let u of e){let p=[];for(let g of u.tokenInfo){let{account:d,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!g.mintAddress.equals(Le.WSOL.mint),associatedOnly:g.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});f&&o.addInstruction(f),d&&(r[g.mintAddress.toString()]=d,p.push(d))}o.addInstruction({instructions:[_e.makeClaimInstruction({programId:u.programId,poolInfo:u,ownerInfo:{wallet:i,ownerPda:u.ownerAccountId,claimAddress:p}})]})}let{transaction:a,signers:s}=o.build(),c=o.allInstructions;return Fo(c,[i,...s.map(u=>u.publicKey)])?[{transaction:a,signer:s}]:[{transaction:new xt.Transaction().add(...c.slice(0,o.AllTxData.instructions.length-1)),signer:s},{transaction:new xt.Transaction().add(...c.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new xt.Transaction().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=O([]),i=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(s=>({pubkey:s,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:s})=>({pubkey:s,isSigner:!1,isWritable:!0})),{pubkey:la.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 xt.TransactionInstruction({keys:i,programId:e,data:a})}},ct=_e;ct.CLAIMED_NUM=3,ct.POOL_LAYOUT=O([te(8),N("bump"),N("status"),m("openTime"),m("endTime"),h("ammId"),E(O([N("mintDecimals"),h("mintAddress"),h("mintVault"),m("perLpLoss"),m("totalClaimedAmount")]),_e.CLAIMED_NUM,"tokenInfo"),E(m(),10,"padding")]),ct.OWNER_LAYOUT=O([te(8),N("bump"),N("version"),h("poolId"),h("owner"),m("lpAmount"),E(O([h("mintAddress"),m("debtAmount"),m("claimedAmount")]),_e.CLAIMED_NUM,"tokenInfo"),E(m(),4,"padding")]),ct.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new xt.PublicKey(e)),ct.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ct.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var Tc=require("@solana/web3.js"),Mn=require("@solana/spl-token");var IB=new Ct.default(2),BB=new Ct.default(3),SB=new Ct.default(5),So=new Ct.default(10),KB=new Ct.default(100),xB=new Ct.default(1e3),CB=new Ct.default(1e4);function Lo(l){return So.pow(xe(l))}function ho(l,e=1,t=[]){let n=[...l];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var ce=require("@solana/spl-token"),R=require("@solana/web3.js"),ke=W(require("bn.js")),bt=W(require("decimal.js"));var Fn=class extends We{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||R.PublicKey.default,mint1:o,mint2:i,ammConfig:r,initialPrice:a,computeBudgetConfig:s,txVersion:c,txTipConfig:u,feePayer:p}=e,g=this.createTxBuilder(p),[d,f,y]=new ke.default(new R.PublicKey(o.address).toBuffer()).gt(new ke.default(new R.PublicKey(i.address).toBuffer()))?[i,o,new bt.default(1).div(a)]:[o,i,a],b=G.priceToSqrtPriceX64(y,d.decimals,f.decimals),w=[],A=[];d.programId===ce.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Kt(t,new R.PublicKey(d.address)).publicKey),f.programId===ce.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Kt(t,new R.PublicKey(f.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(A)).forEach((k,B)=>{k&&w.push(A[B])});let I=await J.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:f,ammConfigId:r.id,initialPriceX64:b,extendMintAccount:w});return g.addInstruction(I),g.addCustomComputeBudget(s),g.addTipInstruction(u),g.versionBuild({txVersion:c,extInfo:{address:q(M({},I.address),{observationId:I.address.observationId.toBase58(),exBitmapAccount:I.address.exBitmapAccount.toBase58(),programId:t.toString(),id:I.address.poolId.toString(),mintA:d,mintB:f,openTime:"0",vault:{A:I.address.mintAVault.toString(),B:I.address.mintBVault.toString()},rewardInfos:[],config:{id:r.id.toString(),index:r.index,protocolFeeRate:r.protocolFeeRate,tradeFeeRate:r.tradeFeeRate,tickSpacing:r.tickSpacing,fundFeeRate:r.fundFeeRate,description:r.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:I.address.poolId.toString(),mintA:d,mintB:f,feeRate:r.tradeFeeRate,openTime:"0",programId:t.toString(),price:y.toNumber(),config:{id:r.id.toString(),index:r.index,protocolFeeRate:r.protocolFeeRate,tradeFeeRate:r.tradeFeeRate,tickSpacing:r.tickSpacing,fundFeeRate:r.fundFeeRate,description:r.description,defaultRange:0,defaultRangePoint:[]},feeOn:"Both",hasDynamicFee:!1,launchMigratePool:!1,burnPercent:0,tips:[]},Bn)}})}async createCustomizablePool(e){var x;let{programId:t,owner:n=((x=this.scope.owner)==null?void 0:x.publicKey)||R.PublicKey.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:s=0,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:p,txTipConfig:g,feePayer:d,addSupportMintExt:f}=e,y=this.createTxBuilder(d),[b,w,A]=new ke.default(new R.PublicKey(o.address).toBuffer()).gt(new ke.default(new R.PublicKey(i.address).toBuffer()))?[i,o,new bt.default(1).div(r)]:[o,i,r],T=G.priceToSqrtPriceX64(A,b.decimals,w.decimals),I=[],P=[];f&&(b.programId===ce.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Kt(t,new R.PublicKey(b.address)).publicKey),w.programId===ce.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Kt(t,new R.PublicKey(w.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(P)).forEach((U,V)=>{U&&I.push(P[V])}));let{address:k}=await J.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:w,ammConfigId:a.id,initialPriceX64:T,extendMintAccount:I}),B=[];if(c){if(!await this.scope.connection.getAccountInfo(c))throw new Error("Dynamic Fee Config not found. Run 03_admin_create_dynamic_fee_config.ts first.");console.log("Dynamic Fee Config",c.toBase58()),B.push({pubkey:c,isSigner:!1,isWritable:!1})}let S=J.createCustomizablePoolInstruction(t,k.poolId,this.scope.ownerPubKey,a.id,k.mintA,k.mintB,k.mintAVault,k.mintBVault,k.observationId,k.exBitmapAccount,k.mintAProgram,k.mintBProgram,T,s,[...I,...B.map(L=>L.pubkey)],c);return y.addInstruction({instructions:[S]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion:p,extInfo:{address:q(M({},k),{observationId:k.observationId.toBase58(),exBitmapAccount:k.exBitmapAccount.toBase58(),programId:t.toString(),id:k.poolId.toString(),mintA:b,mintB:w,openTime:"0",vault:{A:k.mintAVault.toString(),B:k.mintBVault.toString()},rewardInfos:[],config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:k.poolId.toString(),mintA:b,mintB:w,feeRate:a.tradeFeeRate,openTime:"0",programId:t.toString(),price:A.toNumber(),config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0,collectFeeOn:s,feeOn:s===0?"Both":s===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},Bn)}})}async createPermissionedPool(e){var U;let{programId:t,owner:n=((U=this.scope.owner)==null?void 0:U.publicKey)||R.PublicKey.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:s=0,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:p,txTipConfig:g,feePayer:d,addSupportMintExt:f}=e,y=this.createTxBuilder(d),[b,w,A]=new ke.default(new R.PublicKey(o.address).toBuffer()).gt(new ke.default(new R.PublicKey(i.address).toBuffer()))?[i,o,new bt.default(1).div(r)]:[o,i,r],T=G.priceToSqrtPriceX64(A,b.decimals,w.decimals),I=[],P=[];f&&(b.programId===ce.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Kt(t,new R.PublicKey(b.address)).publicKey),w.programId===ce.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Kt(t,new R.PublicKey(w.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(P)).forEach((F,v)=>{F&&I.push(P[v])}));let k=d!=null?d:this.scope.ownerPubKey,B=Math.floor(Math.random()*Math.pow(2,16))+1,{address:S}=await J.createPermissionedPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:w,ammConfigId:a.id,initialPriceX64:T,extendMintAccount:I,payer:k,seedIndex:B}),x=[];if(c){if(!await this.scope.connection.getAccountInfo(c))throw new Error("Dynamic Fee Config not found. Run 03_admin_create_dynamic_fee_config.ts first.");console.log("Dynamic Fee Config",c.toBase58()),x.push({pubkey:c,isSigner:!1,isWritable:!1})}let L=J.createPermissionedPoolInstruction(t,k,k,S.permission,a.id,S.poolId,S.mintA,S.mintB,S.mintAVault,S.mintBVault,S.observationId,S.exBitmapAccount,S.mintAProgram,S.mintBProgram,T,s,B,[...I,...x.map(V=>V.pubkey)],c);return y.addInstruction({instructions:[L]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion:p,extInfo:{address:q(M({},S),{observationId:S.observationId.toBase58(),exBitmapAccount:S.exBitmapAccount.toBase58(),programId:t.toString(),id:S.poolId.toString(),mintA:b,mintB:w,openTime:"0",vault:{A:S.mintAVault.toString(),B:S.mintBVault.toString()},rewardInfos:[],config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:S.poolId.toString(),mintA:b,mintB:w,feeRate:a.tradeFeeRate,openTime:"0",programId:t.toString(),price:A.toNumber(),config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0,collectFeeOn:s,feeOn:s===0?"Both":s===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},Bn)}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r=null,baseAmount:a,otherAmountMax:s,liquidity:c=new ke.default(0),nft2022:u,associatedOnly:p=!0,checkCreateATAOwner:g=!1,withMetadata:d="create",getEphemeralSigners:f,computeBudgetConfig:y,txTipConfig:b,txVersion:w,feePayer:A}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let T=this.createTxBuilder(A),I=null,P=null,k=n.useSOLBalance&&e.mintA.address===Z.toString(),B=n.useSOLBalance&&e.mintB.address===Z.toString(),[S,x]=r==="MintA"?[a,s]:[s,a],{account:L,instructionParams:U}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||S.isZero()?{payer:this.scope.ownerPubKey,amount:S}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:p,checkCreateATAOwner:g});L&&(I=L),T.addInstruction(U||{});let{account:V,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:B||x.isZero()?{payer:this.scope.ownerPubKey,amount:x}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:p,checkCreateATAOwner:g});V&&(P=V),T.addInstruction(F||{}),(!I||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:I==null?void 0:I.toBase58(),ownerTokenAccountB:P==null?void 0:P.toBase58()});let v=t!=null?t:await this.getClmmPoolKeys(e.id.toString()),_=await J.openPositionFromBaseInstructions({poolInfo:e,poolKeys:v,ownerInfo:q(M({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:P}),tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata:d,getEphemeralSigners:f,nft2022:u});return T.addInstruction(_),T.addCustomComputeBudget(y),T.addTipInstruction(b),T.versionBuild({txVersion:w,extInfo:M({},_.address)})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:o,amountMaxB:i,base:r=null,tickLower:a,tickUpper:s,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:p=!1,withMetadata:g="create",txVersion:d,computeBudgetConfig:f,txTipConfig:y,getEphemeralSigners:b,nft2022:w,feePayer:A}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let T=this.createTxBuilder(A),I=null,P=null,k=n.useSOLBalance&&e.mintA.address===Z.toBase58(),B=n.useSOLBalance&&e.mintB.address===Z.toBase58(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:u,checkCreateATAOwner:p});S&&(I=S),T.addInstruction(x||{});let{account:L,instructionParams:U}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:B||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:u,checkCreateATAOwner:p});L&&(P=L),T.addInstruction(U||{}),(I===void 0||P===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id.toString()),F=await J.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:V,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:P},tickLower:a,tickUpper:s,liquidity:c,amountMaxA:o,amountMaxB:i,base:r,withMetadata:g,getEphemeralSigners:b,nft2022:w});return T.addInstruction(F),T.addCustomComputeBudget(f),T.addTipInstruction(y),T.versionBuild({txVersion:d,extInfo:{address:F.address}})}async increasePositionFromLiquidity(e){var L;let{poolInfo:t,poolKeys:n,ownerPosition:o,amountMaxA:i,amountMaxB:r,liquidity:a,ownerInfo:s,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:p,txTipConfig:g,txVersion:d,feePayer:f}=e,y=this.createTxBuilder(f),b,w,A=s.useSOLBalance&&t.mintA.address===Z.toString(),T=s.useSOLBalance&&t.mintB.address===Z.toString(),{account:I,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R.PublicKey(t.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:A||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!A,associatedOnly:A?!1:c,checkCreateATAOwner:u});I&&(b=I),y.addInstruction(P||{});let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,notUseTokenAccount:T,skipCloseAccount:!T,associatedOnly:T?!1:c,checkCreateATAOwner:u});k&&(w=k),y.addInstruction(B||{}),!b&&!w&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=J.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:w},liquidity:a,amountMaxA:i,amountMaxB:r,nft2022:(L=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:L.owner.equals(ce.TOKEN_2022_PROGRAM_ID)});return y.addInstruction(x),y.addCustomComputeBudget(p),y.addTipInstruction(g),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromBase(e){var x;let{poolInfo:t,ownerPosition:n,base:o,baseAmount:i,otherAmountMax:r,ownerInfo:a,associatedOnly:s=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:u,txTipConfig:p,txVersion:g,feePayer:d}=e,f=this.createTxBuilder(d),y,b,w=a.useSOLBalance&&t.mintA.address===Z.toString(),A=a.useSOLBalance&&t.mintB.address===Z.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R.PublicKey(t.mintA.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,createInfo:w||(o==="MintA"?i:r).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?i:r}:void 0,skipCloseAccount:!w,associatedOnly:w?!1:s,checkCreateATAOwner:c});T&&(y=T),f.addInstruction(I||{});let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(o==="MintA"?r:i).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?r:i}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:c});P&&(b=P),f.addInstruction(k||{}),!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=await this.getClmmPoolKeys(t.id),S=J.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},base:o,baseAmount:i,otherAmountMax:r,nft2022:(x=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:x.owner.equals(ce.TOKEN_2022_PROGRAM_ID)});return f.addInstruction(S),f.addCustomComputeBudget(u),f.addTipInstruction(p),f.versionBuild({txVersion:g,extInfo:{address:S.address}})}async decreaseLiquidity(e){var F;let{poolInfo:t,poolKeys:n,ownerPosition:o,ownerInfo:i,amountMinA:r,amountMinB:a,liquidity:s,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:p,txTipConfig:g,txVersion:d,feePayer:f}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let y=this.createTxBuilder(f),b=i.useSOLBalance&&t.mintA.address===Z.toString(),w=i.useSOLBalance&&t.mintB.address===Z.toString(),A,T,{account:I,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R.PublicKey(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});A=I,P&&y.addInstruction(P);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R.PublicKey(t.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!w,associatedOnly:w?!1:c,checkCreateATAOwner:u});T=k,B&&y.addInstruction(B);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=[];for(let v of S.rewardInfos){let _=i.useSOLBalance&&v.mint.address===Z.toString(),$;if(v.mint.address===t.mintA.address)$=A;else if(v.mint.address===t.mintB.address)$=T;else{let{account:be,instructionParams:pe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(v.mint.programId),mint:new R.PublicKey(v.mint.address),notUseTokenAccount:_,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!_,associatedOnly:_?!1:c,checkCreateATAOwner:u});$=be,pe&&y.addInstruction(pe)}x.push($)}!A&&!T&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let L=(F=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:F.owner.equals(ce.TOKEN_2022_PROGRAM_ID),U=await J.decreaseLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:T,rewardAccounts:x},liquidity:s,amountMinA:r,amountMinB:a,nft2022:L});y.addInstruction({instructions:U.instructions,instructionTypes:[ee.ClmmDecreasePosition]});let V=M({},U.address);if(i.closePosition){let v=await J.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o,nft2022:L});y.addInstruction({endInstructions:v.instructions,endInstructionTypes:v.instructionTypes}),V=M(M({},V),v.address)}return y.addCustomComputeBudget(p),y.addTipInstruction(g),y.versionBuild({txVersion:d,extInfo:{address:V}})}async lockPosition(e){var f;let{programId:t=gn,authProgramId:n=jn,poolProgramId:o=ht,ownerPosition:i,payer:r,computeBudgetConfig:a,txTipConfig:s,txVersion:c,getEphemeralSigners:u,feePayer:p}=e,g=this.createTxBuilder(p),d=await J.makeLockPositions({programId:t,authProgramId:n,poolProgramId:o,wallet:this.scope.ownerPubKey,payer:r!=null?r:this.scope.ownerPubKey,nftMint:i.nftMint,getEphemeralSigners:u,nft2022:(f=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:f.owner.equals(ce.TOKEN_2022_PROGRAM_ID)});return g.addInstruction(d),g.addCustomComputeBudget(a),g.addTipInstruction(s),g.versionBuild({txVersion:c,extInfo:d.address})}async harvestLockPosition(e){let{programId:t=gn,authProgramId:n=jn,clmmProgram:o=ht,poolKeys:i,lockData:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:s=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:u,txTipConfig:p,txVersion:g,feePayer:d}=e,f=i||await this.getClmmPoolKeys(r.poolId.toString()),y=this.createTxBuilder(d),b=await this.scope.connection.getAccountInfo(r.positionId);b||this.logger.logWithError("position not found",r.positionId);let w=Sn.decode(b.data),A=a.useSOLBalance&&f.mintA.address===Z.toString(),T=a.useSOLBalance&&f.mintB.address===Z.toString(),I,P,{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new R.PublicKey(f.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:c});I=k,B&&y.addInstruction(B);let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new R.PublicKey(f.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!T,associatedOnly:T?!1:s,checkCreateATAOwner:c});P=S,x&&y.addInstruction(x);let L={},U=[];for(let Ee of f.rewardInfos){let Fe=a.useSOLBalance&&Ee.mint.address===Z.toString(),Ke=L[Ee.mint.address];if(!Ke){let{account:Ao,instructionParams:Li}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(Ee.mint.programId),mint:new R.PublicKey(Ee.mint.address),notUseTokenAccount:Fe,owner:this.scope.ownerPubKey,skipCloseAccount:!Fe,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Fe?!1:s});Ke=Ao,Li&&y.addInstruction(Li)}L[Ee.mint.address]=Ke,U.push(Ke)}let V=Vt(t,r.lockNftMint).publicKey,F=j(this.scope.ownerPubKey,r.lockNftMint,ce.TOKEN_PROGRAM_ID).publicKey,v=H.getTickArrayStartIndex(w.tickLower,f.config.tickSpacing),_=H.getTickArrayStartIndex(w.tickUpper,f.config.tickSpacing),{publicKey:$}=re(new R.PublicKey(f.programId),r.poolId,v),{publicKey:be}=re(new R.PublicKey(f.programId),r.poolId,_),{publicKey:pe}=ot(new R.PublicKey(f.programId),r.poolId,w.tickLower,w.tickUpper),ge=[];for(let Ee=0;Ee<f.rewardInfos.length;Ee++){let Fe=f.rewardInfos[Ee].mint.address,Ke=L[Fe];Ke&&ge.push({poolRewardVault:new R.PublicKey(f.rewardInfos[Ee].vault),ownerRewardVault:Ke,rewardMint:new R.PublicKey(Fe)})}let At=await J.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:V,clmmProgram:o,lockOwner:this.scope.ownerPubKey,lockNftMint:r.lockNftMint,lockNftAccount:F,positionNftAccount:r.nftAccount,positionId:r.positionId,poolId:r.poolId,protocolPosition:pe,vaultA:new R.PublicKey(f.vault.A),vaultB:new R.PublicKey(f.vault.B),tickArrayLower:$,tickArrayUpper:be,userVaultA:I,userVaultB:P,mintA:new R.PublicKey(f.mintA.address),mintB:new R.PublicKey(f.mintB.address),rewardAccounts:ge,exTickArrayBitmap:ye(o,r.poolId).publicKey});return y.addInstruction({instructions:[At],instructionTypes:[ee.ClmmHarvestLockPosition]}),y.addCustomComputeBudget(u),y.addTipInstruction(p),y.versionBuild({txVersion:g})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:o,computeBudgetConfig:i,txTipConfig:r,feePayer:a}){var p;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let s=this.createTxBuilder(a),c=t!=null?t:await this.getClmmPoolKeys(e.id),u=J.closePositionInstructions({poolInfo:e,poolKeys:c,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n,nft2022:(p=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:p.owner.equals(ce.TOKEN_2022_PROGRAM_ID)});return s.addCustomComputeBudget(i),s.addTipInstruction(r),s.addInstruction(u).versionBuild({txVersion:o,extInfo:{address:u.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txVersion:a,feePayer:s}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(s),u=t.useSOLBalance&&n.mint.address.toString()===Z.toString(),p=n.perSecond.mul(n.endTime-n.openTime),{account:g,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(n.mint.programId),mint:new R.PublicKey(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ke.default(new bt.default(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:o,checkCreateATAOwner:i});d&&c.addInstruction(d),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=J.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{programId:new R.PublicKey(n.mint.programId),mint:new R.PublicKey(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:_t(n.perSecond)}});return c.addInstruction(y),c.addCustomComputeBudget(r),c.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:a,txTipConfig:s,txVersion:c,feePayer:u}){for(let d of o)d.endTime<=d.openTime&&this.logAndCreateError("reward time error","rewardInfo",d);let p=this.createTxBuilder(u),g={};for(let d of o){let f=n.useSOLBalance&&d.mint.address===Z.toString(),y=d.perSecond.mul(d.endTime-d.openTime),{account:b,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(d.mint.programId),mint:new R.PublicKey(d.mint.address),notUseTokenAccount:!!f,skipCloseAccount:!f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new ke.default(new bt.default(y.toFixed(0)).gte(y)?y.toFixed(0):y.add(1).toFixed(0))}:void 0,associatedOnly:f?!1:i,checkCreateATAOwner:r});w&&p.addInstruction(w),b||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let A=t!=null?t:await this.getClmmPoolKeys(e.id),T=J.initRewardInstructions({poolInfo:e,poolKeys:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:b},rewardInfo:{programId:new R.PublicKey(d.mint.programId),mint:new R.PublicKey(d.mint.address),openTime:d.openTime,endTime:d.endTime,emissionsPerSecondX64:_t(d.perSecond)}});g=M(M({},g),T.address),p.addInstruction(T)}return p.addCustomComputeBudget(a),p.addTipInstruction(s),p.versionBuild({txVersion:c,extInfo:{address:g}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,txVersion:s,feePayer:c}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(c),p=t.useSOLBalance&&n.mint.equals(Z),{account:g,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ke.default(new bt.default(n.perSecond.mul(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.mul(n.endTime-n.openTime))?n.perSecond.mul(n.endTime-n.openTime).toFixed(0):n.perSecond.mul(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:p?!1:o,checkCreateATAOwner:i});d&&u.addInstruction(d),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=J.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:_t(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(r),u.addTipInstruction(a),u.versionBuild({txVersion:s,extInfo:{address:y.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:a,txTipConfig:s,txVersion:c,feePayer:u}){let p=this.createTxBuilder(u),g={};for(let d of o){d.endTime<=d.openTime&&this.logAndCreateError("reward time error","rewardInfo",d);let f=n.useSOLBalance&&d.mint.address===Z.toString(),{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(d.mint.programId),mint:new R.PublicKey(d.mint.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new ke.default(new bt.default(d.perSecond.mul(d.endTime-d.openTime).toFixed(0)).gte(d.perSecond.mul(d.endTime-d.openTime))?d.perSecond.mul(d.endTime-d.openTime).toFixed(0):d.perSecond.mul(d.endTime-d.openTime).add(1).toFixed(0))}:void 0,associatedOnly:f?!1:i,checkCreateATAOwner:r});b&&p.addInstruction(b),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let w=t!=null?t:await this.getClmmPoolKeys(e.id),A=J.setRewardInstructions({poolInfo:e,poolKeys:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{mint:new R.PublicKey(d.mint.address),openTime:d.openTime,endTime:d.endTime,emissionsPerSecondX64:_t(d.perSecond)}});p.addInstruction(A),g=M(M({},g),A.address)}return p.addCustomComputeBudget(a),p.addTipInstruction(s),p.versionBuild({txVersion:c,extInfo:{address:g}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,txVersion:s,feePayer:c}){let u=e.rewardDefaultInfos.find(w=>w.mint.address===n.toString());u||this.logAndCreateError("reward mint error","not found reward mint",n);let p=this.createTxBuilder(c),g=t.useSOLBalance&&n.equals(Z),{account:d,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(u.mint.programId),mint:n,notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:o,checkCreateATAOwner:i});f&&p.addInstruction(f),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),b=J.collectRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardMint:n});return p.addInstruction(b),p.addCustomComputeBudget(r),p.addTipInstruction(a),p.versionBuild({txVersion:s,extInfo:{address:b.address}})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,feePayer:s}){let c=this.createTxBuilder(s),u={};for(let p of n){let g=e.rewardDefaultInfos.find(A=>A.mint.address===p.toString());if(!g){this.logAndCreateError("reward mint error","not found reward mint",p);continue}let d=t.useSOLBalance&&p.equals(Z),{account:f,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(g.mint.programId),mint:p,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:o,checkCreateATAOwner:i});f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),y&&c.addInstruction(y);let b=await this.getClmmPoolKeys(e.id),w=J.collectRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardMint:p});c.addInstruction(w),u=M(M({},u),w.address)}return c.addCustomComputeBudget(r),c.addTipInstruction(a),c.build({address:u})}async openLimitOrder({poolInfo:e,baseIn:t=!0,orderTick:n,amount:o,noneIndex:i=0,tickArrayBitmap:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:s=!0,feePayer:c,computeBudgetConfig:u,txTipConfig:p,txVersion:g}){let d=new R.PublicKey(e.id),f=new R.PublicKey(e.programId),y=t?new R.PublicKey(e.mintA.address):new R.PublicKey(e.mintB.address),b=t?new R.PublicKey(e.mintB.address):new R.PublicKey(e.mintA.address),w=new R.PublicKey(e[t?"mintA":"mintB"].programId),A=new R.PublicKey(e[t?"mintB":"mintA"].programId),T=y.equals(Z),I=b.equals(Z),P=a.useSOLBalance&&T,k=a.useSOLBalance&&I,B=this.createTxBuilder(),S=P||!s?void 0:j(this.scope.ownerPubKey,y,w).publicKey;if(S)B.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,S,this.scope.ownerPubKey,y,w)]});else{let{account:pe,instructionParams:ge}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:w,mint:y,notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:o},associatedOnly:!P});S=pe,ge&&B.addInstruction(ge)}let x=k||!s?void 0:j(this.scope.ownerPubKey,b,A).publicKey;if(x)B.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,x,this.scope.ownerPubKey,b,A)]});else{let{account:pe,instructionParams:ge}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:A,mint:b,notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:o},associatedOnly:!k});x=pe,ge&&B.addInstruction(ge)}let L=fi(f,this.scope.ownerPubKey,i).publicKey,U=await this.scope.connection.getAccountInfo(L),V=U?ni.decode(U.data).orderNonce:new ke.default(0),F=pi(f,c||this.scope.ownerPubKey,L,V).publicKey,v=H.getTickArrayStartIndex(n,e.config.tickSpacing),_=re(f,d,v).publicKey,$=Xe(f,d,new R.PublicKey(e[t?"mintA":"mintB"].address)).publicKey,be=Xe(f,d,new R.PublicKey(e[t?"mintB":"mintA"].address)).publicKey;return B.addInstruction({instructions:[J.openLimitOrderInstruction(f,c||this.scope.ownerPubKey,d,_,L,F,S,x,$,be,y,b,w,i,t,n,o,r)]}),B.addCustomComputeBudget(u),B.addTipInstruction(p),B.versionBuild({txVersion:g,extInfo:{limitOrder:F}})}async increaseLimitOrder({poolInfo:e,limitOrder:t,amount:n,ownerInfo:o={useSOLBalance:!0},associatedOnly:i=!0,feePayer:r,computeBudgetConfig:a,txTipConfig:s,txVersion:c}){let u=new R.PublicKey(e.id),p=new R.PublicKey(e.programId),g=await this.scope.connection.getAccountInfo(t);g||this.logAndCreateError(`limit order ${t.toBase58()} not exist`);let d=Bt.decode(g.data),f=d.zeroForOne?new R.PublicKey(e.mintA.address):new R.PublicKey(e.mintB.address),y=new R.PublicKey(e[d.zeroForOne?"mintA":"mintB"].programId),b=f.equals(Z),w=o.useSOLBalance&&b,A=this.createTxBuilder(),T=w||!i?void 0:j(this.scope.ownerPubKey,f,y).publicKey;if(T)A.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,T,this.scope.ownerPubKey,f,y)]});else{let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y,mint:f,notUseTokenAccount:w,owner:this.scope.ownerPubKey,skipCloseAccount:!w,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:n},associatedOnly:!w});T=B,S&&A.addInstruction(S)}let I=Xe(p,u,new R.PublicKey(e[d.zeroForOne?"mintA":"mintB"].address)).publicKey,P=H.getTickArrayStartIndex(d.tick,e.config.tickSpacing),k=re(p,u,P).publicKey;return A.addInstruction({instructions:[J.increaseLimitOrderInstruction(p,r||this.scope.ownerPubKey,d.poolId,k,t,T,I,f,y,n)]}),A.addCustomComputeBudget(a),A.addTipInstruction(s),A.versionBuild({txVersion:c})}async decreaseLimitOrder({poolInfo:e,limitOrder:t,limitOrderInfo:n,amount:o,slippage:i=1e3,tickArrayBitmap:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:s=!0,feePayer:c,computeBudgetConfig:u,txTipConfig:p,txVersion:g,forerunCreate:d}){let f=new R.PublicKey(e.id),y=new R.PublicKey(e.programId),b=n;if(!b){let pe=await this.scope.connection.getAccountInfo(t);pe||this.logAndCreateError(`limit order ${t.toBase58()} not exist`),b=Bt.decode(pe.data)}let w=o.muln(1e4-i).divn(1e4),A=gt.getUnFilledAmount({orderInfo:b});(A.isZero()||o.gt(A))&&this.logAndCreateError(`amount should be less than unfulfilled amount: ${A.toString()}, amount: ${o.toString()}`);let[T,I]=b.zeroForOne?[new R.PublicKey(e.mintA.address),new R.PublicKey(e.mintB.address)]:[new R.PublicKey(e.mintB.address),new R.PublicKey(e.mintA.address)],[P,k]=b.zeroForOne?[new R.PublicKey(e.mintA.programId),new R.PublicKey(e.mintB.programId)]:[new R.PublicKey(e.mintB.programId),new R.PublicKey(e.mintA.programId)],[B,S]=[T.equals(Z),I.equals(Z)],[x,L]=[a.useSOLBalance&&B,a.useSOLBalance&&S],U=this.createTxBuilder(),V=x||!s?void 0:j(this.scope.ownerPubKey,T,P).publicKey,F=L||!s?void 0:j(this.scope.ownerPubKey,I,k).publicKey;if(V)U.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,V,this.scope.ownerPubKey,T,P)]});else{let{account:pe,instructionParams:ge}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:P,mint:T,notUseTokenAccount:x,owner:this.scope.ownerPubKey,skipCloseAccount:!x,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!x});V=pe,ge&&U.addInstruction(ge)}if(F)U.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,F,this.scope.ownerPubKey,I,k)]});else{let{account:pe,instructionParams:ge}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k,mint:I,notUseTokenAccount:L,owner:this.scope.ownerPubKey,skipCloseAccount:!L,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!L});F=pe,ge&&U.addInstruction(ge)}let[v,_]=[Xe(y,f,T).publicKey,Xe(y,f,I).publicKey],$=H.getTickArrayStartIndex(b.tick,e.config.tickSpacing),be=re(y,f,$).publicKey;return U.addInstruction({instructions:[J.decreaseLimitOrderInstruction(y,c||this.scope.ownerPubKey,f,be,t,V,F,v,_,T,I,o,w,r)]}),U.addCustomComputeBudget(u),U.addTipInstruction(p),U.versionBuild({txVersion:g,extInfo:{forerunCreate:d}})}async closeLimitOrder({programId:e=ht,limitOrder:t,autoWithdraw:n=!0,tickArrayBitmap:o,slippage:i=0,feePayer:r,computeBudgetConfig:a,txTipConfig:s,txVersion:c}){let u=await this.scope.connection.getAccountInfo(t);u||this.logAndCreateError(`limit order ${t.toBase58()} not exist`);let p=Bt.decode(u.data),g=gt.getUnFilledAmount({orderInfo:p});!n&&!g.isZero()&&this.logAndCreateError(`unfulfilled amount should be 0, (${g.toString()} remaining), please withdraw first or set autoWithdraw: true`);let d=this.createTxBuilder(),f=(await this.scope.api.fetchPoolById({ids:p.poolId.toBase58()}))[0];f||(f=(await this.getSimplePoolInfo(p.poolId)).poolInfo);let y=await Ge.fetchTickArrayInfo({connection:this.scope.connection,programId:e,poolId:p.poolId,tick:p.tick,tickSpacing:f.config.tickSpacing}),b=gt.settleFilledOrder({orderInfo:p,tickInfo:y.ticks.find(w=>w.tick===p.tick)});if(g.isZero()){if(!b.isZero()){let w=await this.settleLimitOrder({limitOrder:t});d.addInstruction(M({},w.builder.AllTxData))}}else{let{builder:w}=await this.decreaseLimitOrder({poolInfo:f,limitOrder:t,limitOrderInfo:p,amount:g,tickArrayBitmap:o,slippage:i,txVersion:0});d.addInstruction({instructions:w.allInstructions})}return d.addInstruction({instructions:[J.closeLimitOrderInstruction(e,r||this.scope.ownerPubKey,this.scope.ownerPubKey,t)]}),d.addCustomComputeBudget(a),d.addTipInstruction(s),d.versionBuild({txVersion:c})}async closeAllLimitOrder({programId:e=ht,limitOrders:t,autoWithdraw:n=!0,slippage:o=1e4,feePayer:i,computeBudgetConfig:r,txVersion:a}){let s=this.createTxBuilder(),u=(await De(this.scope.connection,t)).map((A,T)=>A?q(M({},Bt.decode(A.data)),{pda:t[T]}):null),p=u.filter(Boolean),g=p.map(A=>A.poolId.toBase58()),d=(await this.scope.api.fetchPoolById({ids:g.join(",")})).filter(Boolean),f={};d.forEach(A=>f[A.id]=A);let y=await Ge.fetchMultipleTickArrayInfo({connection:this.scope.connection,tickInfoList:p.map(A=>({programId:e,poolId:A.poolId,tick:A.tick,tickSpacing:f[A.poolId.toString()].config.tickSpacing}))}),b={};y.forEach((A,T)=>{!A||(b[p[T].pda.toBase58()]=A)});let w=0;for(let A of t){let T=u[w];if(!T){w++;continue}let I=gt.getUnFilledAmount({orderInfo:T});!n&&!I.isZero()&&this.logAndCreateError(`${A.toBase58()} order unfulfilled amount should be 0 (${I.toString()} remaining), please withdraw first or set autoWithdraw: true`);let P=f[T.poolId.toBase58()],k=b[A.toBase58()],B=gt.settleFilledOrder({orderInfo:T,tickInfo:k.ticks.find(S=>S.tick===T.tick)});if(I.isZero()){if(!B.isZero()){let S=await this.settleLimitOrder({limitOrder:A,forerunCreate:!0});s.addInstruction(M({},S.builder.AllTxData))}}else{let{builder:S}=await this.decreaseLimitOrder({poolInfo:P,limitOrder:A,limitOrderInfo:T,amount:I,slippage:o,txVersion:0,forerunCreate:!0});s.addInstruction({instructions:S.allInstructions})}s.addInstruction({instructions:[J.closeLimitOrderInstruction(e,i||this.scope.ownerPubKey,this.scope.ownerPubKey,A)]}),w++}return a===0?s.sizeCheckBuildV0({computeBudgetConfig:r}):s.sizeCheckBuild({computeBudgetConfig:r})}async settleLimitOrder({limitOrder:e,feePayer:t,ownerInfo:n={useSOLBalance:!0},associatedOnly:o=!0,computeBudgetConfig:i,txTipConfig:r,txVersion:a,forerunCreate:s}){let c=await this.scope.connection.getAccountInfo(e);c||this.logAndCreateError(`limit order ${e.toBase58()} not exist`);let u=Bt.decode(c.data),p=(await this.scope.api.fetchPoolById({ids:u.poolId.toBase58()}))[0];p||(p=(await this.getSimplePoolInfo(u.poolId)).poolInfo);let g=u.zeroForOne?p.mintB:p.mintA,[d,f]=[new R.PublicKey(g.address),new R.PublicKey(g.programId)],y=new R.PublicKey(p.programId),b=this.createTxBuilder(),w=d.equals(Z),A=n.useSOLBalance&&w,T=A||!o?void 0:j(this.scope.ownerPubKey,d,f).publicKey;if(T)b.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,T,this.scope.ownerPubKey,d,f)]});else{let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f,mint:d,notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!A});T=P,k&&b.addInstruction(k)}let I=H.getTickArrayStartIndex(u.tick,p.config.tickSpacing);return b.addInstruction({instructions:[J.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,u.poolId,re(y,u.poolId,I).publicKey,e,T,Xe(y,u.poolId,d).publicKey,d,f)]}),b.addCustomComputeBudget(i),b.addTipInstruction(r),b.versionBuild({txVersion:a,extInfo:{forerunCreate:s}})}async settleAllLimitOrder({limitOrders:e,feePayer:t,ownerInfo:n={useSOLBalance:!0},associatedOnly:o=!0,computeBudgetConfig:i,txVersion:r}){let a=await De(this.scope.connection,e),s=[],c=a.map((d,f)=>{if(!d)return;let y=Bt.decode(d.data);return s.push(y.poolId.toString()),q(M({},y),{pda:e[f]})}),u=await this.scope.api.fetchPoolById({ids:s.join(",")});u.filter(Boolean).length||(u=(await Promise.all(s.map(f=>this.getSimplePoolInfo(f)))).map(f=>f.poolInfo));let p=this.createTxBuilder(),g={};for(let d of c){if(!d)continue;let f=u.find(B=>B.id===d.poolId.toBase58());if(!f)continue;let y=new R.PublicKey(f.programId),b=new R.PublicKey(d.zeroForOne?f.mintB.address:f.mintA.address),w=b.equals(Z),A=n.useSOLBalance&&w,T=new R.PublicKey(w?ce.TOKEN_PROGRAM_ID:(await this.scope.token.getTokenInfo(b)).programId),I=g[b.toBase58()],P=A||!o?void 0:j(this.scope.ownerPubKey,b,T).publicKey;if(I)P=I;else{if(P)p.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,P,this.scope.ownerPubKey,b,T)]});else{let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:T,mint:b,notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!A});P=B,S&&p.addInstruction(S)}g[b.toBase58()]=P}let k=H.getTickArrayStartIndex(d.tick,f.config.tickSpacing);p.addInstruction({instructions:[J.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,d.poolId,re(y,d.poolId,k).publicKey,d.pda,P,Xe(y,d.poolId,b).publicKey,b,T)]})}return r===0?p.sizeCheckBuildV0({computeBudgetConfig:i}):p.sizeCheckBuild({computeBudgetConfig:i})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:o,amountOutMin:i,priceLimit:r,observationId:a,ownerInfo:s,remainingAccounts:c,associatedOnly:u=!0,checkCreateATAOwner:p=!1,txVersion:g,computeBudgetConfig:d,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),w=n.toString()===e.mintA.address.toString(),A=s.useSOLBalance&&e.mintA.address.toString()===Z.toBase58(),T=s.useSOLBalance&&e.mintB.address.toString()===Z.toBase58(),I;!r||r.equals(new bt.default(0))?I=w?je.add(new ke.default(1)):$e.sub(new ke.default(1)):I=G.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:A||!w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?o:0}:void 0,associatedOnly:A?!1:u,checkCreateATAOwner:p});P=S,x&&b.addInstruction(x)}let k;if(!k){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:T||w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?0:o}:void 0,associatedOnly:T?!1:u,checkCreateATAOwner:p});k=S,x&&b.addInstruction(x)}(!P||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.address,tokenB:e.mintB.address,ownerTokenAccountA:P,ownerTokenAccountB:k,mintAUseSOLBalance:A,mintBUseSOLBalance:T,associatedOnly:u});let B=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(J.makeSwapBaseInInstructions({poolInfo:q(M({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:B,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k},inputMint:new R.PublicKey(n),amountIn:o,amountOutMin:i,sqrtPriceLimitX64:D,remainingAccounts:c})),b.addCustomComputeBudget(d),b.addTipInstruction(f),b.versionBuild({txVersion:g})}async swapBaseOut({poolInfo:e,poolKeys:t,outputMint:n,amountOut:o,amountInMax:i,priceLimit:r,observationId:a,ownerInfo:s,remainingAccounts:c,associatedOnly:u=!0,checkCreateATAOwner:p=!1,txVersion:g,computeBudgetConfig:d,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),w=n.toString()===e.mintB.address.toString(),A=s.useSOLBalance&&e.mintA.address.toString()===Z.toBase58(),T=s.useSOLBalance&&e.mintB.address.toString()===Z.toBase58(),I;!r||r.equals(new bt.default(0))?I=w?je.add(new ke.default(1)):$e.sub(new ke.default(1)):I=G.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:A||!w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?i:0}:void 0,associatedOnly:A?!1:u,checkCreateATAOwner:p});P=S,x&&b.addInstruction(x)}let k;if(!k){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:T||w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?0:i}:void 0,associatedOnly:T?!1:u,checkCreateATAOwner:p});k=S,x&&b.addInstruction(x)}(!P||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.address,tokenB:e.mintB.address,ownerTokenAccountA:P,ownerTokenAccountB:k,mintAUseSOLBalance:A,mintBUseSOLBalance:T,associatedOnly:u});let B=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(J.makeSwapBaseOutInstructions({poolInfo:q(M({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:B,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k},outputMint:new R.PublicKey(n),amountOut:o,amountInMax:i,sqrtPriceLimitX64:D,remainingAccounts:c})),b.addCustomComputeBudget(d),b.addTipInstruction(f),b.versionBuild({txVersion:g})}async harvestAllRewards({allPoolInfo:e,allPositions:t,lockInfo:n,ownerInfo:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,programId:a,txVersion:s,computeBudgetConfig:c,feePayer:u,lockProgram:p=gn,lockAuth:g=jn,clmmProgram:d=ht}){var T,I;let f={};for(let P of this.scope.account.tokenAccountRawInfos)i?j(this.scope.ownerPubKey,P.accountInfo.mint,a).publicKey.equals(P.pubkey)&&(f[P.accountInfo.mint.toString()]=P.pubkey):f[P.accountInfo.mint.toString()]=P.pubkey;let y=Object.values(t).flat().map(P=>P.nftMint),b=await ze(this.scope.connection,y.map(P=>({pubkey:P}))),w={};b.forEach(P=>{var k,B;w[P.pubkey.toBase58()]=(B=(k=P==null?void 0:P.accountInfo)==null?void 0:k.owner)!=null?B:null});let A=this.createTxBuilder(u);for(let P of Object.values(e)){if(t[P.id]===void 0||!t[P.id].find(v=>!v.liquidity.isZero()||v.rewardInfos.find(_=>!_.rewardAmountOwed.isZero())))continue;let k=P,B=o.useSOLBalance&&k.mintA.address===Z.toString(),S=o.useSOLBalance&&k.mintB.address===Z.toString(),x=f[k.mintA.address];if(!x)if(B){let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintA.programId,mint:new R.PublicKey(k.mintA.address),notUseTokenAccount:B,owner:this.scope.ownerPubKey,skipCloseAccount:!B,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:B?!1:i,checkCreateATAOwner:r});x=v,_&&A.addInstruction(_)}else{let v=new R.PublicKey(k.mintA.address);x=this.scope.account.getAssociatedTokenAccount(v,new R.PublicKey(k.mintA.programId)),A.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,x,this.scope.ownerPubKey,v,new R.PublicKey(k.mintA.programId))]})}let L=f[k.mintB.address];if(!L)if(S){let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintB.programId,mint:new R.PublicKey(k.mintB.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,skipCloseAccount:!S,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:S?!1:i,checkCreateATAOwner:r});L=v,_&&A.addInstruction(_)}else{let v=new R.PublicKey(k.mintB.address);L=this.scope.account.getAssociatedTokenAccount(v,new R.PublicKey(k.mintB.programId)),A.addInstruction({instructions:[(0,ce.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,L,this.scope.ownerPubKey,v,new R.PublicKey(k.mintB.programId))]})}f[k.mintA.address]=x,f[k.mintB.address]=L;let U=[];for(let v of k.rewardDefaultInfos){let _=o.useSOLBalance&&v.mint.address===Z.toString(),$=f[v.mint.address];if(!$){let{account:be,instructionParams:pe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(v.mint.programId),mint:new R.PublicKey(v.mint.address),notUseTokenAccount:_,owner:this.scope.ownerPubKey,skipCloseAccount:!_,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:_?!1:i});$=be,pe&&A.addInstruction(pe)}f[v.mint.address]=$,U.push($)}let V=await this.getClmmPoolKeys(k.id),F=[];for(let v=0;v<V.rewardInfos.length;v++)F.push({poolRewardVault:new R.PublicKey(V.rewardInfos[v].vault),ownerRewardVault:U[v],rewardMint:new R.PublicKey(V.rewardInfos[v].mint.address)});for(let v of t[P.id]){let _=(T=n==null?void 0:n[P.id])==null?void 0:T[v.nftMint.toBase58()];if(_){let $=j(this.scope.ownerPubKey,_.lockNftMint,ce.TOKEN_PROGRAM_ID).publicKey,be=H.getTickArrayStartIndex(v.tickLower,V.config.tickSpacing),pe=H.getTickArrayStartIndex(v.tickUpper,V.config.tickSpacing),{publicKey:ge}=re(new R.PublicKey(V.programId),_.poolId,be),{publicKey:At}=re(new R.PublicKey(V.programId),_.poolId,pe),{publicKey:Ee}=ot(new R.PublicKey(V.programId),_.poolId,v.tickLower,v.tickUpper),Fe=Vt(p,_.lockNftMint).publicKey,Ke=J.harvestLockPositionInstructionV2({programId:p,auth:g,lockPositionId:Fe,clmmProgram:d,lockOwner:this.scope.ownerPubKey,lockNftMint:_.lockNftMint,lockNftAccount:$,positionNftAccount:_.nftAccount,positionId:_.positionId,poolId:_.poolId,protocolPosition:Ee,vaultA:new R.PublicKey(V.vault.A),vaultB:new R.PublicKey(V.vault.B),tickArrayLower:ge,tickArrayUpper:At,userVaultA:x,userVaultB:L,mintA:new R.PublicKey(V.mintA.address),mintB:new R.PublicKey(V.mintB.address),rewardAccounts:F,exTickArrayBitmap:ye(d,_.poolId).publicKey});A.addInstruction({instructions:[Ke],instructionTypes:[ee.ClmmHarvestLockPosition],lookupTableAddress:V.lookupTableAccount?[V.lookupTableAccount]:[]})}else{let $=J.decreaseLiquidityInstructions({poolInfo:k,poolKeys:V,ownerPosition:v,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:x,tokenAccountB:L,rewardAccounts:U},liquidity:new ke.default(0),amountMinA:new ke.default(0),amountMinB:new ke.default(0),nft2022:(I=w[v.nftMint.toBase58()])==null?void 0:I.equals(ce.TOKEN_2022_PROGRAM_ID)});A.addInstruction($)}}}return s===0?A.sizeCheckBuildV0({computeBudgetConfig:c}):A.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(tn(e).publicKey);return t?ti.decode(t.data).whitelistMints.filter(o=>!o.equals(R.PublicKey.default)):[]}async getOwnerPositionInfo({programId:e=ht}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(r=>r.accountInfo.amount.eq(new ke.default(1))).map(r=>Ye(new R.PublicKey(e),r.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return o.forEach(r=>{if(!r)return;let a=Sn.decode(r.data);i.push(a)}),i}async getOwnerLockedPositionInfo({programId:e=gn}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new ke.default(1))).map(s=>Vt(new R.PublicKey(e),s.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];o.forEach(s=>{if(!s)return;let c=oi.decode(s.data);i.push(c)});let r=await this.scope.connection.getMultipleAccountsInfo(i.map(s=>s.positionId)),a=[];return r.forEach(s=>{if(!s)return;let c=Sn.decode(s.data);a.push(c)}),i.map((s,c)=>({position:a[c],lockInfo:s}))}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await ze(this.scope.connection,e.map(i=>({pubkey:new R.PublicKey(i)})),t),o={};for(let i=0;i<e.length;i++){let r=n[i];if(r===null||!r.accountInfo)throw Error("fetch pool info error: "+String(e[i]));let a=en.decode(r.accountInfo.data),s=G.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[i])]=q(M({},a),{currentPrice:s,programId:r.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(s=>e[s].configId.toBase58())),o=await ze(this.scope.connection,Array.from(n).map(s=>({pubkey:new R.PublicKey(s)}))),i={};o.forEach(s=>{!s.accountInfo||(i[s.pubkey.toBase58()]=no.decode(s.accountInfo.data))});let r=await Ge.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(s=>{var p,g,d,f;let[c,u]=[e[s].mintA.toBase58(),e[s].mintB.toBase58()];return{id:s,programId:e[s].programId.toBase58(),mintA:Pt({address:c,decimals:e[s].mintDecimalsA,programId:t[c].programId.toBase58()||ce.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(p=t[c])!=null&&p.feeConfig?On((g=t[c])==null?void 0:g.feeConfig):void 0}}),mintB:Pt({address:u,decimals:e[s].mintDecimalsB,programId:t[u].programId.toBase58()||ce.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(d=t[u])!=null&&d.feeConfig?On((f=t[u])==null?void 0:f.feeConfig):void 0}}),price:e[s].currentPrice,config:q(M({},i[e[s].configId.toBase58()]),{id:e[s].configId.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Ge.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(r)});return{computeClmmPoolInfo:r,computePoolTickData:a}}async getPoolInfoFromRpc(e){let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58(),...t.rewardInfos.filter(u=>!u.mint.equals(R.PublicKey.default)).map(u=>u.mint.toBase58())]),o=await cn({connection:this.scope.connection,mints:Array.from(n).map(u=>new R.PublicKey(u))}),{computeClmmPoolInfo:i,computePoolTickData:r}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:o}),a=await ze(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),s=ki(i[e],o);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");s.mintAmountA=Number(jt.decode(a[0].accountInfo.data).amount.toString()),s.mintAmountB=Number(jt.decode(a[1].accountInfo.data).amount.toString());let c=q(M({},i[e]),{exBitmapAccount:i[e].exBitmapAccount.toBase58(),observationId:i[e].observationId.toBase58(),id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},config:s.config,rewardInfos:i[e].rewardInfos.filter(u=>!u.vault.equals(R.PublicKey.default)).map(u=>{var p;return{mint:Pt({address:u.mint.toBase58(),programId:ce.TOKEN_PROGRAM_ID.toBase58(),decimals:(p=o[u.mint.toBase58()].decimals)!=null?p:6}),vault:u.vault.toBase58()}})});return{poolInfo:s,poolKeys:c,computePoolInfo:i[e],tickData:r,rpcPoolInfo:t,tickArrays:Object.values(r[e])}}async getSwapPoolInfo(e,t=!0){let{poolInfo:n,rpcData:o}=await this.getSimplePoolInfo(e),i=await this.scope.connection.getAccountInfo(o.configId),r=no.decode(i.data),a=new R.PublicKey(n.programId),s=new R.PublicKey(e),c=await Pi(a,this.scope.connection,s,o.tickCurrent,r.tickSpacing,o.tickArrayBitmap,t);return{poolInfo:n,rpcData:o,configInfo:r,tickArrays:c}}async getSimplePoolInfo(e){let t=await this.getRpcClmmPoolInfo({poolId:e}),n=await this.scope.connection.getMultipleAccountsInfo([t.mintA,t.mintB]);return{poolInfo:{id:e.toString(),programId:t.programId.toString(),mintA:{address:t.mintA.toString(),programId:n[0].owner.toString(),decimals:t.mintDecimalsA},mintB:{address:t.mintB.toString(),programId:n[1].owner.toString(),decimals:t.mintDecimalsB},config:{id:t.configId.toBase58(),tickSpacing:t.tickSpacing}},rpcData:t}}async getMultipleSimplePoolInfo(e){let t=await this.getRpcClmmPoolInfos({poolIds:e}),n=new Set(Object.values(t).map(r=>[r.mintA.toBase58(),r.mintB.toBase58()]).flat()),o=await cn({connection:this.scope.connection,mints:Array.from(n).map(r=>new R.PublicKey(r))}),i={};return e.forEach(r=>{let a=t[r.toString()];if(!a)return null;let s=o[a.mintA.toBase58()],c=o[a.mintB.toBase58()];i[r.toString()]={poolInfo:{id:r.toString(),programId:a.programId.toString(),mintA:{address:a.mintA.toString(),programId:s.programId.toString(),decimals:a.mintDecimalsA},mintB:{address:a.mintB.toString(),programId:c.programId.toString(),decimals:a.mintDecimalsB},config:{id:a.configId.toBase58(),tickSpacing:a.tickSpacing}},rpcData:a}}),i}};0&&(module.exports={AMM_CONFIG_SEED,BIT_PRECISION,BN_NEGATIVE_ONE,BN_ONE,BN_ZERO,Clmm,ClmmConfigLayout,ClmmInstrument,CollectFeeOn,DYNAMIC_CONFIG_INDEX,DYNAMIC_FEE_CONFIG_SEED,DYNAMIC_FEE_CONTROL_DENOMINATOR,DynamicFeeConfigLayout,DynamicFeeInfo,DynamicFeeInfoLayout,EXTENSION_TICKARRAY_BITMAP_SIZE,FEE_RATE_DENOMINATOR,LOG_B_2_X32,LOG_B_P_ERR_MARGIN_LOWER_X64,LOG_B_P_ERR_MARGIN_UPPER_X64,LimitOrderLayout,LimitOrderMath,LimitOrderNonceLayout,LiquidityMathUtil,LockClPositionLayoutV2,LockPositionLayout,MAGIC_SQRT_10001,MAX_FEE_RATE,MAX_FEE_RATE_NUMERATOR,MAX_SQRT_PRICE_X64,MAX_TICK,MAX_TICK_SPACING,MIN_SQRT_PRICE_X64,MIN_TICK,OBSERVATION_NUM,OBSERVATION_UPDATE_DURATION_DEFAULT,OPERATION_SEED,OPERATION_SIZE_USIZE,ObservationItemLayout,ObservationLayout,OperationLayout,PERMISSION_SEED,POOL_LOCK_ID_SEED,POOL_OBSERVATION_SEED,POOL_REWARD_VAULT_SEED,POOL_SEED,POOL_TICK_ARRAY_BITMAP_SEED,POOL_VAULT_SEED,POSITION_SEED,PersonalPositionLayout,PoolFee,PoolInfoLayout,PoolStatusBitFlag,PoolStatusBitIndex,PoolUtil,PoolUtils,PositionRewardInfoLayout,PositionUtils,ProtocolPositionLayout,Q128,Q64,REDUCTION_FACTOR_DENOMINATOR,RESOLUTION,REWARD_NUM,RewardInfoLayout,RewardState,SUPPORT_MINT_SEED,SqrtPriceMath,SwapMathUtil,SwapState,TICK_ARRAY_BITMAP_SIZE,TICK_ARRAY_SEED,TICK_ARRAY_SIZE,TICK_ARRAY_SIZE_USIZE,TICK_TO_SQRT_PRICE_FACTORS,TickArrayBitmapExtensionLayout,TickArrayBitmapUtil,TickArrayLayout,TickArrayUtil,TickLayout,TickUtil,U128_MAX,U256_MAX,U64_IGNORE_RANGE,U64_MAX,UpdateAmmConfigParam,UpdateOperationAccountParam,VOLATILITY_ACCUMULATOR_SCALE,WHITE_MINT_SIZE_USIZE,abs,checkedAdd,checkedMul,checkedSub,clearBit,clmmComputeInfoToApiInfo,decimalToX64,divRoundingUp,fetchTickArrays,fromSignedI128,getCollectFeeOnDescription,getOrderTick,getPdaAmmConfigId,getPdaDynamicFeeConfigAddress,getPdaExBitmapAccount,getPdaLimitOrderAddress,getPdaLimitOrderNonceAddress,getPdaLockClPositionIdV2,getPdaLockPositionId,getPdaMetadataKey,getPdaMintExAccount,getPdaObservationAccount,getPdaOperationAccount,getPdaPermission,getPdaPermissionedPoolId,getPdaPersonalPositionAddress,getPdaPoolId,getPdaPoolRewardVaultId,getPdaPoolVaultId,getPdaProtocolPositionAddress,getPdaTickArrayAddress,i32ToBytes,i32ToBytesBE,isBitSet,leastSignificantBit,mask,mockV3CreatePoolInfo,mostSignificantBit,mulDivCeil,mulDivFloor,mulDivRound,mulFull,setBit,swapInternal,toSignedI128,toggleBit,u128CheckedMul,u128SaturatingAdd,u128SaturatingSub,u16ToBytes,u16ToBytesBE,u256MulDivCeil,u256MulDivFloor,u64ToBytes,u8ToBytes,wrappingSubU128,x64ToDecimal});
//# sourceMappingURL=index.js.map